mirror of
https://github.com/Ardour/ardour.git
synced 2026-06-01 15:48:34 +02:00
MSVC: update build-system, c-flags and libs
This commit is contained in:
+7
-3
@@ -683,6 +683,7 @@ def build(bld):
|
||||
obj.use += ['liblua']
|
||||
obj.uselib += ' PANGOCAIRO GDI32'
|
||||
obj.lib = ['getopt']
|
||||
obj.defines += ['NOMINMAX']
|
||||
|
||||
if False and bld.is_defined('USE_EXTERNAL_LIBS'):
|
||||
obj.uselib += ' LIBAAF'
|
||||
@@ -695,9 +696,12 @@ def build(bld):
|
||||
obj.uselib += ' AUDIOUNITS OSX '
|
||||
obj.use += ' libappleutility'
|
||||
obj.source += [ 'cocoacarbon.mm', 'bundle_env_cocoa.cc' ]
|
||||
elif bld.env['build_target'] == 'mingw' or bld.env['build_target'] == 'msvc':
|
||||
elif bld.env['build_target'] == 'mingw':
|
||||
obj.source += [ 'bundle_env_mingw.cc' ]
|
||||
obj.source += [ 'windows_icon.rc' ]
|
||||
elif bld.env['build_target'] == 'msvc':
|
||||
obj.source += [ 'bundle_env_msvc2.cc' ]
|
||||
obj.source += [ 'windows_icon.rc' ]
|
||||
else:
|
||||
obj.source += [ 'bundle_env_linux.cc' ]
|
||||
obj.use += [ 'X11' ]
|
||||
@@ -765,7 +769,7 @@ def build(bld):
|
||||
'EXECUTABLE' : 'build/gtk2_ardour/ardour-' + bld.env['VERSION']
|
||||
}
|
||||
|
||||
if bld.env['build_target'] == 'mingw' and sys.platform == "win32":
|
||||
if bld.env['build_target'] in ('mingw', 'msvc') and sys.platform == "win32":
|
||||
wrapper_subst_dict.update({
|
||||
'LD_LIBRARY_PATH': 'PATH'
|
||||
})
|
||||
@@ -908,7 +912,7 @@ def build(bld):
|
||||
|
||||
obj = bld(features = 'command-output')
|
||||
if bld.env['build_target'] == 'msvc':
|
||||
obj.command = 'cl'
|
||||
obj.command = bld.env['CXX'][0]
|
||||
else:
|
||||
obj.command = 'cpp'
|
||||
obj.command_is_external = True
|
||||
|
||||
+5
-1
@@ -18,7 +18,8 @@ def build(bld):
|
||||
# just the normal executable version of the GTK GUI
|
||||
obj = bld (features = 'cxx c cxxprogram')
|
||||
# this program does not do the whole hidden symbols thing
|
||||
obj.cxxflags = [ '-fvisibility=default' ]
|
||||
if bld.env['build_target'] != 'msvc':
|
||||
obj.cxxflags = [ '-fvisibility=default' ]
|
||||
obj.source = hardour_sources
|
||||
obj.target = 'hardour-' + bld.env['VERSION']
|
||||
obj.includes = ['.']
|
||||
@@ -54,6 +55,9 @@ def build(bld):
|
||||
if bld.env['DEBUG'] == False:
|
||||
obj.linkflags += bld.env['compiler_flags_dict']['mwindows']
|
||||
|
||||
if bld.env['build_target'] == 'msvc':
|
||||
obj.lib = ['getopt']
|
||||
|
||||
obj.includes += ['../libs']
|
||||
|
||||
if bld.is_defined('NEED_INTL'):
|
||||
|
||||
@@ -423,6 +423,7 @@ def build(bld):
|
||||
obj.cxxflags += ['-Og']
|
||||
else: # MSVC
|
||||
obj.defines += ['NOMINMAX', '_WINSOCKAPI_']
|
||||
obj.lib = ['OLE32']
|
||||
|
||||
if bld.is_defined('USE_EXTERNAL_LIBS'):
|
||||
obj.uselib.extend(['VAMPSDK', 'LIBLTC', 'LIBFLUIDSYNTH'])
|
||||
|
||||
@@ -35,6 +35,6 @@ def build(bld):
|
||||
# Bit of a hack: make a symlink to the .dylib that meets GTK's criteria for finding it (namely that the library must be a *.so
|
||||
# and that it must reside in a directory called `engines')
|
||||
obj = bld(target = 'engines', rule = 'mkdir -p ${TGT} && rm -f ${TGT}/libclearlooks.so && ln -s ../libclearlooks.dylib ${TGT}/libclearlooks.so')
|
||||
elif bld.env['build_target'] != 'mingw':
|
||||
elif bld.env['build_target'] not in ('mingw', 'msvc'):
|
||||
# this is a hack so that running ./ardev will work, since it sets GTK_PATH to include this dir and GTK will search {thisdir}/engines
|
||||
obj = bld(target = 'engines', rule = 'mkdir -p ${TGT} && rm -f ${TGT}/libclearlooks.so && ln -s ../libclearlooks.so ${TGT}/libclearlooks.so')
|
||||
|
||||
+8
-3
@@ -29,7 +29,7 @@ def build(bld):
|
||||
'LOCALEDIR="' + os.path.join(autowaf.normpath(bld.env['DATADIR']), 'locale') + '"',
|
||||
]
|
||||
obj.use = [ 'libpbd' ]
|
||||
obj.uselib = 'GIOMM DL UUID ARCHIVE CURL XML'
|
||||
obj.uselib = 'GLIBMM GIOMM DL UUID ARCHIVE CURL XML'
|
||||
|
||||
if bld.is_defined('HAVE_USB'):
|
||||
obj.uselib += ' USB'
|
||||
@@ -39,6 +39,9 @@ def build(bld):
|
||||
elif bld.env['build_target'] == 'mingw' or bld.env['build_target'] == 'msvc':
|
||||
obj.uselib += ' GDI32'
|
||||
obj.linkflags += bld.env['compiler_flags_dict']['mwindows']
|
||||
if bld.env['build_target'] == 'msvc':
|
||||
obj.lib = ['getopt', 'ole32']
|
||||
obj.defines.append('LIBARDOUR_DLL_EXPORTS')
|
||||
|
||||
if re.search ("bsd", sys.platform) != None:
|
||||
obj.defines.append('_POSIX_C_SOURCE=200809L')
|
||||
@@ -53,10 +56,10 @@ def build(bld):
|
||||
obj.linkflags= [ bld.env['compiler_flags_dict']['execstack'] ]
|
||||
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', 'ARCHIVE', 'CURL', 'XML']
|
||||
obj.uselib = ['GLIBMM', 'GIOMM', 'DL', 'GDI32', 'ARCHIVE', 'CURL', 'XML']
|
||||
obj.use = [ 'libpbd', 'libtemporal', 'libevoral', 'vstwin' ]
|
||||
else:
|
||||
obj.uselib = ['GIOMM', 'DL', 'OSX', 'ARCHIVE', 'CURL', 'XML' ]
|
||||
obj.uselib = ['GLIBMM', 'GIOMM', 'DL', 'OSX', 'ARCHIVE', 'CURL', 'XML' ]
|
||||
obj.use = [ 'libpbd', 'libtemporal', 'libevoral' ]
|
||||
|
||||
if bld.is_defined('HAVE_USB'):
|
||||
@@ -66,6 +69,8 @@ def build(bld):
|
||||
pass
|
||||
elif bld.env['build_target'] == 'mingw' or bld.env['build_target'] == 'msvc':
|
||||
obj.linkflags += bld.env['compiler_flags_dict']['mwindows']
|
||||
if bld.env['build_target'] == 'msvc':
|
||||
obj.lib = ['getopt']
|
||||
|
||||
obj.includes = [ '../pbd/', '../ardour/', '.' ]
|
||||
obj.defines = [
|
||||
|
||||
@@ -21,7 +21,8 @@ def build_ardour_util(bld, util):
|
||||
# just the normal executable version of the GTK GUI
|
||||
obj = bld (features = 'cxx c cxxprogram')
|
||||
# this program does not do the whole hidden symbols thing
|
||||
obj.cxxflags = [ '-fvisibility=default' ]
|
||||
if bld.env['build_target'] != 'msvc':
|
||||
obj.cxxflags = [ '-fvisibility=default' ]
|
||||
obj.source = ['common.cc', util + '.cc' ]
|
||||
obj.target = pgmprefix + '-' + util
|
||||
obj.includes = ['.']
|
||||
@@ -55,6 +56,9 @@ def build_ardour_util(bld, util):
|
||||
elif bld.env['build_target'] == 'mingw' or bld.env['build_target'] == 'msvc':
|
||||
obj.linkflags += bld.env['compiler_flags_dict']['mconsole']
|
||||
|
||||
if bld.env['build_target'] == 'msvc':
|
||||
obj.lib = ['getopt']
|
||||
|
||||
obj.includes += ['../libs']
|
||||
|
||||
if bld.env['build_target'] == 'mingw' or bld.env['build_target'] == 'msvc':
|
||||
|
||||
+1
-1
@@ -35,4 +35,4 @@ def add_def(self):
|
||||
self.create_task('nm_def', obj_files, d) # Create the task
|
||||
lt.dep_nodes.append(d) # Tell the linker to wait for the .def file before linking
|
||||
|
||||
lt.env.append_unique('LINKFLAGS', [f'/DEF:{d.abspath()}','/DLL']) # Pass the .def file to the linker, with /DLL.
|
||||
lt.env.append_unique('LINKFLAGS', [f'/DEF:{d.abspath()}','/DLL']) # Pass the .def file to the linker, with /DLL.
|
||||
@@ -95,15 +95,15 @@ compiler_flags_dictionaries= {
|
||||
'msvc' : {
|
||||
'debuggable' : ['/DDEBUG', '/Od', '/Z7', '/MDd', '/Gd', '/EHsc', '/JMC'],
|
||||
'linker-debuggable' : ['/DEBUG', '/INCREMENTAL' ],
|
||||
'nondebuggable' : ['/DNDEBUG', '/Ob1', '/MD', '/Gd', '/EHsc'],
|
||||
'nondebuggable' : ['/DNDEBUG', '/Ob2', '/MD', '/Gd', '/EHsc'],
|
||||
'profile' : ['/Oy-'],
|
||||
'silence-unused-arguments' : '',
|
||||
'sse' : '',
|
||||
'xsaveintrin' : '',
|
||||
'fpmath-sse' : '',
|
||||
'xmmintrinsics' : '',
|
||||
'xmmintrinsics' : ['/DUSE_XMMINTRIN'],
|
||||
'pipe' : '',
|
||||
'full-optimization' : ['/O2'],
|
||||
'full-optimization' : ['/O2', '/Oi', '/Ot', '/fp:fast', '/GS-', '/Gy', '/Gw', '/GF', '/favor:blend'],
|
||||
'dsp-optimization' : ['/O2', '/fp:fast'],
|
||||
'no-frame-pointer' : '',
|
||||
'fast-math' : '',
|
||||
@@ -489,8 +489,11 @@ int main() { return 0; }''',
|
||||
|
||||
if compiler_name == 'msvc':
|
||||
compiler_flags.extend(['/nologo', '/FS', '/bigobj', '/FC',
|
||||
'/diagnostics:column', '/Zc:__cplusplus'])
|
||||
linker_flags.extend(['/guard:cf'])
|
||||
'/diagnostics:column', '/Zc:__cplusplus',
|
||||
'/Zc:inline', '/Zc:throwingNew', '/cgthreads8'])
|
||||
linker_flags.append('/guard:cf')
|
||||
if not conf.env['DEBUG']:
|
||||
linker_flags.append('/OPT:REF,ICF')
|
||||
|
||||
autowaf.set_basic_compiler_flags (conf,flags_dict)
|
||||
|
||||
@@ -1641,8 +1644,16 @@ def build(bld):
|
||||
bld.recurse(i)
|
||||
|
||||
if bld.env['build_target'] == 'msvc': #For using .def generator
|
||||
for name in ['libydk-pixbuf', 'libydk', 'libytk']:
|
||||
bld.get_tgen_by_name(name).features.append('gendef')
|
||||
gendef_targets = ['libydk-pixbuf', 'libydk', 'libytk', 'libztkmm', 'libydkmm', 'libytkmm', 'libaaf']
|
||||
if not Options.options.use_lld:
|
||||
gendef_targets += ['libardourvampplugins', 'libardourvamppyin']
|
||||
|
||||
for name in gendef_targets:
|
||||
tgen = bld.get_tgen_by_name(name) # Waf 'features' can be a list or a space separated string depending on the target
|
||||
if isinstance(tgen.features, list):
|
||||
tgen.features.append('gendef')
|
||||
else:
|
||||
tgen.features += ' gendef'
|
||||
|
||||
if bld.is_defined ('BEATBOX'):
|
||||
bld.recurse('tools/bb')
|
||||
|
||||
Reference in New Issue
Block a user