On Jul 9, 2010, at 12:29 PM, gabor papp wrote:

hi Karl,

It would be nice if the fluxus build system were made aware of CXX,
CXXFLAGS, LDFLAGS and so forth, rather than hard-coding the build
the last time i checked it, i encountered a problem in osx. as far as i
remember the environment variables are not inherited when you are
running sudo. because of this, scons recompiles the whole project on
install with the default flags. instead the CFLAGS and LDFLAGS options
were added, so you can pass your environment variables in the scons
command line. i think this is not a problem on linux. but let me know if
i'm wrong, or you have a better suggestion.


Gabor,

I should have taken a closer look at the SConstruct file. I was expecting the autoconf-style CXXFLAGS environment variable to be used, but fluxus uses CCFLAGS.

However, after specifying some of my own CCFLAGS on the command line, scons (I have version 1.3.0) was failing. config.log had g++ commands that looked something like this:

g++ <some flags> " -DFLUXUS_MAJOR_VERSION=0" " - DFLUXUS_MINOR_VERSION=17" ...

Scons was throwing in quotation marks that didn't belong, causing g++ to complain.

Some changes to the SConscript file(s) were necessary to get things working right (on Mac OS X 10.5.8 PowerPC):

<snip>
diff --git a/SConstruct b/SConstruct
index 2542323..9ec0150 100644
--- a/SConstruct
+++ b/SConstruct
@@ -76,7 +76,7 @@ IncludePaths = [

paranoid = ' -W -Wcast-qual -Wwrite-strings -Wcast-align -Wpointer- arith -Wconversion -Wredundant-decls -Wunreachable-code -Winline - Wlarger-than-256'

-env = Environment(CCFLAGS = '-ggdb -pipe -Wall -O3 -ffast-math -Wno- unused -fPIC', +env = Environment(CCFLAGS = ['-ggdb', '-pipe', '-Wall', '-O3', '- ffast-math', '-Wno-unused', '-fPIC'],
                   VERSION_NUM = FluxusVersion)
 env.MergeFlags(ARGUMENTS.get('CCFLAGS', ''))
 env.MergeFlags(ARGUMENTS.get('LDFLAGS', ''))
@@ -91,40 +91,40 @@ if env['PLATFORM'] == 'darwin':

 env.Append(CPPPATH = IncludePaths)
 env.Append(LIBPATH = LibPaths)
-env.Append(CCFLAGS=' -DFLUXUS_MAJOR_VERSION='+MajorVersion)
-env.Append(CCFLAGS=' -DFLUXUS_MINOR_VERSION='+MinorVersion)
-env.Append(CCFLAGS=" -DRACKET_COLLECTS_LOCATION="+"\"\\ \""+RacketCollectsLocation+"\"\\\"") -env.Append(CCFLAGS=" -DFLUXUS_COLLECTS_LOCATION="+"\"\\ \""+FluxusCollectsLocation+"\"\\\"")
-env.Append(CCFLAGS=" -DDATA_LOCATION="+"\"\\\""+DataLocation+"\"\\\"")
+env.Append(CCFLAGS=['-DFLUXUS_MAJOR_VERSION='+MajorVersion])
+env.Append(CCFLAGS=['-DFLUXUS_MINOR_VERSION='+MinorVersion])
+env.Append(CCFLAGS=["-DRACKET_COLLECTS_LOCATION="+"\"\\ \""+RacketCollectsLocation+"\"\\\""]) +env.Append(CCFLAGS=["-DFLUXUS_COLLECTS_LOCATION="+"\"\\ \""+FluxusCollectsLocation+"\"\\\""])
+env.Append(CCFLAGS=["-DDATA_LOCATION="+"\"\\\""+DataLocation+"\"\\\""])

 if ARGUMENTS.get("GLSL","1")=="1":
-        env.Append(CCFLAGS=' -DGLSL')
+        env.Append(CCFLAGS=['-DGLSL'])

 if ARGUMENTS.get("STEREODEFAULT","0")=="1":
-        env.Append(CCFLAGS=' -DSTEREODEFAULT')
+        env.Append(CCFLAGS=['-DSTEREODEFAULT'])

 if ARGUMENTS.get("ACCUM_BUFFER","0")=="1":
-        env.Append(CCFLAGS=' -DACCUM_BUFFER')
+        env.Append(CCFLAGS=['-DACCUM_BUFFER'])

 if ARGUMENTS.get("MULTISAMPLE","0")=="1":
-        env.Append(CCFLAGS=' -DMULTISAMPLE')
+        env.Append(CCFLAGS=['-DMULTISAMPLE'])

 if ARGUMENTS.get("MULTITEXTURE","1")=="0":
-        env.Append(CCFLAGS=' -DDISABLE_MULTITEXTURE')
+        env.Append(CCFLAGS=['-DDISABLE_MULTITEXTURE'])

 if ARGUMENTS.get("RELATIVE_COLLECTS","0")=="1":
-       env.Append(CCFLAGS=' -DRELATIVE_COLLECTS')
+       env.Append(CCFLAGS=['-DRELATIVE_COLLECTS'])

 static_modules=0
 if ARGUMENTS.get("STATIC_MODULES","0")=="1":
        static_modules=1
-       env.Append(CCFLAGS=' -DSTATIC_LINK')
+       env.Append(CCFLAGS=['-DSTATIC_LINK'])

 static_everything=0
 if ARGUMENTS.get("STATIC_EVERYTHING","0")=="1":
        static_everything=1
        static_modules=1
-       env.Append(CCFLAGS=' -DSTATIC_LINK')
+       env.Append(CCFLAGS=['-DSTATIC_LINK'])

 static_ode=int(ARGUMENTS.get("STATIC_ODE","0"))

@@ -137,14 +137,14 @@ if env['PLATFORM'] == 'win32':
        MZDYN = RacketLib + "/gcc/mzdyn.o"

        if ARGUMENTS.get("3M","1")=="1":
-               env.Append(CCFLAGS=' -DMZ_PRECISE_GC')
+               env.Append(CCFLAGS=['-DMZ_PRECISE_GC'])
                MZDYN = RacketLib + "/gcc/mzdyn3m.o"
 else:
        # need to do this to get scons to link plt's mzdyn.o
        MZDYN = RacketLib + "/mzdyn.o"
        
        if ARGUMENTS.get("3M","1")=="1":
-               env.Append(CCFLAGS=' -DMZ_PRECISE_GC')
+               env.Append(CCFLAGS=['-DMZ_PRECISE_GC'])
                MZDYN = RacketLib + "/mzdyn3m.o"

################################################################################
@@ -195,10 +195,10 @@ elif env['PLATFORM'] == 'darwin':
                if not GetOption('app'):
                        LibList += [["jack", "jack/jack.h"]]
                env.Append(FRAMEWORKPATH = [RacketLib])
-               env.Append(CCFLAGS = ' -DOS_X') # required by PLT 4.2.5
+               env.Append(CCFLAGS = ['-DOS_X']) # required by PLT 4.2.5

                if GetOption('app'):
-                       env.Append(CCFLAGS = ' -D__APPLE_APP__ 
-DRELATIVE_COLLECTS')
+                       env.Append(CCFLAGS = ['-D__APPLE_APP__ 
-DRELATIVE_COLLECTS'])
                        # FIXME: check if Jackmp is available when making an app
env.Append(FRAMEWORKS = Split("GLUT OpenGL CoreAudio CoreFoundation Racket Jackmp"))
                else:
@@ -233,12 +233,12 @@ if not GetOption('clean'):
                         Exit(1)

         if not conf.CheckFunc("dInitODE2"):
-            env.Append(CCFLAGS=' -DGOODE_OLDE_ODE')
+            env.Append(CCFLAGS=['-DGOODE_OLDE_ODE'])

# the liblo version 0.25 does not include the declaration of lo_arg_size anymore
         # This will be re-included in future version
if not conf.CheckFunc("lo_arg_size_check", "#include <lo/ lo.h>\n#define lo_arg_size_check() lo_arg_size(LO_INT32, NULL)", "C++"):
-            env.Append(CCFLAGS=' -DNO_LO_ARG_SIZE_DECL')
+            env.Append(CCFLAGS=['-DNO_LO_ARG_SIZE_DECL'])

         env = conf.Finish()
         # ... but we shouldn't forget to add them to LIBS manually
</snip>

<snip>
diff --git a/modules/fluxus-midi/SConscript b/modules/fluxus-midi/ SConscript
index f833489..b8bb1f5 100644
--- a/modules/fluxus-midi/SConscript
+++ b/modules/fluxus-midi/SConscript
@@ -22,10 +22,10 @@ Source = ["src/FluxusMIDI.cpp",
 if env['PLATFORM'] == 'posix':
        Libs =  ['pthread', 'asound']
        Frameworks = []
-       env.Append(CCFLAGS = ' -D__LINUX_ALSASEQ__')
+       env.Append(CCFLAGS = ['-D__LINUX_ALSASEQ__'])
 elif env['PLATFORM'] == 'darwin':
        Libs = []
-       env.Append(CCFLAGS = ' -D__MACOSX_CORE__')
+       env.Append(CCFLAGS = ['-D__MACOSX_CORE__'])
        Frameworks = ['CoreMIDI', 'CoreAudio', 'CoreFoundation', 'Racket']

 if static_modules:
</snip>

As you can see, the solution was to enclose the strings being passed to env.Append in square brackets, making them lists. I suspect that the use of leading spaces within the offending strings was causing scons to place quotes around them. I think these diffs cover the entire usage of CCFLAGS within fluxus.

As an aside, I'm installing fluxus into a prefix inside my home directory, to the sudo thing is a non-issue.

Thanks,

Karl

best,
gabor

Reply via email to