Simplify scons stuff:

- instead of doing Import() and Export() for subdirs, just Return() the files
  in the subdirectories' SConscripts and add that to the top-level file list
- remove the manual handling of sdl-config output, as scons will do it for us
- remove the manual addition of libz to LIBS, as scons seems to automatically
  do it if you do a CheckLib()
- properly read and use $CC, $CFLAGS, and $LDFLAGS environment variables,
  if they exist
This commit is contained in:
radsaq 2006-07-31 22:24:21 +00:00
parent 0474a05ac3
commit ebab58016c
8 changed files with 43 additions and 76 deletions

View File

@ -1,3 +1,5 @@
import os
# XXX path separator fixed right now # XXX path separator fixed right now
opts = Options() opts = Options()
opts.Add('PSS_STYLE', 'Path separator style', 1) opts.Add('PSS_STYLE', 'Path separator style', 1)
@ -7,34 +9,38 @@ env = Environment(options = opts,
CPPDEFINES={'PSS_STYLE' : '${PSS_STYLE}', CPPDEFINES={'PSS_STYLE' : '${PSS_STYLE}',
'LSB_FIRST' : '${LSB_FIRST}'}) 'LSB_FIRST' : '${LSB_FIRST}'})
#bring in environment CCFLAGS and LINKFLAGS if os.environ.has_key('CC'):
import os env.Replace(CC = os.environ['CC'])
if os.environ.has_key('CCFLAGS'): if os.environ.has_key('CFLAGS'):
env['CCFLAGS'] = os.environ['CCFLAGS']; env.Append(CCFLAGS = os.environ['CFLAGS'])
if os.environ.has_key('LINKFLAGS'): if os.environ.has_key('LDFLAGS'):
env['LINKFLAGS'] = os.environ['LINKFLAGS']; env.Append(LINKFLAGS = os.environ['LDFLAGS'])
print "platform: ", env['PLATFORM'] print "platform: ", env['PLATFORM']
#special flags for cygwin # special flags for cygwin
#we have to do this here so that the function and lib checks will go through mingw # we have to do this here so that the function and lib checks will go through
# mingw
if env['PLATFORM'] == 'cygwin': if env['PLATFORM'] == 'cygwin':
env['CCFLAGS'] += "-mno-cygwin"; env.Append(CCFLAGS = " -mno-cygwin")
env['LINKFLAGS'] += "-mno-cygwin"; env.Append(LINKFLAGS = " -mno-cygwin")
env['LIBS'] = ['ddraw','dinput','dsound','gdi32','dxguid','winmm','shell32','wsock32','comdlg32','ole32']; env['LIBS'] = ['ddraw','dinput','dsound','gdi32','dxguid','winmm','shell32','wsock32','comdlg32','ole32'];
conf = Configure(env) conf = Configure(env)
if not conf.CheckLib('SDL'): if not conf.CheckLib('SDL'):
print 'Did not find libSDL.a or SDL.lib, exiting!' print 'Did not find libSDL or SDL.lib, exiting!'
Exit(1) Exit(1)
if not conf.CheckLib('z'): if not conf.CheckLib('z'):
print 'Did not find libz.a or z.lib, exiting!' print 'Did not find libz or z.lib, exiting!'
Exit(1) Exit(1)
if conf.CheckFunc('asprintf'): if conf.CheckFunc('asprintf'):
conf.env['CCFLAGS'] += " -DHAVE_ASPRINTF"; conf.env.Append(CCFLAGS = " -DHAVE_ASPRINTF")
env = conf.Finish() env = conf.Finish()
# parse SDL cflags/libs
env.ParseConfig('sdl-config --cflags --libs')
Export('env') Export('env')
SConscript(['src/SConscript']) SConscript(['src/SConscript'])

View File

@ -28,51 +28,21 @@ x6502.cpp
movie.cpp movie.cpp
unzip.c""") unzip.c""")
Export('file_list') subdirs = Split("""
boards
drivers/common
drivers/sdl
fir
input
mappers""")
#palettes
SConscript(Split(""" for dir in subdirs:
boards/SConscript subdir_files = SConscript('%s/SConscript' % dir)
input/SConscript file_list.append(subdir_files)
fir/SConscript
mappers/SConscript
drivers/common/SConscript
drivers/sdl/SConscript
"""))
#palettes/SConscript
Import('file_list')
Import('env') Import('env')
# use sdl-config to get the cflags and libpath
import os;
sdl_cflags_pipe = os.popen("sdl-config --cflags");
sdl_cflags = sdl_cflags_pipe.read();
sdl_cflags = sdl_cflags.rstrip(os.linesep);
sdl_cflags_pipe.close();
sdl_libpath = [];
sdl_libs = [];
sdl_libflags_pipe = os.popen("sdl-config --libs");
sdl_libflags = sdl_libflags_pipe.read();
for flag in sdl_libflags.split(' '):
if flag.find("-L") == 0:
sdl_libpath.append(flag.strip("-L"));
elif flag.find("-l") == 0:
sdl_libs.append(flag.strip("-l"));
else:
print "extra link flag: ", flag;
env['LINKFLAGS'] += " " + flag;
sdl_libflags_pipe.close();
# add zlib and sdl libs
env['LIBS'].append('z');
env['LIBS'].extend(sdl_libs);
# include sdl cflags
env['CCFLAGS'] += " " + sdl_cflags;
print env['LINKFLAGS'] print env['LINKFLAGS']
env.Program('fceu', file_list, LIBPATH=sdl_libpath) env.Program('fceu', file_list)

View File

@ -1,4 +1,3 @@
Import('file_list')
my_list = Split(""" my_list = Split("""
01-222.cpp 01-222.cpp
112.cpp 112.cpp
@ -54,8 +53,7 @@ supervision.cpp
t-262.cpp t-262.cpp
tengen.cpp tengen.cpp
""") """)
for x in range(len(my_list)): for x in range(len(my_list)):
my_list[x] = 'boards/' + my_list[x] my_list[x] = 'boards/' + my_list[x]
file_list = my_list + file_list Return('my_list')
Export('file_list')

View File

@ -1,4 +1,3 @@
Import('file_list')
my_list = Split(""" my_list = Split("""
args.cpp args.cpp
cheat.cpp cheat.cpp
@ -10,7 +9,7 @@ scale3x.cpp
scalebit.cpp scalebit.cpp
vidblit.cpp vidblit.cpp
""") """)
for x in range(len(my_list)): for x in range(len(my_list)):
my_list[x] = 'drivers/common/' + my_list[x] my_list[x] = 'drivers/common/' + my_list[x]
file_list = my_list + file_list Return('my_list')
Export('file_list')

View File

@ -1,4 +1,3 @@
Import('file_list')
my_list = Split(""" my_list = Split("""
input.cpp input.cpp
main.cpp main.cpp
@ -14,8 +13,6 @@ unix-netplay.cpp
#sdl-opengl.cpp #sdl-opengl.cpp
#sdl-opengl.h #sdl-opengl.h
for x in range(len(my_list)): for x in range(len(my_list)):
my_list[x] = 'drivers/sdl/' + my_list[x] my_list[x] = 'drivers/sdl/' + my_list[x]
file_list = my_list + file_list Return('my_list')
Export('file_list')

View File

@ -1,7 +1,6 @@
Import('file_list')
my_list = Split(""" my_list = Split("""
""") """)
for x in range(len(my_list)): for x in range(len(my_list)):
my_list[x] = 'fir/' + my_list[x] my_list[x] = 'fir/' + my_list[x]
file_list = my_list + file_list Return('my_list')
Export('file_list')

View File

@ -1,4 +1,3 @@
Import('file_list')
my_list = Split(""" my_list = Split("""
arkanoid.cpp arkanoid.cpp
bworld.cpp bworld.cpp
@ -16,7 +15,7 @@ suborkb.cpp
toprider.cpp toprider.cpp
zapper.cpp zapper.cpp
""") """)
for x in range(len(my_list)): for x in range(len(my_list)):
my_list[x] = 'input/' + my_list[x] my_list[x] = 'input/' + my_list[x]
file_list = my_list + file_list Return('my_list')
Export('file_list')

View File

@ -1,4 +1,3 @@
Import('file_list')
my_list = Split(""" my_list = Split("""
151.cpp 151.cpp
15.cpp 15.cpp
@ -77,7 +76,7 @@ emu2413.c
mmc2and4.cpp mmc2and4.cpp
simple.cpp simple.cpp
""") """)
for x in range(len(my_list)): for x in range(len(my_list)):
my_list[x] = 'mappers/' + my_list[x] my_list[x] = 'mappers/' + my_list[x]
file_list = my_list + file_list Return('my_list')
Export('file_list')