[PD-cvs] pd/src SConscript,NONE,1.1.4.2

carmen rocco ix9 at users.sourceforge.net
Sun Jun 19 04:10:15 CEST 2005


Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10281/src

Added Files:
      Tag: devel_0_39
	SConscript 
Log Message:
thanks tim


--- NEW FILE: SConscript ---
Import("env")

pdenv = env.Copy()


######################################################################
#
# general configuration

opt = Options(['options.cache', 'custom.py'])
opt.AddOptions(
	BoolOption('debug', 'Build with debugging symbols', False),
	BoolOption('nosimd', 'Build without simd instructions', False),
	BoolOption('threadedsf', 'Build with threaded soundfiler', False),
	BoolOption('atomic', 'Build with atomic operations', True),
	BoolOption('newhash', 'Build with 16 bit symbol hash table', True),
	BoolOption('lockfree', 'Build with lock-free fifos', True),
	BoolOption('portaudio', 'Build with portaudio', True),
	BoolOption('pdlib', 'Build with pdlib', False),
	('optimize', 'Optimize for specific architecture', 'i686'),
	('prefix', 'install prefix', '/usr/local')
	)

opt.Update(pdenv)

opt.Save('options.cache',pdenv)
Help(opt.GenerateHelpText(pdenv))

######################################################################
#
# general configuration

prefix = pdenv['prefix']

sources = Split("""d_arithmetic.c
                   d_array.c
				   d_ctl.c
				   d_dac.c
				   d_delay.c
				   d_fft.c
				   d_fftroutine.c
				   d_filter.c
				   d_global.c
				   d_math.c
				   d_mayer_fft.c
				   d_misc.c
				   d_osc.c
				   d_resample.c
				   d_soundfile.c
				   d_ugen.c
				   g_all_guis.c
				   g_array.c
				   g_bang.c
				   g_canvas.c
				   g_editor.c
				   g_graph.c
				   g_guiconnect.c
				   g_hdial.c
				   g_hslider.c
				   g_io.c
				   g_mycanvas.c
				   g_numbox.c
				   g_readwrite.c
				   g_rtext.c
				   g_scalar.c
				   g_template.c
				   g_text.c
				   g_toggle.c
				   g_traversal.c
				   g_vdial.c
				   g_vslider.c
				   g_vumeter.c
				   m_atom.c
				   m_binbuf.c
				   m_class.c
				   m_conf.c
				   m_fifo.c
				   m_glob.c
				   m_memory.c
				   m_obj.c
				   m_pd.c
				   m_sched.c
				   m_simd.c
				   s_audio.c
				   s_file.c
				   s_inter.c
				   s_loader.c
				   s_main.c
				   s_midi.c
				   s_path.c
				   s_print.c
				   x_acoustics.c
				   x_arithmetic.c
				   x_connective.c
				   x_gui.c
				   x_interface.c
				   x_midi.c
				   x_misc.c
				   x_net.c
				   x_qlist.c
				   x_time.c""")
defs = []


######################################################################
#
# configure the build
conf = pdenv.Configure()

for libs in [['m','sin'],['tcl8.5','main'],['tk8.5','main'],['X11','XCreateWindow'],['pthread','pthread_create']]:
	if not conf.CheckLib(libs[0],libs[1]):
		print "error, missing lib: " + libs[0]
		Exit(1)

if conf.CheckLib('dl', 'dlopen'):
	defs.append('DL_OPEN')

jack = conf.CheckLib('jack','jack_activate')
alsa = conf.CheckLib('asound','snd_pcm_info')
portaudio = conf.CheckLib('portaudio','Pa_Initialize')

env=conf.Finish()

if pdenv['atomic']:
	defs.append('ATOMIC')

if pdenv['nosimd']:
	defs.append('DONTUSESIMD')

if pdenv['threadedsf']:
	defs.append('THREADED_SF')
	defs.append('GARRAY_THREAD_LOCK')

if pdenv['newhash']:
	defs.append('NEWHASH')

if pdenv['lockfree']:
	defs.append('LOCKFREE')

pdenv.Append(CPPDEFINES=defs)

######################################################################
#
# cross-platform configuration

pa_sources = Split("""s_audio_pa.c
					  s_audio_pablio.c
					  s_audio_paring.c""")

pm_sources = Split("s_midi_pm.c")

simd_sse_vc_sources = Split("m_simd_sse_vc.c")
simd_sse_gcc_sources = Split("m_simd_sse_gcc.c")
simd_ve_gcc_sources = Split("m_simd_ve_gcc.c")

if portaudio and pdenv['portaudio']:
	sources.append(pa_sources)
	pdenv.Append(CPPDEFINES=Split("USEAPI_PA PA19"))
	pdenv.Append(CPPPATH=Split("../portaudio ../portaudio/pablio"))

pdenv.Append(CPPPATH=".")
pdenv.Append(LIBPATH=".")


######################################################################
#
# windows configuration

windows_sources = Split("""s_audio_mmio.c
                           s_audio_asio.cpp
                           s_midi_mmio.c""")
windows_defs = Split("MSW USEAPI_ASIO")

if pdenv['PLATFORM'] == 'win32':
	sources.append(windows_sources + simd_sse_vc_sources)
	pdenv.Append(CPPDEFINES=windows_defs)

	pdenv['pdlib'] = True ## split pd to pd.exe and pd.dll
	
######################################################################
#
# linux configuration

jack_sources = Split("s_audio_jack.c")
alsa_sources = Split("""s_audio_alsamm.c
                        s_audio_alsa.c""")
oss_sources = Split("s_audio_oss.c")

linux_defs = Split("UNISTD UNIX USEAPI_OSS")
linux_defs.append('INSTALL_PREFIX=\\\"%s\\\"' % prefix)

linux_libs = []

if alsa:
	midi_sources = Split("s_midi_alsa.c")
else:
	midi_sources = Split("s_midi_oss.c")

linux_sources = oss_sources + midi_sources

if not pdenv['nosimd']:
	linux_sources.append(simd_sse_gcc_sources)

if alsa:
	linux_sources.append(alsa_sources)
	linux_defs.append("USEAPI_ALSA")
	linux_libs.append('asound')
	
if jack:
	linux_sources.append(jack_sources)
	linux_defs.append("USEAPI_JACK")
	linux_libs.append('jack')

if pdenv['PLATFORM'] == 'posix':
	sources.append(linux_sources)
	pdenv.Append(CPPDEFINES=linux_defs)
	pdenv.Append(LIBS=linux_libs)

######################################################################
#
# osx configuration

osx_sources = pa_sources + pm_sources + simd_ve_gcc_sources
osx_defs = Split("UNIX")

if pdenv['PLATFORM'] == 'osx':
	sources.append(osx_sources)
	pdenv.Append(CPPDEFINES=osx_defs)

######################################################################
#
# sgi configuration

sgi_sources = Split("s_audio_sgi.c s_midi_sgi.c")

#todo: how to determine sgi?



######################################################################
#
# compiler options
flags = ''

if pdenv['debug']:
	if ['msvc'] in pdenv['TOOLS']:
		pass # how to switch on debugging on msvc?
	else:
		flags += " -g"
else:
	if ['msvc'] in pdenv['TOOLS']:
		pass # how to switch on optimizing on msvc?
	else:
		flags += " -O3"

if pdenv['optimize']:
	if ['msvc'] in pdenv['TOOLS']:
		pass # is there any machine optmizisation on msvc?
	else:
		flags += " -march=" + pdenv['optimize']
	
if not pdenv['nosimd']:
	flags += " -mfpmath=sse -mmmx -msse -msse2"

pdenv.Append(CCFLAGS=flags)
pdenv.Append(CXXFLAGS=flags)

######################################################################
#
# binaries

pdwatchdog = pdenv.Program('pd-watchdog', "s_watchdog.c")
pdsend = pdenv.Program('pdsend', "u_pdsend.c")
pdreceive = pdenv.Program('pdreceive', "u_pdreceive.c")
pdgui = pdenv.Program('pd-gui', Split("t_main.c t_tkcmd.c"))


if pdenv['pdlib']:
	pdlib = pdenv.SharedLibrary('pd', sources)
	pdenv.Append(LIBS=pdlib)
	pd = pdenv.Program('pd', 's_entry.c')
	Default(pdwatchdog, pdsend, pdreceive, pdgui, pd, pdstarter)
else:
 	pd = pdenv.Program('pd', ['s_entry.c', sources],
					   LINKFLAGS="-Wl,-export-dynamic")
	Default(pdwatchdog, pdsend, pdreceive, pdgui, pd)


######################################################################
#
# installing stuff

if pdenv['PLATFORM'] == 'posix':
	pdenv.Install(prefix+'/bin', pdsend)
	pdenv.Install(prefix+'/bin', pdreceive)
	pdenv.Install(prefix+'/bin', pd)
	pdenv.Install(prefix+'/lib/pd/bin', pdgui)
	pdenv.Install(prefix+'/lib/pd/bin', pdwatchdog)

	if pdenv['pdlib']:
		pdenv.Install(prefix+'/lib', pdlib)

	pdenv.Alias('install', prefix)





More information about the Pd-cvs mailing list