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,75 +1,92 @@
#
-# MacOs jfxmedia makefile
+# Mac OS X jfxmedia makefile
#
+# OUTPUT_DIR, BUILD_TYPE and BASE_NAME are passed on the command line or from the
+# parent make process
BUILD_DIR = $(OUTPUT_DIR)/$(BUILD_TYPE)
-TARGET_DIRS = $(BUILD_DIR)
-
SRCBASE_DIR = ../..
OBJBASE_DIR = $(BUILD_DIR)/obj/jfxmedia
BASE_DIR = ../../..
GSTREAMER_LITE_DIR = $(BASE_DIR)/gstreamer/gstreamer-lite
GLIB_LITE_DIR = $(BASE_DIR)/gstreamer/3rd_party/glib/glib-2.28.8
-DIRLIST = MediaManagement \
- Locator \
- PipelineManagement \
- jni \
- Utils \
- Utils/posix \
- platform/gstreamer \
- platform/osx \
- Projects/utils
-
TARGET_NAME = lib$(BASE_NAME).dylib
TARGET = $(BUILD_DIR)/$(TARGET_NAME)
+# separate library for QTKit based platform
+QTK_NAME = lib$(BASE_NAME)_qtkit.dylib
+QTK_LIB = $(BUILD_DIR)/$(QTK_NAME)
+
+# Set up base search path for source and headers
+VPATH = $(SRCBASE_DIR):$(GENERATED_HEADERS_DIR):$(JAVA_HOME)/include:$(JAVA_HOME)/include/darwin
+
+# ------------------------------------------------------------------
+# Base compile/link flags
+
CFLAGS = -arch x86_64 \
+ -pipe \
-fPIC \
-Werror=implicit-function-declaration \
-DTARGET_OS_MAC=1 \
-D_GNU_SOURCE \
- -DGST_REMOVE_DEPRECATED \
- -DGST_DISABLE_GST_DEBUG \
- -DGST_DISABLE_LOADSAVE \
- -DGST_DISABLE_XML \
- -DHAVE_CONFIG_H \
- -DJFXMEDIA_JNI_EXPORTS \
- -DGSTREAMER_LITE \
-msse2 \
-mmacosx-version-min=10.7
ifeq ($(BUILD_TYPE), release)
CFLAGS += -Os
else
CFLAGS += -O0 -g -Wall
endif
-BASE_INCLUDES = -I$(JAVA_HOME)/include \
+
+INCLUDES = -I$(JAVA_HOME)/include \
-I$(JAVA_HOME)/include/darwin \
-I$(SRCBASE_DIR) \
-I$(SRCBASE_DIR)/jni \
-I$(GENERATED_HEADERS_DIR)
-INCLUDES = $(BASE_INCLUDES) \
+
+LDFLAGS = -mmacosx-version-min=10.7 \
+ -arch x86_64 \
+ -L$(BUILD_DIR) \
+ -lobjc \
+ -framework Cocoa \
+ -framework CoreVideo
+
+# ------------------------------------------------------------------
+# jfxmedia compile/link flags
+
+JFXMEDIA_CFLAGS = $(CFLAGS) \
+ -DGST_REMOVE_DEPRECATED \
+ -DGST_DISABLE_GST_DEBUG \
+ -DGST_DISABLE_LOADSAVE \
+ -DGST_DISABLE_XML \
+ -DGSTREAMER_LITE \
+ -DJFXMEDIA_JNI_EXPORTS \
+ -DHAVE_CONFIG_H \
+
+JFXMEDIA_INCLUDES = $(INCLUDES) \
-I$(GLIB_LITE_DIR)/ \
-I$(GLIB_LITE_DIR)/glib \
-I$(GLIB_LITE_DIR)/gmodule \
-I$(GLIB_LITE_DIR)/build/osx \
-I$(GSTREAMER_LITE_DIR)/gstreamer \
-I$(GSTREAMER_LITE_DIR)/gst-plugins-base/gst-libs \
-I$(GSTREAMER_LITE_DIR)/gstreamer/libs
-LDFLAGS = -mmacosx-version-min=10.7 -arch x86_64 \
- -L$(BUILD_DIR) -Wl,-install_name,@rpath/$(TARGET_NAME) \
- -lgstreamer-lite -lglib-lite -lobjc \
- -framework CoreVideo -framework CoreAudio -framework QTKit \
- -framework Cocoa -framework Carbon -framework CoreServices -framework JavaVM
+JFXMEDIA_LDFLAGS = $(LDFLAGS) \
+ -Wl,-install_name,@rpath/$(TARGET_NAME) \
+ -lgstreamer-lite \
+ -lglib-lite
+
+# ------------------------------------------------------------------
+# jfxmedia sources/objects
-CPP_SOURCES = \
+JFXMEDIA_SOURCES = \
MediaManagement/Media.cpp \
MediaManagement/MediaManager.cpp \
Locator/Locator.cpp \
Locator/LocatorStream.cpp \
PipelineManagement/Pipeline.cpp \
@@ -101,52 +118,73 @@
platform/gstreamer/GstVideoFrame.cpp \
platform/gstreamer/GstPlatform.cpp \
platform/gstreamer/GstEqualizerBand.cpp \
platform/gstreamer/GstMedia.cpp \
platform/gstreamer/GstMediaPlayer.cpp \
-
-C_SOURCES = Utils/ColorConverter.c
-
-OBJCMM_SOURCES = \
+ Utils/ColorConverter.c \
+ Utils/JObjectPeers.m \
+ Utils/JavaUtils.m \
+ Utils/MTObjectProxy.m \
platform/osx/OSXPlatform.mm \
platform/osx/OSXMediaPlayer.mm \
- platform/osx/QTKMediaPlayer.mm \
platform/osx/CVVideoFrame.mm
-OBJCM_SOURCES = \
- Utils/JObjectPeers.m \
- Utils/JavaUtils.m \
- Utils/MTObjectProxy.m
+JFXMEDIA_OBJECTS = \
+ $(patsubst %.c, $(OBJBASE_DIR)/%.o, $(filter %.c, $(JFXMEDIA_SOURCES))) \
+ $(patsubst %.m, $(OBJBASE_DIR)/%.o, $(filter %.m, $(JFXMEDIA_SOURCES))) \
+ $(patsubst %.cpp, $(OBJBASE_DIR)/%.o, $(filter %.cpp, $(JFXMEDIA_SOURCES))) \
+ $(patsubst %.mm, $(OBJBASE_DIR)/%.o, $(filter %.mm, $(JFXMEDIA_SOURCES)))
-OBJ_DIRS = $(addprefix $(OBJBASE_DIR)/,$(DIRLIST))
-OBJECTS = $(patsubst %.cpp,$(OBJBASE_DIR)/%.o,$(CPP_SOURCES)) \
- $(patsubst %.c,$(OBJBASE_DIR)/%.o,$(C_SOURCES)) \
- $(patsubst %.mm,$(OBJBASE_DIR)/%.o,$(OBJCMM_SOURCES)) \
- $(patsubst %.m,$(OBJBASE_DIR)/%.o,$(OBJCM_SOURCES))
+# ------------------------------------------------------------------
+# Rules
.PHONY: default
+default: $(TARGET) $(QTK_LIB)
+
+
+# ------------------------------------------------------------------
+# jfxmedia rules
+
+# auto-dependencies
+-include $(JFXMEDIA_OBJECTS:.o=.d)
+
+$(OBJBASE_DIR)/%.o: %.cpp
+ @mkdir -p $(dir $@)
+ $(CC) $(JFXMEDIA_CFLAGS) $(JFXMEDIA_INCLUDES) -MD -MF $(OBJBASE_DIR)/$*.d -x c++ -c $< -o $@
+
+$(OBJBASE_DIR)/%.o: %.c
+ @mkdir -p $(dir $@)
+ $(CC) $(JFXMEDIA_CFLAGS) $(JFXMEDIA_INCLUDES) -MD -MF $(OBJBASE_DIR)/$*.d -x c -c $< -o $@
-default: $(TARGET)
+$(OBJBASE_DIR)/%.o: %.mm
+ @mkdir -p $(dir $@)
+ $(CC) $(JFXMEDIA_CFLAGS) $(JFXMEDIA_INCLUDES) -MD -MF $(OBJBASE_DIR)/$*.d -x objective-c++ -c $< -o $@
-$(OBJBASE_DIR)/%.o: $(SRCBASE_DIR)/%.cpp
- $(CC) $(CFLAGS) $(INCLUDES) -x c++ -c $< -o $@
+$(OBJBASE_DIR)/%.o: %.m
+ @mkdir -p $(dir $@)
+ $(CC) $(JFXMEDIA_CFLAGS) $(JFXMEDIA_INCLUDES) -MD -MF $(OBJBASE_DIR)/$*.d -x objective-c -c $< -o $@
-$(OBJBASE_DIR)/%.o: $(SRCBASE_DIR)/%.c
- $(CC) $(CFLAGS) $(INCLUDES) -x c -c $< -o $@
+$(TARGET): $(JFXMEDIA_OBJECTS)
+ @mkdir -p $(dir $@)
+ $(LINK) -dynamiclib $(JFXMEDIA_LDFLAGS) $(JFXMEDIA_OBJECTS) -o $@
-$(OBJBASE_DIR)/%.o: $(SRCBASE_DIR)/%.mm
- $(CC) $(CFLAGS) $(INCLUDES) -x objective-c++ -c $< -o $@
-$(OBJBASE_DIR)/%.o: $(SRCBASE_DIR)/%.m
- $(CC) $(CFLAGS) $(INCLUDES) -x objective-c -c $< -o $@
+# ------------------------------------------------------------------
+# QTKit platform lib rules
-$(OBJECTS): | $(OBJ_DIRS) $(TARGET_DIRS)
+QTK_OBJBASE = $(OBJBASE_DIR)/qtk
+QTK_LDFLAGS = $(LDFLAGS) \
+ -Wl,-install_name,@rpath/$(QTK_NAME) \
+ -framework QTKit
-$(OBJ_DIRS):
- mkdir -p $(OBJ_DIRS)
+QTK_SOURCES = platform/osx/QTKMediaPlayer.mm
+QTK_OBJECTS = $(patsubst %.mm,$(QTK_OBJBASE)/%.o,$(QTK_SOURCES))
-$(TARGET_DIRS):
- mkdir -p $(TARGET_DIRS)
+-include $(QTK_OBJECTS:.o=.d)
-$(TARGET): $(OBJECTS)
- $(LINK) -dynamiclib $(OBJECTS) $(LDFLAGS) -o $@
+$(QTK_OBJBASE)/%.o: %.mm
+ @mkdir -p $(dir $@)
+ $(CC) $(CFLAGS) $(INCLUDES) -MD -MF $(QTK_OBJBASE)/$*.d -x objective-c++ -c $< -o $@
+$(QTK_LIB): $(TARGET) $(QTK_OBJECTS)
+ @mkdir -p $(dir $@)
+ $(LINK) $(QTK_LDFLAGS) -dynamiclib $(QTK_OBJECTS) -l$(BASE_NAME) -o $@