modules/media/src/main/native/jfxmedia/projects/mac/Makefile

Print this page
rev 7591 : RT-38074: [macosx] Separate QTKit platform code from core media code so it can be removed for MAS
Reviewed-by:
   1 #
   2 # MacOs jfxmedia makefile
   3 #
   4 


   5 BUILD_DIR = $(OUTPUT_DIR)/$(BUILD_TYPE)
   6 TARGET_DIRS = $(BUILD_DIR)
   7 
   8 SRCBASE_DIR = ../..
   9 OBJBASE_DIR = $(BUILD_DIR)/obj/jfxmedia
  10 
  11 BASE_DIR = ../../..
  12 GSTREAMER_LITE_DIR = $(BASE_DIR)/gstreamer/gstreamer-lite
  13 GLIB_LITE_DIR = $(BASE_DIR)/gstreamer/3rd_party/glib/glib-2.28.8
  14 
  15 DIRLIST = MediaManagement    \
  16           Locator            \
  17           PipelineManagement \
  18           jni                \
  19           Utils              \
  20           Utils/posix        \
  21           platform/gstreamer \
  22           platform/osx       \
  23           Projects/utils
  24 
  25 TARGET_NAME = lib$(BASE_NAME).dylib
  26 TARGET = $(BUILD_DIR)/$(TARGET_NAME)
  27 










  28 CFLAGS = -arch x86_64 \

  29          -fPIC                     \
  30          -Werror=implicit-function-declaration \
  31          -DTARGET_OS_MAC=1         \
  32          -D_GNU_SOURCE             \
  33          -DGST_REMOVE_DEPRECATED   \
  34          -DGST_DISABLE_GST_DEBUG   \
  35          -DGST_DISABLE_LOADSAVE    \
  36          -DGST_DISABLE_XML         \
  37          -DHAVE_CONFIG_H           \
  38          -DJFXMEDIA_JNI_EXPORTS    \
  39          -DGSTREAMER_LITE          \
  40          -msse2                    \
  41          -mmacosx-version-min=10.7
  42 
  43 ifeq ($(BUILD_TYPE), release)
  44     CFLAGS += -Os
  45 else
  46     CFLAGS += -O0 -g -Wall
  47 endif
  48 
  49 BASE_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 INCLUDES = $(BASE_INCLUDES) \




















  56            -I$(GLIB_LITE_DIR)/ \
  57            -I$(GLIB_LITE_DIR)/glib \
  58            -I$(GLIB_LITE_DIR)/gmodule \
  59            -I$(GLIB_LITE_DIR)/build/osx \
  60            -I$(GSTREAMER_LITE_DIR)/gstreamer \
  61            -I$(GSTREAMER_LITE_DIR)/gst-plugins-base/gst-libs \
  62            -I$(GSTREAMER_LITE_DIR)/gstreamer/libs
  63 
  64 LDFLAGS = -mmacosx-version-min=10.7 -arch x86_64 \
  65           -L$(BUILD_DIR) -Wl,-install_name,@rpath/$(TARGET_NAME) \
  66           -lgstreamer-lite -lglib-lite -lobjc \
  67           -framework CoreVideo -framework CoreAudio -framework QTKit \
  68           -framework Cocoa -framework Carbon -framework CoreServices -framework JavaVM


  69 
  70 CPP_SOURCES =                                                  \
  71               MediaManagement/Media.cpp                        \
  72               MediaManagement/MediaManager.cpp                 \
  73               Locator/Locator.cpp                              \
  74               Locator/LocatorStream.cpp                        \
  75               PipelineManagement/Pipeline.cpp                  \
  76               PipelineManagement/PipelineFactory.cpp           \
  77               PipelineManagement/VideoFrame.cpp                \
  78               PipelineManagement/Track.cpp                     \
  79               PipelineManagement/AudioTrack.cpp                \
  80               PipelineManagement/VideoTrack.cpp                \
  81               PipelineManagement/SubtitleTrack.cpp             \
  82               jni/JavaPlayerEventDispatcher.cpp                \
  83               jni/JniUtils.cpp                                 \
  84               jni/com_sun_media_jfxmedia_logging_Logger.cpp    \
  85               jni/Logger.cpp                                   \
  86               jni/JavaMediaWarningListener.cpp                 \
  87               jni/JavaInputStreamCallbacks.cpp                 \
  88               jni/JavaBandsHolder.cpp                          \
  89               jni/NativeVideoBuffer.cpp                        \
  90               Utils/MediaWarningDispatcher.cpp                 \
  91               Utils/LowLevelPerf.cpp                           \
  92               Utils/posix/posix_critical_section.cpp           \
  93               platform/gstreamer/GstAudioEqualizer.cpp         \
  94               platform/gstreamer/GstAudioPlaybackPipeline.cpp  \
  95               platform/gstreamer/GstAudioSpectrum.cpp          \
  96               platform/gstreamer/GstAVPlaybackPipeline.cpp     \
  97               platform/gstreamer/GstElementContainer.cpp       \
  98               platform/gstreamer/GstJniUtils.cpp               \
  99               platform/gstreamer/GstMediaManager.cpp           \
 100               platform/gstreamer/GstPipelineFactory.cpp        \
 101               platform/gstreamer/GstVideoFrame.cpp             \
 102               platform/gstreamer/GstPlatform.cpp               \
 103               platform/gstreamer/GstEqualizerBand.cpp          \
 104               platform/gstreamer/GstMedia.cpp                  \
 105               platform/gstreamer/GstMediaPlayer.cpp            \
 106 
 107 C_SOURCES =   Utils/ColorConverter.c
 108 
 109 OBJCMM_SOURCES =                                               \
 110               platform/osx/OSXPlatform.mm                      \
 111               platform/osx/OSXMediaPlayer.mm                   \
 112               platform/osx/QTKMediaPlayer.mm                   \
 113               platform/osx/CVVideoFrame.mm
 114 
 115 OBJCM_SOURCES =                                                \
 116               Utils/JObjectPeers.m                             \
 117               Utils/JavaUtils.m                                \
 118               Utils/MTObjectProxy.m

 119 
 120 OBJ_DIRS = $(addprefix $(OBJBASE_DIR)/,$(DIRLIST))
 121 OBJECTS  = $(patsubst %.cpp,$(OBJBASE_DIR)/%.o,$(CPP_SOURCES)) \
 122            $(patsubst %.c,$(OBJBASE_DIR)/%.o,$(C_SOURCES)) \
 123            $(patsubst %.mm,$(OBJBASE_DIR)/%.o,$(OBJCMM_SOURCES)) \
 124            $(patsubst %.m,$(OBJBASE_DIR)/%.o,$(OBJCM_SOURCES))
 125 
 126 .PHONY: default
















 127 
 128 default: $(TARGET)


 129 
 130 $(OBJBASE_DIR)/%.o: $(SRCBASE_DIR)/%.cpp
 131         $(CC) $(CFLAGS) $(INCLUDES) -x c++ -c $< -o $@

 132 
 133 $(OBJBASE_DIR)/%.o: $(SRCBASE_DIR)/%.c
 134         $(CC) $(CFLAGS) $(INCLUDES) -x c -c $< -o $@

 135 
 136 $(OBJBASE_DIR)/%.o: $(SRCBASE_DIR)/%.mm
 137         $(CC) $(CFLAGS) $(INCLUDES) -x objective-c++ -c $< -o $@
 138 
 139 $(OBJBASE_DIR)/%.o: $(SRCBASE_DIR)/%.m
 140         $(CC) $(CFLAGS) $(INCLUDES) -x objective-c -c $< -o $@
 141 
 142 $(OBJECTS): | $(OBJ_DIRS) $(TARGET_DIRS)



 143 
 144 $(OBJ_DIRS):
 145         mkdir -p $(OBJ_DIRS)
 146 
 147 $(TARGET_DIRS):
 148         mkdir -p $(TARGET_DIRS)
 149 
 150 $(TARGET): $(OBJECTS)
 151         $(LINK) -dynamiclib $(OBJECTS) $(LDFLAGS) -o $@

 152 



   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 SRCBASE_DIR = ../..
   9 OBJBASE_DIR = $(BUILD_DIR)/obj/jfxmedia
  10 
  11 BASE_DIR = ../../..
  12 GSTREAMER_LITE_DIR = $(BASE_DIR)/gstreamer/gstreamer-lite
  13 GLIB_LITE_DIR = $(BASE_DIR)/gstreamer/3rd_party/glib/glib-2.28.8
  14 










  15 TARGET_NAME = lib$(BASE_NAME).dylib
  16 TARGET = $(BUILD_DIR)/$(TARGET_NAME)
  17 
  18 # separate library for QTKit based platform
  19 QTK_NAME = lib$(BASE_NAME)_qtkit.dylib
  20 QTK_LIB = $(BUILD_DIR)/$(QTK_NAME)
  21 
  22 # Set up base search path for source and headers
  23 VPATH = $(SRCBASE_DIR):$(GENERATED_HEADERS_DIR):$(JAVA_HOME)/include:$(JAVA_HOME)/include/darwin
  24 
  25 # ------------------------------------------------------------------
  26 # Base compile/link flags
  27 
  28 CFLAGS = -arch x86_64 \
  29          -pipe \
  30          -fPIC                     \
  31          -Werror=implicit-function-declaration \
  32          -DTARGET_OS_MAC=1         \
  33          -D_GNU_SOURCE             \







  34          -msse2                    \
  35          -mmacosx-version-min=10.7
  36 
  37 ifeq ($(BUILD_TYPE), release)
  38     CFLAGS += -Os
  39 else
  40     CFLAGS += -O0 -g -Wall
  41 endif
  42 
  43 
  44 INCLUDES = -I$(JAVA_HOME)/include \
  45            -I$(JAVA_HOME)/include/darwin \
  46            -I$(SRCBASE_DIR) \
  47            -I$(SRCBASE_DIR)/jni \
  48            -I$(GENERATED_HEADERS_DIR)
  49 
  50 
  51 LDFLAGS = -mmacosx-version-min=10.7 \
  52           -arch x86_64 \
  53           -L$(BUILD_DIR) \
  54           -lobjc \
  55           -framework Cocoa \
  56           -framework CoreVideo
  57 
  58 # ------------------------------------------------------------------
  59 # jfxmedia compile/link flags
  60 
  61 JFXMEDIA_CFLAGS = $(CFLAGS) \
  62          -DGST_REMOVE_DEPRECATED   \
  63          -DGST_DISABLE_GST_DEBUG   \
  64          -DGST_DISABLE_LOADSAVE    \
  65          -DGST_DISABLE_XML         \
  66          -DGSTREAMER_LITE          \
  67          -DJFXMEDIA_JNI_EXPORTS    \
  68          -DHAVE_CONFIG_H           \
  69 
  70 JFXMEDIA_INCLUDES = $(INCLUDES) \
  71            -I$(GLIB_LITE_DIR)/ \
  72            -I$(GLIB_LITE_DIR)/glib \
  73            -I$(GLIB_LITE_DIR)/gmodule \
  74            -I$(GLIB_LITE_DIR)/build/osx \
  75            -I$(GSTREAMER_LITE_DIR)/gstreamer \
  76            -I$(GSTREAMER_LITE_DIR)/gst-plugins-base/gst-libs \
  77            -I$(GSTREAMER_LITE_DIR)/gstreamer/libs
  78 
  79 JFXMEDIA_LDFLAGS = $(LDFLAGS) \
  80           -Wl,-install_name,@rpath/$(TARGET_NAME) \
  81           -lgstreamer-lite \
  82           -lglib-lite
  83 
  84 # ------------------------------------------------------------------
  85 # jfxmedia sources/objects
  86 
  87 JFXMEDIA_SOURCES =                                             \
  88               MediaManagement/Media.cpp                        \
  89               MediaManagement/MediaManager.cpp                 \
  90               Locator/Locator.cpp                              \
  91               Locator/LocatorStream.cpp                        \
  92               PipelineManagement/Pipeline.cpp                  \
  93               PipelineManagement/PipelineFactory.cpp           \
  94               PipelineManagement/VideoFrame.cpp                \
  95               PipelineManagement/Track.cpp                     \
  96               PipelineManagement/AudioTrack.cpp                \
  97               PipelineManagement/VideoTrack.cpp                \
  98               PipelineManagement/SubtitleTrack.cpp             \
  99               jni/JavaPlayerEventDispatcher.cpp                \
 100               jni/JniUtils.cpp                                 \
 101               jni/com_sun_media_jfxmedia_logging_Logger.cpp    \
 102               jni/Logger.cpp                                   \
 103               jni/JavaMediaWarningListener.cpp                 \
 104               jni/JavaInputStreamCallbacks.cpp                 \
 105               jni/JavaBandsHolder.cpp                          \
 106               jni/NativeVideoBuffer.cpp                        \
 107               Utils/MediaWarningDispatcher.cpp                 \
 108               Utils/LowLevelPerf.cpp                           \
 109               Utils/posix/posix_critical_section.cpp           \
 110               platform/gstreamer/GstAudioEqualizer.cpp         \
 111               platform/gstreamer/GstAudioPlaybackPipeline.cpp  \
 112               platform/gstreamer/GstAudioSpectrum.cpp          \
 113               platform/gstreamer/GstAVPlaybackPipeline.cpp     \
 114               platform/gstreamer/GstElementContainer.cpp       \
 115               platform/gstreamer/GstJniUtils.cpp               \
 116               platform/gstreamer/GstMediaManager.cpp           \
 117               platform/gstreamer/GstPipelineFactory.cpp        \
 118               platform/gstreamer/GstVideoFrame.cpp             \
 119               platform/gstreamer/GstPlatform.cpp               \
 120               platform/gstreamer/GstEqualizerBand.cpp          \
 121               platform/gstreamer/GstMedia.cpp                  \
 122               platform/gstreamer/GstMediaPlayer.cpp            \
 123               Utils/ColorConverter.c                           \
 124               Utils/JObjectPeers.m                             \
 125               Utils/JavaUtils.m                                \
 126               Utils/MTObjectProxy.m                            \
 127               platform/osx/OSXPlatform.mm                      \
 128               platform/osx/OSXMediaPlayer.mm                   \

 129               platform/osx/CVVideoFrame.mm
 130 
 131 JFXMEDIA_OBJECTS = \
 132     $(patsubst %.c, $(OBJBASE_DIR)/%.o, $(filter %.c, $(JFXMEDIA_SOURCES))) \
 133     $(patsubst %.m, $(OBJBASE_DIR)/%.o, $(filter %.m, $(JFXMEDIA_SOURCES))) \
 134     $(patsubst %.cpp, $(OBJBASE_DIR)/%.o, $(filter %.cpp, $(JFXMEDIA_SOURCES))) \
 135     $(patsubst %.mm, $(OBJBASE_DIR)/%.o, $(filter %.mm, $(JFXMEDIA_SOURCES)))
 136 
 137 # ------------------------------------------------------------------
 138 # Rules



 139 
 140 .PHONY: default
 141 default: $(TARGET) $(QTK_LIB)
 142 
 143 
 144 # ------------------------------------------------------------------
 145 # jfxmedia rules
 146 
 147 # auto-dependencies
 148 -include $(JFXMEDIA_OBJECTS:.o=.d)
 149 
 150 $(OBJBASE_DIR)/%.o: %.cpp
 151         @mkdir -p $(dir $@)
 152         $(CC) $(JFXMEDIA_CFLAGS) $(JFXMEDIA_INCLUDES) -MD -MF $(OBJBASE_DIR)/$*.d -x c++ -c $< -o $@
 153 
 154 $(OBJBASE_DIR)/%.o: %.c
 155         @mkdir -p $(dir $@)
 156         $(CC) $(JFXMEDIA_CFLAGS) $(JFXMEDIA_INCLUDES) -MD -MF $(OBJBASE_DIR)/$*.d -x c -c $< -o $@
 157 
 158 $(OBJBASE_DIR)/%.o: %.mm
 159         @mkdir -p $(dir $@)
 160         $(CC) $(JFXMEDIA_CFLAGS) $(JFXMEDIA_INCLUDES) -MD -MF $(OBJBASE_DIR)/$*.d -x objective-c++ -c $< -o $@
 161 
 162 $(OBJBASE_DIR)/%.o: %.m
 163         @mkdir -p $(dir $@)
 164         $(CC) $(JFXMEDIA_CFLAGS) $(JFXMEDIA_INCLUDES) -MD -MF $(OBJBASE_DIR)/$*.d -x objective-c -c $< -o $@
 165 
 166 $(TARGET): $(JFXMEDIA_OBJECTS)
 167         @mkdir -p $(dir $@)
 168         $(LINK) -dynamiclib $(JFXMEDIA_LDFLAGS) $(JFXMEDIA_OBJECTS) -o $@
 169 


 170 
 171 # ------------------------------------------------------------------
 172 # QTKit platform lib rules
 173 
 174 QTK_OBJBASE = $(OBJBASE_DIR)/qtk
 175 QTK_LDFLAGS = $(LDFLAGS) \
 176           -Wl,-install_name,@rpath/$(QTK_NAME) \
 177           -framework QTKit
 178 
 179 QTK_SOURCES = platform/osx/QTKMediaPlayer.mm
 180 QTK_OBJECTS = $(patsubst %.mm,$(QTK_OBJBASE)/%.o,$(QTK_SOURCES))
 181 
 182 -include $(QTK_OBJECTS:.o=.d)

 183 
 184 $(QTK_OBJBASE)/%.o: %.mm
 185         @mkdir -p $(dir $@)
 186         $(CC) $(CFLAGS) $(INCLUDES) -MD -MF $(QTK_OBJBASE)/$*.d -x objective-c++ -c $< -o $@
 187 
 188 $(QTK_LIB): $(TARGET) $(QTK_OBJECTS)
 189         @mkdir -p $(dir $@)
 190         $(LINK)  $(QTK_LDFLAGS) -dynamiclib $(QTK_OBJECTS) -l$(BASE_NAME) -o $@