X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=wscript;h=7412271e3755a3c59d55f951c1f79fe08769787b;hb=369ba52fe8b3ddeda734692541471c402016a18d;hp=f7bcdc1990b479a48bc558a3ad6596827b69b4fe;hpb=dbe636f8e3ccd9e2b92dea40adead6ecafeaa5eb;p=libdcp.git diff --git a/wscript b/wscript index f7bcdc19..7412271e 100644 --- a/wscript +++ b/wscript @@ -3,35 +3,45 @@ import os import lut APPNAME = 'libdcp' -VERSION = '0.10' +VERSION = '0.37pre' def options(opt): opt.load('compiler_cxx') opt.add_option('--target-windows', action='store_true', default = False, help = 'set up to do a cross-compile to Windows') opt.add_option('--enable-debug', action='store_true', default = False, help = 'build with debugging information and without optimisation') + opt.add_option('--static-openjpeg', action='store_true', default = False, help = 'link statically to openjpeg') + opt.add_option('--static-libdcp', action='store_true', default = False, help = 'build libdcp and in-tree dependencies statically') def configure(conf): conf.load('compiler_cxx') conf.env.append_value('CXXFLAGS', ['-Wall', '-Wextra', '-Wno-unused-result', '-O2', '-D_FILE_OFFSET_BITS=64']) conf.env.append_value('CXXFLAGS', ['-DLIBDCP_VERSION="%s"' % VERSION]) + conf.env.TARGET_WINDOWS = conf.options.target_windows + conf.env.STATIC_OPENJPEG = conf.options.static_openjpeg + conf.env.STATIC_LIBDCP = conf.options.static_libdcp + conf.env.ENABLE_DEBUG = conf.options.enable_debug + if conf.options.target_windows: conf.env.append_value('CXXFLAGS', '-DLIBDCP_WINDOWS') else: conf.env.append_value('CXXFLAGS', '-DLIBDCP_POSIX') conf.check_cfg(package = 'openssl', args = '--cflags --libs', uselib_store = 'OPENSSL', mandatory = True) - conf.check_cfg(package = 'sigc++-2.0', args = '--cflags --libs', uselib_store = 'SIGC++', mandatory = True) conf.check_cfg(package = 'libxml++-2.6', args = '--cflags --libs', uselib_store = 'LIBXML++', mandatory = True) - conf.check_cc(fragment = """ - #include \n - #include \n - int main () {\n - void* p = (void *) opj_image_create;\n - return 0;\n - } - """, msg = 'Checking for library openjpeg', lib = 'openjpeg', uselib_store = 'OPENJPEG') + openjpeg_fragment = """ + #include \n + #include \n + int main () {\n + void* p = (void *) opj_image_create;\n + return 0;\n + } + """ + if conf.options.static_openjpeg: + conf.check_cc(fragment = openjpeg_fragment, msg = 'Checking for library openjpeg', stlib = 'openjpeg', uselib_store = 'OPENJPEG') + else: + conf.check_cc(fragment = openjpeg_fragment, msg = 'Checking for library openjpeg', lib = 'openjpeg', uselib_store = 'OPENJPEG') if conf.options.target_windows: boost_lib_suffix = '-mt' @@ -41,7 +51,9 @@ def configure(conf): if conf.options.enable_debug: conf.env.append_value('CXXFLAGS', '-g') else: - conf.env.append_value('CXXFLAGS', '-O3') + # Somewhat experimental use of -O2 rather than -O3 to see if + # Windows builds are any more reliable + conf.env.append_value('CXXFLAGS', '-O2') conf.check_cxx(fragment = """ #include \n @@ -52,29 +64,44 @@ def configure(conf): lib = ['boost_filesystem%s' % boost_lib_suffix, 'boost_system%s' % boost_lib_suffix], uselib_store = 'BOOST_FILESYSTEM') + conf.check_cxx(fragment = """ + #include \n + int main() { boost::signals2::signal x; }\n + """, + msg = 'Checking for boost signals2 library', + uselib_store = 'BOOST_SIGNALS2') + lut.make_luts() conf.recurse('test') conf.recurse('asdcplib') def build(bld): - create_version_cc(VERSION) + create_version_cc(bld, VERSION) + + if bld.env.TARGET_WINDOWS: + boost_lib_suffix = '-mt' + else: + boost_lib_suffix = '' bld(source = 'libdcp.pc.in', version = VERSION, includedir = '%s/include' % bld.env.PREFIX, - libs = "-L${libdir} -ldcp -lkumu-libdcp -lasdcp-libdcp", + libs = "-L${libdir} -ldcp -lasdcp-libdcp -lkumu-libdcp -lboost_system%s" % boost_lib_suffix, install_path = '${LIBDIR}/pkgconfig') bld.recurse('src') bld.recurse('tools') bld.recurse('test') bld.recurse('asdcplib') + bld.recurse('examples') + + bld.add_post_fun(post) def dist(ctx): - ctx.excl = 'TODO core *~ .git build .waf* .lock* doc/*~ src/*~ test/ref/*~' + ctx.excl = 'TODO core *~ .git build .waf* .lock* doc/*~ src/*~ test/ref/*~ __pycache__' -def create_version_cc(version): +def create_version_cc(bld, version): if os.path.exists('.git'): cmd = "LANG= git log --abbrev HEAD^..HEAD ." output = subprocess.Popen(cmd, shell=True, stderr=subprocess.STDOUT, stdout=subprocess.PIPE).communicate()[0].splitlines() @@ -87,6 +114,11 @@ def create_version_cc(version): text = '#include "version.h"\n' text += 'char const * libdcp::git_commit = \"%s\";\n' % commit text += 'char const * libdcp::version = \"%s\";\n' % version + if bld.env.ENABLE_DEBUG: + debug_string = 'true' + else: + debug_string = 'false' + text += 'bool const built_with_debug = %s;\n' % debug_string print('Writing version information to src/version.cc') o = open('src/version.cc', 'w') o.write(text) @@ -94,3 +126,7 @@ def create_version_cc(version): except IOError: print('Could not open src/version.cc for writing\n') sys.exit(-1) + +def post(ctx): + if ctx.cmd == 'install': + ctx.exec_command('/sbin/ldconfig')