13 GLIB_LITE_DIR = $(BASE_DIR)/gstreamer/3rd_party/glib/glib-2.28.8
14
15 OSX_PLATFORM_BASE = $(SRCBASE_DIR)/platform/osx
16
17 TARGET_NAME = lib$(BASE_NAME).dylib
18 TARGET = $(BUILD_DIR)/$(TARGET_NAME)
19
20 # separate library for QTKit based platform
21 QTK_NAME = lib$(BASE_NAME)_qtkit.dylib
22 QTK_LIB = $(BUILD_DIR)/$(QTK_NAME)
23
24 AVF_NAME = lib$(BASE_NAME)_avf.dylib
25 AVF_LIB = $(BUILD_DIR)/$(AVF_NAME)
26
27 # Set up base search path for source and headers
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) \
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 \
246 platform/osx/CoreAudioUtilityClasses/CoreAudio/PublicUtility/CAAudioChannelLayout.cpp \
247 platform/osx/CoreAudioUtilityClasses/CoreAudio/PublicUtility/CASpectralProcessor.cpp \
248 platform/osx/CoreAudioUtilityClasses/CoreAudio/PublicUtility/CAStreamBasicDescription.cpp \
259 platform/osx/avf/AVFAudioProcessor.mm \
260 platform/osx/avf/AVFAudioEqualizer.cpp \
261 platform/osx/avf/AVFAudioSpectrumUnit.cpp \
262 platform/osx/avf/AVFSoundLevelUnit.cpp \
263 platform/osx/avf/AVFKernelProcessor.cpp \
264 $(COREAUDIO_UTILITY_CLASSES)
265
266
267 AVF_OBJECTS = $(patsubst %.mm,$(AVF_OBJBASE)/%.o,$(filter %.mm, $(AVF_SOURCES))) \
268 $(patsubst %.cpp,$(AVF_OBJBASE)/%.o,$(filter %.cpp, $(AVF_SOURCES)))
269
270 AVF_INCLUDES = \
271 $(INCLUDES) \
272 $(COREAUDIO_INCLUDES) \
273 -I$(OSX_PLATFORM_BASE)
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
|
13 GLIB_LITE_DIR = $(BASE_DIR)/gstreamer/3rd_party/glib/glib-2.28.8
14
15 OSX_PLATFORM_BASE = $(SRCBASE_DIR)/platform/osx
16
17 TARGET_NAME = lib$(BASE_NAME).dylib
18 TARGET = $(BUILD_DIR)/$(TARGET_NAME)
19
20 # separate library for QTKit based platform
21 QTK_NAME = lib$(BASE_NAME)_qtkit.dylib
22 QTK_LIB = $(BUILD_DIR)/$(QTK_NAME)
23
24 AVF_NAME = lib$(BASE_NAME)_avf.dylib
25 AVF_LIB = $(BUILD_DIR)/$(AVF_NAME)
26
27 # Set up base search path for source and headers
28 VPATH = $(SRCBASE_DIR):$(GENERATED_HEADERS_DIR):$(JAVA_HOME)/include:$(JAVA_HOME)/include/darwin
29
30 # ------------------------------------------------------------------
31 # Base compile/link flags
32
33 CFLAGS += -pipe \
34 -fPIC \
35 -Werror=implicit-function-declaration \
36 -DTARGET_OS_MAC=1 \
37 -D_GNU_SOURCE \
38 -msse2
39
40 ifeq ($(BUILD_TYPE), Release)
41 CFLAGS += -Os
42 else
43 CFLAGS += -O0 -g -Wall
44 endif
45
46 INCLUDES = -I$(JAVA_HOME)/include \
47 -I$(JAVA_HOME)/include/darwin \
48 -I$(SRCBASE_DIR) \
49 -I$(SRCBASE_DIR)/jni \
50 -I$(GENERATED_HEADERS_DIR)
51
52 # We need to ensure everything builds with libc++, so add it here
53 LDFLAGS += -stdlib=libc++ \
54 -L$(BUILD_DIR) \
55 -lobjc \
56 -framework Cocoa \
57 -framework CoreVideo
58
59 # ------------------------------------------------------------------
60 # jfxmedia compile/link flags
61
62 JFXMEDIA_CFLAGS = $(CFLAGS) \
63 -DGST_REMOVE_DEPRECATED \
64 -DGST_DISABLE_GST_DEBUG \
65 -DGST_DISABLE_LOADSAVE \
66 -DGST_DISABLE_XML \
67 -DGSTREAMER_LITE \
68 -DJFXMEDIA_JNI_EXPORTS \
69 -DHAVE_CONFIG_H \
70
71 JFXMEDIA_CCFLAGS = -std=c++11 -stdlib=libc++ $(JFXMEDIA_CFLAGS)
72
73 JFXMEDIA_INCLUDES = $(INCLUDES) \
164 $(OBJBASE_DIR)/%.o: %.c
165 @mkdir -p $(dir $@)
166 $(CC) $(JFXMEDIA_CFLAGS) $(JFXMEDIA_INCLUDES) -MD -MF $(OBJBASE_DIR)/$*.d -x c -c $< -o $@
167
168 $(OBJBASE_DIR)/%.o: %.mm
169 @mkdir -p $(dir $@)
170 $(CC) $(JFXMEDIA_CCFLAGS) $(JFXMEDIA_INCLUDES) -MD -MF $(OBJBASE_DIR)/$*.d -x objective-c++ -c $< -o $@
171
172 $(OBJBASE_DIR)/%.o: %.m
173 @mkdir -p $(dir $@)
174 $(CC) $(JFXMEDIA_CFLAGS) $(JFXMEDIA_INCLUDES) -MD -MF $(OBJBASE_DIR)/$*.d -x objective-c -c $< -o $@
175
176 $(TARGET): $(JFXMEDIA_OBJECTS)
177 @mkdir -p $(dir $@)
178 $(LINK) -dynamiclib $(JFXMEDIA_LDFLAGS) $(JFXMEDIA_OBJECTS) -o $@
179
180
181 # ------------------------------------------------------------------
182 # AVFoundation platform lib rules
183
184 AVF_OBJBASE = $(OBJBASE_DIR)/avf
185
186 AVF_LDFLAGS = $(LDFLAGS) \
187 -Wl,-install_name,@rpath/$(AVF_NAME) \
188 -framework AVFoundation \
189 -framework CoreMedia \
190 -framework Accelerate \
191 -framework AudioUnit \
192 -framework MediaToolbox
193
194 AVF_CFLAGS = $(CFLAGS) \
195 -DCA_AU_USE_FAST_DISPATCH=1 \
196 -DCA_BASIC_AU_FEATURES=1 \
197 -DCA_NO_AU_HOST_CALLBACKS=1 \
198 -DCA_NO_AU_UI_FEATURES=1 \
199 -DCA_USE_AUDIO_PLUGIN_ONLY=1 \
200 -fobjc-arc
201
202 # CoreAudio Utility Classes provided by Apple
203 COREAUDIO_UTILITY_CLASSES = \
204 platform/osx/CoreAudioUtilityClasses/CoreAudio/AudioUnits/AUPublic/AUBase/AUBase.cpp \
205 platform/osx/CoreAudioUtilityClasses/CoreAudio/AudioUnits/AUPublic/AUBase/AUInputElement.cpp \
206 platform/osx/CoreAudioUtilityClasses/CoreAudio/AudioUnits/AUPublic/AUBase/AUOutputElement.cpp \
207 platform/osx/CoreAudioUtilityClasses/CoreAudio/AudioUnits/AUPublic/AUBase/AUPlugInDispatch.cpp \
208 platform/osx/CoreAudioUtilityClasses/CoreAudio/AudioUnits/AUPublic/AUBase/AUScopeElement.cpp \
209 platform/osx/CoreAudioUtilityClasses/CoreAudio/AudioUnits/AUPublic/AUBase/ComponentBase.cpp \
210 platform/osx/CoreAudioUtilityClasses/CoreAudio/AudioUnits/AUPublic/OtherBases/AUEffectBase.cpp \
211 platform/osx/CoreAudioUtilityClasses/CoreAudio/AudioUnits/AUPublic/Utility/AUBuffer.cpp \
212 platform/osx/CoreAudioUtilityClasses/CoreAudio/PublicUtility/CAAudioChannelLayout.cpp \
213 platform/osx/CoreAudioUtilityClasses/CoreAudio/PublicUtility/CASpectralProcessor.cpp \
214 platform/osx/CoreAudioUtilityClasses/CoreAudio/PublicUtility/CAStreamBasicDescription.cpp \
225 platform/osx/avf/AVFAudioProcessor.mm \
226 platform/osx/avf/AVFAudioEqualizer.cpp \
227 platform/osx/avf/AVFAudioSpectrumUnit.cpp \
228 platform/osx/avf/AVFSoundLevelUnit.cpp \
229 platform/osx/avf/AVFKernelProcessor.cpp \
230 $(COREAUDIO_UTILITY_CLASSES)
231
232
233 AVF_OBJECTS = $(patsubst %.mm,$(AVF_OBJBASE)/%.o,$(filter %.mm, $(AVF_SOURCES))) \
234 $(patsubst %.cpp,$(AVF_OBJBASE)/%.o,$(filter %.cpp, $(AVF_SOURCES)))
235
236 AVF_INCLUDES = \
237 $(INCLUDES) \
238 $(COREAUDIO_INCLUDES) \
239 -I$(OSX_PLATFORM_BASE)
240
241 -include $(AVF_OBJECTS:.o=.d)
242
243 $(AVF_OBJBASE)/%.o: %.cpp
244 @mkdir -p $(dir $@)
245 $(CC) $(AVF_CFLAGS) $(AVF_INCLUDES) -MD -MF $(AVF_OBJBASE)/$*.d -x c++ -c $< -o $@
246
247 $(AVF_OBJBASE)/%.o: %.mm
248 @mkdir -p $(dir $@)
249 $(CC) $(AVF_CFLAGS) $(AVF_INCLUDES) -MD -MF $(AVF_OBJBASE)/$*.d -x objective-c++ -c $< -o $@
250
251 $(AVF_LIB): $(TARGET) $(AVF_OBJECTS)
252 @mkdir -p $(dir $@)
253 $(LINK) $(AVF_LDFLAGS) -dynamiclib $(AVF_OBJECTS) -l$(BASE_NAME) -o $@
254
255
256 # ------------------------------------------------------------------
257 # QTKit platform lib rules
258
259 QTK_OBJBASE = $(OBJBASE_DIR)/qtk
260 QTK_CCFLAGS = -std=c++11 -stdlib=libc++ $(CFLAGS)
261 QTK_LDFLAGS = $(LDFLAGS) \
262 -Wl,-install_name,@rpath/$(QTK_NAME) \
263 -framework QTKit
264
265 QTK_SOURCES = platform/osx/QTKMediaPlayer.mm
266 QTK_OBJECTS = $(patsubst %.mm,$(QTK_OBJBASE)/%.o,$(QTK_SOURCES))
267
268 -include $(QTK_OBJECTS:.o=.d)
269
270 $(QTK_OBJBASE)/%.o: %.mm
271 @mkdir -p $(dir $@)
272 $(CC) $(QTK_CCFLAGS) $(INCLUDES) -MD -MF $(QTK_OBJBASE)/$*.d -x objective-c++ -c $< -o $@
273
|