1 # jfxmedia-jni win32/win64 makefile
   2 
   3 CC = cl.exe
   4 LINKER = link.exe
   5 MAKEDEPEND = makedepend.exe
   6 
   7 GLIB_VERSION = 2.42.1
   8 
   9 BUILD_DIR = $(shell cygpath -u "$(OUTPUT_DIR)/$(BUILD_TYPE)")
  10 
  11 SRCBASE_DIR = ../..
  12 OBJBASE_DIR = $(BUILD_DIR)/obj/jfxmedia-jni
  13 
  14 GSTREAMER_LITE_DIR = ../../../gstreamer/gstreamer-lite
  15 GLIB_LITE_DIR = ../../../gstreamer/3rd_party/glib/glib-$(GLIB_VERSION)
  16 
  17 DIRLIST = jni \
  18           PipelineManagement \
  19           MediaManagement \
  20           Locator \
  21           Utils \
  22           Utils/win32 \
  23           platform/gstreamer
  24 
  25 TARGET = $(BUILD_DIR)/$(BASE_NAME).dll
  26 
  27 CL_COMPILER_FLAGS = -nologo -W3 -WX- -Gm- -EHsc -GS -fp:precise \
  28                     -Zc:wchar_t- -Zc:forScope -Gd -errorReport:queue
  29 
  30 JNI_INCLUDES =  -I"$(JAVA_HOME)/include" \
  31                 -I"$(JAVA_HOME)/include/win32"
  32 
  33 BASE_INCLUDES = -I$(SRCBASE_DIR) \
  34                 -I$(SRCBASE_DIR)/jni
  35 
  36 INCLUDES = $(BASE_INCLUDES) \
  37            $(JNI_INCLUDES) \
  38            -I$(shell cygpath -ma "$(GENERATED_HEADERS_DIR)") \
  39            -I$(GLIB_LITE_DIR)/ \
  40            -I$(GLIB_LITE_DIR)/glib \
  41            -I$(GLIB_LITE_DIR)/gmodule \
  42            -I$(GLIB_LITE_DIR)/build/win32/vs100 \
  43            -I$(GSTREAMER_LITE_DIR)/gstreamer \
  44            -I$(GSTREAMER_LITE_DIR)/gst-plugins-base/gst-libs \
  45            -I$(GSTREAMER_LITE_DIR)/gst-plugins-base/win32/common \
  46            -I$(GSTREAMER_LITE_DIR)/gstreamer/libs
  47 
  48 CFLAGS = -DWIN32 \
  49          -D_WINDOWS \
  50          -D_USRDLL \
  51          -DJFXMEDIA_JNI_EXPORTS \
  52          -DTARGET_OS_WIN32=1 \
  53          -D_WIN32_WINNT=0x0500 \
  54          -DGST_DISABLE_LOADSAVE \
  55          -DGST_REMOVE_DEPRECATED \
  56          -DG_DISABLE_DEPRECATED \
  57          -DGSTREAMER_LITE \
  58          -D_WINDLL \
  59          -D_MBCS \
  60          $(INCLUDES) \
  61          $(CL_COMPILER_FLAGS)
  62 
  63 ifeq ($(VS_VER), 100)
  64     CFLAGS += -D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB
  65 endif
  66 
  67 LIBS = gstreamer-lite.lib \
  68        glib-lite.lib \
  69        Winmm.lib \
  70        kernel32.lib \
  71        user32.lib \
  72        comdlg32.lib \
  73        advapi32.lib
  74 
  75 MANIFEST = $(shell cygpath -ma "$(BUILD_DIR)/$(BASE_NAME).manifest")
  76 PDB      = $(shell cygpath -ma "$(BUILD_DIR)/$(BASE_NAME).pdb")
  77 
  78 LDFLAGS = -dll -out:$(shell cygpath -ma $(TARGET)) -incremental:no -nologo -libpath:$(shell cygpath -ma $(BUILD_DIR)) $(LIBS) \
  79           -manifest -manifestfile:$(MANIFEST) -manifestuac:"level='asInvoker' uiAccess='false'" \
  80           -subsystem:windows -dynamicbase -errorreport:queue
  81 
  82 ifeq ($(BUILD_TYPE), Release)
  83     CFLAGS += -DNDEBUG -O2 -MD
  84     LDFLAGS += -opt:ref -opt:icf
  85 else
  86     CFLAGS += -D_DEBUG -Od -RTC1 -MDd -Zi -Fd$(PDB)
  87     LDFLAGS += -debug -pdb:$(PDB)
  88 endif
  89 
  90 ifeq ($(ARCH), x32)
  91     CFLAGS += -Oy-
  92     LDFLAGS += -MACHINE:x86
  93 else
  94     CFLAGS += -D_WIN64
  95     LDFLAGS += -MACHINE:x64
  96 endif
  97 
  98 CPP_SOURCES = \
  99         jni/com_sun_media_jfxmedia_logging_Logger.cpp   \
 100         jni/JavaBandsHolder.cpp \
 101         jni/JavaMediaWarningListener.cpp \
 102         jni/JavaPlayerEventDispatcher.cpp \
 103         jni/JniUtils.cpp \
 104         jni/Logger.cpp \
 105         jni/NativeVideoBuffer.cpp \
 106         jni/NativeAudioEqualizer.cpp \
 107         jni/NativeAudioSpectrum.cpp \
 108         jni/NativeEqualizerBand.cpp \
 109         jni/JavaInputStreamCallbacks.cpp \
 110         PipelineManagement/AudioTrack.cpp \
 111         PipelineManagement/Pipeline.cpp \
 112         PipelineManagement/PipelineFactory.cpp \
 113         PipelineManagement/Track.cpp \
 114         PipelineManagement/VideoFrame.cpp \
 115         PipelineManagement/VideoTrack.cpp \
 116         PipelineManagement/SubtitleTrack.cpp \
 117         MediaManagement/Media.cpp \
 118         MediaManagement/MediaManager.cpp \
 119         Locator/Locator.cpp \
 120         Locator/LocatorStream.cpp \
 121         platform/gstreamer/GstMedia.cpp \
 122         platform/gstreamer/GstMediaPlayer.cpp \
 123         platform/gstreamer/GstPlatform.cpp \
 124         platform/gstreamer/GstAudioEqualizer.cpp \
 125         platform/gstreamer/GstAudioPlaybackPipeline.cpp \
 126         platform/gstreamer/GstAudioSpectrum.cpp \
 127         platform/gstreamer/GstAVPlaybackPipeline.cpp \
 128         platform/gstreamer/GstElementContainer.cpp \
 129         platform/gstreamer/GstJniUtils.cpp \
 130         platform/gstreamer/GstMediaManager.cpp \
 131         platform/gstreamer/GstPipelineFactory.cpp \
 132         platform/gstreamer/GstVideoFrame.cpp \
 133         Utils/MediaWarningDispatcher.cpp \
 134         Utils/LowLevelPerf.cpp \
 135         Utils/win32/WinCriticalSection.cpp  \
 136         Utils/win32/WinDllMain.cpp \
 137         Utils/win32/WinThread.cpp \
 138         Utils/win32/WinExceptionHandler.cpp
 139 
 140 C_SOURCES = Utils/ColorConverter.c
 141 
 142 OBJ_DIRS = $(addprefix $(OBJBASE_DIR)/,$(DIRLIST))
 143 
 144 DEP_DIRS = $(BUILD_DIR) $(OBJ_DIRS)
 145 
 146 DEPTOKEN = "\# makedepend"
 147 DEPFILE = $(OBJBASE_DIR)/Depend.mak
 148 
 149 OBJECTS = $(patsubst %.cpp,$(OBJBASE_DIR)/%.obj,$(CPP_SOURCES)) $(patsubst %.c,$(OBJBASE_DIR)/%.obj,$(C_SOURCES))
 150 
 151 .PHONY: clean default list
 152 
 153 default: $(TARGET)
 154 
 155 $(TARGET): $(DEPFILE) $(OBJECTS) 
 156         $(LINKER) $(LDFLAGS) $(shell cygpath -ma "$(RESOURCE)") $(foreach object,$(OBJECTS),$(shell cygpath -ma $(object)))
 157 
 158 $(DEPFILE): | $(DEP_DIRS)
 159         @echo $(DEPTOKEN) > $(DEPFILE)
 160         makedepend -DTARGET_OS_WIN32=1 $(BASE_INCLUDES) $(shell cygpath -u "$(GENERATED_HEADERS_DIR)") -Y -o.obj -f$(DEPFILE) -s$(DEPTOKEN) $(addprefix $(SRCBASE_DIR)/,$(CPP_SOURCES)) >& /dev/null
 161 
 162 $(DEP_DIRS):
 163         mkdir -p $(DEP_DIRS)
 164 
 165 -include $(DEPFILE)
 166 
 167 $(OBJBASE_DIR)/%.obj: $(SRCBASE_DIR)/%.cpp
 168         $(CC) $(CFLAGS) -TP -c -Fo$(shell cygpath -ma $@) $<
 169 
 170 $(OBJBASE_DIR)/%.obj: $(SRCBASE_DIR)/%.c
 171         $(CC) $(CFLAGS) -TC -c -Fo$(shell cygpath -ma $@) $<