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