import os # use values from user's external environment sddas_home = os.environ.get ('SDDAS_HOME') or \ os.environ.get ('SDDAS_HOME', 'None') sddas_lib_path = sddas_home + '/lib' sddas_include = sddas_home + '/include' opts = Variables ('../IDFS.py') opts.AddVariables ( BoolVariable ('BUILD_SHARED', 'Set to build shared libraries', 0), BoolVariable ('BUILD_STATIC', 'Set to build static libraries', 1), BoolVariable ('DEBUG', 'Compile with debug symbols', 0), BoolVariable ('PROFILE', 'Compile with profiling', 0), BoolVariable ('ERMINE', 'Build with ErminePro', 0), EnumVariable ('DATABASE', 'Set the database to use', 'SwRI', allowed_values = ('SwRI', 'MySQL', 'SQLite', 'ALL'), ignorecase=0), EnumVariable ('GUI', 'Set the GUI to use', 'Motif', allowed_values = ('Motif', 'FLTK', 'Qt', 'ALL'), ignorecase=0), PathVariable ('SDDAS_HOME', 'Where SDDAS is being built', sddas_home), PathVariable ('SQLITE3_DIR', 'The root directory of the SQLite v3 installation', "/usr"), PathVariable ('MYSQL_DIR', 'The root directory of the MySQL installation', "/usr"), ) env = Environment (options = opts) env ['MY_INCLUDE'] = ['-I.', sddas_include] env.Append (CPPPATH = env ['MY_INCLUDE']) # append the MY_INCLUDE list to the end of CPPPATH env ['CXXFLAGS'].append ("-g") env ['LINKFLAGS'].append ("-g") env ['LEXLIB'] = ['l'] env ['ZLIB'] = 'z' env ['CPPLIB'] = ['stdc++'] env ['EXTRA_LIBS'] = [] env ['SQLITE3_LIB'] = File (env ['SQLITE3_DIR'] + '/lib64/libsqlite3' + env ['SHLIBSUFFIX']) env ['MYSQL_LIB'] = File (env ['MYSQL_DIR'] + '/lib64/mysql/libmysqlclient' + env ['SHLIBSUFFIX']) env ['SQLITE3_SH_LIB'] = File (env ['SQLITE3_DIR'] + '/lib64/libsqlite3' + env ['SHLIBSUFFIX']) env ['MYSQL_SH_LIB'] = File (env ['MYSQL_DIR'] + '/lib64/mysql/libmysqlclient' + env ['SHLIBSUFFIX']) env ['SQLITE3_LIBS'] = [env ['SQLITE3_LIB'], 'dl'] env ['MYSQL_LIBS'] = [env ['MYSQL_LIB']] env ['MYSQL_LIBS'].append (env ['ZLIB']) if env ['PLATFORM'] == "sunos": env ['DLLIB'] = ['dl'] env ['SQLITE3_LIBS'].append (env ['DLLIB']) env ['EXTRA_LIBS'].append ('rt') env ['EXTRA_LIBS'].append ('socket') env ['EXTRA_LIBS'].append ('nsl') elif env ['PLATFORM'] == "posix": env ['DLLIB'] = ['dl'] env ['SQLITE3_LIBS'].append (env ['DLLIB']) env ['EXTRA_LIBS'].append ('pthread') elif env ['PLATFORM'] == "darwin": env ['EXTRA_LIBS'].append ('iconv') # Add compile defines, include dirs, for the database library if env ['DATABASE'] == 'SwRI': print 'Database is set to SWRI' env.Append (CPPDEFINES = ['SwRI_DB']) env.Append (DBLIBS = ['server', 'dB']) elif env ['DATABASE'] == 'MySQL': env.Append (CPPDEFINES = ['MYSQL_DB']) env.Append (CPPPATH = [env ['MYSQL_DIR'] + '/include/mysql']) env.Append (DBLIBS = ['dbMySQL'] + env ['MYSQL_LIBS']) elif env ['DATABASE'] == 'SQLite': env.Append (CPPDEFINES = ['SQLITE_DB']) env.Append (CPPPATH = [env ['SQLITE3_DIR'] + '/include']) env.Append (DBLIBS = ['dbSQLite'] + [env ['SQLITE3_LIBS']]) elif env ['DATABASE'] == 'ALL': env.Append (CPPDEFINES = ['ALL_DB']) env.Append (CPPPATH = [env ['SQLITE3_DIR'] + '/include', env ['MYSQL_DIR'] + '/include/mysql']) env.Append (DBLIBS = ['dbWrapper', 'server', 'dB'] + [env ['SQLITE3_LIBS']] + env ['MYSQL_LIBS']) env.Append (CPPDEFINES = ['ALL_DB']) env.Append (LIBPATH = ['.', sddas_lib_path, '/usr/local/sqlite/lib', '/usr/local/mysql/lib/mysql']) # Grab command line arguments import sys numArgs = len(sys.argv) # a count of 1 means calling sequence was scons if (numArgs == 1): print 'ERROR - There is no default target' print 'ERROR - Must specify program to be built' print 'ERROR - Calling sequence is: scons programName' sys.exit() elif numArgs == 2: targetName = map(str,COMMAND_LINE_TARGETS) # create a list of strings if '.' in COMMAND_LINE_TARGETS: print 'ERROR - Cannot build every program in the current directory' print 'ERROR - Must specify the program to be built' print 'ERROR - Calling sequence is: scons programName' sys.exit() else: progName = ''.join(targetName) # convert list to string inputfile = progName + '.c' import os.path if (not os.path.isfile(inputfile)): # does the file exist? inputfile = progName + '.C' elif (numArgs > 2): print 'ERROR - Calling sequence is: scons programName' sys.exit() # define libraries needed to build the program SDDAS_LIBS = ['trec_idfs', 'IDFSMath', 'IDFSFill', 'IDFSTensor', 'base_idfs', 'Promote', 'VIDF'] SDDAS2_LIBS = ['Cfg', 'ant'] SYSTEM_LIBS = [env ['LEXLIB'], env ['CPPLIB'], 'm'] list_libs = SDDAS_LIBS + env ['DBLIBS'] + SDDAS2_LIBS + SYSTEM_LIBS + env ['EXTRA_LIBS'] # all programs build the same way so no need to individually list each program env.Program (progName, env.Object (inputfile), LIBS = [list_libs])