2016-04-02 18:26:12 +00:00
#
2016-10-26 17:07:58 +00:00
# tested on | Windows native | Linux cross-compilation
# ----------------------------+-------------------+---------------------------
2016-09-15 16:04:26 +00:00
# Visual C++ Build Tools 2015 | WORKS | n/a
2016-10-26 17:07:58 +00:00
# MSVS C++ 2010 Express | WORKS | n/a
# Mingw-w64 | WORKS | WORKS
# Mingw-w32 | WORKS | WORKS
# MinGW | WORKS | untested
2015-10-01 19:25:36 +00:00
#
#####
2016-09-15 16:04:26 +00:00
# Note about Visual C++ Build Tools :
#
# - Visual C++ Build Tools is the standalone MSVC compiler :
# http://landinghub.visualstudio.com/visual-cpp-build-tools
#
#####
2016-10-26 17:07:58 +00:00
# Notes about MSVS C++ :
#
# - MSVC2010-Express compiles to 32bits only.
#
#####
2015-10-01 19:25:36 +00:00
# Notes about Mingw-w64 and Mingw-w32 under Windows :
#
# - both can be installed using the official installer :
# http://mingw-w64.sourceforge.net/download.php#mingw-builds
#
# - if you want to compile both 32bits and 64bits, don't forget to
# run the installer twice to install them both.
#
# - install them into a path that does not contain spaces
# ( example : "C:/Mingw-w32", "C:/Mingw-w64" )
#
# - if you want to compile faster using the "-j" option, don't forget
2016-04-02 18:26:12 +00:00
# to install the appropriate version of the Pywin32 python extension
2015-10-01 19:25:36 +00:00
# available from : http://sourceforge.net/projects/pywin32/files/
#
2016-04-02 18:26:12 +00:00
# - before running scons, you must add into the environment path
# the path to the "/bin" directory of the Mingw version you want
2015-10-01 19:25:36 +00:00
# to use :
#
# set PATH=C:/Mingw-w32/bin;%PATH%
#
# - then, scons should be able to detect gcc.
# - Mingw-w32 only compiles 32bits.
# - Mingw-w64 only compiles 64bits.
#
2016-04-02 18:26:12 +00:00
# - it is possible to add them both at the same time into the PATH env,
# if you also define the MINGW32_PREFIX and MINGW64_PREFIX environment
# variables.
2015-10-01 19:25:36 +00:00
# For instance, you could store that set of commands into a .bat script
# that you would run just before scons :
#
# set PATH=C:\mingw-w32\bin;%PATH%
# set PATH=C:\mingw-w64\bin;%PATH%
# set MINGW32_PREFIX=C:\mingw-w32\bin\
# set MINGW64_PREFIX=C:\mingw-w64\bin\
#
#####
# Notes about Mingw, Mingw-w64 and Mingw-w32 under Linux :
#
# - default toolchain prefixes are :
# "i586-mingw32msvc-" for MinGW
# "i686-w64-mingw32-" for Mingw-w32
# "x86_64-w64-mingw32-" for Mingw-w64
#
# - if both MinGW and Mingw-w32 are installed on your system
# Mingw-w32 should take the priority over MinGW.
#
# - it is possible to manually override prefixes by defining
# the MINGW32_PREFIX and MINGW64_PREFIX environment variables.
2016-04-02 18:26:12 +00:00
#
2015-10-01 19:25:36 +00:00
#####
# Notes about Mingw under Windows :
#
2016-04-02 18:26:12 +00:00
# - this is the MinGW version from http://mingw.org/
2015-10-01 19:25:36 +00:00
# - install it into a path that does not contain spaces
# ( example : "C:/MinGW" )
2016-04-02 18:26:12 +00:00
# - several DirectX headers might be missing. You can copy them into
2015-10-01 19:25:36 +00:00
# the C:/MinGW/include" directory from this page :
# https://code.google.com/p/mingw-lib/source/browse/trunk/working/avcodec_to_widget_5/directx_include/
# - before running scons, add the path to the "/bin" directory :
# set PATH=C:/MinGW/bin;%PATH%
# - scons should be able to detect gcc.
#
#####
# TODO :
2016-10-30 17:57:40 +00:00
#
2015-10-01 19:25:36 +00:00
# - finish to cleanup this script to remove all the remains of previous hacks and workarounds
# - make it work with the Windows7 SDK that is supposed to enable 64bits compilation for MSVC2010-Express
# - confirm it works well with other Visual Studio versions.
# - update the wiki about the pywin32 extension required for the "-j" option under Windows.
# - update the wiki to document MINGW32_PREFIX and MINGW64_PREFIX
2016-04-02 18:26:12 +00:00
#
2015-10-01 19:25:36 +00:00
import os
2015-11-08 22:53:58 +00:00
import sys
2015-10-01 19:25:36 +00:00
2016-09-03 22:25:43 +00:00
import methods
2015-10-01 19:25:36 +00:00
2016-10-30 18:05:14 +00:00
2015-10-01 19:25:36 +00:00
def is_active ( ) :
2016-10-30 17:44:57 +00:00
return True
2016-04-02 18:26:12 +00:00
2016-10-30 18:05:14 +00:00
2015-10-01 19:25:36 +00:00
def get_name ( ) :
2016-10-30 17:44:57 +00:00
return " Windows "
2015-10-01 19:25:36 +00:00
2016-10-30 18:05:14 +00:00
2015-10-01 19:25:36 +00:00
def can_build ( ) :
2016-04-02 18:26:12 +00:00
2016-10-30 17:57:40 +00:00
if ( os . name == " nt " ) :
# building natively on windows!
if ( os . getenv ( " VCINSTALLDIR " ) ) :
2016-10-30 17:44:57 +00:00
return True
else :
print ( " \n MSVC not detected, attempting Mingw. " )
mingw32 = " "
mingw64 = " "
2016-10-30 17:57:40 +00:00
if ( os . getenv ( " MINGW32_PREFIX " ) ) :
2016-10-30 17:44:57 +00:00
mingw32 = os . getenv ( " MINGW32_PREFIX " )
2016-10-30 17:57:40 +00:00
if ( os . getenv ( " MINGW64_PREFIX " ) ) :
2016-10-30 17:44:57 +00:00
mingw64 = os . getenv ( " MINGW64_PREFIX " )
test = " gcc --version > NUL 2>&1 "
2016-10-30 17:57:40 +00:00
if os . system ( test ) != 0 and os . system ( mingw32 + test ) != 0 and os . system ( mingw64 + test ) != 0 :
2016-10-30 17:44:57 +00:00
print ( " - could not detect gcc. " )
print ( " Please, make sure a path to a Mingw /bin directory is accessible into the environment PATH. \n " )
return False
else :
print ( " - gcc detected. " )
return True
2016-10-30 17:57:40 +00:00
if ( os . name == " posix " ) :
2016-10-30 17:44:57 +00:00
mingw = " i586-mingw32msvc- "
mingw64 = " x86_64-w64-mingw32- "
mingw32 = " i686-w64-mingw32- "
if ( os . getenv ( " MINGW32_PREFIX " ) ) :
2016-10-30 17:57:40 +00:00
mingw32 = os . getenv ( " MINGW32_PREFIX " )
2016-10-30 17:44:57 +00:00
mingw = mingw32
if ( os . getenv ( " MINGW64_PREFIX " ) ) :
2016-10-30 17:57:40 +00:00
mingw64 = os . getenv ( " MINGW64_PREFIX " )
2016-10-30 17:44:57 +00:00
test = " gcc --version &>/dev/null "
2016-10-30 17:57:40 +00:00
if ( os . system ( mingw + test ) == 0 or os . system ( mingw64 + test ) == 0 or os . system ( mingw32 + test ) == 0 ) :
2016-10-30 17:44:57 +00:00
return True
return False
2016-04-02 18:26:12 +00:00
2016-10-30 18:05:14 +00:00
2015-10-01 19:25:36 +00:00
def get_opts ( ) :
2016-10-30 17:57:40 +00:00
mingw = " "
mingw32 = " "
mingw64 = " "
if ( os . name == " posix " ) :
2016-10-30 17:44:57 +00:00
mingw = " i586-mingw32msvc- "
mingw32 = " i686-w64-mingw32- "
mingw64 = " x86_64-w64-mingw32- "
2016-04-02 18:26:12 +00:00
2016-10-30 17:57:40 +00:00
if os . system ( mingw32 + " gcc --version &>/dev/null " ) != 0 :
2016-10-30 17:44:57 +00:00
mingw32 = mingw
2016-04-02 18:26:12 +00:00
2016-10-30 17:44:57 +00:00
if ( os . getenv ( " MINGW32_PREFIX " ) ) :
2016-10-30 17:57:40 +00:00
mingw32 = os . getenv ( " MINGW32_PREFIX " )
2016-10-30 17:44:57 +00:00
mingw = mingw32
if ( os . getenv ( " MINGW64_PREFIX " ) ) :
2016-10-30 17:57:40 +00:00
mingw64 = os . getenv ( " MINGW64_PREFIX " )
2015-10-01 19:25:36 +00:00
2016-10-30 17:44:57 +00:00
return [
2016-10-30 17:57:40 +00:00
( ' mingw_prefix ' , ' Mingw Prefix ' , mingw32 ) ,
( ' mingw_prefix_64 ' , ' Mingw Prefix 64 bits ' , mingw64 ) ,
2016-10-30 17:44:57 +00:00
]
2016-04-02 18:26:12 +00:00
2016-10-30 18:05:14 +00:00
2015-10-01 19:25:36 +00:00
def get_flags ( ) :
2016-10-30 17:44:57 +00:00
return [
]
2016-04-02 18:26:12 +00:00
2016-10-30 18:05:14 +00:00
2016-10-30 17:57:40 +00:00
def build_res_file ( target , source , env ) :
2015-10-01 19:25:36 +00:00
2016-10-30 17:44:57 +00:00
cmdbase = " "
if ( env [ " bits " ] == " 32 " ) :
cmdbase = env [ ' mingw_prefix ' ]
else :
cmdbase = env [ ' mingw_prefix_64 ' ]
CPPPATH = env [ ' CPPPATH ' ]
cmdbase = cmdbase + ' windres --include-dir . '
import subprocess
for x in range ( len ( source ) ) :
cmd = cmdbase + ' -i ' + str ( source [ x ] ) + ' -o ' + str ( target [ x ] )
try :
2016-10-30 17:57:40 +00:00
out = subprocess . Popen ( cmd , shell = True , stderr = subprocess . PIPE ) . communicate ( )
2016-10-30 17:44:57 +00:00
if len ( out [ 1 ] ) :
return 1
except :
return 1
return 0
2015-10-01 19:25:36 +00:00
2016-10-30 18:05:14 +00:00
2015-10-01 19:25:36 +00:00
def configure ( env ) :
2016-10-30 17:44:57 +00:00
env . Append ( CPPPATH = [ ' #platform/windows ' ] )
2017-01-08 19:41:11 +00:00
# Targeted Windows version: Vista (and later)
2016-11-03 04:20:26 +00:00
winver = " 0x0600 " # Windows Vista is the minimum target for windows builds
2017-01-08 19:41:11 +00:00
2016-10-30 17:57:40 +00:00
env [ ' is_mingw ' ] = False
if ( os . name == " nt " and os . getenv ( " VCINSTALLDIR " ) ) :
# build using visual studio
2016-10-30 17:44:57 +00:00
env [ ' ENV ' ] [ ' TMP ' ] = os . environ [ ' TMP ' ]
env . Append ( CPPPATH = [ ' #platform/windows/include ' ] )
env . Append ( LIBPATH = [ ' #platform/windows/lib ' ] )
2016-11-03 04:20:26 +00:00
env . Append ( CCFLAGS = [ ' /DWINVER= %s ' % winver , ' /D_WIN32_WINNT= %s ' % winver ] )
2016-10-30 17:44:57 +00:00
2016-10-30 17:57:40 +00:00
if ( env [ " target " ] == " release " ) :
2016-10-30 17:44:57 +00:00
env . Append ( CCFLAGS = [ ' /O2 ' ] )
env . Append ( LINKFLAGS = [ ' /SUBSYSTEM:WINDOWS ' ] )
env . Append ( LINKFLAGS = [ ' /ENTRY:mainCRTStartup ' ] )
2016-10-30 17:57:40 +00:00
elif ( env [ " target " ] == " release_debug " ) :
2016-10-30 17:44:57 +00:00
2016-10-30 17:57:40 +00:00
env . Append ( CCFLAGS = [ ' /O2 ' , ' /DDEBUG_ENABLED ' ] )
2016-10-30 17:44:57 +00:00
env . Append ( LINKFLAGS = [ ' /SUBSYSTEM:CONSOLE ' ] )
2016-10-30 17:57:40 +00:00
elif ( env [ " target " ] == " debug_release " ) :
2016-10-30 17:44:57 +00:00
2016-10-30 17:57:40 +00:00
env . Append ( CCFLAGS = [ ' /Z7 ' , ' /Od ' ] )
2016-10-30 17:44:57 +00:00
env . Append ( LINKFLAGS = [ ' /DEBUG ' ] )
env . Append ( LINKFLAGS = [ ' /SUBSYSTEM:WINDOWS ' ] )
env . Append ( LINKFLAGS = [ ' /ENTRY:mainCRTStartup ' ] )
2016-10-30 17:57:40 +00:00
elif ( env [ " target " ] == " debug " ) :
2016-10-30 17:44:57 +00:00
2016-10-30 17:57:40 +00:00
env . Append ( CCFLAGS = [ ' /Z7 ' , ' /DDEBUG_ENABLED ' , ' /DDEBUG_MEMORY_ENABLED ' , ' /DD3D_DEBUG_INFO ' , ' /Od ' ] )
2016-10-30 17:44:57 +00:00
env . Append ( LINKFLAGS = [ ' /SUBSYSTEM:CONSOLE ' ] )
env . Append ( LINKFLAGS = [ ' /DEBUG ' ] )
2017-04-09 20:56:37 +00:00
env . Append ( CCFLAGS = [ ' /MT ' , ' /Gd ' , ' /GR ' , ' /nologo ' ] )
2016-10-30 17:44:57 +00:00
env . Append ( CXXFLAGS = [ ' /TP ' ] )
env . Append ( CPPFLAGS = [ ' /DMSVC ' , ' /GR ' , ] )
2016-10-30 17:57:40 +00:00
env . Append ( CCFLAGS = [ ' /I ' + os . getenv ( " WindowsSdkDir " ) + " /Include " ] )
2016-10-30 17:44:57 +00:00
env . Append ( CCFLAGS = [ ' /DWINDOWS_ENABLED ' ] )
env . Append ( CCFLAGS = [ ' /DRTAUDIO_ENABLED ' ] )
env . Append ( CCFLAGS = [ ' /DWIN32 ' ] )
env . Append ( CCFLAGS = [ ' /DTYPED_METHOD_BIND ' ] )
2017-01-02 20:38:20 +00:00
env . Append ( CCFLAGS = [ ' /DOPENGL_ENABLED ' ] )
2016-10-30 17:57:40 +00:00
LIBS = [ ' winmm ' , ' opengl32 ' , ' dsound ' , ' kernel32 ' , ' ole32 ' , ' oleaut32 ' , ' user32 ' , ' gdi32 ' , ' IPHLPAPI ' , ' Shlwapi ' , ' wsock32 ' , ' Ws2_32 ' , ' shell32 ' , ' advapi32 ' , ' dinput8 ' , ' dxguid ' ]
env . Append ( LINKFLAGS = [ p + env [ " LIBSUFFIX " ] for p in LIBS ] )
2016-10-30 17:44:57 +00:00
2016-10-30 17:57:40 +00:00
env . Append ( LIBPATH = [ os . getenv ( " WindowsSdkDir " ) + " /Lib " ] )
2016-10-30 17:44:57 +00:00
if ( os . getenv ( " DXSDK_DIR " ) ) :
2016-10-30 17:57:40 +00:00
DIRECTX_PATH = os . getenv ( " DXSDK_DIR " )
2016-10-30 17:44:57 +00:00
else :
2016-10-30 17:57:40 +00:00
DIRECTX_PATH = " C:/Program Files/Microsoft DirectX SDK (March 2009) "
2015-10-01 19:25:36 +00:00
2016-10-30 17:44:57 +00:00
if ( os . getenv ( " VCINSTALLDIR " ) ) :
2016-10-30 17:57:40 +00:00
VC_PATH = os . getenv ( " VCINSTALLDIR " )
2016-10-30 17:44:57 +00:00
else :
2016-10-30 17:57:40 +00:00
VC_PATH = " "
2015-10-01 19:25:36 +00:00
2016-10-30 17:44:57 +00:00
env . Append ( CCFLAGS = [ " /I " + p for p in os . getenv ( " INCLUDE " ) . split ( " ; " ) ] )
env . Append ( LIBPATH = [ p for p in os . getenv ( " LIB " ) . split ( " ; " ) ] )
2016-10-30 17:57:40 +00:00
env . Append ( CCFLAGS = [ " /I " + DIRECTX_PATH + " /Include " ] )
env . Append ( LIBPATH = [ DIRECTX_PATH + " /Lib/x86 " ] )
2016-10-31 23:24:30 +00:00
env [ ' ENV ' ] = os . environ
2016-04-10 00:59:51 +00:00
2016-10-30 17:44:57 +00:00
# This detection function needs the tools env (that is env['ENV'], not SCons's env), and that is why it's this far bellow in the code
compiler_version_str = methods . detect_visual_c_compiler_version ( env [ ' ENV ' ] )
2016-04-10 00:59:51 +00:00
2016-10-30 17:44:57 +00:00
# Note: this detection/override code from here onward should be here instead of in SConstruct because it's platform and compiler specific (MSVC/Windows)
if ( env [ " bits " ] != " default " ) :
print " Error: bits argument is disabled for MSVC "
print ( " Bits argument is not supported for MSVC compilation. Architecture depends on the Native/Cross Compile Tools Prompt/Developer Console (or Visual Studio settings) "
2016-10-30 17:57:40 +00:00
+ " that is being used to run SCons. As a consequence, bits argument is disabled. Run scons again without bits argument (example: scons p=windows) and SCons will attempt to detect what MSVC compiler "
+ " will be executed and inform you. " )
2016-10-30 17:44:57 +00:00
sys . exit ( )
2016-04-10 00:59:51 +00:00
2017-03-24 20:45:31 +00:00
# Forcing bits argument because MSVC does not have a flag to set this through SCons... it's different compilers (cl.exe's) called from the proper command prompt
2016-10-30 17:44:57 +00:00
# that decide the architecture that is build for. Scons can only detect the os.getenviron (because vsvarsall.bat sets a lot of stuff for cl.exe to work with)
2016-10-30 17:57:40 +00:00
env [ " bits " ] = " 32 "
env [ " x86_libtheora_opt_vc " ] = True
2016-09-03 22:25:43 +00:00
2016-10-30 17:57:40 +00:00
print " Detected MSVC compiler: " + compiler_version_str
2016-10-30 17:44:57 +00:00
# If building for 64bit architecture, disable assembly optimisations for 32 bit builds (theora as of writting)... vc compiler for 64bit can not compile _asm
if ( compiler_version_str == " amd64 " or compiler_version_str == " x86_amd64 " ) :
2016-10-30 17:57:40 +00:00
env [ " bits " ] = " 64 "
env [ " x86_libtheora_opt_vc " ] = False
2016-10-30 17:44:57 +00:00
print " Compiled program architecture will be a 64 bit executable (forcing bits=64). "
2016-10-30 17:57:40 +00:00
elif ( compiler_version_str == " x86 " or compiler_version_str == " amd64_x86 " ) :
2016-10-30 17:44:57 +00:00
print " Compiled program architecture will be a 32 bit executable. (forcing bits=32). "
else :
print " Failed to detect MSVC compiler architecture version... Defaulting to 32bit executable settings (forcing bits=32). Compilation attempt will continue, but SCons can not detect for what architecture this build is compiled for. You should check your settings/compilation setup. "
2016-10-30 17:57:40 +00:00
if env [ " bits " ] == " 64 " :
2016-10-30 17:44:57 +00:00
env . Append ( CCFLAGS = [ ' /D_WIN64 ' ] )
2016-09-03 22:25:43 +00:00
2016-10-30 17:44:57 +00:00
# Incremental linking fix
env [ ' BUILDERS ' ] [ ' ProgramOriginal ' ] = env [ ' BUILDERS ' ] [ ' Program ' ]
env [ ' BUILDERS ' ] [ ' Program ' ] = methods . precious_program
2016-09-03 22:25:43 +00:00
2016-10-30 17:44:57 +00:00
else :
2015-10-01 19:25:36 +00:00
2016-10-30 17:44:57 +00:00
# Workaround for MinGW. See:
# http://www.scons.org/wiki/LongCmdLinesOnWin32
env . use_windows_spawn_fix ( )
2015-10-01 19:25:36 +00:00
2016-10-30 17:57:40 +00:00
# build using mingw
2016-11-03 04:20:26 +00:00
env . Append ( CCFLAGS = [ ' -DWINVER= %s ' % winver , ' -D_WIN32_WINNT= %s ' % winver ] )
2016-10-30 17:57:40 +00:00
if ( os . name == " nt " ) :
env [ ' ENV ' ] [ ' TMP ' ] = os . environ [ ' TMP ' ] # way to go scons, you can be so stupid sometimes
2016-10-30 17:44:57 +00:00
else :
2016-10-30 17:57:40 +00:00
env [ " PROGSUFFIX " ] = env [ " PROGSUFFIX " ] + " .exe " # for linux cross-compilation
2015-10-01 19:25:36 +00:00
2016-10-30 17:57:40 +00:00
mingw_prefix = " "
2015-10-01 19:25:36 +00:00
2016-10-30 17:57:40 +00:00
if ( env [ " bits " ] == " default " ) :
2017-01-10 16:08:31 +00:00
env [ " bits " ] = " 64 " if " PROGRAMFILES(X86) " in os . environ else " 32 "
2015-10-01 19:25:36 +00:00
2016-10-30 17:57:40 +00:00
if ( env [ " bits " ] == " 32 " ) :
2016-10-30 17:44:57 +00:00
env . Append ( LINKFLAGS = [ ' -static ' ] )
env . Append ( LINKFLAGS = [ ' -static-libgcc ' ] )
env . Append ( LINKFLAGS = [ ' -static-libstdc++ ' ] )
2016-10-31 23:24:30 +00:00
mingw_prefix = env [ " mingw_prefix " ]
2016-10-30 17:44:57 +00:00
else :
env . Append ( LINKFLAGS = [ ' -static ' ] )
2016-10-31 23:24:30 +00:00
mingw_prefix = env [ " mingw_prefix_64 " ]
2015-10-01 19:25:36 +00:00
2016-10-30 17:57:40 +00:00
nulstr = " "
2015-10-01 19:25:36 +00:00
2016-10-30 17:57:40 +00:00
if ( os . name == " posix " ) :
nulstr = " >/dev/null "
2016-10-30 17:44:57 +00:00
else :
2016-10-30 17:57:40 +00:00
nulstr = " >nul "
2015-10-01 19:25:36 +00:00
2016-10-30 17:44:57 +00:00
# if os.system(mingw_prefix+"gcc --version"+nulstr)!=0:
# #not really super consistent but..
# print("Can't find Windows compiler: "+mingw_prefix)
# sys.exit(255)
2015-10-01 19:25:36 +00:00
2016-10-30 17:57:40 +00:00
if ( env [ " target " ] == " release " ) :
2016-04-02 18:26:12 +00:00
2016-10-30 17:44:57 +00:00
env . Append ( CCFLAGS = [ ' -msse2 ' ] )
2016-01-16 15:52:40 +00:00
2016-10-30 17:57:40 +00:00
if ( env [ " bits " ] == " 64 " ) :
2016-10-30 17:44:57 +00:00
env . Append ( CCFLAGS = [ ' -O3 ' ] )
else :
env . Append ( CCFLAGS = [ ' -O2 ' ] )
2016-01-16 15:52:40 +00:00
2016-10-30 17:44:57 +00:00
env . Append ( LINKFLAGS = [ ' -Wl,--subsystem,windows ' ] )
2015-10-01 19:25:36 +00:00
2016-10-30 17:57:40 +00:00
elif ( env [ " target " ] == " release_debug " ) :
2015-10-01 19:25:36 +00:00
2016-10-30 17:57:40 +00:00
env . Append ( CCFLAGS = [ ' -O2 ' , ' -DDEBUG_ENABLED ' ] )
2015-10-01 19:25:36 +00:00
2016-10-30 17:57:40 +00:00
elif ( env [ " target " ] == " debug " ) :
2016-04-02 18:26:12 +00:00
2017-03-25 07:36:00 +00:00
env . Append ( CCFLAGS = [ ' -g ' , ' -DDEBUG_ENABLED ' , ' -DDEBUG_MEMORY_ENABLED ' ] )
2015-10-01 19:25:36 +00:00
2016-10-30 17:57:40 +00:00
env [ " CC " ] = mingw_prefix + " gcc "
env [ ' AS ' ] = mingw_prefix + " as "
env [ ' CXX ' ] = mingw_prefix + " g++ "
env [ ' AR ' ] = mingw_prefix + " ar "
env [ ' RANLIB ' ] = mingw_prefix + " ranlib "
env [ ' LD ' ] = mingw_prefix + " g++ "
env [ " x86_libtheora_opt_gcc " ] = True
2015-10-01 19:25:36 +00:00
2016-10-30 17:44:57 +00:00
#env['CC'] = "winegcc"
#env['CXX'] = "wineg++"
2015-10-01 19:25:36 +00:00
2016-10-30 17:57:40 +00:00
env . Append ( CCFLAGS = [ ' -DWINDOWS_ENABLED ' , ' -mwindows ' ] )
2016-10-30 17:44:57 +00:00
env . Append ( CPPFLAGS = [ ' -DRTAUDIO_ENABLED ' ] )
2017-01-02 20:38:20 +00:00
env . Append ( CCFLAGS = [ ' -DOPENGL_ENABLED ' ] )
2016-10-30 17:57:40 +00:00
env . Append ( LIBS = [ ' mingw32 ' , ' opengl32 ' , ' dsound ' , ' ole32 ' , ' d3d9 ' , ' winmm ' , ' gdi32 ' , ' iphlpapi ' , ' shlwapi ' , ' wsock32 ' , ' ws2_32 ' , ' kernel32 ' , ' oleaut32 ' , ' dinput8 ' , ' dxguid ' ] )
2015-10-01 19:25:36 +00:00
2016-10-30 17:44:57 +00:00
# if (env["bits"]=="32"):
# env.Append(LIBS=['gcc_s'])
# #--with-arch=i686
# env.Append(CPPFLAGS=['-march=i686'])
# env.Append(LINKFLAGS=['-march=i686'])
2015-10-01 19:25:36 +00:00
2016-10-30 17:44:57 +00:00
#'d3dx9d'
env . Append ( CPPFLAGS = [ ' -DMINGW_ENABLED ' ] )
2016-10-30 17:57:40 +00:00
# env.Append(LINKFLAGS=['-g'])
2015-10-01 19:25:36 +00:00
2016-10-30 17:44:57 +00:00
# resrc
2016-10-30 17:57:40 +00:00
env [ ' is_mingw ' ] = True
env . Append ( BUILDERS = { ' RES ' : env . Builder ( action = build_res_file , suffix = ' .o ' , src_suffix = ' .rc ' ) } )
2015-11-08 22:53:58 +00:00
2016-10-30 17:57:40 +00:00
env . Append ( BUILDERS = { ' GLSL120 ' : env . Builder ( action = methods . build_legacygl_headers , suffix = ' glsl.h ' , src_suffix = ' .glsl ' ) } )
env . Append ( BUILDERS = { ' GLSL ' : env . Builder ( action = methods . build_glsl_headers , suffix = ' glsl.h ' , src_suffix = ' .glsl ' ) } )
env . Append ( BUILDERS = { ' HLSL9 ' : env . Builder ( action = methods . build_hlsl_dx9_headers , suffix = ' hlsl.h ' , src_suffix = ' .hlsl ' ) } )
env . Append ( BUILDERS = { ' GLSL120GLES ' : env . Builder ( action = methods . build_gles2_headers , suffix = ' glsl.h ' , src_suffix = ' .glsl ' ) } )