| # |
| # Native File Dialog |
| # |
| # Scons build script -- GCC, Clang, Visual Studio |
| # Does not build test |
| |
| |
| import os |
| |
| |
| # target arch is build arch -- extend here for OS cross compiling |
| target_os=str(Platform()) |
| |
| # Corresponds to TARGET_ARCH set to environ. |
| target_arch = ARGUMENTS.get('target_arch', None) |
| |
| # visual studio does not import from environment |
| if target_os != 'win32': |
| IMPORT_FROM_ENV =['CC', 'CXX', 'CFLAGS', 'CXXFLAGS', 'ARFLAGS'] |
| else: |
| IMPORT_FROM_ENV =[] |
| |
| |
| debug = int(ARGUMENTS.get( 'debug', 0 )) |
| |
| nfd_files = ['nfd_common.c'] |
| |
| # Due to a Scons limitation, TARGET_ARCH cannot be appended to an existing environment. |
| if target_arch != None: |
| nfd_env = Environment( TARGET_ARCH=target_arch ) |
| else: |
| nfd_env = Environment() |
| |
| # import specific environment variables from the command line, overriding |
| # Scons environment defaults |
| for env_key in IMPORT_FROM_ENV: |
| if env_key in os.environ: |
| print "Making %s => %s" % ( env_key, os.environ[env_key] ) |
| nfd_env[env_key] = os.environ[env_key] |
| |
| # Windows runtime library types |
| win_rtl = {'debug': '/MDd', |
| 'release': '/MD'} |
| |
| def set_debug(env): |
| if target_os == 'win32': |
| env.Append( CCFLAGS=['/Z7', # obj contains full symbols |
| win_rtl['debug'] |
| ]) |
| else: |
| env.Append( CFLAGS=['-g'] ) |
| |
| |
| def set_release(env): |
| if target_os == 'win32': |
| env.Append( CCFLAGS=[win_rtl['release'], |
| '/O2'] ) |
| else: |
| env.Append( CFLAGS=['-O3'] ) |
| |
| |
| def set_warnings(env): |
| if target_os == 'win32': |
| env.Append( CCFLAGS=['/W3'], |
| CPPDEFINES=['_CRT_SECURE_NO_WARNINGS'] ) |
| else: |
| env.Append( CFLAGS=['-Wall', '-pedantic'] ) |
| |
| |
| def get_lib_name(base, is_debug): |
| if is_debug: |
| return base + '_d' |
| else: |
| return base |
| |
| |
| # Cocoa OS X builds - clang |
| if target_os == 'darwin': |
| nfd_files.append('nfd_cocoa.m') |
| nfd_env.CC='clang -fcolor-diagnostics' |
| |
| # Linux GTK+ 3 builds - GCC |
| elif target_os == 'posix': |
| nfd_files.append('nfd_gtk.c') |
| nfd_env.ParseConfig( 'pkg-config --cflags gtk+-3.0' ) |
| |
| # Windows builds - Visual Studio |
| elif target_os == 'win32': |
| nfd_files.append('nfd_win.cpp') |
| |
| if debug: |
| set_debug(nfd_env) |
| else: |
| set_release(nfd_env) |
| |
| set_warnings(nfd_env) |
| |
| nfd_env.Append( CPPPATH=['.','./include'] ) |
| nfd_env.StaticLibrary( get_lib_name('nfd', debug), nfd_files ) |