Browse Source

Marc-Olivier Barre scons patch (2).

git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@1903 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/0.71
sletz 17 years ago
parent
commit
5b7c1071b4
5 changed files with 143 additions and 63 deletions
  1. +2
    -1
      ChangeLog
  2. +7
    -11
      SConstruct
  3. +122
    -43
      common/SConscript
  4. +2
    -2
      example-clients/SConscript
  5. +10
    -6
      linux/SConscript

+ 2
- 1
ChangeLog View File

@@ -22,12 +22,13 @@ Marc-Olivier Barre
* libjackdmp.so renamed to libjackservermp.so and same for OSX framework.
* tw1.c example added (new thread model).
* Marc-Olivier Barre scons patch (2).

2008-03-02 Stephane Letz <letz@grame.fr>
* Correct JackSocketClientChannel::ClientClose to use ServerSyncCall instead of ServerAsyncCall.
* Better documentation in jack.h.
* Marc-Olivier Barre Scons patch.
* Marc-Olivier Barre scons patch.

2008-03-02 Stephane Letz <letz@grame.fr>


+ 7
- 11
SConstruct View File

@@ -52,7 +52,6 @@ opts.AddOptions(
PathOption( "BINDIR", "Overwrite the directory where apps are installed to.", "$PREFIX/bin", PathOption.PathAccept ),
PathOption( "LIBDIR", "Overwrite the directory where libs are installed to.", "$PREFIX/lib", PathOption.PathAccept ),
PathOption( "INCLUDEDIR", "Overwrite the directory where headers are installed to.", "$PREFIX/include", PathOption.PathAccept ),
PathOption( "SHAREDIR", "Overwrite the directory where misc shared files are installed to.", "$PREFIX/share/jackmp", PathOption.PathAccept ),
BoolOption( "ENABLE_ALSA", "Enable/Disable the ALSA backend.", True ),
BoolOption( "ENABLE_FREEBOB", "Enable/Disable the FreeBoB backend.", True ),
BoolOption( "ENABLE_FIREWIRE", "Enable/Disable the FireWire backend.", True ),
@@ -64,22 +63,21 @@ opts.AddOptions(
)

## Load the builders in config
buildenv={}
buildenv = os.environ
if os.environ.has_key('PATH'):
buildenv['PATH']=os.environ['PATH']
buildenv['PATH'] = os.environ['PATH']
else:
buildenv['PATH']=''
buildenv['PATH'] = ''

if os.environ.has_key('PKG_CONFIG_PATH'):
buildenv['PKG_CONFIG_PATH']=os.environ['PKG_CONFIG_PATH']
buildenv['PKG_CONFIG_PATH'] = os.environ['PKG_CONFIG_PATH']
else:
buildenv['PKG_CONFIG_PATH']=''
buildenv['PKG_CONFIG_PATH'] = ''

if os.environ.has_key('LD_LIBRARY_PATH'):
buildenv['LD_LIBRARY_PATH']=os.environ['LD_LIBRARY_PATH']
buildenv['LD_LIBRARY_PATH'] = os.environ['LD_LIBRARY_PATH']
else:
buildenv['LD_LIBRARY_PATH']=''

buildenv['LD_LIBRARY_PATH'] = ''

env = Environment( tools=['default','scanreplace','pkgconfig', 'doxygen'], toolpath=['admin'],
ENV=buildenv, PLATFORM = platform, options=opts )
@@ -200,11 +198,9 @@ env['prefix'] = Template( os.path.join( env['PREFIX'] ) ).safe_substitute( env )
env['bindir'] = Template( os.path.join( env['BINDIR'] ) ).safe_substitute( env )
env['libdir'] = Template( os.path.join( env['LIBDIR'] ) ).safe_substitute( env )
env['includedir'] = Template( os.path.join( env['INCLUDEDIR'] ) ).safe_substitute( env )
env['sharedir'] = Template( os.path.join( env['SHAREDIR'] ) ).safe_substitute( env )

env.Alias( "install", env['libdir'] )
env.Alias( "install", env['includedir'] )
env.Alias( "install", env['sharedir'] )
env.Alias( "install", env['bindir'] )

# for config.h.in


+ 122
- 43
common/SConscript View File

@@ -27,54 +27,142 @@ Import( 'env' )
# paths where include files can be found
env.AppendUnique( CPPPATH=["#/", "#/common", "#/common/jack"] )

#HACK: this should not be here ideally
# HACK: this should not be here ideally
env.AppendUnique( CPPPATH=["#/linux","#/macosx"] )

# a symlinking command
symlinkcmd = 'cd $TARGET.dir && rm -f -v $TARGET.name && ln -v -s $SOURCE.name $TARGET.name'

#
# Define the source files
#

srcfiles_common_serverlib = env.Split( '\
JackActivationCount.cpp JackAPI.cpp JackAudioDriver.cpp JackClient.cpp JackConnectionManager.cpp \
JackDriver.cpp JackEngine.cpp JackEngineControl.cpp JackError.c JackExternalClient.cpp JackFrameTimer.cpp \
JackFreewheelDriver.cpp JackGlobalsServer.cpp JackGraphManager.cpp JackInternalClient.cpp JackPort.cpp JackPosixSemaphore.cpp \
JackPosixThread.cpp JackFifo.cpp JackLoopbackDriver.cpp JackPortType.cpp JackAudioPort.cpp JackMidiPort.cpp JackMidiAPI.cpp \
JackServer.cpp JackShmMem.cpp JackThreadedDriver.cpp shm.c JackSocket.cpp JackSocketServerChannel.cpp JackSocketNotifyChannel.cpp \
JackSocketServerNotifyChannel.cpp JackTime.c JackServerAPI.cpp JackGlobals.cpp JackDriverLoader.cpp JackDebugClient.cpp \
JackTransportEngine.cpp JackServerGlobals.cpp JackServerLaunch.cpp timestamps.c JackTools.cpp ringbuffer.c \
')

srcfiles_common_clientlib = env.Split( '\
JackActivationCount.cpp JackAPI.cpp JackClient.cpp JackConnectionManager.cpp ringbuffer.c JackServerLaunch.cpp\
JackError.c JackFrameTimer.cpp JackGlobalsClient.cpp JackGraphManager.cpp JackLibClient.cpp JackLibAPI.cpp JackPort.cpp JackPosixSemaphore.cpp \
JackFifo.cpp JackPortType.cpp JackAudioPort.cpp JackMidiPort.cpp JackMidiAPI.cpp JackEngineControl.cpp JackPosixThread.cpp JackShmMem.cpp \
shm.c JackSocket.cpp JackSocketClientChannel.cpp JackTime.c JackGlobals.cpp JackDebugClient.cpp JackTransportEngine.cpp timestamps.c JackTools.cpp \
')

srcfiles_common_wrapperlib = ['JackAPIWrapper.cpp', 'ringbuffer.c']

jack_headers = env.Split( 'intclient.h jack.h midiport.h ringbuffer.h \
statistics.h thread.h transport.h types.h')
srcfiles_common_serverlib = [
'JackActivationCount.cpp',
'JackAPI.cpp',
'JackAudioDriver.cpp',
'JackClient.cpp',
'JackConnectionManager.cpp',
'JackDriver.cpp',
'JackEngine.cpp',
'JackEngineControl.cpp',
'JackError.c',
'JackExternalClient.cpp',
'JackFrameTimer.cpp',
'JackFreewheelDriver.cpp',
'JackGlobalsServer.cpp',
'JackGraphManager.cpp',
'JackInternalClient.cpp',
'JackPort.cpp',
'JackPosixSemaphore.cpp',
'JackPosixThread.cpp',
'JackFifo.cpp',
'JackLoopbackDriver.cpp',
'JackPortType.cpp',
'JackAudioPort.cpp',
'JackMidiPort.cpp',
'JackMidiAPI.cpp',
'JackServer.cpp',
'JackShmMem.cpp',
'JackThreadedDriver.cpp',
'shm.c',
'JackSocket.cpp',
'JackSocketServerChannel.cpp',
'JackSocketNotifyChannel.cpp',
'JackSocketServerNotifyChannel.cpp',
'JackTime.c',
'JackServerAPI.cpp',
'JackGlobals.cpp',
'JackDriverLoader.cpp',
'JackDebugClient.cpp',
'JackTransportEngine.cpp',
'JackServerGlobals.cpp',
'JackServerLaunch.cpp',
'timestamps.c',
'JackTools.cpp',
'ringbuffer.c'
]

srcfiles_common_clientlib = [
'JackActivationCount.cpp',
'JackAPI.cpp',
'JackClient.cpp',
'JackConnectionManager.cpp',
'ringbuffer.c',
'JackServerLaunch.cpp',
'JackError.c',
'JackFrameTimer.cpp',
'JackGlobalsClient.cpp',
'JackGraphManager.cpp',
'JackLibClient.cpp',
'JackLibAPI.cpp',
'JackPort.cpp',
'JackPosixSemaphore.cpp',
'JackFifo.cpp',
'JackPortType.cpp',
'JackAudioPort.cpp',
'JackMidiPort.cpp',
'JackMidiAPI.cpp',
'JackEngineControl.cpp',
'JackPosixThread.cpp',
'JackShmMem.cpp',
'shm.c',
'JackSocket.cpp',
'JackSocketClientChannel.cpp',
'JackTime.c',
'JackGlobals.cpp',
'JackDebugClient.cpp',
'JackTransportEngine.cpp',
'timestamps.c',
'JackTools.cpp'
]

srcfiles_common_wrapperlib = [
'JackAPIWrapper.cpp',
'ringbuffer.c'
]

jack_headers = [
'intclient.h',
'jack.h',
'midiport.h',
'ringbuffer.h',
'statistics.h',
'thread.h',
'transport.h',
'types.h'
]

#
# Start building
#

#pkgconfig = env.ScanReplace( "libjackmp.pc.in" )
#env.Install( env['libdir'] + '/pkgconfig', pkgconfig )

env.AppendUnique( LIBS=["rt", "pthread"] )

# build the common stuff
clientlib = env.SharedLibrary( "jackmp", srcfiles_common_clientlib )
env.Install( "$libdir", clientlib )
serverlib = env.SharedLibrary( "jackdmp", srcfiles_common_serverlib )
env.Install( "$libdir", serverlib )
wrapperlib = env.SharedLibrary( "jackwrapper", srcfiles_common_wrapperlib )
env.Install( "$libdir", wrapperlib )

if env['PLATFORM'] == 'posix':
env.AppendUnique( SHLIBSUFFIX=".0.0" )
clientlib_name = "jackmp"
serverlib_name = "jackservermp"
wrapperlib_name = "jackwrapper"
clientlib = env.SharedLibrary( clientlib_name, srcfiles_common_clientlib )
serverlib = env.SharedLibrary( serverlib_name, srcfiles_common_serverlib )
wrapperlib = env.SharedLibrary( wrapperlib_name, srcfiles_common_wrapperlib )
env.Install( env['libdir'], [clientlib, serverlib, wrapperlib])
env.Alias("install", env['libdir'])
if env['PLATFORM'] == 'posix':
for lib_name, lib in [(clientlib_name, clientlib), (serverlib_name, serverlib), (wrapperlib_name, wrapperlib)]:
env.Command('lib' + lib_name + '.so.0', lib, symlinkcmd)
env.Command('lib' + lib_name + '.so', 'lib'+lib_name+'.so.0', symlinkcmd)
env.Command(env['libdir'] + '/lib' + lib_name + '.so.0', env['libdir'] + '/lib' + lib_name + '.so.0.0', symlinkcmd)
env.Command(env['libdir'] + '/lib' + lib_name + '.so', env['libdir'] + '/lib' + lib_name + '.so.0', symlinkcmd)
env.Alias("install", env['libdir'] + '/lib' + lib_name + '.so.0')
env.Alias("install", env['libdir'] + '/lib' + lib_name + '.so')

# install the headers
for header in jack_headers:
env.Install(env['includedir'] + '/jack', 'jack/' + header)
env.Alias("install", env['includedir'])
#if env['JACK_FLAGS']:
#jack_include_dir = env['JACK_INCLUDEDIR']
#if 'install' in COMMAND_LINE_TARGETS and os.path.isdir( jack_include_dir ):
@@ -85,20 +173,12 @@ env.Install( "$libdir", wrapperlib )
#print "moving old jack includes to %s..." % jack_old_includes_dir
#env.Command(jack_old_includes_dir, jack_include_dir, Move("$TARGET", "$SOURCE"))

for header in jack_headers:
env.Alias("install", env.Install( env['includedir'] + '/jack', 'jack/' + header ))


# install the libs
env.Alias("install", env.Install(env['libdir'], serverlib))
env.Alias("install", env.Install(env['libdir'], clientlib))
env.Alias("install", env.Install(env['libdir'], wrapperlib))
#jack_libdir = env['JACK_LIBDIR']
#libjackdmp_location = env['libdir'] + '/libjackmp.so'
#if 'install' in COMMAND_LINE_TARGETS and os.path.isdir( jack_libdir ):

#if env.GetOption('clean'):
##note: is this executed before the actual uninstall?
#note: is this executed before the actual uninstall?
#lib_files = glob.glob(jack_libdir + '/libjack.so.*.up')
#for old_name in lib_files:
#new_name = old_name[:-3]
@@ -109,10 +189,9 @@ env.Alias("install", env.Install(env['libdir'], wrapperlib))
#lib_files = glob.glob(jack_libdir + '/libjack.so.*')
#env.Alias("install", env.Install(env['libdir'], serverlib))
#env.Alias("install", env.Install(env['libdir'], clientlib))

#for old_name in lib_files:
#new_name = old_name + '.up'
#print "moving old jack lib %s to %s..." % (old_name, new_name)
#env.Command(new_name, old_name, Move("$TARGET", "$SOURCE"))
#print " linking to %s..." % (libjackdmp_location)
#env.Command(old_name, libjackdmp_location, "ln -s $TARGET $SOURCE")
#env.Command(old_name, libjackdmp_location, "ln -s $TARGET $SOURCE")

+ 2
- 2
example-clients/SConscript View File

@@ -51,7 +51,7 @@ example_client_libs = {
# link extra libs?
extra_libs = {}
for example_client_program in example_client_programs.keys():
extra_libs[example_client_program] = ["jackdmp", "dl"]
extra_libs[example_client_program] = ["jackservermp", "dl"]

# special cases
extra_libs["jack_load"] = ["jackmp"]
@@ -59,7 +59,7 @@ extra_libs["jack_unload"] = ["jackmp"]

env['HAS_READLINE']=True
if env['HAS_READLINE']:
extra_libs["jack_transport"] = ["readline", "jackdmp", "dl"]
extra_libs["jack_transport"] = ["readline", "jackservermp", "dl"]
example_client_programs["jack_transport"] = "transport.c"

#


+ 10
- 6
linux/SConscript View File

@@ -32,8 +32,15 @@ env.AppendUnique( CPPPATH=["#/", "#/common", "#/common/jack", "#/linux"] )

srcfiles_linux_server = ['#/common/Jackdmp.cpp']

srcfiles_linux_alsa = env.Split( '\
JackAlsaDriver.cpp memops.c generic_hw.c hdsp.c hammerfall.c ice1712.c')
srcfiles_linux_alsa = [
'JackAlsaDriver.cpp',
'memops.c',
'generic_hw.c',
'hdsp.c',
'hammerfall.c',
'ice1712.c'
]

for i in range(len(srcfiles_linux_alsa)):
srcfiles_linux_alsa[i] = 'alsa/%s' % srcfiles_linux_alsa[i]

@@ -45,13 +52,10 @@ srcfiles_linux_dummy = ['#/common/JackDummyDriver.cpp']
# Start building
#

#pkgconfig = env.ScanReplace( "libjackmp.pc.in" )
#env.Install( env['libdir'] + '/pkgconfig', pkgconfig )

# build the server and its backends
serverenv = env.Copy()
serverenv.PrependUnique( LIBPATH=env['build_base'] )
serverenv.PrependUnique( LIBS=["jackdmp", "dl"] )
serverenv.PrependUnique( LIBS=["jackservermp", "dl"] )

server = serverenv.Program("jackdmp", srcfiles_linux_server)
serverenv.Install( env['bindir'], server )


Loading…
Cancel
Save