1 # 2 # Mac OS X jfxmedia makefile 3 # 4 5 # OUTPUT_DIR, BUILD_TYPE and BASE_NAME are passed on the command line or from the 6 # parent make process 7 BUILD_DIR = $(OUTPUT_DIR)/$(BUILD_TYPE) 8 TARGET_DIRS = $(BUILD_DIR) 9 10 SRCBASE_DIR = ../.. 11 OBJBASE_DIR = $(BUILD_DIR)/obj/jfxmedia 12 13 BASE_DIR = ../../.. 14 GSTREAMER_LITE_DIR = $(BASE_DIR)/gstreamer/gstreamer-lite 15 GLIB_LITE_DIR = $(BASE_DIR)/gstreamer/3rd_party/glib/glib-2.28.8 16 17 DIRLIST = MediaManagement \ 18 Locator \ 19 PipelineManagement \ 20 jni \ 21 Utils \ 22 Utils/posix \ 23 platform/gstreamer \ 24 platform/osx \ 25 Projects/utils 26 27 TARGET_NAME = lib$(BASE_NAME).dylib 28 TARGET = $(BUILD_DIR)/$(TARGET_NAME) 29 30 QTMEDIA = $(BUILD_DIR)/lib$(TARGET_NAME)_qtkit.dylib 31 32 CFLAGS = -arch x86_64 \ 33 -pipe \ 34 -fPIC \ 35 -Werror=implicit-function-declaration \ 36 -DTARGET_OS_MAC=1 \ 37 -D_GNU_SOURCE \ 38 -DGST_REMOVE_DEPRECATED \ 39 -DGST_DISABLE_GST_DEBUG \ 40 -DGST_DISABLE_LOADSAVE \ 41 -DGST_DISABLE_XML \ 42 -DHAVE_CONFIG_H \ 43 -DJFXMEDIA_JNI_EXPORTS \ 44 -DGSTREAMER_LITE \ 45 -msse2 \ 46 -mmacosx-version-min=10.7 47 48 ifeq ($(BUILD_TYPE), release) 49 CFLAGS += -Os 50 else 51 CFLAGS += -O0 -g -Wall 52 endif 53 54 BASE_INCLUDES = -I$(JAVA_HOME)/include \ 55 -I$(JAVA_HOME)/include/darwin \ 56 -I$(SRCBASE_DIR) \ 57 -I$(SRCBASE_DIR)/jni \ 58 -I$(GENERATED_HEADERS_DIR) 59 60 INCLUDES = $(BASE_INCLUDES) \ 61 -I$(GLIB_LITE_DIR)/ \ 62 -I$(GLIB_LITE_DIR)/glib \ 63 -I$(GLIB_LITE_DIR)/gmodule \ 64 -I$(GLIB_LITE_DIR)/build/osx \ 65 -I$(GSTREAMER_LITE_DIR)/gstreamer \ 66 -I$(GSTREAMER_LITE_DIR)/gst-plugins-base/gst-libs \ 67 -I$(GSTREAMER_LITE_DIR)/gstreamer/libs 68 69 LDFLAGS = -mmacosx-version-min=10.7 \ 70 -arch x86_64 \ 71 -L$(BUILD_DIR) \ 72 -Wl,-install_name,@rpath/$(TARGET_NAME) \ 73 -lobjc \ 74 -framework Cocoa \ 75 -framework CoreVideo \ 76 -lgstreamer-lite \ 77 -lglib-lite 78 79 CPP_SOURCES = \ 80 MediaManagement/Media.cpp \ 81 MediaManagement/MediaManager.cpp \ 82 Locator/Locator.cpp \ 83 Locator/LocatorStream.cpp \ 84 PipelineManagement/Pipeline.cpp \ 85 PipelineManagement/PipelineFactory.cpp \ 86 PipelineManagement/VideoFrame.cpp \ 87 PipelineManagement/Track.cpp \ 88 PipelineManagement/AudioTrack.cpp \ 89 PipelineManagement/VideoTrack.cpp \ 90 PipelineManagement/SubtitleTrack.cpp \ 91 jni/JavaPlayerEventDispatcher.cpp \ 92 jni/JniUtils.cpp \ 93 jni/com_sun_media_jfxmedia_logging_Logger.cpp \ 94 jni/Logger.cpp \ 95 jni/JavaMediaWarningListener.cpp \ 96 jni/JavaInputStreamCallbacks.cpp \ 97 jni/JavaBandsHolder.cpp \ 98 jni/NativeVideoBuffer.cpp \ 99 Utils/MediaWarningDispatcher.cpp \ 100 Utils/LowLevelPerf.cpp \ 101 Utils/posix/posix_critical_section.cpp \ 102 platform/gstreamer/GstAudioEqualizer.cpp \ 103 platform/gstreamer/GstAudioPlaybackPipeline.cpp \ 104 platform/gstreamer/GstAudioSpectrum.cpp \ 105 platform/gstreamer/GstAVPlaybackPipeline.cpp \ 106 platform/gstreamer/GstElementContainer.cpp \ 107 platform/gstreamer/GstJniUtils.cpp \ 108 platform/gstreamer/GstMediaManager.cpp \ 109 platform/gstreamer/GstPipelineFactory.cpp \ 110 platform/gstreamer/GstVideoFrame.cpp \ 111 platform/gstreamer/GstPlatform.cpp \ 112 platform/gstreamer/GstEqualizerBand.cpp \ 113 platform/gstreamer/GstMedia.cpp \ 114 platform/gstreamer/GstMediaPlayer.cpp \ 115 116 C_SOURCES = Utils/ColorConverter.c 117 118 OBJCM_SOURCES = \ 119 Utils/JObjectPeers.m \ 120 Utils/JavaUtils.m \ 121 Utils/MTObjectProxy.m 122 123 OBJCMM_SOURCES = platform/osx/OSXPlatform.mm \ 124 platform/osx/OSXMediaPlayer.mm \ 125 platform/osx/CVVideoFrame.mm 126 127 OBJ_DIRS = $(addprefix $(OBJBASE_DIR)/,$(DIRLIST)) 128 129 130 OBJECTS = $(patsubst %.cpp,$(OBJBASE_DIR)/%.o,$(CPP_SOURCES)) \ 131 $(patsubst %.c,$(OBJBASE_DIR)/%.o,$(C_SOURCES)) \ 132 $(patsubst %.mm,$(OBJBASE_DIR)/%.o,$(OBJCMM_SOURCES)) \ 133 $(patsubst %.m,$(OBJBASE_DIR)/%.o,$(OBJCM_SOURCES)) 134 135 # Always force jfxmedia_qtkit through it's own makefile 136 .PHONY: default $(QTMEDIA) 137 138 default: $(TARGET) $(QTMEDIA) 139 140 $(QTMEDIA): $(TARGET) 141 $(MAKE) -f qtmedia.mk OUTPUT_DIR=$(OUTPUT_DIR) BUILD_TYPE=$(BUILD_TYPE) BASE_NAME=$(BASE_NAME) 142 143 # jfxmedia objects 144 $(OBJBASE_DIR)/%.o: $(SRCBASE_DIR)/%.cpp 145 $(CC) $(CFLAGS) $(INCLUDES) -x c++ -c $< -o $@ 146 147 $(OBJBASE_DIR)/%.o: $(SRCBASE_DIR)/%.c 148 $(CC) $(CFLAGS) $(INCLUDES) -x c -c $< -o $@ 149 150 $(OBJBASE_DIR)/%.o: $(SRCBASE_DIR)/%.mm 151 $(CC) $(CFLAGS) $(INCLUDES) -x objective-c++ -c $< -o $@ 152 153 $(OBJBASE_DIR)/%.o: $(SRCBASE_DIR)/%.m 154 $(CC) $(CFLAGS) $(INCLUDES) -x objective-c -c $< -o $@ 155 156 $(OBJECTS): | $(OBJ_DIRS) $(TARGET_DIRS) 157 158 $(OBJ_DIRS): 159 mkdir -p $(OBJ_DIRS) 160 161 $(TARGET_DIRS): 162 mkdir -p $(TARGET_DIRS) 163 164 $(TARGET): $(OBJECTS) 165 $(LINK) -dynamiclib $(OBJECTS) $(LDFLAGS) -o $@