Make C++ flags available from makedcp.
authorCarl Hetherington <cth@carlh.net>
Wed, 3 Jul 2013 15:33:28 +0000 (16:33 +0100)
committerCarl Hetherington <cth@carlh.net>
Wed, 3 Jul 2013 15:33:28 +0000 (16:33 +0100)
src/lib/version.h
src/tools/makedcp.cc
wscript

index 71639e3bc60a2590dce5ffa70f9c1c827c25c701..e1ec9067cf69189a34a01ef5c2e1f4e7f70a0b10 100644 (file)
@@ -1,3 +1,4 @@
 
 extern char const * dvdomatic_version;
 extern char const * dvdomatic_git_commit;
+extern char const * dvdomatic_cxx_flags;
index e73930d3cf0760c33a00b1aa2a939e7475e7aeee..1cd5145eda5e6e55abed047e299f046312986cf4 100644 (file)
@@ -48,7 +48,8 @@ help (string n)
        cerr << "Syntax: " << n << " [OPTION] <FILM>\n"
             << "  -v, --version      show DVD-o-matic version\n"
             << "  -h, --help         show this help\n"
-            << "  -d, --deps         list DVD-o-matic dependency details and quit\n"
+            << "  -d, --deps         list DVD-o-matic dependency details\n"
+            << "  -f, --flags        show flags passed to C++ compiler on build\n"
             << "  -n, --no-progress  do not print progress to stdout\n"
             << "  -r, --no-remote    do not use any remote servers\n"
             << "\n"
@@ -69,13 +70,14 @@ main (int argc, char* argv[])
                        { "version", no_argument, 0, 'v'},
                        { "help", no_argument, 0, 'h'},
                        { "deps", no_argument, 0, 'd'},
+                       { "flags", no_argument, 0, 'f'},
                        { "no-progress", no_argument, 0, 'n'},
                        { "no-remote", no_argument, 0, 'r'},
                        { "log-level", required_argument, 0, 'l' },
                        { 0, 0, 0, 0 }
                };
 
-               int c = getopt_long (argc, argv, "vhdnrl:", long_options, &option_index);
+               int c = getopt_long (argc, argv, "vhdfnrl:", long_options, &option_index);
 
                if (c == -1) {
                        break;
@@ -91,6 +93,9 @@ main (int argc, char* argv[])
                case 'd':
                        cout << dependency_version_summary () << "\n";
                        exit (EXIT_SUCCESS);
+               case 'f':
+                       cout << dvdomatic_cxx_flags << "\n";
+                       exit (EXIT_SUCCESS);
                case 'n':
                        progress = false;
                        break;
diff --git a/wscript b/wscript
index b87191f424c7d097bb0365331dce95c3a454685d..0008d198f849472b2c70058c622ee5a616741bc1 100644 (file)
--- a/wscript
+++ b/wscript
@@ -206,7 +206,7 @@ def configure(conf):
     conf.recurse('test')
 
 def build(bld):
-    create_version_cc(VERSION)
+    create_version_cc(VERSION, bld.env.CXXFLAGS)
 
     bld.recurse('src')
     bld.recurse('test')
@@ -232,7 +232,7 @@ def dist(ctx):
                GRSYMS GRTAGS GSYMS GTAGS
                """
 
-def create_version_cc(version):
+def create_version_cc(version, cxx_flags):
     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()
@@ -245,6 +245,13 @@ def create_version_cc(version):
         text =  '#include "version.h"\n'
         text += 'char const * dvdomatic_git_commit = \"%s\";\n' % commit
         text += 'char const * dvdomatic_version = \"%s\";\n' % version
+
+        t = ''
+        for f in cxx_flags:
+            f = f.replace('"', '\\"')
+            t += f + ' '
+        text += 'char const * dvdomatic_cxx_flags = \"%s\";\n' % t[:-1]
+
         print('Writing version information to src/lib/version.cc')
         o = open('src/lib/version.cc', 'w')
         o.write(text)