HA! make now replaces scons
git-svn-id: svn://svn.icculus.org/netradiant/trunk@34 61c419a2-8eb2-4b30-bcec-8cead039b335
This commit is contained in:
parent
28495e04f7
commit
4ed5a1fad1
|
|
@ -1,11 +1,10 @@
|
|||
2008-09-15 Rudolf Polzer divVerent(at)alientrap.org
|
||||
* all: added a Makefile to build GtkRadiant with q3map2. Currently without
|
||||
plugins, will add these back later
|
||||
* all: added a Makefile to build GtkRadiant; this replaces scons and
|
||||
python install.py
|
||||
* all: got rid of libmhash dependency, using mdfour.c from DarkPlaces
|
||||
instead
|
||||
* q2data: remove RSA security copyrighted md4.c, using mdfour.c from DP
|
||||
instead as a drop-in replacement
|
||||
* all: get rid of makeversion.py and install.py
|
||||
|
||||
2008-09-13 Rudolf Polzer divVerent(at)alientrap.org
|
||||
* q3map2: update to ZeroRadiant's q3map2
|
||||
|
|
|
|||
633
SConscript
633
SConscript
|
|
@ -1,633 +0,0 @@
|
|||
import os, sys, commands, string
|
||||
from makeversion import get_version
|
||||
# OS Detection:
|
||||
OS = commands.getoutput('uname')
|
||||
|
||||
Import('GLOBALS')
|
||||
Import(GLOBALS)
|
||||
|
||||
def build_list(s_prefix, s_string):
|
||||
s_list = Split(s_string)
|
||||
for i in range(len(s_list)):
|
||||
s_list[i] = s_prefix + '/' + s_list[i]
|
||||
return s_list
|
||||
|
||||
# common code ------------------------------------------------------
|
||||
|
||||
cmdlib_lib = g_env.StaticLibrary(target='libs/cmdlib', source='libs/cmdlib/cmdlib.cpp')
|
||||
|
||||
xml_env = g_env.Copy()
|
||||
xml_env.Prepend(CPPPATH = 'include')
|
||||
xml_env.Append(CXXFLAGS='`pkg-config glib-2.0 --cflags` `xml2-config --cflags`')
|
||||
xml_src = 'ixml.cpp xmlparser.cpp xmlwriter.cpp xmlelement.cpp xmltextags.cpp'
|
||||
xml_lib = xml_env.StaticLibrary(target='libs/xmllib', source=build_list('libs/xml', xml_src))
|
||||
|
||||
mathlib_src = 'mathlib.c bbox.c line.c m4x4.c ray.c'
|
||||
mathlib_lib = g_env.StaticLibrary(target='libs/mathlib', source=build_list('libs/mathlib', mathlib_src))
|
||||
|
||||
md5lib_lib = g_env.StaticLibrary(target='libs/md5lib', source='libs/md5lib/md5lib.c')
|
||||
|
||||
ddslib_lib = g_env.StaticLibrary(target='libs/ddslib', source='libs/ddslib/ddslib.c')
|
||||
|
||||
jpeg_env = g_env.Copy()
|
||||
jpeg_env.Prepend(CPPPATH = 'libs/jpeg6')
|
||||
jpeg_src = 'jcomapi.cpp jdcoefct.cpp jdinput.cpp jdpostct.cpp jfdctflt.cpp jpgload.cpp jdapimin.cpp jdcolor.cpp jdmainct.cpp jdsample.cpp jidctflt.cpp jutils.cpp jdapistd.cpp jddctmgr.cpp jdmarker.cpp jdtrans.cpp jmemmgr.cpp jdatasrc.cpp jdhuff.cpp jdmaster.cpp jerror.cpp jmemnobs.cpp'
|
||||
jpeg_lib = jpeg_env.StaticLibrary(target='libs/jpeg6', source=build_list('libs/jpeg6', jpeg_src))
|
||||
|
||||
l_net_lib = g_env.StaticLibrary(target='libs/l_net', source=['libs/l_net/l_net.c', 'libs/l_net/l_net_berkley.c'])
|
||||
|
||||
picomodel_src = 'picointernal.c picomodel.c picomodules.c pm_3ds.c pm_ase.c pm_md3.c pm_obj.c\
|
||||
pm_ms3d.c pm_mdc.c pm_fm.c pm_md2.c pm_lwo.c pm_terrain.c lwo/clip.c lwo/envelope.c lwo/list.c lwo/lwio.c\
|
||||
lwo/lwo2.c lwo/lwob.c lwo/pntspols.c lwo/surface.c lwo/vecmath.c lwo/vmap.c'
|
||||
picomodel_lib = g_env.StaticLibrary(target='libs/picomodel', source=build_list('libs/picomodel', picomodel_src))
|
||||
|
||||
#splines_env = g_env.Copy()
|
||||
#splines_src = build_list('libs/splines', 'math_angles.cpp math_matrix.cpp math_quaternion.cpp math_vector.cpp q_parse.cpp q_shared.cpp splines.cpp util_str.cpp')
|
||||
#splines_env['CPPPATH'].append('include')
|
||||
#splines_lib = splines_env.StaticLibrary(target='libs/splines', source=splines_src)
|
||||
|
||||
profile_env = g_env.Copy();
|
||||
profile_env['CPPPATH'].append('include')
|
||||
profile_src = 'profile.cpp file.cpp'
|
||||
profile_lib = profile_env.StaticLibrary(target='libs/profile', source=build_list('libs/profile', profile_src))
|
||||
|
||||
gtkutil_env = g_env.Copy();
|
||||
gtkutil_env['CPPPATH'].append('include')
|
||||
gtkutil_env.useGlib2()
|
||||
gtkutil_env.useGtk2()
|
||||
gtkutil_env.useGtkGLExt()
|
||||
|
||||
gtkutil_src = '\
|
||||
accelerator.cpp\
|
||||
button.cpp\
|
||||
clipboard.cpp\
|
||||
closure.cpp\
|
||||
container.cpp\
|
||||
cursor.cpp\
|
||||
dialog.cpp\
|
||||
entry.cpp\
|
||||
frame.cpp\
|
||||
filechooser.cpp\
|
||||
glfont.cpp\
|
||||
glwidget.cpp\
|
||||
image.cpp\
|
||||
idledraw.cpp\
|
||||
menu.cpp\
|
||||
messagebox.cpp\
|
||||
nonmodal.cpp\
|
||||
paned.cpp\
|
||||
pointer.cpp\
|
||||
toolbar.cpp\
|
||||
widget.cpp\
|
||||
window.cpp\
|
||||
xorrectangle.cpp\
|
||||
'
|
||||
|
||||
gtkutil_lib = gtkutil_env.StaticLibrary(target='libs/gtkutil', source=build_list('libs/gtkutil', gtkutil_src))
|
||||
|
||||
# end static / common libraries ---------------------------------------------------
|
||||
|
||||
# q3map ---------------------------------------------------------------------------
|
||||
|
||||
q3map_env = g_env.Copy()
|
||||
q3map_env['CPPPATH'].append('include')
|
||||
q3map_env.useXML2()
|
||||
q3map_env.useGlib2()
|
||||
q3map_env.usePNG()
|
||||
q3map_env.useMHash()
|
||||
q3map_env.usePThread()
|
||||
q3map_env.Prepend(CPPPATH='tools/quake3/common')
|
||||
|
||||
q3map_common_src = [
|
||||
'common/cmdlib.c',
|
||||
'common/imagelib.c',
|
||||
'common/inout.c',
|
||||
'common/mutex.c',
|
||||
'common/polylib.c',
|
||||
'common/scriplib.c',
|
||||
'common/threads.c',
|
||||
'common/unzip.c',
|
||||
'common/vfs.c' ]
|
||||
|
||||
q3map_src = [
|
||||
'q3map2/brush.c',
|
||||
'q3map2/brush_primit.c',
|
||||
'q3map2/bsp.c',
|
||||
'q3map2/facebsp.c',
|
||||
'q3map2/fog.c',
|
||||
'q3map2/leakfile.c',
|
||||
'q3map2/map.c',
|
||||
'q3map2/model.c',
|
||||
'q3map2/patch.c',
|
||||
'q3map2/portals.c',
|
||||
'q3map2/prtfile.c',
|
||||
'q3map2/surface.c',
|
||||
'q3map2/surface_fur.c',
|
||||
'q3map2/surface_meta.c',
|
||||
'q3map2/tjunction.c',
|
||||
'q3map2/tree.c',
|
||||
'q3map2/writebsp.c',
|
||||
'q3map2/image.c',
|
||||
'q3map2/light.c',
|
||||
'q3map2/light_bounce.c',
|
||||
'q3map2/light_trace.c',
|
||||
'q3map2/light_ydnar.c',
|
||||
'q3map2/lightmaps_ydnar.c',
|
||||
'q3map2/vis.c',
|
||||
'q3map2/visflow.c',
|
||||
'q3map2/bspfile_abstract.c',
|
||||
'q3map2/bspfile_ibsp.c',
|
||||
'q3map2/bspfile_rbsp.c',
|
||||
'q3map2/decals.c',
|
||||
'q3map2/main.c',
|
||||
'q3map2/mesh.c',
|
||||
'q3map2/path_init.c',
|
||||
'q3map2/shaders.c',
|
||||
'q3map2/surface_extra.c',
|
||||
'q3map2/surface_foliage.c',
|
||||
'q3map2/convert_ase.c',
|
||||
'q3map2/convert_map.c' ]
|
||||
|
||||
q3map_full_src = [ ]
|
||||
for i in q3map_common_src + q3map_src:
|
||||
q3map_full_src.append('tools/quake3/' + i)
|
||||
|
||||
q3map_libs = ['mathlib', 'l_net', 'jpeg6', 'picomodel', 'ddslib']
|
||||
|
||||
q3map_prog = q3map_env.Program(target='q3map2.' + g_cpu, source=q3map_full_src, LIBS=q3map_libs, LIBPATH='libs')
|
||||
q3map_env.Depends(q3map_prog, mathlib_lib)
|
||||
q3map_env.Depends(q3map_prog, l_net_lib)
|
||||
q3map_env.Depends(q3map_prog, jpeg_lib)
|
||||
q3map_env.Depends(q3map_prog, picomodel_lib)
|
||||
q3map_env.Depends(q3map_prog, ddslib_lib)
|
||||
q3map_env.Install(INSTALL, q3map_prog)
|
||||
|
||||
# end q3map2 ----------------------------------------------------------------------
|
||||
|
||||
# q3data ---------------------------------------------------------------------------
|
||||
|
||||
q3data_env = q3map_env.Copy()
|
||||
|
||||
q3data_common_src = [
|
||||
'common/aselib.c',
|
||||
'common/bspfile.c',
|
||||
'common/cmdlib.c',
|
||||
'common/imagelib.c',
|
||||
'common/inout.c',
|
||||
'common/md4.c',
|
||||
'common/scriplib.c',
|
||||
'common/trilib.c',
|
||||
'common/unzip.c',
|
||||
'common/vfs.c'
|
||||
]
|
||||
|
||||
q3data_src = [
|
||||
'q3data/3dslib.c',
|
||||
'q3data/compress.c',
|
||||
'q3data/images.c',
|
||||
'q3data/md3lib.c',
|
||||
'q3data/models.c',
|
||||
'q3data/p3dlib.c',
|
||||
'q3data/polyset.c',
|
||||
'q3data/q3data.c',
|
||||
'q3data/stripper.c',
|
||||
'q3data/video.c' ]
|
||||
|
||||
q3data_full_src = [ ]
|
||||
for i in q3data_common_src + q3data_src:
|
||||
q3data_full_src.append('tools/quake3/' + i)
|
||||
|
||||
q3data_prog = q3data_env.Program( target = 'q3data.' + g_cpu, source = q3data_full_src, LIBS=['mathlib', 'l_net'], LIBPATH='libs' )
|
||||
q3data_env.Depends(q3data_prog, mathlib_lib)
|
||||
q3data_env.Depends(q3data_prog, l_net_lib)
|
||||
q3data_env.Install( INSTALL, q3data_prog )
|
||||
|
||||
# end q3data ----------------------------------------------------------------------
|
||||
|
||||
# q2_tools ---------------------------------------------------------------------------
|
||||
|
||||
q2_tools_env = g_env.Copy()
|
||||
q2_tools_env['CPPPATH'].append('include')
|
||||
q2_tools_env.useXML2()
|
||||
q2_tools_env.usePThread()
|
||||
q2_tools_env.Prepend(CPPPATH='tools/quake2/common')
|
||||
|
||||
q2_tools_common_src = [
|
||||
'common/bspfile.c',
|
||||
'common/cmdlib.c',
|
||||
'common/inout.c',
|
||||
'common/l3dslib.c',
|
||||
'common/lbmlib.c',
|
||||
'common/mathlib.c',
|
||||
'common/md4.c',
|
||||
'common/path_init.c',
|
||||
'common/polylib.c',
|
||||
'common/scriplib.c',
|
||||
'common/threads.c',
|
||||
'common/trilib.c'
|
||||
]
|
||||
|
||||
|
||||
q2_tools_q2map_src = [
|
||||
'q2map/brushbsp.c',
|
||||
'q2map/csg.c',
|
||||
'q2map/faces.c',
|
||||
'q2map/flow.c',
|
||||
'q2map/glfile.c',
|
||||
'q2map/leakfile.c',
|
||||
'q2map/lightmap.c',
|
||||
'q2map/main.c',
|
||||
'q2map/map.c',
|
||||
'q2map/nodraw.c',
|
||||
'q2map/patches.c',
|
||||
'q2map/portals.c',
|
||||
'q2map/prtfile.c',
|
||||
'q2map/qbsp.c',
|
||||
'q2map/qrad.c',
|
||||
'q2map/qvis.c',
|
||||
'q2map/textures.c',
|
||||
'q2map/trace.c',
|
||||
'q2map/tree.c',
|
||||
'q2map/writebsp.c'
|
||||
]
|
||||
|
||||
q2_tools_qdata3_common_src = [
|
||||
'common/bspfile.c',
|
||||
'common/cmdlib.c',
|
||||
'common/inout.c',
|
||||
'common/l3dslib.c',
|
||||
'common/lbmlib.c',
|
||||
'common/mathlib.c',
|
||||
'common/md4.c',
|
||||
'common/path_init.c',
|
||||
'common/scriplib.c',
|
||||
'common/threads.c',
|
||||
'common/trilib.c'
|
||||
]
|
||||
|
||||
q2_tools_qdata3_src = [
|
||||
'qdata/images.c',
|
||||
'qdata/models.c',
|
||||
'qdata/qdata.c',
|
||||
'qdata/sprites.c',
|
||||
'qdata/tables.c',
|
||||
'qdata/video.c'
|
||||
]
|
||||
|
||||
q2_tools_q2map_full_src = [ ]
|
||||
for i in q2_tools_common_src + q2_tools_q2map_src:
|
||||
q2_tools_q2map_full_src.append('tools/quake2/' + i)
|
||||
|
||||
q2_tools_qdata3_full_src = [ ]
|
||||
for i in q2_tools_common_src + q2_tools_qdata3_src:
|
||||
q2_tools_qdata3_full_src.append('tools/quake2/' + i)
|
||||
|
||||
if ( OS != 'Darwin' ):
|
||||
q2_tools_q2map_prog = q2_tools_env.Program(target='quake2_tools/q2map', source=q2_tools_q2map_full_src, LIBS='l_net', LIBPATH='libs')
|
||||
q2_tools_env.Depends(q2_tools_q2map_prog, l_net_lib)
|
||||
q2_tools_env.Install(INSTALL, q2_tools_q2map_prog )
|
||||
|
||||
q2_tools_qdata3_prog = q2_tools_env.Program(target='quake2_tools/qdata3', source=q2_tools_qdata3_full_src, LIBS='l_net', LIBPATH='libs')
|
||||
q2_tools_env.Depends(q2_tools_qdata3_prog, l_net_lib)
|
||||
q2_tools_env.Install(INSTALL, q2_tools_qdata3_prog )
|
||||
|
||||
|
||||
# end q2_tools ----------------------------------------------------------------------
|
||||
|
||||
# qdata3_heretic2 ---------------------------------------------------------------------------
|
||||
|
||||
heretic2_tools_env = g_env.Copy()
|
||||
heretic2_tools_env['CPPPATH'].append('include')
|
||||
heretic2_tools_env.useXML2()
|
||||
heretic2_tools_env.usePThread()
|
||||
heretic2_tools_env.Prepend(CPPPATH='tools/quake2/qdata_heretic2')
|
||||
heretic2_tools_env.Prepend(CPPPATH='tools/quake2/qdata_heretic2/qcommon')
|
||||
heretic2_tools_env.Prepend(CPPPATH='tools/quake2/qdata_heretic2/common')
|
||||
|
||||
heretic2_tools_qdata3_common_src = [
|
||||
'qdata_heretic2/common/bspfile.c',
|
||||
'qdata_heretic2/common/cmdlib.c',
|
||||
'qdata_heretic2/common/inout.c',
|
||||
'qdata_heretic2/common/l3dslib.c',
|
||||
'qdata_heretic2/common/lbmlib.c',
|
||||
'qdata_heretic2/common/mathlib.c',
|
||||
'qdata_heretic2/common/md4.c',
|
||||
'qdata_heretic2/common/path_init.c',
|
||||
'qdata_heretic2/common/qfiles.c',
|
||||
'qdata_heretic2/common/scriplib.c',
|
||||
'qdata_heretic2/common/threads.c',
|
||||
'qdata_heretic2/common/token.c',
|
||||
'qdata_heretic2/common/trilib.c'
|
||||
]
|
||||
|
||||
heretic2_tools_qdata3_qcommon_src = [
|
||||
'qdata_heretic2/qcommon/reference.c',
|
||||
'qdata_heretic2/qcommon/resourcemanager.c',
|
||||
'qdata_heretic2/qcommon/skeletons.c'
|
||||
]
|
||||
|
||||
heretic2_tools_qdata3_src = [
|
||||
'qdata_heretic2/animcomp.c',
|
||||
'qdata_heretic2/book.c',
|
||||
'qdata_heretic2/fmodels.c',
|
||||
'qdata_heretic2/images.c',
|
||||
'qdata_heretic2/jointed.c',
|
||||
'qdata_heretic2/models.c',
|
||||
'qdata_heretic2/pics.c',
|
||||
'qdata_heretic2/qdata.c',
|
||||
'qdata_heretic2/qd_skeletons.c',
|
||||
'qdata_heretic2/sprites.c',
|
||||
'qdata_heretic2/svdcmp.c',
|
||||
'qdata_heretic2/tables.c',
|
||||
'qdata_heretic2/tmix.c',
|
||||
'qdata_heretic2/video.c'
|
||||
]
|
||||
|
||||
heretic2_tools_qdata3_full_src = [ ]
|
||||
for i in heretic2_tools_qdata3_common_src + heretic2_tools_qdata3_qcommon_src + heretic2_tools_qdata3_src:
|
||||
heretic2_tools_qdata3_full_src.append('tools/quake2/' + i)
|
||||
|
||||
|
||||
heretic2_tools_env['CCFLAGS'] += '-D_LINUX '
|
||||
|
||||
if ( OS != 'Darwin' ):
|
||||
heretic2_tools_prog = heretic2_tools_env.Program(target='h2data', source=heretic2_tools_qdata3_full_src, LIBS='l_net', LIBPATH='libs')
|
||||
heretic2_tools_env.Depends(heretic2_tools_prog, l_net_lib)
|
||||
heretic2_tools_env.Install(INSTALL + '/heretic2', heretic2_tools_prog )
|
||||
|
||||
# end heretic2_tools ----------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
# radiant, modules and plugins ----------------------------------------------------
|
||||
|
||||
module_env = g_env.Copy()
|
||||
module_env['CPPPATH'].append('include')
|
||||
if ( OS == 'Darwin' ):
|
||||
module_env['LINKFLAGS'] += '-dynamiclib -ldl '
|
||||
else:
|
||||
module_env['LINKFLAGS'] += '-ldl '
|
||||
module_env['LIBPREFIX'] = ''
|
||||
|
||||
|
||||
vfspk3_env = module_env.Copy()
|
||||
vfspk3_lst = build_list('plugins/vfspk3', 'vfspk3.cpp vfs.cpp archive.cpp')
|
||||
vfspk3_env.useGlib2()
|
||||
vfspk3_lib = vfspk3_env.SharedLibrarySafe(target='vfspk3', source=vfspk3_lst)
|
||||
vfspk3_env.Install(INSTALL + '/modules', vfspk3_lib)
|
||||
|
||||
archivepak_env = module_env.Copy()
|
||||
archivepak_lst = build_list('plugins/archivepak', 'plugin.cpp archive.cpp pak.cpp')
|
||||
archivepak_lib = archivepak_env.SharedLibrarySafe(target='archivepak', source=archivepak_lst, LIBS='cmdlib', LIBPATH='libs')
|
||||
archivepak_env.Depends(archivepak_lib, cmdlib_lib)
|
||||
archivepak_env.Install(INSTALL + '/modules', archivepak_lib)
|
||||
|
||||
archivewad_env = module_env.Copy()
|
||||
archivewad_lst = build_list('plugins/archivewad', 'plugin.cpp archive.cpp wad.cpp')
|
||||
archivewad_lib = archivewad_env.SharedLibrarySafe(target='archivewad', source=archivewad_lst, LIBS='cmdlib', LIBPATH='libs')
|
||||
archivewad_env.Depends(archivewad_lib, cmdlib_lib)
|
||||
archivewad_env.Install(INSTALL + '/modules', archivewad_lib)
|
||||
|
||||
archivezip_env = module_env.Copy()
|
||||
archivezip_lst = build_list('plugins/archivezip', 'plugin.cpp archive.cpp pkzip.cpp zlibstream.cpp')
|
||||
archivezip_env.useZLib()
|
||||
archivezip_lib = archivezip_env.SharedLibrarySafe(target='archivezip', source=archivezip_lst, LIBS='cmdlib', LIBPATH='libs')
|
||||
archivezip_env.Depends(archivezip_lib, cmdlib_lib)
|
||||
archivezip_env.Install(INSTALL + '/modules', archivezip_lib)
|
||||
|
||||
shaders_env = module_env.Copy()
|
||||
shaders_lst = build_list('plugins/shaders', 'shaders.cpp plugin.cpp')
|
||||
shaders_env.useGlib2()
|
||||
shaders_lib = shaders_env.SharedLibrarySafe(target='shaders', source=shaders_lst, LIBS='cmdlib', LIBPATH='libs')
|
||||
shaders_env.Depends(shaders_lib, cmdlib_lib)
|
||||
shaders_env.Install(INSTALL + '/modules', shaders_lib)
|
||||
|
||||
image_env = module_env.Copy()
|
||||
image_lst = build_list('plugins/image', 'bmp.cpp jpeg.cpp image.cpp pcx.cpp tga.cpp dds.cpp')
|
||||
image_lib = image_env.SharedLibrarySafe(target='image', source=image_lst, LIBS=['jpeg6', 'ddslib'], LIBPATH='libs')
|
||||
image_env.Depends(image_lib, jpeg_lib)
|
||||
image_env.Depends(image_lib, ddslib_lib)
|
||||
image_env.Install(INSTALL + '/modules', image_lib)
|
||||
|
||||
imagehl_lst=build_list('plugins/imagehl', 'imagehl.cpp hlw.cpp mip.cpp sprite.cpp')
|
||||
imagehl_lib = module_env.SharedLibrarySafe(target='imagehl', source=imagehl_lst)
|
||||
module_env.Install(INSTALL + '/modules', imagehl_lib)
|
||||
|
||||
imageq2_lst = build_list('plugins/imageq2', 'imageq2.cpp wal.cpp wal32.cpp')
|
||||
imageq2_lib = module_env.SharedLibrarySafe(target='imageq2', source=imageq2_lst)
|
||||
module_env.Install(INSTALL + '/modules', imageq2_lib)
|
||||
|
||||
mapq3_env = module_env.Copy()
|
||||
mapq3_lst=build_list('plugins/mapq3', 'plugin.cpp parse.cpp write.cpp')
|
||||
mapq3_lib = mapq3_env.SharedLibrarySafe(target='mapq3', source=mapq3_lst, LIBS='cmdlib', LIBPATH='libs')
|
||||
mapq3_env.Depends(mapq3_lib, cmdlib_lib)
|
||||
mapq3_env.Install(INSTALL + '/modules', mapq3_lib)
|
||||
|
||||
imagepng_env = module_env.Copy()
|
||||
imagepng_lst = build_list('plugins/imagepng', 'plugin.cpp')
|
||||
imagepng_env.usePNG()
|
||||
imagepng_lib = imagepng_env.SharedLibrarySafe(target='imagepng', source=imagepng_lst)
|
||||
imagepng_env.Install(INSTALL + '/modules', imagepng_lib)
|
||||
|
||||
mapxml_env = module_env.Copy()
|
||||
mapxml_lst = build_list('plugins/mapxml', 'plugin.cpp xmlparse.cpp xmlwrite.cpp')
|
||||
mapxml_lib = mapxml_env.SharedLibrarySafe(target='mapxml', source=mapxml_lst)
|
||||
mapxml_env.useXML2()
|
||||
mapxml_env.useGlib2()
|
||||
mapxml_env.Install(INSTALL + '/modules', mapxml_lib)
|
||||
|
||||
model_env = module_env.Copy()
|
||||
model_lst = build_list('plugins/model', 'plugin.cpp model.cpp')
|
||||
model_lib = model_env.SharedLibrarySafe(target='model', source=model_lst, LIBS=['mathlib', 'picomodel'], LIBPATH='libs')
|
||||
model_env.Depends(model_lib, mathlib_lib)
|
||||
model_env.Depends(model_lib, picomodel_lib)
|
||||
model_env.Install(INSTALL + '/modules', model_lib)
|
||||
|
||||
md3model_lst=build_list('plugins/md3model', 'plugin.cpp mdl.cpp md3.cpp md2.cpp mdc.cpp mdlimage.cpp md5.cpp')
|
||||
md3model_lib = module_env.SharedLibrarySafe(target='md3model', source=md3model_lst)
|
||||
module_env.Install(INSTALL + '/modules', md3model_lib)
|
||||
|
||||
entity_lst = build_list('plugins/entity', 'plugin.cpp entity.cpp eclassmodel.cpp generic.cpp group.cpp light.cpp miscmodel.cpp doom3group.cpp skincache.cpp angle.cpp angles.cpp colour.cpp filters.cpp model.cpp namedentity.cpp origin.cpp scale.cpp targetable.cpp rotation.cpp modelskinkey.cpp')
|
||||
entity_lib = module_env.SharedLibrarySafe(target='entity', source=entity_lst)
|
||||
module_env.Install(INSTALL + '/modules', entity_lib)
|
||||
|
||||
bob_env = module_env.Copy()
|
||||
bob_lst = build_list('contrib/bobtoolz/',
|
||||
'dialogs/dialogs-gtk.cpp bobToolz-GTK.cpp bsploader.cpp cportals.cpp DBobView.cpp \
|
||||
DBrush.cpp DEntity.cpp DEPair.cpp DMap.cpp DPatch.cpp DPlane.cpp DPoint.cpp \
|
||||
DShape.cpp DTrainDrawer.cpp DTreePlanter.cpp DVisDrawer.cpp DWinding.cpp funchandlers-GTK.cpp \
|
||||
lists.cpp misc.cpp ScriptParser.cpp shapes.cpp visfind.cpp')
|
||||
bob_lib = bob_env.SharedLibrarySafe(target='bobtoolz', source=bob_lst, LIBS=['mathlib', 'cmdlib', 'profile'], LIBPATH='libs')
|
||||
bob_env.Depends(bob_lib, mathlib_lib)
|
||||
bob_env.Depends(bob_lib, cmdlib_lib)
|
||||
bob_env.Depends(bob_lib, profile_lib)
|
||||
bob_env.useGlib2()
|
||||
bob_env.useGtk2()
|
||||
bob_env.Install(INSTALL + '/plugins', bob_lib)
|
||||
|
||||
#camera_lst = build_list('contrib/camera',
|
||||
#'camera.cpp dialogs.cpp dialogs_common.cpp funchandlers.cpp listener.cpp misc.cpp renderer.cpp')
|
||||
#camera_lst.append('libs/libsplines.a')
|
||||
#bob_env.SharedLibrarySafe(target='camera', source=camera_lst)
|
||||
#bob_env.Install(INSTALL + '/plugins', 'camera.so')
|
||||
|
||||
prtview_env = module_env.Copy()
|
||||
prtview_lst = build_list('contrib/prtview', 'AboutDialog.cpp ConfigDialog.cpp LoadPortalFileDialog.cpp portals.cpp prtview.cpp')
|
||||
prtview_env.useGlib2()
|
||||
prtview_env.useGtk2()
|
||||
prtview_lib = prtview_env.SharedLibrarySafe(target='prtview', source=prtview_lst, LIBS='profile', LIBPATH='libs')
|
||||
prtview_env.Depends(prtview_lib, profile_lib)
|
||||
prtview_env.Install(INSTALL + '/plugins', prtview_lib)
|
||||
|
||||
brushexport2_env = module_env.Copy()
|
||||
brushexport2_lst = build_list('contrib/brushexport', ['plugin.cpp','interface.cpp','callbacks.cpp', 'support.cpp', 'export.cpp'])
|
||||
brushexport2_env.useGlib2()
|
||||
brushexport2_env.useGtk2()
|
||||
brushexport2_lib = brushexport2_env.SharedLibrarySafe(target='brushexport', source=brushexport2_lst, LIBPATH='libs')
|
||||
brushexport2_env.Install(INSTALL + '/plugins', brushexport2_lib)
|
||||
|
||||
sunplug_env = module_env.Copy()
|
||||
sunplug_lst = build_list('contrib/sunplug', 'sunplug.cpp')
|
||||
sunplug_env.useGlib2()
|
||||
sunplug_env.useGtk2()
|
||||
sunplug_lib = sunplug_env.SharedLibrarySafe(target='sunplug', source=sunplug_lst, LIBPATH='libs')
|
||||
sunplug_env.Install(INSTALL + '/plugins', sunplug_lib)
|
||||
|
||||
ufoai_env = module_env.Copy()
|
||||
ufoai_lst = build_list('contrib/ufoaiplug', 'ufoai.cpp ufoai_filters.cpp ufoai_gtk.cpp ufoai_level.cpp')
|
||||
ufoai_env.useGlib2()
|
||||
ufoai_env.useGtk2()
|
||||
ufoai_lib = ufoai_env.SharedLibrarySafe(target='ufoaiplug', source=ufoai_lst, LIBPATH='libs')
|
||||
ufoai_env.Install(INSTALL + '/plugins', ufoai_lib)
|
||||
|
||||
shaderplug_env = module_env.Copy()
|
||||
shaderplug_lst = build_list('contrib/shaderplug', 'shaderplug.cpp')
|
||||
shaderplug_env.useGlib2()
|
||||
shaderplug_env.useGtk2()
|
||||
shaderplug_env.useXML2()
|
||||
shaderplug_lib = shaderplug_env.SharedLibrarySafe(target='shaderplug', source=shaderplug_lst, LIBS='xmllib', LIBPATH='libs')
|
||||
shaderplug_env.Install(INSTALL + '/plugins', shaderplug_lib)
|
||||
|
||||
#gensurf_lst = build_list('contrib/gtkgensurf',
|
||||
#'bitmap.cpp dec.cpp face.cpp font.cpp gendlgs.cpp genmap.cpp gensurf.cpp heretic.cpp plugin.cpp view.cpp triangle.c')
|
||||
#bob_env.SharedLibrarySafe(target='gensurf', source=gensurf_lst)
|
||||
#bob_env.Install(INSTALL + '/plugins', 'gensurf.so')
|
||||
|
||||
#bkgrnd2d_list = build_list( 'contrib/bkgrnd2d', 'bkgrnd2d.cpp plugin.cpp dialog.cpp' )
|
||||
#bkgrnd2d_list.append( 'libs/libsynapse.a' )
|
||||
#bkgrnd2d_env = module_env.Copy()
|
||||
#bkgrnd2d_env.useGtk2()
|
||||
#bkgrnd2d_env.SharedLibrarySafe( target='bkgrnd2d', source=bkgrnd2d_list )
|
||||
#bkgrnd2d_env.Install( INSTALL + '/plugins', 'bkgrnd2d.so' )
|
||||
|
||||
radiant_env = g_env.Copy()
|
||||
radiant_env['CPPPATH'].append('include')
|
||||
radiant_env['LINKFLAGS'] += '-ldl -lGL '
|
||||
if ( OS == 'Darwin' ):
|
||||
radiant_env['CXXFLAGS'] += '-fno-common '
|
||||
radiant_env['CCFLAGS'] += '-fno-common '
|
||||
radiant_env['LINKFLAGS'] += '-lX11 -lGL -lGLU '
|
||||
radiant_env['LIBPREFIX'] = ''
|
||||
radiant_env.useGlib2()
|
||||
radiant_env.useXML2()
|
||||
radiant_env.useGtk2()
|
||||
radiant_env.useGtkGLExt()
|
||||
|
||||
radiant_src = [
|
||||
'autosave.cpp',
|
||||
'brush.cpp',
|
||||
'brushmanip.cpp',
|
||||
'brushmodule.cpp',
|
||||
'brushnode.cpp',
|
||||
'brushtokens.cpp',
|
||||
'brushxml.cpp',
|
||||
'brush_primit.cpp',
|
||||
'build.cpp',
|
||||
'camwindow.cpp',
|
||||
'clippertool.cpp',
|
||||
'commands.cpp',
|
||||
'console.cpp',
|
||||
'csg.cpp',
|
||||
'dialog.cpp',
|
||||
'eclass.cpp',
|
||||
'eclass_def.cpp',
|
||||
'eclass_doom3.cpp',
|
||||
'eclass_fgd.cpp',
|
||||
'eclass_xml.cpp',
|
||||
'entity.cpp',
|
||||
'entityinspector.cpp',
|
||||
'entitylist.cpp',
|
||||
'environment.cpp',
|
||||
'error.cpp',
|
||||
'feedback.cpp',
|
||||
'filetypes.cpp',
|
||||
'filters.cpp',
|
||||
'findtexturedialog.cpp',
|
||||
'glwidget.cpp',
|
||||
'grid.cpp',
|
||||
'groupdialog.cpp',
|
||||
'gtkdlgs.cpp',
|
||||
'gtkmisc.cpp',
|
||||
'help.cpp',
|
||||
'image.cpp',
|
||||
'main.cpp',
|
||||
'mainframe.cpp',
|
||||
'map.cpp',
|
||||
'mru.cpp',
|
||||
'nullmodel.cpp',
|
||||
'parse.cpp',
|
||||
'patch.cpp',
|
||||
'patchdialog.cpp',
|
||||
'patchmanip.cpp',
|
||||
'patchmodule.cpp',
|
||||
'plugin.cpp',
|
||||
'pluginapi.cpp',
|
||||
'pluginmanager.cpp',
|
||||
'pluginmenu.cpp',
|
||||
'plugintoolbar.cpp',
|
||||
'points.cpp',
|
||||
'preferencedictionary.cpp',
|
||||
'preferences.cpp',
|
||||
'qe3.cpp',
|
||||
'qgl.cpp',
|
||||
'referencecache.cpp',
|
||||
'renderer.cpp',
|
||||
'renderstate.cpp',
|
||||
'scenegraph.cpp',
|
||||
'stacktrace.cpp',
|
||||
'select.cpp',
|
||||
'selection.cpp',
|
||||
'server.cpp',
|
||||
'shaders.cpp',
|
||||
'sockets.cpp',
|
||||
'surfacedialog.cpp',
|
||||
'texmanip.cpp',
|
||||
'textures.cpp',
|
||||
'texwindow.cpp',
|
||||
'timer.cpp',
|
||||
'treemodel.cpp',
|
||||
'undo.cpp',
|
||||
'url.cpp',
|
||||
'view.cpp',
|
||||
'watchbsp.cpp',
|
||||
'winding.cpp',
|
||||
'windowobservers.cpp',
|
||||
'xmlstuff.cpp',
|
||||
'xywindow.cpp',
|
||||
]
|
||||
|
||||
for i in range(len(radiant_src)):
|
||||
radiant_src[i] = 'radiant/' + radiant_src[i]
|
||||
|
||||
radiant_libs = ['mathlib', 'cmdlib', 'l_net', 'profile', 'gtkutil', 'xmllib']
|
||||
radiant_prog = radiant_env.Program(target='radiant.' + g_cpu, source=radiant_src, LIBS=radiant_libs, LIBPATH='libs')
|
||||
radiant_env.Depends(radiant_prog, mathlib_lib)
|
||||
radiant_env.Depends(radiant_prog, cmdlib_lib)
|
||||
radiant_env.Depends(radiant_prog, l_net_lib)
|
||||
radiant_env.Depends(radiant_prog, profile_lib)
|
||||
radiant_env.Depends(radiant_prog, gtkutil_lib)
|
||||
radiant_env.Depends(radiant_prog, xml_lib)
|
||||
radiant_env.Install(INSTALL, radiant_prog)
|
||||
|
||||
|
||||
# end setup ---------------------------------------------------------------------------------------
|
||||
338
SConstruct
338
SConstruct
|
|
@ -1,338 +0,0 @@
|
|||
# scons build script
|
||||
# http://scons.sourceforge.net
|
||||
|
||||
import commands, re, sys, os, pickle, string, popen2
|
||||
from makeversion import radiant_makeversion, get_version
|
||||
|
||||
# to access some internal stuff
|
||||
import SCons
|
||||
|
||||
conf_filename='site.conf'
|
||||
# there is a default hardcoded value, you can override on command line, those are saved between runs
|
||||
# we only handle strings
|
||||
serialized=['CC', 'CXX', 'JOBS', 'BUILD']
|
||||
|
||||
# help -------------------------------------------
|
||||
|
||||
Help("""
|
||||
Usage: scons [OPTIONS] [TARGET] [CONFIG]
|
||||
|
||||
[OPTIONS] and [TARGET] are covered in command line options, use scons -H
|
||||
|
||||
[CONFIG]: KEY="VALUE" [...]
|
||||
a number of configuration options saved between runs in the """ + conf_filename + """ file
|
||||
erase """ + conf_filename + """ to start with default settings again
|
||||
|
||||
CC
|
||||
CXX
|
||||
Specify C and C++ compilers (defaults gcc and g++)
|
||||
ex: CC="gcc-3.2"
|
||||
You can use ccache and distcc, for instance:
|
||||
CC="ccache distcc gcc" CXX="ccache distcc g++"
|
||||
|
||||
JOBS
|
||||
Parallel build
|
||||
ex: JOBS="4" is a good setting on SMP machines
|
||||
|
||||
BUILD
|
||||
Use debug/release to select build settings
|
||||
ex: BUILD="debug" - default is debug
|
||||
"""
|
||||
)
|
||||
|
||||
# end help ---------------------------------------
|
||||
|
||||
# sanity -----------------------------------------
|
||||
|
||||
# get a recent python release
|
||||
# that is broken in current version:
|
||||
# http://sourceforge.net/tracker/index.php?func=detail&aid=794145&group_id=30337&atid=398971
|
||||
#EnsurePythonVersion(2,1)
|
||||
# above 0.90
|
||||
EnsureSConsVersion( 0, 96 )
|
||||
print 'SCons ' + SCons.__version__
|
||||
|
||||
# end sanity -------------------------------------
|
||||
|
||||
# system detection -------------------------------
|
||||
|
||||
# TODO: detect Darwin / OSX
|
||||
|
||||
# CPU type
|
||||
g_cpu = commands.getoutput('uname -m')
|
||||
exp = re.compile('.*i?86.*')
|
||||
if (g_cpu == 'Power Macintosh' or g_cpu == 'ppc'):
|
||||
g_cpu = 'ppc'
|
||||
elif exp.match(g_cpu):
|
||||
g_cpu = 'x86'
|
||||
else:
|
||||
g_cpu = 'cpu'
|
||||
|
||||
# OS
|
||||
OS = commands.getoutput('uname')
|
||||
print "OS=\"" + OS + "\""
|
||||
|
||||
if (OS == 'Linux'):
|
||||
# libc .. do the little magic!
|
||||
libc = commands.getoutput('/lib/libc.so.6 |grep "GNU C "|grep version|awk -F "version " \'{ print $2 }\'|cut -b -3')
|
||||
|
||||
# end system detection ---------------------------
|
||||
|
||||
# default settings -------------------------------
|
||||
|
||||
CC='gcc'
|
||||
CXX='g++'
|
||||
JOBS='1'
|
||||
BUILD='debug'
|
||||
INSTALL='#install'
|
||||
g_build_root = 'build'
|
||||
|
||||
# end default settings ---------------------------
|
||||
|
||||
# site settings ----------------------------------
|
||||
|
||||
site_dict = {}
|
||||
if (os.path.exists(conf_filename)):
|
||||
site_file = open(conf_filename, 'r')
|
||||
p = pickle.Unpickler(site_file)
|
||||
site_dict = p.load()
|
||||
print 'Loading build configuration from ' + conf_filename
|
||||
for k, v in site_dict.items():
|
||||
exec_cmd = k + '=\"' + v + '\"'
|
||||
print exec_cmd
|
||||
exec(exec_cmd)
|
||||
|
||||
# end site settings ------------------------------
|
||||
|
||||
# command line settings --------------------------
|
||||
|
||||
for k in serialized:
|
||||
if (ARGUMENTS.has_key(k)):
|
||||
exec_cmd = k + '=\"' + ARGUMENTS[k] + '\"'
|
||||
print 'Command line: ' + exec_cmd
|
||||
exec(exec_cmd)
|
||||
|
||||
# end command line settings ----------------------
|
||||
|
||||
# sanity check -----------------------------------
|
||||
|
||||
|
||||
def GetGCCVersion(name):
|
||||
ret = commands.getstatusoutput('%s -dumpversion' % name)
|
||||
if ( ret[0] != 0 ):
|
||||
return None
|
||||
vers = string.split(ret[1], '.')
|
||||
if ( len(vers) == 2 ):
|
||||
return [ vers[0], vers[1], 0 ]
|
||||
elif ( len(vers) == 3 ):
|
||||
return vers
|
||||
return None
|
||||
|
||||
ver_cc = GetGCCVersion(CC)
|
||||
ver_cxx = GetGCCVersion(CXX)
|
||||
|
||||
if ( ver_cc is None or ver_cxx is None or ver_cc[0] < '3' or ver_cxx[0] < '3' or ver_cc != ver_cxx ):
|
||||
print 'Compiler version check failed - need gcc 3.x or later:'
|
||||
print 'CC: %s %s\nCXX: %s %s' % ( CC, repr(ver_cc), CXX, repr(ver_cxx) )
|
||||
Exit(1)
|
||||
|
||||
# end sanity check -------------------------------
|
||||
|
||||
# save site configuration ----------------------
|
||||
|
||||
for k in serialized:
|
||||
exec_cmd = 'site_dict[\'' + k + '\'] = ' + k
|
||||
exec(exec_cmd)
|
||||
|
||||
site_file = open(conf_filename, 'w')
|
||||
p = pickle.Pickler(site_file)
|
||||
p.dump(site_dict)
|
||||
site_file.close()
|
||||
|
||||
# end save site configuration ------------------
|
||||
|
||||
# general configuration, target selection --------
|
||||
|
||||
SConsignFile( "scons.signatures" )
|
||||
|
||||
g_build = g_build_root + '/' + BUILD
|
||||
|
||||
SetOption('num_jobs', JOBS)
|
||||
|
||||
LINK = CXX
|
||||
# common flags
|
||||
warningFlags = '-W -Wall -Wcast-align -Wcast-qual -Wno-unused-parameter '
|
||||
warningFlagsCXX = '-Wno-non-virtual-dtor -Wreorder ' # -Wold-style-cast
|
||||
# POSIX macro: platform supports posix IEEE Std 1003.1:2001
|
||||
# XWINDOWS macro: platform supports X-Windows API
|
||||
CCFLAGS = '-DPOSIX -DXWINDOWS ' + warningFlags
|
||||
CXXFLAGS = '-pipe -DPOSIX -DXWINDOWS ' + warningFlags + warningFlagsCXX
|
||||
CPPPATH = []
|
||||
if (BUILD == 'debug'):
|
||||
CXXFLAGS += '-g3 -D_DEBUG '
|
||||
CCFLAGS += '-g3 -D_DEBUG '
|
||||
elif (BUILD == 'release' or BUILD == 'final'):
|
||||
CXXFLAGS += '-O2 '
|
||||
CCFLAGS += '-O2 '
|
||||
else:
|
||||
print 'Unknown build configuration ' + BUILD
|
||||
sys.exit( 0 )
|
||||
|
||||
LINKFLAGS = ''
|
||||
if ( OS == 'Linux' ):
|
||||
|
||||
if ( BUILD == 'final' ):
|
||||
# static
|
||||
# 2112833 /opt/gtkradiant/radiant.x86
|
||||
# 35282 /opt/gtkradiant/modules/archivezip.so
|
||||
# 600099 /opt/gtkradiant/modules/entity.so
|
||||
|
||||
# dynamic
|
||||
# 2237060 /opt/gtkradiant/radiant.x86
|
||||
# 110605 /opt/gtkradiant/modules/archivezip.so
|
||||
# 730222 /opt/gtkradiant/modules/entity.so
|
||||
|
||||
# EVIL HACK - force static-linking for libstdc++ - create a symbolic link to the static libstdc++ in the root
|
||||
os.system("ln -s `g++ -print-file-name=libstdc++.a`")
|
||||
|
||||
#if not os.path.exists("./install"):
|
||||
# os.mkdir("./install")
|
||||
#os.system("cp `g++ -print-file-name=libstdc++.so` ./install")
|
||||
|
||||
# -fPIC might be worth removing when building for 32-bit x86
|
||||
CCFLAGS += '-fPIC '
|
||||
CXXFLAGS += '-fPIC -fno-exceptions -fno-rtti '
|
||||
LINKFLAGS += '-fPIC -Wl,-fini,fini_stub -L. -static-libgcc '
|
||||
|
||||
if ( OS == 'Darwin' ):
|
||||
CCFLAGS += '-force_cpusubtype_ALL -fPIC '
|
||||
CXXFLAGS += '-force_cpusubtype_ALL -fPIC -fno-exceptions -fno-rtti '
|
||||
CPPPATH.append('/sw/include')
|
||||
CPPPATH.append('/usr/X11R6/include')
|
||||
LINKFLAGS += '-L/sw/lib -L/usr/lib -L/usr/X11R6/lib '
|
||||
|
||||
CPPPATH.append('libs')
|
||||
|
||||
# extend the standard Environment a bit
|
||||
class idEnvironment(Environment):
|
||||
|
||||
def __init__(self):
|
||||
Environment.__init__(self,
|
||||
ENV = os.environ,
|
||||
CC = CC,
|
||||
CXX = CXX,
|
||||
LINK = LINK,
|
||||
CCFLAGS = CCFLAGS,
|
||||
CXXFLAGS = CXXFLAGS,
|
||||
CPPPATH = CPPPATH,
|
||||
LINKFLAGS = LINKFLAGS)
|
||||
|
||||
def useGlib2(self):
|
||||
self['CXXFLAGS'] += '`pkg-config glib-2.0 --cflags` '
|
||||
self['CCFLAGS'] += '`pkg-config glib-2.0 --cflags` '
|
||||
if BUILD == 'final':
|
||||
self['LINKFLAGS'] += '-lglib-2.0 '
|
||||
else:
|
||||
self['LINKFLAGS'] += '`pkg-config glib-2.0 --libs` '
|
||||
|
||||
|
||||
def useXML2(self):
|
||||
self['CXXFLAGS'] += '`xml2-config --cflags` '
|
||||
self['CCFLAGS'] += '`xml2-config --cflags` '
|
||||
if BUILD == 'final':
|
||||
self['LINKFLAGS'] += '-lxml2 '
|
||||
else:
|
||||
self['LINKFLAGS'] += '`xml2-config --libs` '
|
||||
|
||||
def useGtk2(self):
|
||||
self['CXXFLAGS'] += '`pkg-config gtk+-2.0 --cflags` '
|
||||
self['CCFLAGS'] += '`pkg-config gtk+-2.0 --cflags` '
|
||||
if BUILD == 'final':
|
||||
self['LINKFLAGS'] += '-lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lpango-1.0 -lgdk_pixbuf-2.0 '
|
||||
else:
|
||||
self['LINKFLAGS'] += '`pkg-config gtk+-2.0 --libs-only-L` `pkg-config gtk+-2.0 --libs-only-l` '
|
||||
|
||||
def useGtkGLExt(self):
|
||||
self['CXXFLAGS'] += '`pkg-config gtkglext-1.0 --cflags` '
|
||||
self['CCFLAGS'] += '`pkg-config gtkglext-1.0 --cflags` '
|
||||
#if BUILD == 'final':
|
||||
self['LINKFLAGS'] += '-lgtkglext-x11-1.0 -lgdkglext-x11-1.0 '
|
||||
# apparently pkg-config for gtkglext includes --export-dynamic, which b0rks everything.
|
||||
#else:
|
||||
# self['LINKFLAGS'] += 'pkg-config gtkglext-1.0 --libs-only-L` `pkg-config gtkglext-1.0 --libs-only-l` '
|
||||
|
||||
def usePNG(self):
|
||||
self['CXXFLAGS'] += '`libpng-config --cflags` '
|
||||
self['CCFLAGS'] += '`libpng-config --cflags` '
|
||||
self['LINKFLAGS'] += '`libpng-config --ldflags` '
|
||||
|
||||
def useMHash(self):
|
||||
self['LINKFLAGS'] += '-lmhash '
|
||||
|
||||
def useZLib(self):
|
||||
self['LINKFLAGS'] += '-lz '
|
||||
|
||||
def usePThread(self):
|
||||
if ( OS == 'Darwin' ):
|
||||
self['LINKFLAGS'] += '-lpthread -Wl,-stack_size,0x400000 '
|
||||
else:
|
||||
self['LINKFLAGS'] += '-lpthread '
|
||||
|
||||
def CheckLDD(self, target, source, env):
|
||||
file = target[0]
|
||||
if (not os.path.isfile(file.abspath)):
|
||||
print('ERROR: CheckLDD: target %s not found\n' % target[0])
|
||||
Exit(1)
|
||||
# not using os.popen3 as I want to check the return code
|
||||
ldd = popen2.Popen3('`which ldd` -r %s' % target[0], 1)
|
||||
stdout_lines = ldd.fromchild.readlines()
|
||||
stderr_lines = ldd.childerr.readlines()
|
||||
ldd_ret = ldd.wait()
|
||||
del ldd
|
||||
have_undef = 0
|
||||
if ( ldd_ret != 0 ):
|
||||
print "ERROR: ldd command returned with exit code %d" % ldd_ret
|
||||
os.system('rm %s' % target[0])
|
||||
Exit()
|
||||
for i_line in stderr_lines:
|
||||
print repr(i_line)
|
||||
regex = re.compile('undefined symbol: (.*)\t\\((.*)\\)\n')
|
||||
if ( regex.match(i_line) ):
|
||||
symbol = regex.sub('\\1', i_line)
|
||||
try:
|
||||
env['ALLOWED_SYMBOLS'].index(symbol)
|
||||
except:
|
||||
have_undef = 1
|
||||
else:
|
||||
print "ERROR: failed to parse ldd stderr line: %s" % i_line
|
||||
os.system('rm %s' % target[0])
|
||||
Exit(1)
|
||||
if ( have_undef ):
|
||||
print "ERROR: undefined symbols"
|
||||
os.system('rm %s' % target[0])
|
||||
Exit(1)
|
||||
|
||||
def SharedLibrarySafe(self, target, source, LIBS=[], LIBPATH='.'):
|
||||
result = self.SharedLibrary(target, source, LIBS=LIBS, LIBPATH=LIBPATH)
|
||||
if (OS != 'Darwin'):
|
||||
AddPostAction(target + '.so', self.CheckLDD)
|
||||
return result
|
||||
|
||||
g_env = idEnvironment()
|
||||
|
||||
# export the globals
|
||||
GLOBALS = 'g_env INSTALL g_cpu'
|
||||
|
||||
radiant_makeversion('\\ngcc version: %s.%s.%s' % ( ver_cc[0], ver_cc[1], ver_cc[2] ) )
|
||||
|
||||
# end general configuration ----------------------
|
||||
|
||||
# targets ----------------------------------------
|
||||
|
||||
Default('.')
|
||||
|
||||
Export('GLOBALS ' + GLOBALS)
|
||||
BuildDir(g_build, '.', duplicate = 0)
|
||||
SConscript(g_build + '/SConscript')
|
||||
|
||||
# end targets ------------------------------------
|
||||
Loading…
Reference in New Issue
Block a user