X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=wscript;h=9ffeebd75ec4c0bb9128943faeb87d679c44e582;hb=207ac16731baec44c939d85f25c8965d925d7983;hp=61fedb7f1f9c14017d5da26b28f6572b468b02af;hpb=8568cb9d8b2585e768d93b63ae444732690b0388;p=ardour.git diff --git a/wscript b/wscript index 61fedb7f1f..9ffeebd75e 100644 --- a/wscript +++ b/wscript @@ -9,6 +9,24 @@ import sys import platform as PLATFORM from waflib.Tools import winres +from waflib.Build import BuildContext +class i18n(BuildContext): + cmd = 'i18n' + fun = 'i18n' + +class i18n_pot(BuildContext): + cmd = 'i18n_pot' + fun = 'i18n_pot' + +class i18n_po(BuildContext): + cmd = 'i18n_po' + fun = 'i18n_po' + +class i18n_mo(BuildContext): + cmd = 'i18n_mo' + fun = 'i18n_mo' + + compiler_flags_dictionaries= { 'gcc' : { # Flags required when building a debug build @@ -55,16 +73,17 @@ compiler_flags_dictionaries= { 'c99': '-std=c99', }, 'msvc' : { - 'debuggable' : ['/Od', '/Zi', '/MTd'], - 'linker-debuggable' : ['/DEBUG' ], - 'nondebuggable' : [ '/MD', '-DNDEBUG' ], + 'debuggable' : ['/DDEBUG', '/Od', '/Zi', '/MDd', '/Gd', '/EHsc'], + 'linker-debuggable' : ['/DEBUG', '/INCREMENTAL' ], + 'nondebuggable' : ['/DNDEBUG', '/Ob1', '/MD', '/Gd', '/EHsc'], 'profile' : '', + 'sse' : '/arch:SSE', 'silence-unused-arguments' : '', 'sse' : '', - 'fpmath-see' : '', + 'fpmath-sse' : '', 'xmmintrinsics' : '', 'pipe' : '', - 'full-optimization' : '', + 'full-optimization' : '/O2', 'no-frame-pointer' : '', 'fast-math' : '', 'strength-reduce' : '', @@ -78,7 +97,7 @@ compiler_flags_dictionaries= { 'c-strict' : '', 'cxx-strict' : '', 'strict' : '', - 'c99': '-TP', + 'c99': '/TP', }, } @@ -100,10 +119,12 @@ clang_dict['silence-unused-arguments'] = '-Qunused-arguments' clang_dict['extra-cxx-warnings'] = [ '-Woverloaded-virtual', '-Wno-mismatched-tags' ] clang_dict['cxx-strict'] = [ '-ansi', '-Wnon-virtual-dtor', '-Woverloaded-virtual', '-fstrict-overflow' ] clang_dict['strict'] = ['-Wall', '-Wcast-align', '-Wextra', '-Wwrite-strings' ] +clang_dict['generic-x86'] = [ '-arch', 'i386' ] compiler_flags_dictionaries['clang'] = clang_dict; clang_darwin_dict = compiler_flags_dictionaries['clang'].copy(); clang_darwin_dict['cxx-strict'] = [ '-ansi', '-Wnon-virtual-dtor', '-Woverloaded-virtual', ] +clang_darwin_dict['full-optimization'] = [ '-O3', '-ffast-math', '-fstrength-reduce' ] compiler_flags_dictionaries['clang-darwin'] = clang_darwin_dict; def fetch_git_revision (): @@ -127,16 +148,16 @@ else: rev = fetch_tarball_revision () # -# rev is now of the form MAJOR.MINOR-rev-commit -# or, if right at the same rev as a release, MAJOR.MINOR +# rev is now of the form MAJOR.MINOR[-rcX]-rev-commit +# or, if right at the same rev as a release, MAJOR.MINOR[-rcX] # -parts = rev.split ('.') +parts = rev.split ('.', 1) MAJOR = parts[0] -other = parts[1].split ('-') +other = parts[1].split('-', 1) MINOR = other[0] if len(other) > 1: - MICRO = other[1] + MICRO = other[1].rsplit('-',1)[0].replace('-','.') else: MICRO = '0' @@ -176,6 +197,7 @@ children = [ 'libs/fst', 'libs/vfork', 'libs/ardouralsautil', + 'cfgtool', ] i18n_children = [ @@ -255,11 +277,11 @@ int main() { return 0; }''', msg = 'Checking for clang') if is_clang: - if platform == darwin: + if platform == 'darwin': compiler_name = 'clang-darwin' else: compiler_name = 'clang' - elif conf.env['CC'][0].find ('msvc') != -1: + elif conf.env['MSVC_COMPILER']: compiler_name = 'msvc' else: if platform == 'darwin': @@ -267,8 +289,6 @@ int main() { return 0; }''', else: compiler_name = 'gcc' - print "Compiler name is ", compiler_name, "\n" - flags_dict = compiler_flags_dictionaries[compiler_name] autowaf.set_basic_compiler_flags (conf,flags_dict) @@ -472,10 +492,10 @@ int main() { return 0; }''', break if prepend_opt_flags: - optimization_flags[:0] = [ flags_dict['full-optimization'] ] + optimization_flags[:0] = flags_dict['full-optimization'] if opt.debug_symbols: - optimization_flags += [ flags_dict['debuggable'] ] + optimization_flags += flags_dict['debuggable'] if opt.stl_debug: cxx_flags.append("-D_GLIBCXX_DEBUG") @@ -554,7 +574,7 @@ def options(opt): opt.add_option('--arch', type='string', action='store', dest='arch', help='Architecture-specific compiler FLAGS') opt.add_option('--with-backends', type='string', action='store', default='jack', dest='with_backends', - help='Specify which backend modules are to be included(jack,alsa,wavesaudio,dummy)') + help='Specify which backend modules are to be included(jack,alsa,wavesaudio,dummy,coreaudio)') opt.add_option('--backtrace', action='store_true', default=True, dest='backtrace', help='Compile with -rdynamic -- allow obtaining backtraces from within Ardour') opt.add_option('--no-carbon', action='store_true', default=False, dest='nocarbon', @@ -579,6 +599,8 @@ def options(opt): help='Compile for use with gprofile') opt.add_option('--libjack', type='string', default="auto", dest='libjack_link', help='libjack link mode [auto|link|weak]') + opt.add_option('--no-jack-metadata', action='store_false', default=True, dest='libjack_meta', + help='disable support for jack metadata') opt.add_option('--internal-shared-libs', action='store_true', default=True, dest='internal_shared_libs', help='Build internal libs as shared libraries') opt.add_option('--internal-static-libs', action='store_false', dest='internal_shared_libs', @@ -594,6 +616,8 @@ def options(opt): help='Compile with support for linuxVST plugins') opt.add_option('--no-lxvst', action='store_false', dest='lxvst', help='Compile without support for linuxVST plugins') + opt.add_option('--no-lrdf', action='store_true', dest='no_lrdf', + help='Compile without support for LRDF LADSPA data even if present') opt.add_option('--nls', action='store_true', default=True, dest='nls', help='Enable i18n (native language support) (default)') opt.add_option('--no-nls', action='store_false', dest='nls') @@ -660,6 +684,11 @@ def configure(conf): conf.env['MSVC_TARGETS'] = ['x64'] conf.load('msvc') + if Options.options.debug: + # Nuke user CFLAGS/CXXFLAGS if debug is set (they likely contain -O3, NDEBUG, etc) + conf.env['CFLAGS'] = [] + conf.env['CXXFLAGS'] = [] + conf.env['VERSION'] = VERSION conf.env['MAJOR'] = MAJOR conf.env['MINOR'] = MINOR @@ -722,7 +751,7 @@ def configure(conf): if Options.options.lv2dir: conf.env['LV2DIR'] = Options.options.lv2dir else: - conf.env['LV2DIR'] = os.path.join(conf.env['LIBDIR'], 'lv2') + conf.env['LV2DIR'] = os.path.join(conf.env['LIBDIR'], 'ardour' + str(conf.env['MAJOR']), 'lv2') conf.env['LV2DIR'] = os.path.normpath(conf.env['LV2DIR']) @@ -772,7 +801,12 @@ def configure(conf): conf.env.append_value('LINKFLAGS_AUDIOUNITS', ['-framework', 'AudioToolbox', '-framework', 'AudioUnit']) conf.env.append_value('LINKFLAGS_AUDIOUNITS', ['-framework', 'Cocoa']) - if re.search ("^[1-9][0-9]\.", os.uname()[2]) == None and not Options.options.nocarbon: + if ( + # osx up to and including 10.6 (uname 10.X.X) + (re.search ("^[1-9][0-9]\.", os.uname()[2]) == None or not re.search ("^10\.", os.uname()[2]) == None) + and (Options.options.generic or Options.options.ppc) + and not Options.options.nocarbon + ): conf.env.append_value('CXXFLAGS_AUDIOUNITS', "-DWITH_CARBON") conf.env.append_value('LINKFLAGS_AUDIOUNITS', ['-framework', 'Carbon']) else: @@ -800,7 +834,8 @@ def configure(conf): # executing a test program is n/a when cross-compiling if Options.options.dist_target != 'mingw': - conf.check_cc(function_name='dlopen', header_name='dlfcn.h', lib='dl', uselib_store='DL') + if Options.options.dist_target != 'msvc': + conf.check_cc(function_name='dlopen', header_name='dlfcn.h', lib='dl', uselib_store='DL') conf.check_cxx(fragment = "#include \nint main(void) { return (BOOST_VERSION >= 103900 ? 0 : 1); }\n", execute = "1", mandatory = True, @@ -811,7 +846,7 @@ def configure(conf): if re.search ("linux", sys.platform) != None and Options.options.dist_target != 'mingw': autowaf.check_pkg(conf, 'alsa', uselib_store='ALSA') - autowaf.check_pkg(conf, 'glib-2.0', uselib_store='GLIB', atleast_version='2.2', mandatory=True) + autowaf.check_pkg(conf, 'glib-2.0', uselib_store='GLIB', atleast_version='2.28', mandatory=True) autowaf.check_pkg(conf, 'gthread-2.0', uselib_store='GTHREAD', atleast_version='2.2', mandatory=True) autowaf.check_pkg(conf, 'glibmm-2.4', uselib_store='GLIBMM', atleast_version='2.32.0', mandatory=True) autowaf.check_pkg(conf, 'sndfile', uselib_store='SNDFILE', atleast_version='1.0.18', mandatory=True) @@ -833,6 +868,7 @@ def configure(conf): # needed for at least libsmf conf.check_cc(function_name='htonl', header_name='winsock2.h', lib='ws2_32') conf.env.append_value('LIB', 'ws2_32') + conf.env.append_value('LIB', 'winmm') # needed for mingw64 packages, not harmful on normal mingw build conf.env.append_value('LIB', 'intl') conf.check_cc(function_name='regcomp', header_name='regex.h', @@ -931,6 +967,24 @@ def configure(conf): conf.env['BUILD_ALSABACKEND'] = any('alsa' in b for b in backends) conf.env['BUILD_DUMMYBACKEND'] = any('dummy' in b for b in backends) conf.env['BUILD_WAVESBACKEND'] = any('wavesaudio' in b for b in backends) + conf.env['BUILD_CORECRAPPITA'] = any('coreaudio' in b for b in backends) + + if conf.env['BUILD_CORECRAPPITA'] and conf.env['BUILD_WAVESBACKEND']: + print("Coreaudio + Waves Backend are mutually exclusive") + sys.exit(1) + + if sys.platform != 'darwin' and conf.env['BUILD_CORECRAPPITA']: + print("Coreaudio backend is only available for OSX") + sys.exit(1) + + if re.search ("linux", sys.platform) != None and Options.options.dist_target != 'mingw' and conf.env['BUILD_WAVESBACKEND']: + print("Waves Backend is not for Linux") + sys.exit(1) + + if re.search ("linux", sys.platform) == None and conf.env['BUILD_ALSABACKEND']: + print("ALSA Backend is only available on Linux") + sys.exit(1) + set_compiler_flags (conf, Options.options) @@ -976,6 +1030,7 @@ const char* const ardour_config_info = "\\n\\ write_config_text('No plugin state', conf.is_defined('NO_PLUGIN_STATE')) write_config_text('Build target', conf.env['build_target']) write_config_text('CoreAudio', conf.is_defined('HAVE_COREAUDIO')) + write_config_text('CoreAudio/Midi Backend',conf.env['BUILD_CORECRAPPITA']) write_config_text('Debug RT allocations', conf.is_defined('DEBUG_RT_ALLOC')) write_config_text('Debug Symbols', conf.is_defined('debug_symbols') or conf.env['DEBUG']) write_config_text('Dummy backend', conf.env['BUILD_DUMMYBACKEND']) @@ -986,6 +1041,7 @@ const char* const ardour_config_info = "\\n\\ write_config_text('Freedesktop files', opts.freedesktop) write_config_text('JACK Backend', conf.env['BUILD_JACKBACKEND']) write_config_text('Libjack linking', conf.env['libjack_link']) + write_config_text('Libjack metadata', not conf.is_defined('NO_JACK_METADATA')) write_config_text('LV2 UI embedding', conf.is_defined('HAVE_SUIL')) write_config_text('LV2 support', conf.is_defined('LV2_SUPPORT')) write_config_text('LXVST support', conf.is_defined('LXVST_SUPPORT')) @@ -1027,7 +1083,7 @@ def build(bld): bld.path.find_dir ('libs/pbd/pbd') # set up target directories - lwrcase_dirname = 'ardour3' + lwrcase_dirname = 'ardour' + bld.env['MAJOR'] if bld.is_defined ('TRX_BUILD'): lwrcase_dirname = 'trx' @@ -1040,6 +1096,7 @@ def build(bld): bld.env['DLLDIR'] = os.path.join(bld.env['LIBDIR'], lwrcase_dirname) bld.env['LIBDIR'] = bld.env['DLLDIR'] bld.env['LOCALEDIR'] = os.path.join(bld.env['DATADIR'], 'locale') + bld.env['lwrcase_dirname'] = lwrcase_dirname; autowaf.set_recursive() @@ -1059,6 +1116,7 @@ def build(bld): bld.add_post_fun(test) def i18n(bld): + print(bld.env) bld.recurse (i18n_children) def i18n_pot(bld):