92 lines
3.8 KiB
Python
92 lines
3.8 KiB
Python
# -*- python -*-
|
|
##
|
|
## Options.py - SCons build: command line options and help
|
|
##
|
|
|
|
# Copyright (C) Lumiera.org
|
|
# 2012, Hermann Vosseler <Ichthyostega@web.de>
|
|
#
|
|
# This program is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU General Public License as
|
|
# published by the Free Software Foundation; either version 2 of
|
|
# the License, or (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software
|
|
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
#####################################################################
|
|
|
|
|
|
|
|
import os
|
|
import sys
|
|
|
|
from SCons.Script import *
|
|
|
|
from Buildhelper import *
|
|
from LumieraEnvironment import *
|
|
|
|
|
|
#####################################################################
|
|
|
|
|
|
|
|
|
|
def defineCmdlineVariables(vars):
|
|
""" several toggles and configuration variables can be set on the commandline,
|
|
current settings will be persisted in a options cache file.
|
|
you may define custom variable settings in a separate file.
|
|
Commandline will override both.
|
|
"""
|
|
vars.AddVariables(
|
|
('ARCHFLAGS', 'Set architecture-specific compilation flags (passed literally to gcc)','')
|
|
,('CC', 'Set the C compiler to use.', 'gcc')
|
|
,('CXX', 'Set the C++ compiler to use.', 'g++')
|
|
,PathVariable('CCACHE', 'Integrate with CCache', '', PathVariable.PathAccept)
|
|
,PathVariable('DISTCC', 'Invoke C/C++ compiler commands through DistCC', '', PathVariable.PathAccept)
|
|
,EnumVariable('BUILDLEVEL', 'NoBug build level for debugging', 'ALPHA', allowed_values=('ALPHA', 'BETA', 'RELEASE'))
|
|
,BoolVariable('DEBUG', 'Build with debugging information and no optimisations', False)
|
|
,BoolVariable('OPTIMIZE', 'Build with strong optimisation (-O3)', False)
|
|
,BoolVariable('VALGRIND', 'Run Testsuite under valgrind control', True)
|
|
,BoolVariable('VERBOSE', 'Print full build commands', False)
|
|
,('TESTSUITES', 'Run only Testsuites matching the given pattern', '')
|
|
# ,BoolVariable('OPENGL', 'Include support for OpenGL preview rendering', False)
|
|
# ,EnumVariable('DIST_TARGET', 'Build target architecture', 'auto',
|
|
# allowed_values=('auto', 'i386', 'i686', 'x86_64' ), ignorecase=2)
|
|
,PathVariable('PREFIX', 'Installation dir prefix', 'usr/local', PathVariable.PathAccept)
|
|
,PathVariable('INSTALLDIR', 'Root output directory for install. Final installation will happen in INSTALLDIR/PREFIX/... ', '/', PathVariable.PathIsDir)
|
|
,PathVariable('PKGLIBDIR', 'Installation dir for plugins, defaults to PREFIX/lib/lumiera/modules', '',PathVariable.PathAccept)
|
|
,PathVariable('PKGDATADIR', 'Installation dir for default config, usually PREFIX/share/lumiera', '',PathVariable.PathAccept)
|
|
)
|
|
|
|
return vars
|
|
|
|
|
|
|
|
def prepareOptionsHelp(vars,env):
|
|
prelude = """
|
|
USAGE: scons [-c] [OPTS] [key=val [key=val...]] [TARGETS]
|
|
Build and optionally install Lumiera.
|
|
Without specifying any target, just the (re)build target will run.
|
|
Add -c to the commandline to clean up anything a given target would produce
|
|
|
|
Special Targets:
|
|
build : just compile and link
|
|
research: build experimental code (might fail)
|
|
testcode: additionally compile the Testsuite
|
|
check : build and run the Testsuite
|
|
doc : generate documentation (Doxygen)
|
|
all : build and testcode and doc
|
|
install : install created artifacts at PREFIX
|
|
|
|
Configuration Options:
|
|
"""
|
|
Help(prelude + vars.GenerateHelpText(env))
|
|
|
|
|
|
|