1 # vi:filetype=python:expandtab:tabstop=2:shiftwidth=2
5 # This file is part of LyX, the document processor.
6 # Licence details can be found in the file COPYING.
9 # Full author contact details are available in file CREDITS.
15 targets = env['BUILD_TARGETS']
17 if targets == [] or 'lyx' in targets:
18 targets += ['supports', 'mathed', 'insets', 'frontends', \
19 'graphics', 'controllers', env['frontend'], 'lyx']
20 if env['INCLUDED_BOOST']:
21 targets.append('boost')
22 elif 'client' in targets:
23 targets.append('supports')
24 if env['INCLUDED_BOOST']:
25 targets.append('boost')
26 elif 'tex2lyx' in targets:
27 targets.append('supports')
28 if env['INCLUDED_BOOST']:
29 targets.append('boost')
31 # unique target in the set (then I will need python 2.4)
32 #targets = set(targets)
37 if env['INCLUDED_BOOST'] or 'boost' in targets:
38 env.BuildDir('$BUILDDIR/boost', '$TOP_SRC_DIR/boost/libs', duplicate = 0)
41 boostenv.Append(CCFLAGS = '-DBOOST_USER_CONFIG="<config.h>"')
43 boostenv.Append(CPPPATH = ['$TOP_SRC_DIR/src'])
45 print 'Processing files in boost/libs/filesystem/src...'
47 filesystem = boostenv.StaticLibrary(
48 target = '$LOCALLIBPATH/boost_filesystem',
49 source = ["$BUILDDIR/boost/filesystem/src/%s" % x for x in Split('''
52 operations_posix_windows.cpp
53 path_posix_windows.cpp
57 print 'Processing files in boost/libs/regex/src...'
59 regex = boostenv.StaticLibrary(
60 target = '$LOCALLIBPATH/boost_regex',
61 source = ["$BUILDDIR/boost/regex/src/%s" % x for x in Split('''
69 regex_traits_defaults.cpp
74 print 'Processing files in boost/libs/signals/src...'
76 signals = boostenv.StaticLibrary(
77 target = '$LOCALLIBPATH/boost_signals',
78 source = ["$BUILDDIR/boost/signals/src/%s" % x for x in Split('''
87 print 'Processing files in boost/libs/iostreams/src...'
89 iostreams = boostenv.StaticLibrary(
90 target = '$LOCALLIBPATH/boost_iostreams',
91 source = ["$BUILDDIR/boost/iostreams/src/%s" % x for x in Split('''
97 Alias('boost', filesystem)
99 Alias('boost', signals)
100 Alias('boost', iostreams)
103 # Now, src code under src/
106 env.BuildDir('$BUILDDIR/common', '$TOP_SRC_DIR/src', duplicate = 0)
112 if 'supports' in targets:
113 print "Processing files in src/support"
115 env.Append(CPPPATH = ['.'])
117 env['SUBST_KEYS'] = ['LYX_DIR', 'LOCALEDIR', 'TOP_SRCDIR', 'PROGRAM_SUFFIX']
118 env.substFile('$BUILDDIR/common/support/package.C', '$TOP_SRC_DIR/src/support/package.C.in')
120 supports = env.StaticLibrary(
121 target = '$LOCALLIBPATH/supports',
122 source = ['$BUILDDIR/common/support/%s' % x for x in Split('''
153 Alias('supports', supports)
159 if 'mathed' in targets:
160 print "Processing files in src/mathed"
162 mathed = env.StaticLibrary(
163 target = '$LOCALLIBPATH/mathed',
164 source = ["$BUILDDIR/common/mathed/%s" % x for x in Split('''
172 math_boldsymbolinset.C
181 math_decorationinset.C
239 Alias('mathed', mathed)
242 if 'insets' in targets:
247 print "Processing files in src/insets"
249 insets = env.StaticLibrary(
250 target = '$LOCALLIBPATH/insets',
251 source = ["$BUILDDIR/common/insets/%s" % x for x in Split('''
278 insetgraphicsParams.C
304 if 'frontends' in targets:
309 print "Processing files in src/frontends"
311 frontends = env.StaticLibrary(
312 target = '$LOCALLIBPATH/frontends',
313 source = ["$BUILDDIR/common/frontends/%s" % x for x in Split('''
325 Alias('frontends', frontends)
328 if 'graphics' in targets:
333 print "Processing files in src/graphics"
335 graphics = env.StaticLibrary(
336 target = '$LOCALLIBPATH/graphics',
337 source = ["$BUILDDIR/common/graphics/%s" % x for x in Split('''
351 Alias('graphics', graphics)
354 if 'controllers' in targets:
356 # src/frontends/controllers
359 print "Processing files in src/frontends/controllers"
361 controllers = env.StaticLibrary(
362 target = '$LOCALLIBPATH/controllers',
363 source = ["$BUILDDIR/common/frontends/controllers/%s" % x for x in Split('''
381 ControlCommandBuffer.C
401 ControlSpellchecker.C
403 ControlTabularCreate.C
413 Alias('controllers', controllers)
418 if env['frontend'] in targets:
419 frontend = env['frontend']
420 env.BuildDir('$BUILDDIR/$frontend', '$TOP_SRC_DIR/src/frontend/$frontend', duplicate = 0)
422 # frontend is qt3, but specify target qt4, OK
425 elif 'qt4' in targets:
430 if frontend == 'qt3':
431 print "Processing files in src/frontends/qt3"
438 qt3env.Append(CPPPATH = [
440 '$BUILDDIR/common/frontends',
441 '$BUILDDIR/common/frontends/qt3',
442 '$BUILDDIR/common/images',
443 '$BUILDDIR/common/frontends/controllers',
444 '$BUILDDIR/common/frontends/qt3',
448 qt3_ui_files = Split('''
450 BranchesModuleBase.ui
452 TextLayoutModuleBase.ui
453 LanguageModuleBase.ui
456 NumberingModuleBase.ui
458 PageLayoutModuleBase.ui
459 PreambleModuleBase.ui
462 QBibitemDialogBase.ui
464 QBibtexAddDialogBase.ui
467 QChangesDialogBase.ui
468 QCharacterDialogBase.ui
469 QCitationDialogBase.ui
470 QCitationFindDialogBase.ui
471 QDelimiterDialogBase.ui
472 QDocumentDialogBase.ui
473 QErrorListDialogBase.ui
475 QExternalDialogBase.ui
477 QGraphicsDialogBase.ui
478 QIncludeDialogBase.ui
481 QViewSourceDialogBase.ui
483 QMathMatrixDialogBase.ui
485 QParagraphDialogBase.ui
488 QPrefConvertersModule.ui
489 QPrefCopiersModule.ui
490 QPrefCygwinPathModule.ui
492 QPrefDisplayModule.ui
493 QPrefFileformatsModule.ui
494 QPrefIdentityModule.ui
495 QPrefKeyboardModule.ui
496 QPrefLanguageModule.ui
499 QPrefPrinterModule.ui
500 QPrefScreenFontsModule.ui
502 QPrefSpellcheckerModule.ui
508 QShowFileDialogBase.ui
509 QSpellcheckerDialogBase.ui
510 QTabularCreateDialogBase.ui
511 QTabularDialogBase.ui
512 QTexinfoDialogBase.ui
513 QThesaurusDialogBase.ui
521 qt3_moc_files = ["$BUILDDIR/common/frontends/qt3/%s" % x for x in Split('''
564 QSpellcheckerDialog.C
566 QTabularCreateDialog.C
581 # under windows, because of the .C/.c confusion
582 # moc_files are not moced automatically.
583 # I am doing it manually here, until lyx changes
584 # file extension from .C to .cpp
586 if os.name == 'nt' or sys.platform == 'cygwin':
587 qt3_moced_files = [qt3env.Moc(x.replace('.C', '.h')) for x in qt3_moc_files]
589 qt3 = qt3env.StaticLibrary(
590 target = '$LOCALLIBPATH/qt3',
591 source = ["$BUILDDIR/common/frontends/qt3/%s" % x for x in Split('''
653 qt3_moc_files + qt3_moced_files +
654 ['$BUILDDIR/common/frontends/qt3/ui/' + x for x in qt3_ui_files]
659 elif frontend == 'qt4':
660 print "Processing files in src/frontends/qt4"
664 # local qt4 toolset from
665 # http://www.iua.upf.es/~dgarcia/Codders/sconstools.html
667 # NOTE: I have to patch qt4.py since it does not automatically
668 # process .C file!!! (add to cxx_suffixes )
670 qt4env.Tool('qt4', [env['SCONS_DIR']])
671 qt4env.EnableQt4Modules(env['QT_LIB'], debug = False)
673 qt4env.Append(CPPPATH = [
675 '$BUILDDIR/common/images',
676 '$BUILDDIR/common/frontends',
677 '$BUILDDIR/common/frontends/qt4',
678 '$BUILDDIR/common/frontends/controllers',
681 '$QT_INC_PATH/QtCore',
682 '$QT_INC_PATH/QtGui']
685 # FIXME: replace by something from pkg_config
686 qt4env.Append(CCFLAGS = [
688 '-DQT_CLEAN_NAMESPACE',
695 qt4_ui_files = Split('''
767 qt4_moc_files = Split('''
812 QSpellcheckerDialog.C
814 QTabularCreateDialog.C
833 for x in qt4_ui_files:
834 qt4env.Uic4('$BUILDDIR/common/frontends/qt4/ui/' + x)
836 qt4_source_files = Split('''
900 qt4 = qt4env.StaticLibrary(
901 target = '$LOCALLIBPATH/qt4',
902 LIBS = qt4env['QT_LIB'],
903 source = ["$BUILDDIR/common/frontends/qt4/%s" % x for x in qt4_source_files] + \
904 ["$BUILDDIR/common/frontends/qt4/%s" % x for x in qt4_moc_files]
909 if 'client' in targets:
913 env.BuildDir('$BUILDDIR/common', '$TOP_SRC_DIR/src', duplicate = 0)
915 print "Processing files in src/client"
917 client = env.Program(
918 target = '$BUILDDIR/common/client/lyxclient',
919 LIBS = env['BOOST_LIBRARIES'] + env['socket_libs'] + ['supports'],
920 source = ["$BUILDDIR/common/client/%s" % x for x in Split('''
928 env.fileCopy('$BUILDDIR/lyxclient', '$BUILDDIR/common/client/lyxclient')
929 Alias('client', client)
932 if 'tex2lyx' in targets:
936 print "Processing files in src/tex2lyx"
938 tex2lyx_env = env.Copy()
939 # the order is important here.
940 tex2lyx_env.Prepend(CPPPATH = ['$BUILDDIR/common/tex2lyx'])
941 tex2lyx_env.Append(LIBPATH = ['#$LOCALLIBPATH'])
943 tex2lyx_env.fileCopy('$BUILDDIR/common/tex2lyx/FloatList.C', '$TOP_SRC_DIR/src/FloatList.C')
944 tex2lyx_env.fileCopy('$BUILDDIR/common/tex2lyx/Floating.C', '$TOP_SRC_DIR/src/Floating.C')
945 tex2lyx_env.fileCopy('$BUILDDIR/common/tex2lyx/counters.C', '$TOP_SRC_DIR/src/counters.C')
946 # for some reason I do not know, I have to copy the header files as well.
947 tex2lyx_env.fileCopy('$BUILDDIR/common/tex2lyx/lyxlayout.h', '$TOP_SRC_DIR/src/lyxlayout.h')
948 tex2lyx_env.fileCopy('$BUILDDIR/common/tex2lyx/lyxlayout.C', '$TOP_SRC_DIR/src/lyxlayout.C')
949 tex2lyx_env.fileCopy('$BUILDDIR/common/tex2lyx/lyxtextclass.h', '$TOP_SRC_DIR/src/lyxtextclass.h')
950 tex2lyx_env.fileCopy('$BUILDDIR/common/tex2lyx/lyxtextclass.C', '$TOP_SRC_DIR/src/lyxtextclass.C')
951 tex2lyx_env.fileCopy('$BUILDDIR/common/tex2lyx/lyxlex.C', '$TOP_SRC_DIR/src/lyxlex.C')
952 tex2lyx_env.fileCopy('$BUILDDIR/common/tex2lyx/lyxlex_pimpl.C', '$TOP_SRC_DIR/src/lyxlex_pimpl.C')
954 tex2lyx = tex2lyx_env.Program(
955 target = '$BUILDDIR/common/tex2lyx/tex2lyx',
956 LIBS = ['supports'] + env['BOOST_LIBRARIES'] + env['SYSTEM_LIBS'],
957 source = ["$BUILDDIR/common/tex2lyx/%s" % x for x in Split('''
978 env.fileCopy('$BUILDDIR/tex2lyx', '$BUILDDIR/common/tex2lyx/tex2lyx')
979 Alias('tex2lyx', tex2lyx)
985 print "Processing files in src"
987 env['SUBST_KEYS'] = ['PACKAGE_VERSION', 'VERSION_INFO']
988 env.substFile('$BUILDDIR/common/version.C', '$TOP_SRC_DIR/src/version.C.in')
990 lyx_source = Split('''
1010 ParagraphParameters.C
1102 if env.has_key('USE_ASPELL') and env['USE_ASPELL']:
1103 lyx_source.append('aspell.C')
1104 elif env.has_key('USE_PSPELL') and env['USE_PSPELL']:
1105 lyx_source.append('pspell.C')
1106 elif env.has_key('USE_ISPELL') and env['USE_ISPELL']:
1107 lyx_source.append('ispell.C')
1110 # Build lyx with given frontend
1113 target = '$BUILDDIR/$frontend/lyx',
1114 source = ["$BUILDDIR/common/%s" % x for x in lyx_source],
1123 env['BOOST_LIBRARIES'] +
1129 if 'install' in targets:
1130 env.fileCopy('$BUILDDIR/lyx$frontend', '$BUILDDIR/$frontend/lyx')
1132 # other targets include client, tex2lyx
1135 Alias('install', env.installProg(Dir(env['BIN_DIR']),
1136 [lyx, tex2lyx, lyxclient]))
1137 ## Alias('install', env.installProg(Dir(os.path.join(env['PREFIX'], 'share/lyx/')),
1138 ## [Dir(env.subst('$TOP_SRC_DIR/lib/') + dir) for dir in ['images', 'layouts', 'scripts', 'templates', \
1139 ## 'examples', 'kbd', 'lyx2lyx', 'tex', 'clipart', 'doc', 'ui'] ] + \
1140 ## [File(env.subst('$TOP_SRC_DIR/lib/') + file) for file in ['configure.py', 'encodings', 'chkconfig.ltx', 'CREDITS', \
1141 ## 'external_templates', 'symbols', 'languages', 'lyxrc.example', 'syntax.default']]))