1 #
   2 # fxplugins Makefile
   3 #
   4 
   5 CC   = cl.exe
   6 CPP  = cl.exe
   7 LINK = link.exe
   8 
   9 GLIB_VERSION = 2.28.8
  10 
  11 BASECLASSES_TARGET = baseclasses.lib
  12 MODULES = $(BASECLASSES_TARGET)
  13 
  14 export BUILD_DIR = $(shell cygpath -u "$(OUTPUT_DIR)/$(BUILD_TYPE)")
  15 TARGET = $(BUILD_DIR)/$(BASE_NAME).dll
  16 
  17 MANIFEST   = $(shell cygpath -ma "$(BUILD_DIR)/$(BASE_NAME).manifest")
  18 IMPLIB     = $(shell cygpath -ma "$(BUILD_DIR)/$(BASE_NAME).lib")
  19 export PDB = $(shell cygpath -ma "$(BUILD_DIR)/$(BASE_NAME).pdb")
  20 
  21 SYSTEM_LIBS = glib-lite.lib \
  22               gstreamer-lite.lib \
  23               winmm.lib \
  24               strmiids.lib \
  25               kernel32.lib \
  26               user32.lib \
  27               shell32.lib \
  28               advapi32.lib \
  29               ole32.lib \
  30               oleaut32.lib \
  31               strmiids.lib
  32 
  33 LDFLAGS = -out:$(shell cygpath -ma $(TARGET)) -nologo -incremental:no -libpath:$(shell cygpath -ma $(BUILD_DIR)) -dll $(SYSTEM_LIBS) \
  34           -nodefaultlib:libcmt -manifest -manifestfile:$(MANIFEST) -manifestuac:"level='asInvoker' uiAccess='false'" -implib:$(IMPLIB) \
  35           -subsystem:windows -tlbid:1 -dynamicbase -nxcompat -errorreport:queue 
  36 
  37 OBJBASE_DIR = $(BUILD_DIR)/obj/plugins
  38 SRCBASE_DIR = ../../../plugins
  39 
  40 GLIB_DIR        = ../../../3rd_party/glib/glib-$(GLIB_VERSION)
  41 GSTREAMER_DIR   = ../../../gstreamer-lite
  42 BASECLASSES_DIR = $(shell cygpath -mas "$(BASECLASSES_SDK_DIR)"/Samples/multimedia/directshow/baseclasses)
  43 
  44 DIRLIST = dshowwrapper \
  45           javasource \
  46           progressbuffer \
  47           progressbuffer/win32
  48 
  49 DEP_DIRS = $(BUILD_DIR) $(addprefix $(OBJBASE_DIR)/,$(DIRLIST))
  50 
  51 C_SOURCES = javasource/javasource.c \
  52             javasource/marshal.c \
  53             progressbuffer/progressbuffer.c \
  54             progressbuffer/hlsprogressbuffer.c \
  55             progressbuffer/win32/filecache.c \
  56             fxplugins.c
  57 
  58 CPP_SOURCES = dshowwrapper/Allocator.cpp \
  59               dshowwrapper/dshowwrapper.cpp \
  60               dshowwrapper/Sink.cpp \
  61               dshowwrapper/Src.cpp
  62 
  63 COMPILER_FLAGS = -nologo -W3 -WX- -EHsc -GS -fp:precise \
  64                  -Zc:wchar_t -Zc:forScope- -analyze- -errorReport:queue -Gm-
  65 
  66 INCLUDES =  $(addprefix -I$(SRCBASE_DIR)/,$(DIRLIST)) \
  67             -I$(SRCBASE_DIR) \
  68             -I$(GLIB_DIR) \
  69             -I$(GLIB_DIR)/glib \
  70             -I$(GLIB_DIR)/gmodule \
  71             -I$(GLIB_DIR)/build/win32/vs100 \
  72             -I$(GSTREAMER_DIR)/gstreamer \
  73             -I$(GSTREAMER_DIR)/gstreamer/libs \
  74             -I$(GSTREAMER_DIR)/gst-plugins-base/gst-libs \
  75             -I$(BASECLASSES_DIR)
  76 
  77 CFLAGS =   -DWIN32 \
  78            -D_WINDOWS \
  79            -D_USRDLL \
  80            -DENABLE_PULL_MODE=1 \
  81            -DHAVE_CONFIG_H=on2_codecs_config.h \
  82            -DENABLE_SOURCE_SEEKING=1 \
  83            -DGSTREAMER_LITE \
  84            -DGST_REMOVE_DEPRECATED \
  85            -DGST_REMOVE_DISABLED \
  86            -DGST_DISABLE_GST_DEBUG \
  87            -DGST_DISABLE_LOADSAVE \
  88            -DG_DISABLE_DEPRECATED \
  89            -DG_DISABLE_ASSERT \
  90            -DG_DISABLE_CHECKS \
  91            -D_WINDLL \
  92            -D_MBCS \
  93            -DINITGUID \
  94            $(INCLUDES) \
  95            $(COMPILER_FLAGS)
  96 
  97 OBJECTS = $(patsubst %.cpp,$(OBJBASE_DIR)/%.obj,$(CPP_SOURCES)) $(patsubst %.c,$(OBJBASE_DIR)/%.obj,$(C_SOURCES))
  98 
  99 ifeq ($(BUILD_TYPE), Release)
 100     CFLAGS += -DNDEBUG -Oy -MD -Gy -GF
 101     LDFLAGS += -opt:ref -opt:icf
 102     O1FLAGS = -O1
 103     O2FLAGS = -O2
 104 else # debug
 105     LDFLAGS += -debug -pdb:$(PDB) 
 106     CFLAGS += -D_DEBUG -Oy- -RTC1 -MDd -DENABLE_VISUAL_STUDIO_MEMORY_LEAKS_DETECTION -wd"4018" -wd"4244" -wd"4274" -Zi -Fd$(PDB)
 107     O1FLAGS = -Od
 108     O2FLAGS = -Od
 109 endif
 110 
 111 ifeq ($(ARCH), x32)
 112     LDFLAGS += -MACHINE:x86
 113 else
 114     CFLAGS += -D_WIN64
 115     LDFLAGS += -MACHINE:x64
 116 endif
 117 
 118 ifneq ($(strip $(ON2_SRCDIR)),)
 119 DIRLIST += vp6
 120 
 121 INCLUDES += -I$(shell cygpath -ma "$(ON2_SRCDIR)/include") \
 122             -I$(shell cygpath -ma "$(ON2_SRCDIR)/src") \
 123             -I$(shell cygpath -ma "$(ON2_SRCDIR)/config/win")
 124 
 125 LDFLAGS += $(shell cygpath -ma "$(ON2_LIB)")
 126 
 127 C_SOURCES += vp6/flvdemux.c    \
 128              vp6/flvmetadata.c \
 129              vp6/flvparser.c   \
 130              vp6/vp6decoder.c
 131 
 132 CFLAGS += -DENABLE_ON2_DECODER
 133 endif
 134 
 135 LIBS = $(addprefix $(BUILD_DIR)/,$(MODULES))
 136 
 137 export BASECLASSES_DIR
 138 
 139 .PHONY: default $(MODULES) list
 140 
 141 default: $(MODULES)
 142         $(MAKE) $(TARGET)
 143 
 144 $(TARGET): $(OBJECTS) $(LIBS)
 145         $(LINK) $(LDFLAGS) $(shell cygpath -ma "$(RESOURCE)") $(foreach object,$(OBJECTS),$(shell cygpath -ma $(object))) $(foreach lib,$(LIBS),$(shell cygpath -ma $(lib)))
 146 
 147 $(OBJECTS): | $(DEP_DIRS)
 148 
 149 $(DEP_DIRS):
 150         @mkdir -p $(DEP_DIRS)
 151 
 152 $(OBJBASE_DIR)/%.obj: $(SRCBASE_DIR)/%.cpp
 153         $(CPP) $(CFLAGS) $(O1FLAGS) -TP -c -Fo$(shell cygpath -ma $@) $<
 154 
 155 $(OBJBASE_DIR)/%.obj: $(SRCBASE_DIR)/%.c
 156         $(CPP) $(CFLAGS) $(O1FLAGS) -TC -c -Fo$(shell cygpath -ma $@) $<
 157 
 158 $(OBJBASE_DIR)/plugin_vp6/vp6decoder.obj: $(SRCBASE_DIR)/plugin_vp6/vp6decoder.c
 159         $(CPP) $(CFLAGS) $(O2FLAGS) -TC -c -Fo$(shell cygpath -ma $@) $<
 160 
 161 $(BASECLASSES_TARGET):
 162         $(MAKE) TARGET=$(BUILD_DIR)/$(BASECLASSES_TARGET) -f Makefile.BaseClasses