X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=wscript;h=9260785182dd96d9ef39baba7ec99ded8cd426f2;hb=681b24e6b56873683900b7930b5f57a2f2a1f9f5;hp=2e919f6a328920546d4a0e38a0b49274bbc532e2;hpb=20c2c5768c231ceec70e7900abf7c26257bd9c86;p=libdcp.git diff --git a/wscript b/wscript index 2e919f6a..92607851 100644 --- a/wscript +++ b/wscript @@ -1,46 +1,56 @@ import subprocess import os -import lut APPNAME = 'libdcp' -VERSION = '0.35pre' +VERSION = '0.62pre' 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('--osx', action='store_true', default = False, help = 'set up to build on OS X') 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') + opt.add_option('--static', action='store_true', default = False, help = 'build libdcp and in-tree dependencies statically, and link statically to openjpeg and cxml') 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', ['-Wall', '-Wextra', '-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.STATIC = conf.options.static + conf.env.OSX = conf.options.osx + conf.env.ENABLE_DEBUG = conf.options.enable_debug if conf.options.target_windows: - conf.env.append_value('CXXFLAGS', '-DLIBDCP_WINDOWS') + conf.env.append_value('CXXFLAGS', ['-DLIBDCP_WINDOWS', '-DOPENSSL_SYS_WIN32']) else: conf.env.append_value('CXXFLAGS', '-DLIBDCP_POSIX') + if not conf.options.osx: + conf.env.append_value('CXXFLAGS', ['-Wno-unused-result']) + conf.check_cfg(package = 'openssl', args = '--cflags --libs', uselib_store = 'OPENSSL', mandatory = True) conf.check_cfg(package = 'libxml++-2.6', args = '--cflags --libs', uselib_store = 'LIBXML++', mandatory = True) - - 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') + conf.check_cfg(package = 'xmlsec1', args = '--cflags --libs', uselib_store = 'XMLSEC1', mandatory = True) + # Remove erroneous escaping of quotes from xmlsec1 defines + conf.env.DEFINES_XMLSEC1 = [f.replace('\\', '') for f in conf.env.DEFINES_XMLSEC1] + + if conf.options.static: + 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', stlib = 'openjpeg', uselib_store = 'OPENJPEG', mandatory = True) + + conf.env.HAVE_CXML = 1 + conf.env.STLIB_CXML = ['cxml'] else: - conf.check_cc(fragment = openjpeg_fragment, msg = 'Checking for library openjpeg', lib = 'openjpeg', uselib_store = 'OPENJPEG') + conf.check_cfg(package = 'libopenjpeg', args = '--cflags --libs', uselib_store = 'OPENJPEG', mandatory = True) + conf.check_cfg(package = 'libcxml', args = '--cflags --libs', uselib_store = 'CXML', mandatory = True) if conf.options.target_windows: boost_lib_suffix = '-mt' @@ -54,6 +64,18 @@ def configure(conf): # Windows builds are any more reliable conf.env.append_value('CXXFLAGS', '-O2') + conf.check_cxx(fragment = """ + #include \n + #if BOOST_VERSION < 104500\n + #error boost too old\n + #endif\n + int main(void) { return 0; }\n + """, + mandatory = True, + msg = 'Checking for boost library >= 1.45', + okmsg = 'yes', + errmsg = 'too old\nPlease install boost version 1.45 or higher.') + conf.check_cxx(fragment = """ #include \n int main() { boost::filesystem::copy_file ("a", "b"); }\n @@ -70,13 +92,20 @@ def configure(conf): msg = 'Checking for boost signals2 library', uselib_store = 'BOOST_SIGNALS2') - lut.make_luts() + conf.check_cxx(fragment = """ + #include \n + int main() { boost::gregorian::day_clock::local_day(); }\n + """, + msg = 'Checking for boost datetime library', + libpath = '/usr/local/lib', + lib = ['boost_date_time%s' % boost_lib_suffix, 'boost_system%s' % boost_lib_suffix], + uselib_store = 'BOOST_DATETIME') 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' @@ -98,9 +127,9 @@ def build(bld): 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__ GPATH GRTAGS GSYMS GTAGS' -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() @@ -113,6 +142,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)