Allow static builds.
authorCarl Hetherington <cth@carlh.net>
Fri, 7 Dec 2012 21:21:49 +0000 (21:21 +0000)
committerCarl Hetherington <cth@carlh.net>
Fri, 7 Dec 2012 21:21:49 +0000 (21:21 +0000)
asdcplib/src/wscript
examples/wscript
libdcp.pc.in
src/wscript
test/wscript
tools/wscript
wscript

index e079fa2fa4350423fb807622a6a909230215c65c..ad6cfbabdbeb779bf4ac2020cf5f4b3167961357 100644 (file)
@@ -8,7 +8,11 @@ def configure(conf):
         conf.env.append_value('CXXFLAGS', '-DASDCP_PLATFORM="linux"')
 
 def build(bld):
-    obj = bld(features = 'cxx cxxshlib')
+    if bld.env.STATIC_LIBDCP:
+        obj = bld(features = 'cxx cxxstlib')
+    else:
+        obj = bld(features = 'cxx cxxshlib')
+
     obj.name = 'libkumu-libdcp'
     obj.target = 'kumu-libdcp'
     obj.uselib = 'OPENSSL BOOST_FILESYSTEM'
@@ -23,7 +27,11 @@ def build(bld):
                  KM_prng.cpp
                  """
 
-    obj = bld(features = 'cxx cxxshlib')
+    if bld.env.STATIC_LIBDCP:
+        obj = bld(features = 'cxx cxxstlib')
+    else:
+        obj = bld(features = 'cxx cxxshlib')
+
     obj.name = 'libasdcp-libdcp'
     obj.target = 'asdcp-libdcp'
     obj.uselib = 'OPENSSL'
@@ -57,4 +65,10 @@ def build(bld):
                  PCMParserList.cpp
                  MDD.cpp
                  """
-    
+
+    if bld.env.STATIC_LIBDCP:
+        bld.install_files('${PREFIX}/lib', 'libkumu-libdcp.a')
+        bld.install_files('${PREFIX}/lib', 'libasdcp-libdcp.a')
+    else:
+        bld.install_files('${PREFIX}/lib', 'libkumu-libdcp.so')
+        bld.install_files('${PREFIX}/lib', 'libasdcp-libdcp.so')
index b6b2865353f5de13c849f38e4527688924f49ae2..46d3287baff781a193dc10a742e06b1ca3afdd95 100644 (file)
@@ -2,6 +2,7 @@ def build(bld):
     obj = bld(features = 'cxx cxxprogram')
     obj.name   = 'examples'
     obj.use    = 'libdcp'
+    obj.uselib = 'OPENJPEG'
     obj.source = 'make_dcp.cc'
     obj.target = 'make_dcp'
     obj.install_path = ''
index 9584970ab87a6b28ff7f940f768c84936e740ce0..5d69c0d3d82e50368cb7682019c7fbc180dc9948 100644 (file)
@@ -5,6 +5,6 @@ includedir=@includedir@
 Name: libdcp
 Description: DCP creation library
 Version: @version@
-Requires: sigc++-2.0 openssl
+Requires: sigc++-2.0 openssl libxml++-2.6
 Libs: @libs@
 Cflags: -I${includedir}
index 6c7f23926ac5354886df076deedd9767af18bab2..9fb6a7e7d3663aae8b0d320df578bc75a97568b8 100644 (file)
@@ -1,5 +1,9 @@
 def build(bld):
-    obj = bld(features = 'cxx cxxshlib')
+    if bld.env.STATIC_LIBDCP:
+        obj = bld(features = 'cxx cxxstlib')
+    else:
+        obj = bld(features = 'cxx cxxshlib')
+
     obj.name = 'libdcp'
     obj.target = 'dcp'
     obj.export_includes = ['.']
@@ -50,3 +54,7 @@ def build(bld):
               """
 
     bld.install_files('${PREFIX}/include/libdcp', headers)
+    if bld.env.STATIC_LIBDCP:
+        bld.install_files('${PREFIX}/lib', 'libdcp.a')
+    else:
+        bld.install_files('${PREFIX}/lib', 'libdcp.so')
index 08e83d6d39bdd8ef3e4fdfdaf954428c36857b80..14534bd964614510a56678672a5df717d28397a8 100644 (file)
@@ -18,7 +18,7 @@ def configure(conf):
 def build(bld):
     obj = bld(features = 'cxx cxxprogram')
     obj.name   = 'tests'
-    obj.uselib = 'BOOST_TEST'
+    obj.uselib = 'BOOST_TEST OPENJPEG'
     obj.use    = 'libdcp'
     obj.source = 'tests.cc'
     obj.target = 'tests'
index d9ed0419a5749e23a91119f9c0552e1bbb2b9c6d..a79b3c9d450f68c91d7bda7379a65472078e6a76 100644 (file)
@@ -1,11 +1,13 @@
 def build(bld):
     obj = bld(features = 'cxx cxxprogram')
     obj.use = ['libdcp']
+    obj.uselib = 'OPENJPEG'
     obj.source = 'dcpdiff.cc'
     obj.target = 'dcpdiff'
 
     obj = bld(features = 'cxx cxxprogram')
     obj.use = ['libdcp']
+    obj.uselib = 'OPENJPEG'
     obj.source = 'dcpinfo.cc'
     obj.target = 'dcpinfo'
 
diff --git a/wscript b/wscript
index 4b507e5c7178593e1af0db2d7afecb90f9714db5..1e30390b0d0e737aa5d2cd6f55bd3394dbe67024 100644 (file)
--- a/wscript
+++ b/wscript
@@ -9,6 +9,8 @@ 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')
@@ -16,6 +18,8 @@ def configure(conf):
     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
 
     if conf.options.target_windows:
         conf.env.append_value('CXXFLAGS', '-DLIBDCP_WINDOWS')
@@ -25,14 +29,18 @@ def configure(conf):
     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)
 
-    conf.check_cc(fragment  = """
-                             #include <stdio.h>\n
-                             #include <openjpeg.h>\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 <stdio.h>\n
+                       #include <openjpeg.h>\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'
@@ -76,7 +84,7 @@ def build(bld):
     bld(source = 'libdcp.pc.in',
         version = VERSION,
         includedir = '%s/include' % bld.env.PREFIX,
-        libs = "-L${libdir} -ldcp -lkumu-libdcp -lasdcp-libdcp -lboost_system%s" % boost_lib_suffix,
+        libs = "-L${libdir} -ldcp -lasdcp-libdcp -lkumu-libdcp -lboost_system%s" % boost_lib_suffix,
         install_path = '${LIBDIR}/pkgconfig')
 
     bld.recurse('src')