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