]> git.lyx.org Git - features.git/commitdiff
scons: fix lyxclient build error handling under windows, extra_inc_path problems.
authorBo Peng <bpeng@lyx.org>
Tue, 16 May 2006 14:14:05 +0000 (14:14 +0000)
committerBo Peng <bpeng@lyx.org>
Tue, 16 May 2006 14:14:05 +0000 (14:14 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@13852 a592a061-630c-0410-9148-cb99ea01b6c8

development/scons/SConscript
development/scons/SConstruct
development/scons/qt4.py
development/scons/scons_utils.py

index 56e335d2a3afbecf036eca0dd8a11e668862def7..3fd7343f1e5063d6f932f09be232b9be07e38b18 100644 (file)
@@ -902,7 +902,7 @@ if 'client' in targets or 'install' in targets or 'all' in targets:
 
   print "Processing files in src/client"
 
-  try:
+  if env['HAS_SOCKET_LIB']:
     client = env.Program(
       target = '$BUILDDIR/common/client/lyxclient',
       LIBS = env['BOOST_LIBRARIES'] + env['SOCKET_LIBS'] + ['supports'],
@@ -916,8 +916,7 @@ if 'client' in targets or 'install' in targets or 'all' in targets:
     )
     Alias('client', env.Command(os.path.join('$BUILDDIR', os.path.split(str(client[0]))[1]),
       client, [Copy('$TARGET', '$SOURCE')]))
-  except:
-    print "Building of program lyxclient failed"
+  else:
     client = None
   Alias('client', client)
 
@@ -944,36 +943,32 @@ if 'tex2lyx' in targets or 'install' in targets or 'all' in targets:
   tex2lyx_env.fileCopy('$BUILDDIR/common/tex2lyx/lyxlex.C', '$TOP_SRC_DIR/src/lyxlex.C')
   tex2lyx_env.fileCopy('$BUILDDIR/common/tex2lyx/lyxlex_pimpl.C', '$TOP_SRC_DIR/src/lyxlex_pimpl.C')
 
-  try:
-    tex2lyx = tex2lyx_env.Program(
-      target = '$BUILDDIR/common/tex2lyx/tex2lyx',
-      LIBS = ['supports'] + env['BOOST_LIBRARIES'] + env['SYSTEM_LIBS'],
-      source = ["$BUILDDIR/common/tex2lyx/%s" % x for x in Split('''
-        FloatList.C
-        Floating.C
-        counters.C
-        lyxlayout.C
-        lyxtextclass.C
-        lyxlex.C
-        lyxlex_pimpl.C
-        boost.C
-        context.C
-        gettext.C
-        lengthcommon.C
-        lyxfont.C
-        texparser.C
-        tex2lyx.C
-        preamble.C
-        math.C
-        table.C
-        text.C
-      ''')]
-    )
-    Alias('tex2lyx', env.Command(os.path.join('$BUILDDIR', os.path.split(str(tex2lyx[0]))[1]),
-      tex2lyx, [Copy('$TARGET', '$SOURCE')]))
-  except:
-    print "Building of program tex2lyx failed"
-    tex2lyx = None
+  tex2lyx = tex2lyx_env.Program(
+    target = '$BUILDDIR/common/tex2lyx/tex2lyx',
+    LIBS = ['supports'] + env['BOOST_LIBRARIES'] + env['SYSTEM_LIBS'],
+    source = ["$BUILDDIR/common/tex2lyx/%s" % x for x in Split('''
+      FloatList.C
+      Floating.C
+      counters.C
+      lyxlayout.C
+      lyxtextclass.C
+      lyxlex.C
+      lyxlex_pimpl.C
+      boost.C
+      context.C
+      gettext.C
+      lengthcommon.C
+      lyxfont.C
+      texparser.C
+      tex2lyx.C
+      preamble.C
+      math.C
+      table.C
+      text.C
+    ''')]
+  )
+  Alias('tex2lyx', env.Command(os.path.join('$BUILDDIR', os.path.split(str(tex2lyx[0]))[1]),
+    tex2lyx, [Copy('$TARGET', '$SOURCE')]))
   Alias('tex2lyx', tex2lyx)
 
 
@@ -1124,34 +1119,29 @@ if build_lyx or 'lyx' in targets:
   #
   # Build lyx with given frontend
   #
-  try:
-    lyx = env.Program(
-      target = '$BUILDDIR/$frontend/lyx',
-      source = [],
-      LIBS = [
-        'lyxbase_pre',
-        'mathed',
-        'insets',
-        'frontends',
-        env['frontend'],
-        'controllers',
-        'graphics',
-        'supports',
-        'lyxbase_post',
-        ] +
-        env['BOOST_LIBRARIES'] +
-        env['EXTRA_LIBS'] +
-        env['SOCKET_LIBS'] +
-        env['SYSTEM_LIBS']
-    )
-    # [/path/to/lyx.ext] => lyx-qt3.ext
-    target_name = os.path.split(str(lyx[0]))[1].replace('lyx', 'lyx-%s' % frontend)
-    Alias('lyx', env.Command(os.path.join('$BUILDDIR', target_name), lyx,
-      [Copy('$TARGET', '$SOURCE')]))
-  except:
-    print "Building of program lyx failed"
-    lyx = None
-    raise
+  lyx = env.Program(
+    target = '$BUILDDIR/$frontend/lyx',
+    source = [],
+    LIBS = [
+      'lyxbase_pre',
+      'mathed',
+      'insets',
+      'frontends',
+      env['frontend'],
+      'controllers',
+      'graphics',
+      'supports',
+      'lyxbase_post',
+      ] +
+      env['BOOST_LIBRARIES'] +
+      env['EXTRA_LIBS'] +
+      env['SOCKET_LIBS'] +
+      env['SYSTEM_LIBS']
+  )
+  # [/path/to/lyx.ext] => lyx-qt3.ext
+  target_name = os.path.split(str(lyx[0]))[1].replace('lyx', 'lyx-%s' % frontend)
+  Alias('lyx', env.Command(os.path.join('$BUILDDIR', target_name), lyx,
+    [Copy('$TARGET', '$SOURCE')]))
   Alias('lyx', lyx)
 
 
index d6e032a79c57e75e42d3fbbc41fc2fa22e75e5c9..f0ae741afb1bca5206b16ced600cb6d252ed58ba 100644 (file)
@@ -411,7 +411,7 @@ else: # have to guess
   env['QT_INC_PATH'] = '/usr/include/$frontend/'
 # Note that this CPPPATH is for testing only
 # it will be removed before calling SConscript
-env.AppendUnique(CPPPATH = env['QT_INC_PATH'])
+env['CPPPATH'] = [env['QT_INC_PATH']]
 
 #
 # extra_inc_path and extra_lib_path
@@ -525,6 +525,9 @@ if not fast_start:
   env['SOCKET_LIBS'] = []
   if conf.CheckLib('socket'):
     env['SOCKET_LIBS'].append('socket')
+    env['HAS_SOCKET_LIB'] = True
+  else:
+    env['HAS_SOCKET_LIB'] = False
 
   # nsl is the network services library and provides a
   # transport-level interface to networking services.
@@ -532,8 +535,10 @@ if not fast_start:
     env['SOCKET_LIBS'].append('nsl')
 
   env_cache['SOCKET_LIBS'] = env['SOCKET_LIBS']
+  env_cache['HAS_SOCKET_LIB'] = env['HAS_SOCKET_LIB']
 else:
   env['SOCKET_LIBS'] = env_cache['SOCKET_LIBS']
+  env['HAS_SOCKET_LIB'] = env_cache['HAS_SOCKET_LIB']
 
 if not fast_start:
   # check boost libraries
@@ -762,13 +767,6 @@ if not fast_start:
     else:
       print "Warning: Can not locate specified spell checker:", spell_engine
 
-  # env['EXTRA_LIBS'] will be modified later, so a unique copy is needed
-  # NOTE that we do *not* save qt_libs in environment.
-  env_cache['EXTRA_LIBS'] = copy.copy(env['EXTRA_LIBS'])
-  env_cache['USE_ASPELL'] = env['USE_ASPELL']
-  env_cache['USE_PSPELL'] = env['USE_PSPELL']
-  env_cache['USE_ISPELL'] = env['USE_ISPELL']
-
   # USE_POSIX_PACKAGING
   # USE_MACOSX_PACKAGING
   # USE_WINDOWS_PACKAGING
@@ -822,6 +820,13 @@ if not fast_start:
   # WANT_GETFILEATTRIBUTESEX_WRAPPER
   utils.endConfigH(TOP_SRC_DIR)
 
+  # env['EXTRA_LIBS'] will be modified later, so a unique copy is needed
+  # NOTE that we do *not* save qt_libs in environment.
+  env_cache['EXTRA_LIBS'] = copy.copy(env['EXTRA_LIBS'])
+  env_cache['USE_ASPELL'] = env['USE_ASPELL']
+  env_cache['USE_PSPELL'] = env['USE_PSPELL']
+  env_cache['USE_ISPELL'] = env['USE_ISPELL']
+
 else:
   # only a few variables need to be rescanned
   env['EXTRA_LIBS'] = copy.copy(env_cache['EXTRA_LIBS'])
@@ -876,9 +881,9 @@ else:
 #
 # boost is always in, src is needed for config.h
 # 
-# Note that previously added QT_DIR/include etc is removed
-# they will be added when processing for example src/qt3
-env['CPPPATH'] = ['$TOP_SRC_DIR/boost', '$TOP_SRC_DIR/src']
+# QT_INC_PATH is not needed for *every* source file
+env['CPPPATH'].remove(env['QT_INC_PATH'])
+env['CPPPATH'] += ['$TOP_SRC_DIR/boost', '$TOP_SRC_DIR/src']
 
 # TODO: add (more) appropriate compiling options (-DNDEBUG etc)
 # for debug/release mode
@@ -937,11 +942,13 @@ Build info:
   Boost libraries:                %s
   Extra libraries:                %s
   System libraries:               %s
+  include search path:            %s
 Frontend:
   Frontend:                       %s
   Packaging:                      %s
-  LyX binary dir:                 FIXME
-  LyX files dir:                  FIXME
+  LyX dir:                        %s
+  LyX binary dir:                 %s
+  LyX files dir:                  %s
 ''' % (platform_name,
   env.subst('$CCFLAGS'), env.subst('$CC'),
   env.subst('$CPPFLAGS'), env.subst('$CFLAGS'),
@@ -950,8 +957,9 @@ Frontend:
   env.subst('$LINKFLAGS'), env.subst('$LINKFLAGS'),
   env.subst('$BUILDDIR'), env.subst('$LOCALLIBPATH'),
   str(env['LIBPATH']), str(env['BOOST_LIBRARIES']),
-  str(env['EXTRA_LIBS']), str(env['SYSTEM_LIBS']),
-  env['frontend'], packaging_method)
+  str(env['EXTRA_LIBS']), str(env['SYSTEM_LIBS']), str(env['CPPPATH']),
+  env['frontend'], packaging_method,
+  env['PREFIX'], env['BIN_DIR'], env['SHARE_DIR'])
 
 if env['frontend'] in ['qt3', 'qt4']:
   env['VERSION_INFO'] += '''  include dir:                    %s
@@ -996,9 +1004,9 @@ cache_file.close()
 #----------------------------------------------------------
 Export('env')
 
-# this has been the source of problem on some platforms...
-# needs more testing
-env.SConsignFile('%s/.sconsign' % env['BUILDDIR'][1:])
+# this has been the source of problems on some platforms...
+# I find that I need to supply it with full path name
+env.SConsignFile(os.path.join(Dir(env['BUILDDIR']).abspath, '.sconsign'))
 # this usage needs further investigation.
 #env.CacheDir('%s/Cache/%s' % (env['BUILDDIR'], frontend))
 
index 8b3bc7f23b5aad26b3af2079f4084817c65de780..9d06e3589e5c87a59c962a0c22e46880b02255f7 100644 (file)
@@ -210,7 +210,7 @@ def generate(env):
        env['QT4_QRCFLAGS'] = ''
 
        # suffixes/prefixes for the headers / sources to generate
-       env['QT4_MOCHPREFIX'] = 'moc_'
+       env['QT4_MOCHPREFIX'] = ''
        env['QT4_MOCHSUFFIX'] = '$CXXFILESUFFIX'
        env['QT4_MOCCXXPREFIX'] = 'moc_'
        env['QT4_MOCCXXSUFFIX'] = '.moc'
index 81dd374399b471feccf8901c3e010c79e1351c75..36cf6c081a1e142d718b49b9edb69eccda727b1d 100644 (file)
@@ -64,7 +64,10 @@ def env_subst(target, source, env):
     if not env.has_key(k):
       print "Failed to subst key ", k, " from file", str(source[0])
       raise
-    contents = re.sub('@'+k+'@', env.subst('$'+k).replace('\n',r'\\n\\\n'), contents)
+    try:
+      contents = re.sub('@'+k+'@', env[k].replace('\n',r'\\n\\\n'), contents)
+    except:
+      print "Can not substitute %s with %s" % ('@'+k+'@', env[k])
   target_file.write(contents + "\n")
   target_file.close()
   #st = os.stat(str(source[0]))
@@ -211,25 +214,13 @@ int main()
   mkdir("somedir");
 }
 """
-
-  check_mkdir_one_arg_source2 = """
-#include <unistd.h>
-int main()
-{
-  mkdir("somedir");
-}
-"""
-
   conf.Message('Checking for the number of args for mkdir... ')
-  ret = conf.TryLink(check_mkdir_one_arg_source, '.c')
+  ret = conf.TryLink(check_mkdir_one_arg_source, '.c') or \
+    conf.TryLink('#include <unistd.h>' + check_mkdir_one_arg_source, '.c')
   if ret:
     conf.Result('one')
   else:
-    ret = conf.TryLink(check_mkdir_one_arg_source2, '.c')
-    if ret:
-      conf.Result('one')
-    else:     
-      conf.Result('two')
+    conf.Result('two')
   return ret