# # Copyright (C) 2007 Arnold Krille # Copyright (C) 2007 Pieter Palmers # # This file originally was part of FFADO # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # import os import glob from string import Template Import( 'env' ) # paths where include files can be found env.AppendUnique( CPPPATH=["#/", "#/common", "#/common/jack"] ) #HACK: this should not be here ideally env.AppendUnique( CPPPATH=["#/linux","#/macosx"] ) # # 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') # # 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 ) # install the headers #if env['JACK_FLAGS']: #jack_include_dir = env['JACK_INCLUDEDIR'] #if 'install' in COMMAND_LINE_TARGETS and os.path.isdir( jack_include_dir ): #if env.GetOption('clean'): #pass #else: #jack_old_includes_dir = env['includedir'] + '/jack_up' #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? #lib_files = glob.glob(jack_libdir + '/libjack.so.*.up') #for old_name in lib_files: #new_name = old_name[:-3] #print "restoring old jack lib %s to %s..." % (old_name, new_name) #env.Command(Delete(new_name)) #env.Command(new_name, old_name, Move("$TARGET", "$SOURCE")) #else: #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")