Date: Tue, 14 Jul 2020 11:05:24 -0700
From: Don Wilde <dwilde1@gmail.com>
To: yuri@freebsd.org
Cc: freebsd-stable@freebsd.org
Subject: Re: quirk in libpng16.{a|so}
Message-ID: <0fc386c4-35dc-39de-a0f0-365e82d4efde@gmail.com>
In-Reply-To: <d6be190a-878c-5af4-fa40-72b353b97503@rawbw.com>
References: <05550c7e-e76b-5373-03ec-8e9008f3927f@gmail.com> <d6be190a-878c-5af4-fa40-72b353b97503@rawbw.com>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --] On 7/14/20 10:10 AM, yuri@freebsd.org wrote: > On 2020-07-14 09:59, Don Wilde wrote: >> Hi, Yuri -- I understand that you maintain the png++ "C++ wrapper for >> libpng"? >> >> There's a game engine I'm trying to work with on my 12-stable system, >> called Drag[en]gine. >> >> https://dragondreams.ch/ >> >> It's a complicated port, and I'll end up tweaking some heavy-duty >> OpenGL graphics to get it to do stuff for me. The first issue is that >> our libpng16 library is missing a C++ call: >> png_access_version_number(), which causes its setup program (a Python >> script)to crash. >> >> I have both png and png++ installed and both libpng16.so and >> libpng16.a are present. >> >> I'm in the process of (also) installing it on my Ubuntu 18.04.4 >> machine. It hasn't given me this libpng16 issue. >> >> What do you think of this problem? Is this yours or is it the actual >> libpng library itself? >> > > Hi Don, > > > I used png++ on both Linux (CentOS) and FreeBSD without any problems. > > > I also can't find png_access_version_number() call in the png++ sources. Okay, this must actually be a call in the actual libpng sources. > > > Could you please provide an example code that exhibits the problem? Here's what happens, though there's evidently quite a bit of construction that happens in the middle. scons is Yet Another Super-Make, and it's plus (evidently) is that it can also generate Android and Windows code. I type 'scons -h', and the output is: scons: Reading SConscript files ... Checking for zlibVersion() in C++ library z... yes Checking for png_access_version_number() in C++ library png16... no KeyError: 'forceRuntimeLibs': File "/opt/dragengine/SConstruct", line 633: duplicate=0, exports='parent_env parent_targets parent_report' ) File "/usr/local/lib/python3.7/site-packages/SCons/Script/SConscript.py", line 660: return method(*args, **kw) File "/usr/local/lib/python3.7/site-packages/SCons/Script/SConscript.py", line 597: return _SConscript(self.fs, *files, **subst_kw) File "/usr/local/lib/python3.7/site-packages/SCons/Script/SConscript.py", line 286: exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals) File "/opt/dragengine/extern/libpng/SConscript", line 120: forceRuntimeLibs.extend(parent_targets['lib_zlib']['forceRuntimeLibs']) The SConscript files are generated from the (attached) custom.py, from what I understand. The error happens in the construct between lines 631 - 633 of that attached SConscript file (which acts like Makefile does for C and C++). Don Wilde **************************************************** * What is the Internet of Things but a system * * of systems including humans? * **************************************************** [-- Attachment #2 --] from SConsCommon import * from SConsPlatformAndroid import androidUpdateEnv # create environment tools = ARGUMENTS.get( 'tools', '' ) if tools: if tools == 'mingw64': parent_env = Environment( CPPPATH='.', LIBPATH='.', tools=['mingw'] ) compiler = 'x86_64-w64-mingw32' if not parent_env.Detect( '{}-g++'.format( compiler ) ): print( 'Windows 64-bit Cross-Compiler not found.' ) Return() parent_env.Replace( CC = '{}-gcc'.format( compiler ) ) parent_env.Replace( CXX = '{}-g++'.format( compiler ) ) parent_env.Replace( LD = '{}-ld'.format( compiler ) ) parent_env.Replace( AR = '{}-ar'.format( compiler ) ) parent_env.Replace( STRIP = '{}-strip'.format( compiler ) ) #parent_env.Replace( MAKE = '{}-make'.format( compiler ) ) parent_env.Replace( RANLIB = '{}-ranlib'.format( compiler ) ) parent_env.Replace( NM = '{}-nm'.format( compiler ) ) parent_env.Replace( RC = '{}-windres'.format( compiler ) ) parent_env.Replace( DLLTOOL = '{}-dlltool'.format( compiler ) ) parent_env.Replace( SHCCFLAGS = [ '$CCFLAGS' ] ) # remove -fPIC if included. just to silence misleading warnings parent_env.Replace( SHLIBPREFIX = '' ) # fix prefix since the environment is set up for unix parent_env.Replace( SHLIBSUFFIX = '.dll' ) # fix suffix since the environment is set up for unix parent_env.Replace( LIBPREFIX = '' ) # fix prefix since the environment is set up for unix parent_env.Replace( LIBPREFIXES = [ '' ] ) # fix prefix since the environment is set up for unix parent_env.Replace( LIBSUFFIX = '.lib' ) parent_env.Replace( LIBSUFFIXES = [ '.lib', '.a' ] ) parent_env[ 'OS_NAME' ] = 'win32' parent_env[ 'SYS_PLATFORM' ] = 'win32' parent_env[ 'CROSSCOMPILE_HOST' ] = compiler parent_env[ 'CROSSCOMPILE_SYSROOT' ] = '/usr/{}'.format( compiler ) # prevent stdc++6 problems with missnig symbols on different compilers #parent_env.Append( CPPFLAGS = [ '-std=c++11' ] ) #parent_env.Append( CROSSCOMPILE_CFLAGS = [ '-std=c++11' ] ) #parent_env.Append( CROSSCOMPILE_CPPFLAGS = [ '-std=c++11' ] ) print( '*** Using Windows 64 Cross Compiler' ) else: parent_env = Environment( CPPPATH='.', LIBPATH='.', tools=[ tools ] ) parent_env[ 'OS_NAME' ] = os.name parent_env[ 'SYS_PLATFORM' ] = sys.platform elif sys.platform == 'win32': print( 'Windows detected. Setting up MinGW64 toolchain' ) parent_env = Environment( CPPPATH='.', LIBPATH='.', tools=[ 'mingw' ] ) """parent_env.Replace( CC = 'x86_64-w64-mingw32-gcc.exe' ) parent_env.Replace( CXX = 'x86_64-w64-mingw32-g++.exe' ) parent_env.Replace( LD = 'x86_64-w64-mingw32-g++.exe' ) parent_env.Replace( AR = 'x86_64-w64-mingw32-ar' ) parent_env.Replace( STRIP = 'x86_64-w64-mingw32-strip' ) parent_env.Replace( MAKE = 'x86_64-w64-mingw32-make' ) parent_env.Replace( RC = 'x86_64-w64-mingw32-windres' ) parent_env.Replace( RC = 'x86_64-w64-mingw32-dlltool' )""" #parent_env.Append( ENV = { 'PATH' : 'C:\\MinGW\\x86_64-w64-mingw32\\bin\\' } ) #parent_env.Append( ENV = { 'PATH' : 'C:\MinGW\bin;C:\MinGW\libexec\gcc\x86_64-w64-mingw32\4.8.3;' + os.environ[ 'PATH' ] } ) ##parent_env.Append( ENV = { 'PATH' : 'C:\MinGW\bin;' + os.environ[ 'PATH' ] } ) parent_env[ 'OS_NAME' ] = os.name parent_env[ 'SYS_PLATFORM' ] = sys.platform else: parent_env = Environment( CPPPATH='.', LIBPATH='.' ) parent_env[ 'OS_NAME' ] = os.name parent_env[ 'SYS_PLATFORM' ] = sys.platform parent_env.Tool('logStdOut') if parent_env['LogStdOut_Enabled']: parent_env['LOG_STD_OUT_FILE'] = open('build.log', 'w') parent_env.Tool('runIsolated') parent_env.Tool('macos_bundle') InitCommon( parent_env ) #print('os.name', os.name) #print('sys.platform', sys.platform) # append flags parent_env.Replace( MODULE_CPPFLAGS = [] ) parent_env.Replace( MODULE_LINKFLAGS = [] ) if 'CPPFLAGS' in os.environ: parent_env.Append( CPPFLAGS = os.environ[ 'CPPFLAGS' ] ) if 'LDFLAGS' in os.environ: parent_env.Append( LINKFLAGS = os.environ[ 'LDFLAGS' ] ) if parent_env['OSPosix']: parent_env.Append( CPPFLAGS = [ '-DOS_UNIX' ] ) if parent_env['OSWindows']: parent_env.Append( CPPFLAGS = [ '-DOS_W32', '-mwindows' ] ) # mingw requires this to recognize wWinMain parent_env.Append( CPPFLAGS = [ '-municode' ] ) elif parent_env['OSBeOS']: parent_env.Append( CPPFLAGS = [ '-DOS_BEOS' ] ) parent_env.Append( LINKFLAGS = [ '-L/boot/common/lib' ] ) elif parent_env['OSMacOS']: parent_env.Append(CPPFLAGS = ['-DOS_MACOS']) if not (parent_env['OSPosix'] or parent_env['OSWindows'] or parent_env['OSBeOS'] or parent_env['OSMacOS']): Exit( 'No supported OS found!') # parameters #params = Variables( [ 'parameters.cache', 'custom.py' ] ) params = Variables( [ 'custom.py' ] ) params.Add( EnumVariable( 'platform_android', 'Build for Android platform', 'no', ['no','armv7','x86'] ) ) params.Add( BoolVariable( 'with_tests', 'Build engine tests', False ) ) params.Add( BoolVariable( 'with_debug', 'Build with debug symbols for GDB usage', False ) ) params.Add( BoolVariable( 'with_warnerrors', 'Treat warnings as errors ( dev-builds )', False ) ) params.Add( BoolVariable( 'with_sanitize', 'Enable sanitizing (dev-builds)', False ) ) params.Add( BoolVariable( 'with_sanitize_thread', 'Enable thread sanitizing (dev-builds)', False ) ) params.Add( BoolVariable( 'with_verbose', 'Verbose compilation showing command lines( dev-builds )', False ) ) params.Add(StringVariable('force_version', 'Force version (empty to disable)', '')) params.Add( TernaryVariable( 'with_system_zlib', 'Use System Zlib' ) ) params.Add( TernaryVariable( 'with_system_libpng', 'Use System libpng' ) ) params.Add( TernaryVariable( 'with_system_sndio', 'Use System sndio' ) ) params.Add( TernaryVariable( 'with_system_libapng', 'Use System libapng' ) ) params.Add( TernaryVariable( 'with_system_libjpeg', 'Use System JPEG' ) ) params.Add( TernaryVariable( 'with_system_openal', 'Use System OpenAL' ) ) params.Add( ListVariable( 'with_openal_backends', 'When compiling OpenAL what backends are required', [], ['alsa', 'pulseaudio', 'portaudio', 'oss'] ) ) params.Add( TernaryVariable( 'with_system_libogg', 'Use System libogg' ) ) params.Add( TernaryVariable( 'with_system_libvorbis', 'Use System libvorbis' ) ) params.Add( TernaryVariable( 'with_system_libtheora', 'Use System libtheora' ) ) params.Add( TernaryVariable( 'with_system_fox', 'Use System FOX Toolkit' ) ) params.Add( TernaryVariable( 'with_system_dragonscript', 'Use System DragonScript' ) ) params.Add( PathVariable( 'with_dragonscript_inc', 'Path to DragonScript include files or empty to use system default', '', PathVariable.PathAccept ) ) params.Add( PathVariable( 'with_dragonscript_lib', 'Path to DragonScript library files or empty to use system default', '', PathVariable.PathAccept ) ) params.Add( TernaryVariable( 'with_system_libffi', 'Use System libffi' ) ) params.Add( TernaryVariable( 'with_system_libltdl', 'Use System libltdl' ) ) params.Add( TernaryVariable( 'with_system_libsigsegv', 'Use System libsigsegv' ) ) params.Add( TernaryVariable( 'with_system_smalltalk', 'Use System Smalltalk' ) ) params.Add( TernaryVariable( 'with_system_libevdev', 'Use System libevdev' ) ) params.Add( TernaryVariable( 'with_system_libusb', 'Use System libusb' ) ) params.Add( TernaryVariable( 'with_system_libhidapi', 'Use System libhidapi' ) ) params.Add( TernaryVariable( 'with_system_libopenhmd', 'Use System libopenhmd' ) ) params.Add( TernaryVariable( 'with_system_fftw', 'Use System fftw' ) ) params.Add( TernaryVariable( 'with_opengl', 'Use OpenGL' ) ) params.Add( TernaryVariable( 'with_python', 'Use Python' ) ) params.Add( TernaryVariable( 'with_npapisdk', 'Use NPAPI SDK' ) ) params.Add( TernaryVariable( 'build_audio_openal', 'Build OpenAL Audio Module' ) ) params.Add( TernaryVariable( 'build_cr_basic', 'Build Basic Crash-Recovery Module' ) ) params.Add( TernaryVariable( 'build_graphics_opengl', 'Build OpenGL Graphics Module' ) ) params.Add( TernaryVariable( 'build_image_png', 'Build PNG Image Module' ) ) params.Add( TernaryVariable( 'build_image_png3d', 'Build PNG-3D Image Module' ) ) params.Add( TernaryVariable( 'build_image_jpeg', 'Build JPEG Image Module' ) ) params.Add( TernaryVariable( 'build_input_x', 'Build X Input Module' ) ) params.Add( TernaryVariable( 'build_input_w32', 'Build Windows Input Module' ) ) params.Add( TernaryVariable( 'build_input_beos', 'Build BeOS Input Module' ) ) params.Add( TernaryVariable( 'build_input_macos', 'Build MacOS Input Module' ) ) params.Add( TernaryVariable( 'build_input_android', 'Build Android Input Module' ) ) params.Add( TernaryVariable( 'build_physics_bullet', 'Build Bullet Physics Module', True ) ) params.Add( TernaryVariable( 'build_script_ds', 'Build DragonScript Script Module' ) ) params.Add( TernaryVariable( 'build_script_python', 'Build Python Script Module' ) ) params.Add( TernaryVariable( 'build_script_smalltalk', 'Build Smalltalk Script Module' ) ) params.Add( TernaryVariable( 'build_sound_ogg', 'Build OGG Vorbis Sound Module' ) ) params.Add( TernaryVariable( 'build_video_theora', 'Build Theora Video Module' ) ) params.Add( TernaryVariable( 'build_video_apng', 'Build Animated PNG Video Module' ) ) params.Add( TernaryVariable( 'build_igde', 'Build IGDE' ) ) params.Add( TernaryVariable( 'build_guilauncher', 'Build GUI Launcher' ) ) params.Add( TernaryVariable( 'build_launcher_android', 'Build Android Launcher' ) ) params.Add( TernaryVariable( 'build_archive_delga', 'Build DELGA Archive Module' ) ) params.Add( EnumVariable( 'archive_format', 'Archive file format', 'tarbz2', ['tarbz2', 'zip'] ) ) params.Add( StringVariable( 'archive_name_engine', 'Archive file name without extension for Drag[en]gine archive', 'dragengine' ) ) params.Add( StringVariable( 'archive_name_engine_dev', 'Archive file name without extension for Drag[en]gine Development archive', 'dragengine-dev' ) ) params.Add( StringVariable( 'archive_name_igde', 'Archive file name without extension for IGDE archive', 'deigde' ) ) params.Add( StringVariable( 'archive_name_igde_dev', 'Archive file name without extension for IGDE Development archive', 'deigde_dev' ) ) params.Add( StringVariable( 'archive_name_special', 'Archive file name without extension for Special archive', 'despecial' ) ) params.Add( StringVariable( 'installer_name_engine', 'Installer file name without extension for Drag[en]gine installer', 'install-dragengine' ) ) params.Add( StringVariable( 'installer_name_engine_dev', 'Installer file name without extension for Drag[en]gine Development installer', 'install-dragengine-dev' ) ) params.Add( StringVariable( 'installer_name_igde', 'Installer file name without extension for IGDE installer', 'install-deigde' ) ) params.Add( StringVariable( 'installer_name_igde_dev', 'Installer file name without extension for IGDE Development installer', 'install-deigde-dev' ) ) if parent_env['OSMacOS']: params.Add( TernaryVariable( 'with_dl', 'Use the dynamic library system' ) ) params.Add( TernaryVariable( 'with_pthread', 'Use pthread' ) ) params.Add( TernaryVariable( 'with_x', 'Use the X Window System' ) ) params.Add(EnumVariable('igde_toolkit', 'ToolKit to use for building IGDE', 'null', ['null'])) params.Add( PathVariable( 'prefix', 'System path', '/usr', PathVariable.PathAccept ) ) params.Add( PathVariable( 'libdir', 'System libraries', '${prefix}/lib', PathVariable.PathAccept ) ) params.Add( PathVariable( 'includedir', 'System includes', '${prefix}/include', PathVariable.PathAccept ) ) params.Add( PathVariable( 'datadir', 'System shares', '${prefix}/share', PathVariable.PathAccept ) ) params.Add( PathVariable( 'sysconfdir', 'System configuration', '/etc', PathVariable.PathAccept ) ) params.Add( PathVariable( 'execdir', 'System binaries', '/Applications', PathVariable.PathAccept ) ) params.Add( PathVariable( 'sysvardir', 'System var', '${prefix}/var', PathVariable.PathAccept ) ) params.Add( PathVariable( 'cachedir', 'System cache', '${sysvardir}/lib', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_bin', 'Path to the Drag[en]gine binaries', '${execdir}', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_lib', 'Path to the Drag[en]gine libraries', '${libdir}', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_include', 'Path to the Drag[en]gine headers', '${includedir}/dragengine', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_config', 'Path to the Drag[en]gine configuration', '${sysconfdir}/dragengine', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_data', 'Path to the Drag[en]gine data', '${libdir}/dragengine', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_share', 'Path to the Drag[en]gine shares', '${datadir}/dragengine', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_cache', 'Path to the Drag[en]gine cache', '${cachedir}/dragengine', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_igde_bin', 'Path to the IGDE binaries', '${execdir}', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_igde_lib', 'Path to the IGDE libraries', '${libdir}', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_igde_include', 'Path to the IGDE headers', '${includedir}/deigde', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_igde_config', 'Path to the IGDE configuration', '${sysconfdir}/deigde', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_igde_data', 'Path to the IGDE data', '${libdir}/deigde', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_igde_share', 'Path to the IGDE shares', '${datadir}/deigde', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_launcher_bin', 'Path to the Launcher binaries', '${execdir}', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_launcher_bin_lib', 'Path to the Launcher binary libraries', '${libdir}', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_launcher_config', 'Path to the Launcher configuration', '${sysconfdir}/delauncher', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_launcher_data', 'Path to the Launcher data', '${libdir}/delauncher', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_launcher_share', 'Path to the Launcher shares', '${datadir}/delauncher', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_launcher_games', 'Path to the Launcher games', '/opt/delauncher/games', PathVariable.PathAccept ) ) elif parent_env['OSBeOS']: params.Add( TernaryVariable( 'with_dl', 'Use the dynamic library system' ) ) params.Add( TernaryVariable( 'with_pthread', 'Use pthread' ) ) params.Add( TernaryVariable( 'with_x', 'Use the X Window System' ) ) params.Add(EnumVariable('igde_toolkit', 'ToolKit to use for building IGDE', 'null', ['null'])) params.Add( PathVariable( 'prefix', 'System path', '/boot/system', PathVariable.PathAccept ) ) params.Add( PathVariable( 'libdir', 'System libraries', '${prefix}/lib', PathVariable.PathAccept ) ) params.Add( PathVariable( 'includedir', 'System includes', '${prefix}/develop/include', PathVariable.PathAccept ) ) params.Add( PathVariable( 'datadir', 'System shares', '${prefix}/data', PathVariable.PathAccept ) ) params.Add( PathVariable( 'sysconfdir', 'System configuration', '${prefix}/settings', PathVariable.PathAccept ) ) params.Add( PathVariable( 'execdir', 'System binaries', '${prefix}/bin', PathVariable.PathAccept ) ) params.Add( PathVariable( 'sysvardir', 'System var', '${prefix}/var', PathVariable.PathAccept ) ) params.Add( PathVariable( 'cachedir', 'System cache', '${prefix}/cache', PathVariable.PathAccept ) ) params.Add( PathVariable( 'docdir', 'System documentation', '${prefix}/documentation', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_bin', 'Path to the Drag[en]gine binaries', '${execdir}', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_lib', 'Path to the Drag[en]gine libraries', '${libdir}', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_include', 'Path to the Drag[en]gine headers', '${includedir}/dragengine', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_config', 'Path to the Drag[en]gine configuration', '${sysconfdir}/dragengine', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_data', 'Path to the Drag[en]gine data', '${libdir}/dragengine', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_share', 'Path to the Drag[en]gine shares', '${datadir}/dragengine', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_cache', 'Path to the Drag[en]gine cache', '${cachedir}/dragengine', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_igde_bin', 'Path to the IGDE binaries', '${execdir}', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_igde_lib', 'Path to the IGDE libraries', '${libdir}', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_igde_include', 'Path to the IGDE headers', '${includedir}/deigde', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_igde_config', 'Path to the IGDE configuration', '${sysconfdir}/deigde', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_igde_data', 'Path to the IGDE data', '${libdir}/deigde', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_igde_share', 'Path to the IGDE shares', '${datadir}/deigde', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_launcher_bin', 'Path to the Launcher binaries', '${execdir}', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_launcher_bin_lib', 'Path to the Launcher binary libraries', '${libdir}', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_launcher_config', 'Path to the Launcher configuration', '${sysconfdir}/delauncher', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_launcher_data', 'Path to the Launcher data', '${libdir}/delauncher', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_launcher_share', 'Path to the Launcher shares', '${datadir}/delauncher', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_launcher_games', 'Path to the Launcher games', '/boot/system/delauncher/games', PathVariable.PathAccept ) ) elif parent_env['OSPosix']: params.Add( TernaryVariable( 'with_dl', 'Use the dynamic library system' ) ) params.Add( TernaryVariable( 'with_pthread', 'Use pthread' ) ) params.Add( TernaryVariable( 'with_x', 'Use the X Window System' ) ) params.Add(EnumVariable('igde_toolkit', 'ToolKit to use for building IGDE', 'fox', ['fox','null'])) params.Add( PathVariable( 'prefix', 'System path', '/usr', PathVariable.PathAccept ) ) params.Add( PathVariable( 'libdir', 'System libraries', '${prefix}/lib', PathVariable.PathAccept ) ) params.Add( PathVariable( 'includedir', 'System includes', '${prefix}/include', PathVariable.PathAccept ) ) params.Add( PathVariable( 'datadir', 'System shares', '${prefix}/share', PathVariable.PathAccept ) ) params.Add( PathVariable( 'sysconfdir', 'System configuration', '/etc', PathVariable.PathAccept ) ) params.Add( PathVariable( 'execdir', 'System binaries', '${prefix}/bin', PathVariable.PathAccept ) ) params.Add( PathVariable( 'sysvardir', 'System var', '/var', PathVariable.PathAccept ) ) params.Add( PathVariable( 'cachedir', 'System cache', '${sysvardir}/lib', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_bin', 'Path to the Drag[en]gine binaries', '${execdir}', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_lib', 'Path to the Drag[en]gine libraries', '${libdir}', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_include', 'Path to the Drag[en]gine headers', '${includedir}/dragengine', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_config', 'Path to the Drag[en]gine configuration', '${sysconfdir}/dragengine', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_data', 'Path to the Drag[en]gine data', '${libdir}/dragengine', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_share', 'Path to the Drag[en]gine shares', '${datadir}/dragengine', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_cache', 'Path to the Drag[en]gine cache', '${cachedir}/dragengine', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_igde_bin', 'Path to the IGDE binaries', '${execdir}', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_igde_lib', 'Path to the IGDE libraries', '${libdir}', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_igde_include', 'Path to the IGDE headers', '${includedir}/deigde', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_igde_config', 'Path to the IGDE configuration', '${sysconfdir}/deigde', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_igde_data', 'Path to the IGDE data', '${libdir}/deigde', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_igde_share', 'Path to the IGDE shares', '${datadir}/deigde', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_launcher_bin', 'Path to the Launcher binaries', '${execdir}', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_launcher_bin_lib', 'Path to the Launcher binary libraries', '${libdir}', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_launcher_config', 'Path to the Launcher configuration', '${sysconfdir}/delauncher', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_launcher_data', 'Path to the Launcher data', '${libdir}/delauncher', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_launcher_share', 'Path to the Launcher shares', '${datadir}/delauncher', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_launcher_games', 'Path to the Launcher games', '/opt/delauncher/games', PathVariable.PathAccept ) ) elif parent_env['OSWindows']: params.Add(EnumVariable('igde_toolkit', 'ToolKit to use for building IGDE', 'fox', ['fox','null'])) params.Add( PathVariable( 'programfiles', 'Window program files directory', '@ProgramFiles', PathVariable.PathAccept ) ) params.Add( PathVariable( 'systemroot', 'Window system root directory', '@System', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_sdk', 'Path to Drag[en]gine SDK directory', '${path_de}/SDK', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_sdk_lib', 'Path to Drag[en]gine SDK libraries', '${path_de_sdk}/lib', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_sdk_inc', 'Path to Drag[en]gine SDK includes', '${path_de_sdk}/include', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de', 'Path to the Drag[en]gine Installation', '${programfiles}/Dragengine', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_bin', 'Path to the Drag[en]gine binaries', '${path_de}/Bin', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_lib', 'Path to the Drag[en]gine libraries', '${path_de_sdk_lib}', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_include', 'Path to the Drag[en]gine headers', '${path_de_sdk_inc}/dragengine', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_config', 'Path to the Drag[en]gine configuration', '${path_de}/Config', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_data', 'Path to the Drag[en]gine data', '${path_de}/Data', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_share', 'Path to the Drag[en]gine shares', '${path_de}/Share', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_de_cache', 'Path to the Drag[en]gine cache', '@LocalAppData/Dragengine/Cache', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_igde_sdk', 'Path to Drag[en]gine IGDE SDK directory', '${path_igde}/SDK', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_igde_sdk_lib', 'Path to Drag[en]gine IGDE SDK libraries', '${path_igde_sdk}/lib', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_igde_sdk_inc', 'Path to Drag[en]gine IGDE SDK includes', '${path_igde_sdk}/include', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_igde', 'Path to the IGDE Installation', '${programfiles}/DEIGDE', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_igde_bin', 'Path to the IGDE binaries', '${path_igde}/Bin', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_igde_lib', 'Path to the IGDE libraries', '${path_igde_sdk_lib}', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_igde_include', 'Path to the IGDE headers', '${path_igde_sdk_inc}/deigde', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_igde_config', 'Path to the IGDE configuration', '${path_igde}/Config', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_igde_data', 'Path to the IGDE data', '${path_igde}/Data', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_igde_share', 'Path to the IGDE shares', '${path_igde}/Share', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_launcher', 'Path to the Launcher Installation', '${path_de}/Launchers', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_launcher_bin', 'Path to the Launcher binaries', '${path_launcher}/Bin', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_launcher_bin_lib', 'Path to the Launcher binary libraries', '${path_launcher_bin}', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_launcher_config', 'Path to the Launcher configuration', '@RoamingAppData/DELaunchers/Config', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_launcher_data', 'Path to the Launcher data', '${path_launcher}/Data', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_launcher_share', 'Path to the Launcher shares', '${path_launcher}/Share', PathVariable.PathAccept ) ) params.Add( PathVariable( 'path_launcher_games', 'Path to the Launcher games', '${path_launcher}/Games', PathVariable.PathAccept ) ) else: Exit( 'No supported OS found!') params.Update( parent_env ) #print(parent_env.Dump()) # determine sanitize flags to use parent_env.Replace(SANITIZE_FLAGS = []) if parent_env['with_debug'] and parent_env['with_sanitize']: if parent_env['with_sanitize_thread']: parent_env.Append(SANITIZE_FLAGS = ['-fsanitize=thread']) else: parent_env.Append(SANITIZE_FLAGS = [ '-fsanitize=address', '-fsanitize-address-use-after-scope', '-fsanitize=pointer-compare', '-fsanitize=pointer-subtract']) parent_env.Append(SANITIZE_FLAGS = [ '-fsanitize=leak']) parent_env.Append(SANITIZE_FLAGS = [ '-fsanitize=undefined', '-fsanitize=shift', '-fsanitize=shift-exponent', '-fsanitize=shift-base', '-fsanitize=integer-divide-by-zero', '-fsanitize=unreachable', '-fsanitize=vla-bound', '-fsanitize=null', '-fsanitize=return', '-fsanitize=signed-integer-overflow', '-fsanitize=bounds', '-fsanitize=bounds-strict', '-fsanitize=alignment', '-fsanitize=object-size', '-fsanitize=float-divide-by-zero', '-fsanitize=float-cast-overflow', '-fsanitize=nonnull-attribute', '-fsanitize=returns-nonnull-attribute', '-fsanitize=bool', '-fsanitize=enum', '-fsanitize=vptr', '-fsanitize=pointer-overflow', '-fsanitize=builtin']) # for modules hide everything except the entry point. for this the default visibility # is set to hidden and only the entry point is qualified with normal visibility. # hiding also inlines is an optimization and helps to remove some special cases. # the version script is required to hide symbols of linked static libraries. # the -s flag eventually strips unused code linked in by static libraries if parent_env['with_debug']: parent_env.Append(MODULE_CPPFLAGS = ['-DMOD_ENTRY_POINT_ATTR=']) if parent_env['with_sanitize']: parent_env.Append(MODULE_CPPFLAGS = parent_env['SANITIZE_FLAGS']) parent_env.Append(MODULE_LINKFLAGS = parent_env['SANITIZE_FLAGS']) else: parent_env.Append(MODULE_CPPFLAGS = ['-fvisibility=hidden']) parent_env.Append(MODULE_LINKFLAGS = ['-fvisibility=hidden']) parent_env.Append(MODULE_CXXFLAGS = ['-fvisibility-inlines-hidden']) parent_env.Append(MODULE_LINKFLAGS = ['-fvisibility-inlines-hidden']) if not parent_env['OSMacOS']: parent_env.Append(MODULE_LINKFLAGS = ['-Wl,--version-script=module.version']) parent_env.Append(MODULE_LINKFLAGS = ['-s']) parent_env.Append(MODULE_CPPFLAGS = ['-DMOD_ENTRY_POINT_ATTR=__attribute__\\(\\(visibility\\(\\"default\\"\\)\\)\\)']) # android if parent_env[ 'platform_android' ] != 'no': params.Add( PathVariable( 'ndkroot', 'Path to NDK toolchain (NDK_ROOT env-param by default)', os.path.expanduser( os.environ['NDK_ROOT'] ), PathVariable.PathAccept ) ) params.Add( StringVariable( 'apilevel', 'Android API level', '18' ) ) params.Add( BoolVariable( 'hardfp', 'Use hardware floating point support instead of softfp on ARMv7 only', False ) ) params.Update( parent_env ) androidUpdateEnv( parent_env ) # disable verbose compile messages if requested if not parent_env[ 'with_verbose' ]: DisableVerboseCompiling( parent_env ) if parent_env['with_debug']: if parent_env['OSWindows']: parent_env.Append(CPPFLAGS = ['-g', '-gstabs', '-ggdb']) else: parent_env.Append(CPPFLAGS = ['-g']) # mingw produces internal compiler errors on 8.x GCC. disabled until fixed or a check is present parent_env.Append(CPPFLAGS = ['-fno-omit-frame-pointer']) # set flags based on parameters if parent_env[ 'platform_android' ] == 'no': parent_env.Append( CPPFLAGS = [ '-O2' ] ) # because android platform script defines this already parent_env.Append( CPPFLAGS = [ '-Wall' ] ) # disable the new (and truely stupid) new gcc 8.1 shenanigans. # see https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Dialect-Options.html#index-Wclass-memaccess . # the idea behind all this is all nice and dandy but it prevents legit fast memory handling # trying to pretend idiots from shooting themselves in the foot. if somebody uses memcpy then # he should know what he is doing so stop breaking builds with non-sense errors. parent_env.Append(CXXFLAGS = ['-Wno-class-memaccess']) if parent_env[ 'with_warnerrors' ]: parent_env.Append( CPPFLAGS = [ '-Werror' ] ) if parent_env[ 'platform_android' ] != 'no': parent_env.Append(CPPFLAGS = ['-Wno-unused-private-field']) parent_env.Append(CPPFLAGS = ['-Wno-tautological-constant-compare']) # no default targets Default( None ) # define the targets array and reports dictionary to be filled parent_targets = {} parent_report = {} # report stuff if parent_env['OSPosix']: parent_report[ 'prefix' ] = parent_env.subst( parent_env[ 'prefix' ] ) parent_report[ 'dragengine binary path' ] = parent_env.subst( parent_env[ 'path_de_bin' ] ) parent_report[ 'dragengine library path' ] = parent_env.subst( parent_env[ 'path_de_lib' ] ) parent_report[ 'dragengine include path' ] = parent_env.subst( parent_env[ 'path_de_include' ] ) parent_report[ 'dragengine configuration path' ] = parent_env.subst( parent_env[ 'path_de_config' ] ) parent_report[ 'dragengine data path' ] = parent_env.subst( parent_env[ 'path_de_data' ] ) parent_report[ 'dragengine shared data path' ] = parent_env.subst( parent_env[ 'path_de_share' ] ) parent_report[ 'dragengine cache path' ] = parent_env.subst( parent_env[ 'path_de_cache' ] ) elif parent_env['OSWindows']: parent_report[ 'system library path' ] = parent_env.subst( parent_env[ 'systemroot' ] ) parent_report[ 'dragengine sdk path' ] = parent_env.subst( parent_env[ 'path_de_sdk' ] ) parent_report[ 'dragengine path' ] = parent_env.subst( parent_env[ 'path_de' ] ) parent_report[ 'dragengine binary path' ] = parent_env.subst( parent_env[ 'path_de_bin' ] ) parent_report[ 'dragengine library path' ] = parent_env.subst( parent_env[ 'path_de_lib' ] ) parent_report[ 'dragengine include path' ] = parent_env.subst( parent_env[ 'path_de_include' ] ) parent_report[ 'dragengine configuration path' ] = parent_env.subst( parent_env[ 'path_de_config' ] ) parent_report[ 'dragengine data path' ] = parent_env.subst( parent_env[ 'path_de_data' ] ) parent_report[ 'dragengine shared data path' ] = parent_env.subst( parent_env[ 'path_de_share' ] ) parent_report[ 'deigde path' ] = parent_env.subst( parent_env[ 'path_igde' ] ) parent_report[ 'deigde binary path' ] = parent_env.subst( parent_env[ 'path_igde_bin' ] ) parent_report[ 'deigde library path' ] = parent_env.subst( parent_env[ 'path_igde_lib' ] ) parent_report[ 'deigde include path' ] = parent_env.subst( parent_env[ 'path_igde_include' ] ) parent_report[ 'deigde configuration path' ] = parent_env.subst( parent_env[ 'path_igde_config' ] ) parent_report[ 'deigde data path' ] = parent_env.subst( parent_env[ 'path_igde_data' ] ) parent_report[ 'deigde shared data path' ] = parent_env.subst( parent_env[ 'path_igde_share' ] ) parent_report[ 'dragengine cache path' ] = parent_env.subst( parent_env[ 'path_de_cache' ] ) #parent_report[ 'program files' ] = parent_env.subst( parent_env[ 'programfiles' ] ) parent_report[ 'platform_android' ] = parent_env[ 'platform_android' ] if parent_env[ 'platform_android' ] != 'no': parent_report[ 'ndkroot' ] = parent_env.subst( parent_env[ 'ndkroot' ] ) parent_report[ 'apilevel' ] = parent_env[ 'apilevel' ] parent_report[ 'hardfp' ] = 'yes' if parent_env[ 'hardfp' ] else 'no' parent_report[ 'build dragengine tests' ] = 'yes' if parent_env[ 'with_tests' ] else 'no' parent_report[ 'treat warnings as errors' ] = 'yes' if parent_env[ 'with_warnerrors' ] else 'no' parent_report[ 'build with debug symbols' ] = 'yes' if parent_env[ 'with_debug' ] else 'no' parent_report[ 'build with sanitizing' ] = 'yes' if parent_env[ 'with_sanitize' ] else 'no' parent_report[ 'build with thread sanitizing' ] = 'yes' if parent_env[ 'with_sanitize_thread' ] else 'no' # external libraries extdirs = [] extdirs.append( 'extern/zlib' ) extdirs.append( 'extern/libpng' ) extdirs.append( 'extern/libapng' ) extdirs.append( 'extern/libjpeg' ) extdirs.append( 'extern/sndio' ) extdirs.append( 'extern/openal' ) extdirs.append( 'extern/libogg' ) extdirs.append( 'extern/libvorbis' ) extdirs.append( 'extern/libtheora' ) extdirs.append( 'extern/fox' ) extdirs.append( 'extern/dragonscript' ) extdirs.append( 'extern/libffi' ) extdirs.append( 'extern/libltdl' ) extdirs.append( 'extern/libsigsegv' ) #extdirs.append( 'extern/smalltalk' ) extdirs.append( 'extern/libevdev' ) extdirs.append( 'extern/libusb' ) extdirs.append( 'extern/libhidapi' ) extdirs.append( 'extern/libopenhmd' ) extdirs.append( 'extern/fftw' ) for extdir in extdirs: SConscript( dirs=extdir, variant_dir='{}/build'.format( extdir ), duplicate=0, exports='parent_env parent_targets parent_report' ) SConscript( dirs='extern/mingw', variant_dir='extern/mingw/build', duplicate=0, exports='parent_env parent_targets parent_report' ) # drag[en]gine game engine SConscript( dirs='src/dragengine', variant_dir='src/dragengine/build', duplicate=0, exports='parent_env parent_targets parent_report' ) scdirs = [] # game engine modules scdirs.append( 'src/modules/animator/deanimator' ) scdirs.append( 'src/modules/ai/deai' ) scdirs.append( 'src/modules/animation/deanim' ) scdirs.append( 'src/modules/audio/null' ) scdirs.append( 'src/modules/audio/openal' ) scdirs.append( 'src/modules/crashrecovery/simplyquit' ) scdirs.append( 'src/modules/crashrecovery/basicrecovery' ) scdirs.append( 'src/modules/font/defont' ) scdirs.append( 'src/modules/graphic/null' ) scdirs.append( 'src/modules/graphic/opengl' ) scdirs.append( 'src/modules/image/png' ) scdirs.append( 'src/modules/image/png3d' ) scdirs.append( 'src/modules/image/tga' ) scdirs.append( 'src/modules/image/jpeg' ) scdirs.append( 'src/modules/input/console' ) scdirs.append( 'src/modules/input/xsystem' ) scdirs.append( 'src/modules/input/w32input' ) scdirs.append( 'src/modules/input/beos' ) scdirs.append( 'src/modules/input/macos' ) scdirs.append( 'src/modules/input/android' ) scdirs.append( 'src/modules/langpack/delangpack' ) scdirs.append( 'src/modules/model/demodel' ) scdirs.append( 'src/modules/network/basic' ) scdirs.append( 'src/modules/occlusionmesh/deocclusionmesh' ) scdirs.append( 'src/modules/physics/bullet' ) scdirs.append( 'src/modules/rig/derig' ) scdirs.append( 'src/modules/scripting/dragonscript' ) #scdirs.append( 'src/modules/scripting/python' ) #scdirs.append( 'src/modules/scripting/smalltalk' ) scdirs.append( 'src/modules/skin/deskin' ) scdirs.append( 'src/modules/sound/oggvorbis' ) scdirs.append( 'src/modules/synthesizer/desynthesizer' ) scdirs.append( 'src/modules/video/theora' ) scdirs.append( 'src/modules/video/apng' ) scdirs.append( 'src/modules/archive/delga' ) scdirs.append( 'src/modules/combined/fbx' ) # launchers scdirs.append( 'src/launcher/console' ) scdirs.append( 'src/launcher/gui' ) #scdirs.append( 'src/launcher/android' ) scdirs.append( 'src/launcher/live' ) # tests scdirs.append( 'src/tests' ) # integrated game development environment scdirs.append( 'src/deigde/deigde' ) scdirs.append( 'src/deigde/editors/world' ) scdirs.append( 'src/deigde/editors/animator' ) scdirs.append( 'src/deigde/editors/rigeditor' ) scdirs.append( 'src/deigde/editors/font' ) scdirs.append( 'src/deigde/editors/sky' ) scdirs.append( 'src/deigde/editors/skin' ) scdirs.append( 'src/deigde/editors/particleEmitter' ) scdirs.append( 'src/deigde/editors/speechAnimation' ) scdirs.append( 'src/deigde/editors/conversation' ) scdirs.append( 'src/deigde/editors/langpack' ) scdirs.append( 'src/deigde/editors/synthesizer' ) scdirs.append( 'src/deigde/editors/gameDefinition' ) scdirs.append( 'src/deigde/editors/project' ) for scdir in scdirs: SConscript( dirs=scdir, variant_dir='{}/build'.format( scdir ), duplicate=0, exports='parent_env parent_targets parent_report' ) #tools SConscript( dirs='src/tools/blender', variant_dir='src/tools/blender/build', duplicate=0, exports='parent_env parent_targets parent_report' ) # special stuff SConscript( dirs='src/launcher/usbdrive', variant_dir='src/launcher/usbdrive/build', duplicate=0, exports='parent_env parent_targets parent_report' ) # archiving SConscript( dirs='archive', variant_dir='archive/build', duplicate=0, exports='parent_env parent_targets parent_report' ) """ SConscript( 'src/tools/launcher/android/SConscriptSpecial', variant_dir='src/tools/launcher/android/build_apk', duplicate=0, exports='parent_env parent_targets parent_report' ) """ SConscript('archive/SConsHaikuHpkg.py', variant_dir='archive/buildPackage', duplicate=0, exports='parent_env parent_targets parent_report') # installers SConscript(dirs='installer', variant_dir='installer/build', duplicate=0, exports='parent_env parent_targets parent_report') #params.Save( 'parameters.cache', parent_env ) # add aliases buildAll = [] installAll = [] installAllRuntime = [] installEngineRuntime = [] installIgdeRuntime = [] doxygenAll = [] clocAll = [] clocReports = [] for key in parent_targets: if 'build' in parent_targets[ key ]: buildAll.append( parent_targets[ key ][ 'build' ] ) if 'install' in parent_targets[ key ]: installAll.append( parent_targets[ key ][ 'install' ] ) if 'install-runtime' in parent_targets[ key ]: installAllRuntime.append( parent_targets[ key ][ 'install-runtime' ] ) else: installAllRuntime.append( parent_targets[ key ][ 'install' ] ) if 'install-engine-runtime' in parent_targets[key]: installEngineRuntime.append(parent_targets[key]['install-engine-runtime']) if 'install-igde-runtime' in parent_targets[key]: installIgdeRuntime.append(parent_targets[key]['install-igde-runtime']) if 'doxygen' in parent_targets[ key ]: doxygenAll.append( parent_targets[ key ][ 'doxygen' ] ) if 'cloc' in parent_targets[ key ]: clocAll.append( parent_targets[ key ][ 'cloc' ] ) clocReports.append( parent_targets[ key ][ 'clocReport' ] ) targetBuildAll = parent_env.Alias( 'build', buildAll ) parent_targets[ 'build' ] = { 'name' : 'Build Everything', 'target' : targetBuildAll } targetInstallAll = parent_env.Alias( 'install', installAll ) parent_targets[ 'install' ] = { 'name' : 'Install Everything', 'target' : targetInstallAll } targetInstallAllRuntime = parent_env.Alias( 'install_runtime', installAllRuntime ) parent_targets[ 'install_runtime' ] = { 'name' : 'Install Everything Runtime (no development files)', 'target' : targetInstallAllRuntime } targetInstallEngineRuntime = parent_env.Alias('install_engine_runtime', installEngineRuntime) parent_targets['install_engine_runtime'] = { 'name' : 'Install Engine Runtime (no development files)', 'target' : targetInstallEngineRuntime } targetInstallIgdeRuntime = parent_env.Alias('install_igde_runtime', installIgdeRuntime) parent_targets['install_igde_runtime'] = { 'name' : 'Install IGDE Runtime (no development files)', 'target' : targetInstallIgdeRuntime } targetDoxygenAll = parent_env.Alias( 'doxygen', doxygenAll ) parent_targets[ 'doxygen' ] = { 'name' : 'Doxygen Everything', 'target' : targetDoxygenAll } if clocReports: targetClocSummary = parent_env.Alias( 'cloc_summary', BuildCLOCSummary( parent_env, clocReports, 'clocsummary.csv' ) ) clocAll.append( targetClocSummary ) targetClocAll = parent_env.Alias( 'cloc', clocAll ) parent_targets[ 'cloc' ] = { 'name' : 'CLoc Everything', 'target' : targetClocAll } # default is building and installing everything Default( 'install' ) # produce help Help( BuildHelpText( parent_targets ) ) # print out report PrintConfigReport( parent_report )
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?0fc386c4-35dc-39de-a0f0-365e82d4efde>
