]> git.lyx.org Git - lyx.git/blobdiff - development/scons/SConstruct
Scons: fix substFile dependence problems
[lyx.git] / development / scons / SConstruct
index efdaa92782622cc1a4ab33f99308dd202e9fcf00..890becbbe301026dcf6ab9433f6522779ae290ad 100644 (file)
@@ -53,8 +53,10 @@ else:
 
 # some global settings
 #
-package_version = '1.5.0svn'
-package_cygwin_version = '1.5.0svn-1'
+# get version number from configure.ac so that JMarc does
+# not have to change SConstruct during lyx release
+package_version = utils.getVerFromConfigure(top_src_dir)
+package_cygwin_version = '%s-1' % package_version
 boost_version = '1_33_1'
 
 devel_version = True
@@ -653,6 +655,7 @@ conf = Configure(env,
         'CheckCXXGlobalCstd' : utils.checkCXXGlobalCstd,
         'CheckLC_MESSAGES' : utils.checkLC_MESSAGES,
         'CheckIconvConst' : utils.checkIconvConst,
+        'CheckSizeOfWChar' : utils.checkSizeOfWChar,
     }
 )
 
@@ -913,6 +916,9 @@ if not fast_start or not os.path.isfile(boost_config_h) \
                 'Define if you want assertions to be enabled in the code'
             ),
         ],
+        types = [
+            ('wchar_t', 'HAVE_WCHAR_T', None),
+        ],
         config_post = '''
 
 #if defined(HAVE_OSTREAM) && defined(HAVE_LOCALE) && defined(HAVE_SSTREAM)
@@ -981,6 +987,13 @@ if not fast_start or not os.path.isfile(boost_config_h) \
     # check arg types of select function
     (select_arg1, select_arg234, select_arg5) = conf.CheckSelectArgType()
 
+    # check the size of wchar_t
+    sizeof_wchar_t = conf.CheckSizeOfWChar()
+    # something wrong
+    if sizeof_wchar_t == 0:
+        print 'Error: Can not determine the size of wchar_t.'
+        Exit(1)
+
     #
     # create config.h
     result = utils.createConfigFile(conf,
@@ -1050,7 +1063,8 @@ int count()
         ],
         types = [
             ('std::istreambuf_iterator<std::istream>', 'HAVE_DECL_ISTREAMBUF_ITERATOR',
-                '#include <streambuf>\n#include <istream>')
+                '#include <streambuf>\n#include <istream>'),
+            ('wchar_t', 'HAVE_WCHAR_T', None),
         ],
         libs = [
             ('gdi32', 'HAVE_LIBGDI32'),
@@ -1148,6 +1162,8 @@ int count()
                 "Define to the type of arg 2, 3, 4 for `select'."),
             ('#define SELECT_TYPE_ARG5 %s' % select_arg5,
                 "Define to the type of arg 5 for `select'."),
+            ('#define SIZEOF_WCHAR_T %d' % sizeof_wchar_t,
+                'Define to be the size of type wchar_t'),
         ],
         config_post = '''/************************************************************
 ** You should not need to change anything beyond this point */
@@ -1281,7 +1297,9 @@ int mkstemp(char*);
                 ),
             ],
             extra_items = [
-                ('#define HAVE_ICONV 1', 'Define if iconv or libiconv is found')
+                ('#define HAVE_ICONV 1', 'Define if iconv or libiconv is found'),
+                ('#define SIZEOF_WCHAR_T %d' % sizeof_wchar_t,
+                    'Define to be the size of type wchar_t'),
             ],
             config_post = '#endif'
         )
@@ -1316,6 +1334,7 @@ else:
 # this looks misplaced, but intl/libintl.h is needed by src/message.C
 if env['nls'] and included_gettext:
     # libgnuintl.h.in => libintl.h
+    env.Depends('$TOP_SRCDIR/intl/libintl.h', '$BUILDDIR/intl/config.h')
     env.substFile('$BUILDDIR/intl/libintl.h', '$TOP_SRCDIR/intl/libgnuintl.h.in')
     env.Command('$BUILDDIR/intl/libgnuintl.h', '$BUILDDIR/intl/libintl.h',
         [Copy('$TARGET', '$SOURCE')])
@@ -1679,6 +1698,7 @@ if build_support:
     #
     print "Processing files in src/support..."
 
+    env.Depends('$BUILDDIR/common/support/package.C', '$BUILDDIR/common/config.h')
     env.substFile('$BUILDDIR/common/support/package.C', '$TOP_SRCDIR/src/support/package.C.in')
 
     support = env.StaticLibrary(
@@ -1918,6 +1938,7 @@ if build_lyxbase:
     #
     print "Processing files in src..."
 
+    env.Depends('$BUILDDIR/common/version.C', '$BUILDDIR/common/config.h')
     env.substFile('$BUILDDIR/common/version.C', '$TOP_SRCDIR/src/version.C.in')
 
     if env.has_key('USE_ASPELL') and env['USE_ASPELL']:
@@ -2226,23 +2247,34 @@ if 'install' in targets:
     
     if platform_name == 'cygwin':
         # cygwin packaging requires a file /usr/share/doc/Cygwin/foot-vendor-suffix.README
-        Cygwin_README = os.path.join(dest_prefix_dir, 'doc', 'Cygwin', 
-            '%s%s.README' % (package, package_cygwin_version))
+        Cygwin_README = os.path.join(dest_prefix_dir, 'share', 'doc', 'Cygwin', 
+            '%s-%s.README' % (package, package_cygwin_version))
         env.InstallAs(Cygwin_README,
             os.path.join(env.subst('$TOP_SRCDIR'), 'README.cygwin'))
         Alias('install', Cygwin_README)
         # also a directory /usr/share/doc/lyx for README etc
-        Cygwin_Doc = os.path.join(dest_prefix_dir, 'doc', package)
+        Cygwin_Doc = os.path.join(dest_prefix_dir, 'share', 'doc', package)
         env.Install(Cygwin_Doc, [os.path.join(env.subst('$TOP_SRCDIR'), x) for x in \
             ['INSTALL', 'README', 'README.Cygwin', 'RELEASE-NOTES', 'COPYING', 'ANNOUNCE']])
         Alias('install', Cygwin_Doc)
+        # cygwin fonts also need to be installed
+        Cygwin_fonts = os.path.join(share_dest_dir, 'fonts')
+        env.Install(Cygwin_fonts, 
+            [env.subst('$TOP_SRCDIR/development/Win32/packaging/bakoma/%s' % file) \
+                  for file in win32_bakoma_fonts])
+        Alias('install', Cygwin_fonts)
+        # we also need a post installation script
+        tmp_script = utils.installCygwinPostinstallScript('/tmp')
+        postinstall_script = os.path.join(dest_dir, 'etc', 'postinstall', 'lyx.sh')
+        env.Install(postinstall_script, tmp_script)
+        Alias('install', postinstall_script)
+
+    # subst and install lyx2lyx_version.py which is not in scons_manifest.py
+    env.Depends(share_dest_dir + '/lyx2lyx/lyx2lyx_version.py', '$BUILDDIR/common/config.h')
+    env.substFile(share_dest_dir + '/lyx2lyx/lyx2lyx_version.py',
+        '$TOP_SRCDIR/lib/lyx2lyx/lyx2lyx_version.py.in')
+    Alias('install', share_dest_dir + '/lyx2lyx/lyx2lyx_version.py')
 
-    # lyx1.4.x does not have lyx2lyx_version.py.in
-    if os.path.isfile(env.subst('$TOP_SRCDIR/lib/lyx2lyx/lyx2lyx_version.py.in')):
-        # subst and install this file
-        env.substFile(share_dest_dir + '/lyx2lyx/lyx2lyx_version.py',
-            '$TOP_SRCDIR/lib/lyx2lyx/lyx2lyx_version.py.in')
-        Alias('install', share_dest_dir + '/lyx2lyx/lyx2lyx_version.py')
     # man
     env.InstallAs(os.path.join(man_dest_dir, 'lyx' + version_suffix + '.1'),
         env.subst('$TOP_SRCDIR/lyx.man'))