# -*-python-*- import SCons rootEnv = Environment(BUILDROOT="build", ENV = {"PATH": ["/home/devkitPro/devkitARM/bin", "/bin", "/usr/bin", "/opt/bin", "/usr/local/bin"]}) # Add the Gambit compiler builder to the main Environment # FIXME: Should probably find some way to make /home/gambit/4.0b20 a variable gambitCompilerBuilder = Builder(action = '/home/gambit/4.0b20/bin/gsc -:="/home/gambit/4.0b20" -f -o $TARGET -c -check $SOURCE', suffix = ".c", src_suffix = ".scm", single_source=True) rootEnv.Append(BUILDERS = {"GambitCompiler" : gambitCompilerBuilder}) # Add the Gambit library builder to the main Environment def gambitLinkerEmitter(target, source, env): # target and source are always lists--makes keywords more descriptive # for the next time I actually touch the SConstruct (targets, sources) = (target, source) # Grab the last source file the way a gsc without -o would # ARGGGGHHH! Is this really the only way to get the base name? baseName = SCons.Util.splitext(str(sources[-1].name))[0] targets = [SCons.Util.adjustixes(baseName, None, "_.c")] return (targets, sources) gambitLinkerBuilder = Builder(action = '/home/gambit/4.0b20/bin/gsc -:="/home/gambit/4.0b20" -f -link -o $TARGET $SOURCES', emitter=gambitLinkerEmitter, src_suffix = ".scm") rootEnv.Append(BUILDERS = {"GambitLinker" : gambitLinkerBuilder}) system = "osx-x86" system = "nds-arm" if system == "nds-arm": rootEnv.Replace(CC="arm-eabi-gcc") rootEnv.Replace(AS="arm-eabi-as") rootEnv.Replace(LD="arm-eabi-ld") rootEnv.Replace(AR="arm-eabi-ar") rootEnv.Replace(RANLIB="arm-eabi-ranlib") rootEnv.Replace(LIBS=["m", "c", "sysbase"]) rootEnv.Replace(LIBPATH=["/Users/devkitPro/libnds/lib", "/Users/devkitPro/devkitARM/arm-eabi/lib"]) rootEnv.Replace(arm7CCFLAGS = "-std=gnu99 -Wall -W -Wno-unused -O2 -mcpu=arm7tdmi -mtune=arm7tdmi -fomit-frame-pointer -ffast-math -mthumb-interwork -DARM7 -DNDS -DUSE_DSWIFI") archCCFLAGS = "-std=gnu99 -Wall -W -Wno-unused -O2 -march=armv5te -mtune=arm946e-s -fomit-frame-pointer -fno-strict-aliasing -ffast-math -fstack-check -fstack-protector-all -fbounds-check -mthumb-interwork -DARM9 -I/home/devkitPro/devkitARM/include -I/home/devkitPro/libnds/include -DNDS" archCCFLAGS = "-std=gnu99 -Wall -W -Wno-unused -Os -march=armv5te -mtune=arm946e-s -fomit-frame-pointer -fno-strict-aliasing -ffast-math -mthumb -mthumb-interwork -DARM9 -I/home/devkitPro/devkitARM/include -I/home/devkitPro/libnds/include -DNDS" archCCFLAGS = "-std=gnu99 -Wall -W -Wno-unused -Os -march=armv5te -mtune=arm946e-s -fomit-frame-pointer -fno-strict-aliasing -mthumb -mthumb-interwork -DARM9 -I/home/devkitPro/devkitARM/include -I/home/devkitPro/libnds/include -DNDS" rootEnv.Replace(arm9CCFLAGS = " ".join([archCCFLAGS, "-DUSE_DSWIFI -DHAVE_CONFIG_H"])) else: archCCFLAGS = '-g -no-cpp-precomp -Wall -W -Wno-unused -fno-math-errno -fno-trapping-math -fno-strict-aliasing -fPIC -mieee-fp' # Compile the main Gambit library gambitLibCCFLAGS = '-DHAVE_CONFIG_H -D___PRIMAL -D___LIBRARY -D___GAMBCDIR=\\\"/home/gambit/4.0b20\\\"' libCCFLAGS = " ".join([archCCFLAGS, gambitLibCCFLAGS]) libEnv = rootEnv.Copy() libEnv.Replace(CCFLAGS=libCCFLAGS) env = libEnv Export("env") libgambc = libEnv.SConscript("lib/SConscript", build_dir="$BUILDROOT/lib", exports="env") # Compile the Gambit gsi and gsc executables gambitExecutableCCFLAGS = '-DHAVE_CONFIG_H' gsiCCFLAGS = " ".join([archCCFLAGS, gambitExecutableCCFLAGS]) gsiEnv = rootEnv.Copy() gsiEnv.Replace(CCFLAGS=gsiCCFLAGS) if system == "nds-arm": env = gsiEnv Export("env") gsi = env.SConscript("nds/SConscript", build_dir="$BUILDROOT/nds", exports=["env", "libgambc"]) else: env = gsiEnv Export("env") gsi = env.SConscript("gsi/SConscript", build_dir="$BUILDROOT/gsi", exports=["env", "libgambc"]) # Compile the Gambit gsc executable env = gsiEnv Export("env") #gsc = env.SConscript("gsc/SConscript", build_dir="$BUILDROOT/gsc", exports=["env", "libgambc"]) #gambitLibCCFLAGS = '-g -no-cpp-precomp -Wall -W -Wno-unused -fno-math-errno -fschedule-insns2 -fno-trapping-math -fno-strict-aliasing -fwrapv -fexpensive-optimizations -fforce-addr -fpeephole2 -falign-jumps -falign-functions -fno-function-cse -ftree-copyrename -ftree-fre -ftree-dce -fregmove -fgcse-las -freorder-functions -fcaller-saves -fno-if-conversion2 -foptimize-sibling-calls -fcse-skip-blocks -funit-at-a-time -finline-functions -fomit-frame-pointer -fPIC -fno-common -mieee-fp -DHAVE_CONFIG_H -D___PRIMAL -D___LIBRARY -D___GAMBCDIR=\\\"/home/gambit/4.0b20\\\"' #gambitExecutableCCFLAGS = '-g -no-cpp-precomp -Wall -W -Wno-unused -fno-math-errno -fschedule-insns2 -fno-trapping-math -fno-strict-aliasing -fwrapv -fexpensive-optimizations -fforce-addr -fpeephole2 -falign-jumps -falign-functions -fno-function-cse -ftree-copyrename -ftree-fre -ftree-dce -fregmove -fgcse-las -freorder-functions -fcaller-saves -fno-if-conversion2 -foptimize-sibling-calls -fcse-skip-blocks -funit-at-a-time -finline-functions -fomit-frame-pointer -fPIC -fno-common -mieee-fp -DHAVE_CONFIG_H'