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