# # Common makefile include for tks-source and plugins # (requires MSYS shell, MSVC and GNU make) # # n=32bit build ("x86", jit) # y=64bit build ("amd64", no jit) BUILD_64=y MK=msvc # invalid path, will be overwritten later on LIB_INSTALL_PREFIX=/f/git/VeeSeeVSTRack/dep/lib/msvc/ # y=use Windows 10 SDK # n=use Windows 7 SDK ifeq ($(BUILD_64),y) HAVE_WIN10=y else HAVE_WIN10=n endif # # Where to install tks # (creates # $(TKS_SITE_PREFIX)/plugins # $(TKS_SITE_PREFIX)/libraries # $(TKS_SITE_PREFIX)/applications # $(TKS_SITE_PREFIX)/modules # directories, # copies tks.exe to $(TKS_SITE_PREFIX)/tks.exe # ) # ifeq ($(BUILD_64),y) TKS_PREFIX=/c/Program Files/tks else TKS_PREFIX=/c/Program Files (x86)/tks endif TKS_SITE_PREFIX=$(TKS_PREFIX) # Target installation paths for executable and libraries/plugins/modules # (also used to build "tks.sh" startup script, see tks-source/install.tks) # (these vars must NOT be prefixed by $CROSS_ROOT) TKS_TARGET_PREFIX=$(TKS_PREFIX) TKS_TARGET_SITE_PREFIX=$(TKS_SITE_PREFIX) # # Number of parallel targets to make # NUMJOBS=$(NUMBER_OF_PROCESSORS) #NUMJOBS=4 # # Set to 'y' to use shared "msvcrtXX.dll" # (decreases file size considerably but requires the user to have e.g. msvcrt90.dll # installed) # (if unsure, choose 'y') # #USE_SHARED_MSVCRT=y USE_SHARED_MSVCRT=n # # Set this to != 'n' to use VC/Platform libs from WinDDK # (requires USE_SHARED_MSVCRT=y) # (This is used to get of the "dll hell" msvcrtXX.dll dependencies) # (this disables compiler security checks because _security_check_cookie() # does not seem to be exported by this version of msvcrt) # #WINDDK_PATH=f:/dev/winddk_msvcrt/3790.1830 # needs Windows Driver Kit Version 7.1.0 WINDDK_PATH=c:/WinDDK/7600.16385.1 #WINDDK_PATH=n # # Set to 'y' to use shared "zlib1.dll" # (otherwise compile and statically link zlib sources) # (if unsure, choose 'y' because zlib is also used by the tkopengl plugin) # ifeq ($(BUILD_64),y) USE_SHARED_ZLIB=y else USE_SHARED_ZLIB=n endif # # Set to 'y' to use shared libpng.dll # (otherwise compile and statically link libpng sources) # (actually you need to keep this set to 'n' on Win32 # since the official libpng Win32 binaries are for GCC # and I've been too lazy to build the .dll myself ._°) # ifeq ($(BUILD_64),y) USE_SHARED_LIBPNG=n else USE_SHARED_LIBPNG=n endif # # Common source directory for 3rd party libs (libpng, zlib) # # Now this is a bit tricky: The directory name MUST use the # MSDOS style drive:/path naming convention, NOT the MSYS # /drive/path one! (required by the MSVC compiler) # OTHER_SRC=f:/sources # # Path to zlib sources (required if USE_SHARED_ZLIB != y) # (zlib123.zip distribution) # (note) [19Jan2018] superceded by tks-source/zlib-1.2.11/ in windows build # ZLIB_SRC=$(OTHER_SRC)/zlib123 # # Path to zlib binaries (required if USE_SHARED_ZLIB=y) # (zlib123-dll.zip distribution) # (note) [19Jan2018] superceded by tks-source/zlib-1.2.11/ in windows build # ZLIB_BIN=$(OTHER_SRC)/zlib123-dll # # Path to libpng sources (required if USE_SHARED_LIBPNG != y) # (lpng1235.zip) # (Note: you may need to fix "fileno" to "_fileno" in pngwio.c:140 # because of ISO-C++ compliance) # LIBPNG_SRC=$(OTHER_SRC)/lpng1235 # # Set this to the Visual Studio installation directory. # Includes/libraries will be searched in $VCTK/include and $VCTK/lib # #VCTK=c:/Program Files (x86)/Microsoft Visual Studio 12.0/VC VCTK=c:/Program Files (x86)/Microsoft Visual Studio 14.0/VC # # Set this to the Windows Kits paths that contains the standard header and ucrt lib files # (installed by Visual Studio 15) # Note: not needed when using older version of VC # WINKITS_INC=$(VCTK)/../../Windows Kits/10/Include/10.0.10240.0/ucrt/ ifeq ($(BUILD_64),y) WINKITS_LIB=$(VCTK)/../../Windows Kits/10/Lib/10.0.10240.0/ucrt/x64/ else WINKITS_LIB=$(VCTK)/../../Windows Kits/10/Lib/10.0.10240.0/ucrt/x86/ endif # # Set this to the platform SDK installation directory # ifeq ($(HAVE_WIN10),y) W32API_INC=C:/Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/um ifeq ($(BUILD_64),y) W32API_LIB=C:/Program Files (x86)/Windows Kits/10/Lib/10.0.16299.0/um/x64 else W32API_LIB=C:/Program Files (x86)/Windows Kits/10/Lib/10.0.16299.0/um/x86 endif else #W32API=d:/Programme/Microsoft Platform SDK #W32API=f:/fli/tools/dev/MSVCTK2003/w32api #W32API=c:/Programme/Microsoft Platform SDK #W32API=c:/Program Files/Microsoft SDKs/Windows/v6.0a W32API=c:/Program Files (x86)/Microsoft SDKs/Windows/v7.1A W32API_INC=$(W32API)/include ifeq ($(BUILD_64),y) W32API_LIB=$(W32API)/lib/x64 else W32API_LIB=$(W32API)/lib endif endif # # Set this to the DirectX SDK installation directory # #DXSDK_LIB=f:/fli/tools/dev/MSVCTK2003/w32api/lib #DXSDK_LIB=c:/Programme/Microsoft DirectX SDK (December 2005)/lib/x86 #DXSDK_LIB='c:/Programme/Microsoft DirectX SDK (August 2006)/Lib/x86' #DXSDK_LIB=c:/Program Files/Microsoft DirectX SDK (August 2008)/Lib/x86 ifeq ($(BUILD_64),y) DXSDK_LIB=c:/Program Files (x86)/Microsoft DirectX SDK (August 2008)/Lib/x64 else DXSDK_LIB=c:/Program Files (x86)/Microsoft DirectX SDK (August 2008)/Lib/x86 endif #DXSDK_LIB=C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Lib/x86 #DXSDK_INC=f:/fli/tools/dev/MSVCTK2003/w32api/include #DXSDK_INC=c:/Programme/Microsoft DirectX SDK (December 2005)/include #DXSDK_INC='c:/Programme/Microsoft DirectX SDK (August 2006)/Include' #DXSDK_INC=c:/Program Files/Microsoft DirectX SDK (August 2008)/Include DXSDK_INC=c:/Program Files (x86)/Microsoft DirectX SDK (August 2008)/Include #DXSDK_INC=C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Include # # Tool setup # ifeq ($(BUILD_64),y) CC = "$(VCTK)/bin/amd64/cl.exe" LD = "$(VCTK)/bin/amd64/link.exe" LIB = "$(VCTK)/bin/amd64/lib.exe" else CC = "$(VCTK)/bin/cl.exe" LD = "$(VCTK)/bin/link.exe" LIB = "$(VCTK)/bin/lib.exe" endif CP = cp -f MAKE = make FIND = /c/msys/1.0/bin/find.exe MKDIR = mkdir -p RM = rm -f SED = sed TKS = "$(TKS_PREFIX)/tks" ZIP = zip MD5SUM = md5sum # # UPX binary [optional] # (Note: UPX303w crashes without -q option during parallel build (-j 4)) # #UPX=/h/fli/tools/dev/upx304w/upx.exe -q UPX=/f/fli/tools/dev/upx303w/upx.exe -q # # C compiler flags # #CFLAGS= -nologo -W3 -Zp8 -GR- -EHs-c- -D_CRT_SECURE_NO_DEPRECATE -DWIN32 -MP4 CFLAGS= -nologo -W3 -Zp8 -EHs-c- -D_CRT_SECURE_NO_DEPRECATE -DWIN32 #CFLAGS += /arch:SSE3 #CFLAGS += -arch:AVX2 CFLAGS += -wo4250 #-GR- ifeq ($(BUILD_64),y) CFLAGS+= -DBUILD_64 endif CFLAGS+= -I"$(WINKITS_INC)" # workaround for windows sdk sal_supp.h __useHeader/__on_failure macro redefinitions CFLAGS += -D_USING_V110_SDK71_ #-MP4 #-fp:fast ####CFLAGS= -nologo -W3 -Zp8 -GR- -EHs-c- -D_CRT_SECURE_NO_DEPRECATE -DWIN32 -MT -MP4 ####CFLAGS= -nologo -W3 -Zp8 -GR- -D_CRT_SECURE_NO_DEPRECATE -DWIN32 -MD -MP4 # # C++ compiler flags # CPPFLAGS= $(CFLAGS) CPPFLAGS+= -I"$(WINKITS_INC)" # # Default linker flags # LDFLAGS= -INCREMENTAL:NO -VERSION:0.9 #LDFLAGS= -INCREMENTAL:NO -MACHINE:X86 -VERSION:0.9 -DEBUG -FIXED:NO ifeq ($(BUILD_64),y) LDFLAGS += -MACHINE:X64 else LDFLAGS += -MACHINE:X86 endif # # Size optimization linker flags (used by plugins) # LDFLAGS_SIZE= #LDFLAGS_SIZE= -MACHINE:X86 -VERSION:0.9 -OPT:REF -OPT:ICF=10 -LTCG -INCREMENTAL:NO -NOASSEMBLY -SUBSYSTEM:CONSOLE #####-FORCE #####-NODEFAULTLIB:LIBCMT #####-OPT:NOWIN98 -NODEFAULTLIB # # Extra includes # EXTRA_INCLUDES= # # Extra library paths # EXTRA_LIBS= EXTRA_LIBS+= -LIBPATH:"$(WINKITS_LIB)" # # Default Optimization flags # OPTFLAGS= -Ox -Ot #OPTFLAGS= -Od -D_DEBUG #-Ox #OPTFLAGS = /Os /O1 #/Oy #/fp:strict /GS- # # Size optimization flags (used by plugins) # OPTFLAGS_SIZE= -Os -GL -GF -Gy -GA # # Which flags to use for plugins # #OPTFLAGS_PLUGIN = $(OPTFLAGS_SIZE) OPTFLAGS_PLUGIN = $(OPTFLAGS) # # Debug flags # DBGFLAGS= # # Do not define if msvcrt is missing hypotf() (old versions only) # Set to 'y' if it has. # #HAVE_HYPOTF=y # # Nothing to change after this line----------------------------- # CFLAGS+= $(EXTRA_INCLUDES) $(DBGFLAGS) CPPFLAGS+= $(EXTRA_INCLUDES) $(DBGFLAGS) LDFLAGS+= $(EXTRA_LIBS) # hack for portaudio plugin # (uses alloca resulting in unresolved __alloca_probe_16 reference) ifeq ($(FORCE_NO_WINDDK),y) WINDDK_PATH=n endif ifeq ($(USE_SHARED_MSVCRT),y) # link runtime libs dynamically.. SHARED_MSVCRT_CFLAGS = -MD ifneq ($(WINDDK_PATH),n) # ..using WinDDK ifeq ($(BUILD_64),y) SHARED_MSVCRT_LDFLAGS = -LIBPATH:"$(WINDDK_PATH)/lib/crt/amd64" -LIBPATH:"$(WINDDK_PATH)/lib/win7/amd64" else SHARED_MSVCRT_LDFLAGS = -LIBPATH:"$(WINDDK_PATH)/lib/crt/i386" -LIBPATH:"$(WINDDK_PATH)/lib/wxp/i386" endif # BUILD_64 SHARED_MSVCRT_LDFLAGS += msvcrt.lib kernel32.lib bufferoverflow.lib ntdll.lib # (note) inc/wxp does not exist in WinDDK 7.1.0 SHARED_MSVCRT_CFLAGS += -I"$(WINDDK_PATH)/inc/crt" -I"$(WINDDK_PATH)/inc/wxp" -QIfist -DDX_NEED_FPUFIX else # ..using VC install + Platform SDK SHARED_MSVCRT_LDFLAGS = -LIBPATH:"$(W32API_LIB)" msvcrt.lib kernel32.lib #-LIBPATH:"$(VCTK)/lib" SHARED_MSVCRT_CFLAGS += -I"$(VCTK)/include" -I"$(W32API_INC)" endif # WINDDK_PATH else # link runtime libs statically ifeq ($(TKS_LIB),y) ifeq ($(TKS_LIB_DEBUG),y) SHARED_MSVCRT_CFLAGS = -MDd else SHARED_MSVCRT_CFLAGS = -MD endif else SHARED_MSVCRT_CFLAGS = -MT endif SHARED_MSVCRT_CFLAGS += -I"$(VCTK)/include" -I"$(W32API_INC)" ifeq ($(BUILD_64),y) SHARED_MSVCRT_LDFLAGS = -LIBPATH:"$(VCTK)/lib/amd64" -LIBPATH:"$(W32API_LIB)" else SHARED_MSVCRT_LDFLAGS = -LIBPATH:"$(VCTK)/lib" -LIBPATH:"$(W32API_LIB)" endif # BUILD_64 endif # USE_SHARED_MSVCRT LDFLAGS += $(SHARED_MSVCRT_LDFLAGS) LDFLAGS_SIZE += $(SHARED_MSVCRT_LDFLAGS) CFLAGS += $(SHARED_MSVCRT_CFLAGS) CPPFLAGS += $(SHARED_MSVCRT_CFLAGS) # for plugins only: LDFLAGS_SIZE += -LIBPATH:"$(WINKITS_LIB)" # # HYPOTF emulation (tkmath) # ifeq ($(HAVE_HYPOTF),y) CFLAGS += -DHAVE_HYPOTF CPPFLAGS += -DHAVE_HYPOTF endif