13
0

waf: fix concurrency issue with duplicate targets

The same source file cannot safely be used in different wscripts
with concurrency (if they were in the same wscript it works
.c.1.o .c.2.o, etc).


[387/764] c: libs/fst/vstwin.c -> build/libs/fst/vstwin.c.1.o
[731/764] c: libs/fst/vstwin.c -> build/libs/fst/vstwin.c.1.o
[746/764] cxxprogram: build/libs/fst/scanner.cc.1.o build/libs/fst/vstwin.c.1.o -> build/libs/fst/ardour-vst-scanner.exe
[750/764] cxxshlib: [...]  build/libs/fst/vstwin.c.1.o [...] -> build/libs/ardour/ardour-3.dll

and about one every full moon (depending on concurrency) it failed:
missing file: 'build/libs/fst/vstwin.c.1.o'
This commit is contained in:
Robin Gareus 2015-01-17 18:19:25 +01:00
parent a58730e8f9
commit 20ea90a186
3 changed files with 12 additions and 13 deletions

View File

@ -368,10 +368,7 @@ def build(bld):
# If we require VST support we build a stub main() and the FST library
# here using winegcc, and link it to the GTK front-end library
obj = bld (features = 'cxx c cxxprogram wine')
obj.source = (
'../libs/fst/vstwin.c',
'../vst/winmain.c',
)
obj.source = ( '../vst/winmain.c')
#
# XXX do we really need to explicitly link to all of these for the wine executable?
#
@ -383,7 +380,8 @@ def build(bld):
'libmidipp',
'libgtk2_ardour',
'libgtkmm2ext',
'libcanvas'
'libcanvas',
'vstwin'
]
obj.target = 'ardour-' + str (bld.env['VERSION']) + '-vst.exe.so'
obj.includes = [ '../libs/fst', '.' ]

View File

@ -382,7 +382,7 @@ def build(bld):
obj.includes += [ '../fst' ]
obj.defines += [ 'WINDOWS_VST_SUPPORT' ]
if bld.env['build_target'] == 'mingw':
obj.source += [ '../fst/vstwin.c']
obj.use += [ 'vstwin' ]
obj.uselib += ['GDI32']
if bld.is_defined('LXVST_SUPPORT'):

View File

@ -68,14 +68,15 @@ def build(bld):
obj.use = [ 'libpbd' ]
else:
obj = bld (features = 'cxx c cxxprogram')
if bld.is_defined('WINDOWS_VST_SUPPORT'):
obj.source = ( 'scanner.cc', 'vstwin.c' )
obj.uselib = ['GIOMM', 'DL', 'GDI32']
else:
obj.source = ( 'scanner.cc' )
obj.uselib = ['GIOMM', 'DL']
obj.source = ( 'scanner.cc' )
obj.target = 'ardour-vst-scanner'
obj.use = [ 'libpbd' ]
if bld.is_defined('WINDOWS_VST_SUPPORT'):
bld (features = 'c', name='vstwin', source='vstwin.c', uselib = 'GIOMM', includes = [ '../pbd/', '../ardour/', '.' ])
obj.uselib = ['GIOMM', 'DL', 'GDI32']
obj.use = [ 'libpbd', 'vstwin' ]
else:
obj.uselib = ['GIOMM', 'DL']
obj.use = [ 'libpbd' ]
obj.includes = [ '../pbd/', '../ardour/', '.' ]
obj.defines = [