28 VPATH = $(SRCBASE_DIR):$(GENERATED_HEADERS_DIR):$(JAVA_HOME)/include:$(JAVA_HOME)/include/darwin
29
30 # ------------------------------------------------------------------
31 # Base compile/link flags
32
33 CFLAGS = -arch x86_64 \
34 -pipe \
35 -fPIC \
36 -Werror=implicit-function-declaration \
37 -DTARGET_OS_MAC=1 \
38 -D_GNU_SOURCE \
39 -msse2 \
40 -mmacosx-version-min=10.7
41
42 ifeq ($(BUILD_TYPE), Release)
43 CFLAGS += -Os
44 else
45 CFLAGS += -O0 -g -Wall
46 endif
47
48
49 INCLUDES = -I$(JAVA_HOME)/include \
50 -I$(JAVA_HOME)/include/darwin \
51 -I$(SRCBASE_DIR) \
52 -I$(SRCBASE_DIR)/jni \
53 -I$(GENERATED_HEADERS_DIR)
54
55
56 LDFLAGS = -mmacosx-version-min=10.7 \
57 -arch x86_64 \
58 -L$(BUILD_DIR) \
59 -lobjc \
60 -framework Cocoa \
61 -framework CoreVideo
62
63 # ------------------------------------------------------------------
64 # jfxmedia compile/link flags
65
66 JFXMEDIA_CFLAGS = $(CFLAGS) \
67 -DGST_REMOVE_DEPRECATED \
68 -DGST_DISABLE_GST_DEBUG \
69 -DGST_DISABLE_LOADSAVE \
70 -DGST_DISABLE_XML \
71 -DGSTREAMER_LITE \
72 -DJFXMEDIA_JNI_EXPORTS \
73 -DHAVE_CONFIG_H \
74
75 JFXMEDIA_INCLUDES = $(INCLUDES) \
76 -I$(GLIB_LITE_DIR)/ \
77 -I$(GLIB_LITE_DIR)/glib \
78 -I$(GLIB_LITE_DIR)/gmodule \
79 -I$(GLIB_LITE_DIR)/build/osx \
80 -I$(GSTREAMER_LITE_DIR)/gstreamer \
81 -I$(GSTREAMER_LITE_DIR)/gst-plugins-base/gst-libs \
82 -I$(GSTREAMER_LITE_DIR)/gstreamer/libs
83
84 JFXMEDIA_LDFLAGS = $(LDFLAGS) \
85 -Wl,-install_name,@rpath/$(TARGET_NAME) \
86 -lgstreamer-lite \
87 -lglib-lite
88
89 # ------------------------------------------------------------------
90 # jfxmedia sources/objects
91
92 JFXMEDIA_SOURCES = \
93 MediaManagement/Media.cpp \
94 MediaManagement/MediaManager.cpp \
144 # ------------------------------------------------------------------
145 # Rules
146
147 .PHONY: default, checklibs
148
149 default: $(TARGET) $(QTK_LIB) $(AVF_LIB)
150 @echo "Ensuring $(TARGET_NAME) does not link against QuickTime..."
151 ! nm -m "$(TARGET)" | grep -E "(QTKit|QuickTime)"
152 @echo "Ensuring $(AVF_NAME) does not link against QuickTime..."
153 ! nm -m "$(AVF_LIB)" | grep -E "(QTKit|QuickTime)"
154
155
156 # ------------------------------------------------------------------
157 # jfxmedia rules
158
159 # auto-dependencies
160 -include $(JFXMEDIA_OBJECTS:.o=.d)
161
162 $(OBJBASE_DIR)/%.o: %.cpp
163 @mkdir -p $(dir $@)
164 $(CC) $(JFXMEDIA_CFLAGS) $(JFXMEDIA_INCLUDES) -MD -MF $(OBJBASE_DIR)/$*.d -x c++ -c $< -o $@
165
166 $(OBJBASE_DIR)/%.o: %.c
167 @mkdir -p $(dir $@)
168 $(CC) $(JFXMEDIA_CFLAGS) $(JFXMEDIA_INCLUDES) -MD -MF $(OBJBASE_DIR)/$*.d -x c -c $< -o $@
169
170 $(OBJBASE_DIR)/%.o: %.mm
171 @mkdir -p $(dir $@)
172 $(CC) $(JFXMEDIA_CFLAGS) $(JFXMEDIA_INCLUDES) -MD -MF $(OBJBASE_DIR)/$*.d -x objective-c++ -c $< -o $@
173
174 $(OBJBASE_DIR)/%.o: %.m
175 @mkdir -p $(dir $@)
176 $(CC) $(JFXMEDIA_CFLAGS) $(JFXMEDIA_INCLUDES) -MD -MF $(OBJBASE_DIR)/$*.d -x objective-c -c $< -o $@
177
178 $(TARGET): $(JFXMEDIA_OBJECTS)
179 @mkdir -p $(dir $@)
180 $(LINK) -dynamiclib $(JFXMEDIA_LDFLAGS) $(JFXMEDIA_OBJECTS) -o $@
181
182
183 # ------------------------------------------------------------------
184 # AVFoundation platform lib rules
185
186 ifeq ($(BUILD_TYPE), Release)
187 AVF_XCRUN_FLAGS =
188 else
189 # add a -v flag to show the build environment when xcrun is invoked
190 AVF_XCRUN_FLAGS = -v
191 endif
192
193 # The AVFoundation code uses ARC which is only supported by the clang compiler, so we'll
194 # force the use of clang for this module.
195 ifeq ($(COMPILE_PARFAIT), true)
196 # call xcrun so we wrap the correct clang++ executable
197 CLANG_PATH = $(shell xcrun -find clang++)
198 AVF_CPP = parfait-clang++ --nativecxx "$(CLANG_PATH)"
199 else
200 # add -l to show the full command line used to invoke clang++ (for debugging purposes)
201 AVF_CPP = xcrun -l $(AVF_XCRUN_FLAGS) clang++
202 endif
203
204 AVF_OBJBASE = $(OBJBASE_DIR)/avf
205
206 # We need a full path to the right SDK
207 # We use --sdk macosx to force it to use the latest macosx SDK, which should be 10.8 or later
208 AVF_SYSROOT = $(shell xcodebuild -sdk macosx -version | grep '^Path: ' | sed 's/Path: //')
209
210 # we have to remove -mmacosx-version-min=% from CFLAGS and LDFLAGS and set it to
211 # 10.8 since this module requires features only in 10.8 and later
212 AVF_LDFLAGS = $(filter-out -mmacosx-version-min=%, $(LDFLAGS)) \
213 -isysroot "$(AVF_SYSROOT)" \
214 -iframework"$(AVF_SYSROOT)/System/Library/Frameworks" \
215 -mmacosx-version-min=10.8 \
216 -Wl,-install_name,@rpath/$(AVF_NAME) \
217 -framework AVFoundation \
218 -framework CoreMedia \
219 -framework Accelerate \
220 -framework AudioUnit \
221 -framework MediaToolbox
222
223 AVF_CFLAGS = $(filter-out -mmacosx-version-min=%, $(CFLAGS)) \
224 -isysroot "$(AVF_SYSROOT)" \
225 -iframework"$(AVF_SYSROOT)/System/Library/Frameworks" \
226 -mmacosx-version-min=10.8 \
227 -DCA_AU_USE_FAST_DISPATCH=1 \
228 -DCA_BASIC_AU_FEATURES=1 \
229 -DCA_NO_AU_HOST_CALLBACKS=1 \
230 -DCA_NO_AU_UI_FEATURES=1 \
231 -DCA_USE_AUDIO_PLUGIN_ONLY=1 \
232 -fobjc-arc
233
234 # CoreAudio Utility Classes provided by Apple
235 COREAUDIO_UTILITY_CLASSES = \
236 platform/osx/CoreAudioUtilityClasses/CoreAudio/AudioUnits/AUPublic/AUBase/AUBase.cpp \
237 platform/osx/CoreAudioUtilityClasses/CoreAudio/AudioUnits/AUPublic/AUBase/AUInputElement.cpp \
238 platform/osx/CoreAudioUtilityClasses/CoreAudio/AudioUnits/AUPublic/AUBase/AUOutputElement.cpp \
239 platform/osx/CoreAudioUtilityClasses/CoreAudio/AudioUnits/AUPublic/AUBase/AUPlugInDispatch.cpp \
240 platform/osx/CoreAudioUtilityClasses/CoreAudio/AudioUnits/AUPublic/AUBase/AUScopeElement.cpp \
241 platform/osx/CoreAudioUtilityClasses/CoreAudio/AudioUnits/AUPublic/AUBase/ComponentBase.cpp \
242 platform/osx/CoreAudioUtilityClasses/CoreAudio/AudioUnits/AUPublic/OtherBases/AUEffectBase.cpp \
243 platform/osx/CoreAudioUtilityClasses/CoreAudio/AudioUnits/AUPublic/Utility/AUBuffer.cpp \
272
273 -include $(AVF_OBJECTS:.o=.d)
274
275 $(AVF_OBJBASE)/%.o: %.cpp
276 @mkdir -p $(dir $@)
277 $(AVF_CPP) $(AVF_CFLAGS) $(AVF_INCLUDES) -MD -MF $(AVF_OBJBASE)/$*.d -x c++ -c $< -o $@
278
279 $(AVF_OBJBASE)/%.o: %.mm
280 @mkdir -p $(dir $@)
281 $(AVF_CPP) $(AVF_CFLAGS) $(AVF_INCLUDES) -MD -MF $(AVF_OBJBASE)/$*.d -x objective-c++ -c $< -o $@
282
283 $(AVF_LIB): $(TARGET) $(AVF_OBJECTS)
284 @mkdir -p $(dir $@)
285 $(AVF_CPP) $(AVF_LDFLAGS) -dynamiclib $(AVF_OBJECTS) -l$(BASE_NAME) -o $@
286
287
288 # ------------------------------------------------------------------
289 # QTKit platform lib rules
290
291 QTK_OBJBASE = $(OBJBASE_DIR)/qtk
292 QTK_LDFLAGS = $(LDFLAGS) \
293 -Wl,-install_name,@rpath/$(QTK_NAME) \
294 -framework QTKit
295
296 QTK_SOURCES = platform/osx/QTKMediaPlayer.mm
297 QTK_OBJECTS = $(patsubst %.mm,$(QTK_OBJBASE)/%.o,$(QTK_SOURCES))
298
299 -include $(QTK_OBJECTS:.o=.d)
300
301 $(QTK_OBJBASE)/%.o: %.mm
302 @mkdir -p $(dir $@)
303 $(CC) $(CFLAGS) $(INCLUDES) -MD -MF $(QTK_OBJBASE)/$*.d -x objective-c++ -c $< -o $@
304
305 $(QTK_LIB): $(TARGET) $(QTK_OBJECTS)
306 @mkdir -p $(dir $@)
307 $(LINK) $(QTK_LDFLAGS) -dynamiclib $(QTK_OBJECTS) -l$(BASE_NAME) -o $@
|
28 VPATH = $(SRCBASE_DIR):$(GENERATED_HEADERS_DIR):$(JAVA_HOME)/include:$(JAVA_HOME)/include/darwin
29
30 # ------------------------------------------------------------------
31 # Base compile/link flags
32
33 CFLAGS = -arch x86_64 \
34 -pipe \
35 -fPIC \
36 -Werror=implicit-function-declaration \
37 -DTARGET_OS_MAC=1 \
38 -D_GNU_SOURCE \
39 -msse2 \
40 -mmacosx-version-min=10.7
41
42 ifeq ($(BUILD_TYPE), Release)
43 CFLAGS += -Os
44 else
45 CFLAGS += -O0 -g -Wall
46 endif
47
48 INCLUDES = -I$(JAVA_HOME)/include \
49 -I$(JAVA_HOME)/include/darwin \
50 -I$(SRCBASE_DIR) \
51 -I$(SRCBASE_DIR)/jni \
52 -I$(GENERATED_HEADERS_DIR)
53
54 # We need to ensure everything builds with libc++, so add it here
55 LDFLAGS = -stdlib=libc++ -mmacosx-version-min=10.7 \
56 -arch x86_64 \
57 -L$(BUILD_DIR) \
58 -lobjc \
59 -framework Cocoa \
60 -framework CoreVideo
61
62 # ------------------------------------------------------------------
63 # jfxmedia compile/link flags
64
65 JFXMEDIA_CFLAGS = $(CFLAGS) \
66 -DGST_REMOVE_DEPRECATED \
67 -DGST_DISABLE_GST_DEBUG \
68 -DGST_DISABLE_LOADSAVE \
69 -DGST_DISABLE_XML \
70 -DGSTREAMER_LITE \
71 -DJFXMEDIA_JNI_EXPORTS \
72 -DHAVE_CONFIG_H \
73
74 JFXMEDIA_CCFLAGS = -std=c++11 -stdlib=libc++ $(JFXMEDIA_CFLAGS)
75
76 JFXMEDIA_INCLUDES = $(INCLUDES) \
77 -I$(GLIB_LITE_DIR)/ \
78 -I$(GLIB_LITE_DIR)/glib \
79 -I$(GLIB_LITE_DIR)/gmodule \
80 -I$(GLIB_LITE_DIR)/build/osx \
81 -I$(GSTREAMER_LITE_DIR)/gstreamer \
82 -I$(GSTREAMER_LITE_DIR)/gst-plugins-base/gst-libs \
83 -I$(GSTREAMER_LITE_DIR)/gstreamer/libs
84
85 JFXMEDIA_LDFLAGS = $(LDFLAGS) \
86 -Wl,-install_name,@rpath/$(TARGET_NAME) \
87 -lgstreamer-lite \
88 -lglib-lite
89
90 # ------------------------------------------------------------------
91 # jfxmedia sources/objects
92
93 JFXMEDIA_SOURCES = \
94 MediaManagement/Media.cpp \
95 MediaManagement/MediaManager.cpp \
145 # ------------------------------------------------------------------
146 # Rules
147
148 .PHONY: default, checklibs
149
150 default: $(TARGET) $(QTK_LIB) $(AVF_LIB)
151 @echo "Ensuring $(TARGET_NAME) does not link against QuickTime..."
152 ! nm -m "$(TARGET)" | grep -E "(QTKit|QuickTime)"
153 @echo "Ensuring $(AVF_NAME) does not link against QuickTime..."
154 ! nm -m "$(AVF_LIB)" | grep -E "(QTKit|QuickTime)"
155
156
157 # ------------------------------------------------------------------
158 # jfxmedia rules
159
160 # auto-dependencies
161 -include $(JFXMEDIA_OBJECTS:.o=.d)
162
163 $(OBJBASE_DIR)/%.o: %.cpp
164 @mkdir -p $(dir $@)
165 $(CC) $(JFXMEDIA_CCFLAGS) $(JFXMEDIA_INCLUDES) -MD -MF $(OBJBASE_DIR)/$*.d -x c++ -c $< -o $@
166
167 $(OBJBASE_DIR)/%.o: %.c
168 @mkdir -p $(dir $@)
169 $(CC) $(JFXMEDIA_CFLAGS) $(JFXMEDIA_INCLUDES) -MD -MF $(OBJBASE_DIR)/$*.d -x c -c $< -o $@
170
171 $(OBJBASE_DIR)/%.o: %.mm
172 @mkdir -p $(dir $@)
173 $(CC) $(JFXMEDIA_CCFLAGS) $(JFXMEDIA_INCLUDES) -MD -MF $(OBJBASE_DIR)/$*.d -x objective-c++ -c $< -o $@
174
175 $(OBJBASE_DIR)/%.o: %.m
176 @mkdir -p $(dir $@)
177 $(CC) $(JFXMEDIA_CFLAGS) $(JFXMEDIA_INCLUDES) -MD -MF $(OBJBASE_DIR)/$*.d -x objective-c -c $< -o $@
178
179 $(TARGET): $(JFXMEDIA_OBJECTS)
180 @mkdir -p $(dir $@)
181 $(LINK) -dynamiclib $(JFXMEDIA_LDFLAGS) $(JFXMEDIA_OBJECTS) -o $@
182
183
184 # ------------------------------------------------------------------
185 # AVFoundation platform lib rules
186
187 ifeq ($(BUILD_TYPE), Release)
188 AVF_XCRUN_FLAGS =
189 else
190 # add a -v flag to show the build environment when xcrun is invoked
191 AVF_XCRUN_FLAGS = -v
192 endif
193
194 # The AVFoundation code uses ARC which is only supported by the clang compiler, so we'll
195 # force the use of clang for this module.
196 ifeq ($(COMPILE_PARFAIT), true)
197 # call xcrun so we wrap the correct clang++ executable
198 CLANG_PATH := $(shell xcrun -find clang++)
199 AVF_CPP = parfait-clang++ --nativecxx "$(CLANG_PATH)"
200 else
201 AVF_CPP := $(shell xcrun -find $(AVF_XCRUN_FLAGS) clang++)
202 endif
203
204 AVF_OBJBASE = $(OBJBASE_DIR)/avf
205
206 # We need a full path to the right SDK
207 # We use --sdk macosx to force it to use the latest macosx SDK, which should be 10.8 or later
208 AVF_SYSROOT = $(shell xcodebuild -sdk macosx -version | grep '^Path: ' | sed 's/Path: //')
209
210 # we have to remove -mmacosx-version-min=% from CFLAGS and LDFLAGS and set it to
211 # 10.8 since this module requires features only in 10.8 and later
212 AVF_LDFLAGS = $(filter-out -mmacosx-version-min=%, $(LDFLAGS)) \
213 -std=c++11 -stdlib=libc++ \
214 -isysroot "$(AVF_SYSROOT)" \
215 -iframework"$(AVF_SYSROOT)/System/Library/Frameworks" \
216 -mmacosx-version-min=10.8 \
217 -Wl,-install_name,@rpath/$(AVF_NAME) \
218 -framework AVFoundation \
219 -framework CoreMedia \
220 -framework Accelerate \
221 -framework AudioUnit \
222 -framework MediaToolbox
223
224 AVF_CFLAGS = $(filter-out -mmacosx-version-min=%, $(CFLAGS)) \
225 -std=c++11 -stdlib=libc++ \
226 -isysroot "$(AVF_SYSROOT)" \
227 -iframework"$(AVF_SYSROOT)/System/Library/Frameworks" \
228 -mmacosx-version-min=10.8 \
229 -DCA_AU_USE_FAST_DISPATCH=1 \
230 -DCA_BASIC_AU_FEATURES=1 \
231 -DCA_NO_AU_HOST_CALLBACKS=1 \
232 -DCA_NO_AU_UI_FEATURES=1 \
233 -DCA_USE_AUDIO_PLUGIN_ONLY=1 \
234 -fobjc-arc
235
236 # CoreAudio Utility Classes provided by Apple
237 COREAUDIO_UTILITY_CLASSES = \
238 platform/osx/CoreAudioUtilityClasses/CoreAudio/AudioUnits/AUPublic/AUBase/AUBase.cpp \
239 platform/osx/CoreAudioUtilityClasses/CoreAudio/AudioUnits/AUPublic/AUBase/AUInputElement.cpp \
240 platform/osx/CoreAudioUtilityClasses/CoreAudio/AudioUnits/AUPublic/AUBase/AUOutputElement.cpp \
241 platform/osx/CoreAudioUtilityClasses/CoreAudio/AudioUnits/AUPublic/AUBase/AUPlugInDispatch.cpp \
242 platform/osx/CoreAudioUtilityClasses/CoreAudio/AudioUnits/AUPublic/AUBase/AUScopeElement.cpp \
243 platform/osx/CoreAudioUtilityClasses/CoreAudio/AudioUnits/AUPublic/AUBase/ComponentBase.cpp \
244 platform/osx/CoreAudioUtilityClasses/CoreAudio/AudioUnits/AUPublic/OtherBases/AUEffectBase.cpp \
245 platform/osx/CoreAudioUtilityClasses/CoreAudio/AudioUnits/AUPublic/Utility/AUBuffer.cpp \
274
275 -include $(AVF_OBJECTS:.o=.d)
276
277 $(AVF_OBJBASE)/%.o: %.cpp
278 @mkdir -p $(dir $@)
279 $(AVF_CPP) $(AVF_CFLAGS) $(AVF_INCLUDES) -MD -MF $(AVF_OBJBASE)/$*.d -x c++ -c $< -o $@
280
281 $(AVF_OBJBASE)/%.o: %.mm
282 @mkdir -p $(dir $@)
283 $(AVF_CPP) $(AVF_CFLAGS) $(AVF_INCLUDES) -MD -MF $(AVF_OBJBASE)/$*.d -x objective-c++ -c $< -o $@
284
285 $(AVF_LIB): $(TARGET) $(AVF_OBJECTS)
286 @mkdir -p $(dir $@)
287 $(AVF_CPP) $(AVF_LDFLAGS) -dynamiclib $(AVF_OBJECTS) -l$(BASE_NAME) -o $@
288
289
290 # ------------------------------------------------------------------
291 # QTKit platform lib rules
292
293 QTK_OBJBASE = $(OBJBASE_DIR)/qtk
294 QTK_CCFLAGS = -std=c++11 -stdlib=libc++ $(CFLAGS)
295 QTK_LDFLAGS = $(LDFLAGS) \
296 -Wl,-install_name,@rpath/$(QTK_NAME) \
297 -framework QTKit
298
299 QTK_SOURCES = platform/osx/QTKMediaPlayer.mm
300 QTK_OBJECTS = $(patsubst %.mm,$(QTK_OBJBASE)/%.o,$(QTK_SOURCES))
301
302 -include $(QTK_OBJECTS:.o=.d)
303
304 $(QTK_OBJBASE)/%.o: %.mm
305 @mkdir -p $(dir $@)
306 $(CC) $(QTK_CCFLAGS) $(INCLUDES) -MD -MF $(QTK_OBJBASE)/$*.d -x objective-c++ -c $< -o $@
307
308 $(QTK_LIB): $(TARGET) $(QTK_OBJECTS)
309 @mkdir -p $(dir $@)
310 $(LINK) $(QTK_LDFLAGS) -dynamiclib $(QTK_OBJECTS) -l$(BASE_NAME) -o $@
|