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 $@