# vi:filetype=python:expandtab:tabstop=2:shiftwidth=2 # file SConscript # # This file is part of LyX, the document processor. # Licence details can be found in the file COPYING. # # \author Bo Peng # Full author contact details are available in file CREDITS. import os, sys Import('env') targets = env['BUILD_TARGETS'] build_lyx = (targets == [] or 'lyx' in targets or 'install' in targets) # # boost libraries # if env['INCLUDED_BOOST'] or 'boost' in targets: env.BuildDir('$BUILDDIR/boost', '$TOP_SRC_DIR/boost/libs', duplicate = 0) boostenv = env.Copy() boostenv.Append(CCFLAGS = '-DBOOST_USER_CONFIG=""') # for config.h boostenv.Append(CPPPATH = ['$TOP_SRC_DIR/src']) print 'Processing files in boost/libs/filesystem/src...' filesystem = boostenv.StaticLibrary( target = '$LOCALLIBPATH/boost_filesystem', source = ["$BUILDDIR/boost/filesystem/src/%s" % x for x in Split(''' convenience.cpp exception.cpp operations_posix_windows.cpp path_posix_windows.cpp ''')] ) print 'Processing files in boost/libs/regex/src...' regex = boostenv.StaticLibrary( target = '$LOCALLIBPATH/boost_regex', source = ["$BUILDDIR/boost/regex/src/%s" % x for x in Split(''' cpp_regex_traits.cpp c_regex_traits.cpp cregex.cpp fileiter.cpp instances.cpp regex.cpp regex_raw_buffer.cpp regex_traits_defaults.cpp w32_regex_traits.cpp ''')] ) print 'Processing files in boost/libs/signals/src...' signals = boostenv.StaticLibrary( target = '$LOCALLIBPATH/boost_signals', source = ["$BUILDDIR/boost/signals/src/%s" % x for x in Split(''' connection.cpp named_slot_map.cpp signal_base.cpp slot.cpp trackable.cpp ''')] ) print 'Processing files in boost/libs/iostreams/src...' iostreams = boostenv.StaticLibrary( target = '$LOCALLIBPATH/boost_iostreams', source = ["$BUILDDIR/boost/iostreams/src/%s" % x for x in Split(''' file_descriptor.cpp mapped_file.cpp zlib.cpp ''') ] ) Alias('boost', filesystem) Alias('boost', regex) Alias('boost', signals) Alias('boost', iostreams) # # Now, src code under src/ # env.BuildDir('$BUILDDIR/common', '$TOP_SRC_DIR/src', duplicate = 0) # # src/support # if build_lyx or True in [x in targets for x in ['supports', 'client', 'tex2lyx']]: print "Processing files in src/support" env.Append(CPPPATH = ['.']) env['SUBST_KEYS'] = ['LYX_DIR', 'LOCALEDIR', 'TOP_SRCDIR', 'PROGRAM_SUFFIX'] env.substFile('$BUILDDIR/common/support/package.C', '$TOP_SRC_DIR/src/support/package.C.in') supports = env.StaticLibrary( target = '$LOCALLIBPATH/supports', source = ['$BUILDDIR/common/support/%s' % x for x in Split(''' FileMonitor.C abort.C chdir.C convert.C copy.C environment.C filefilterlist.C filename.C filetools.C forkedcall.C forkedcallqueue.C forkedcontr.C fs_extras.C getcwd.C kill.C lstrings.C lyxtime.C lyxsum.C mkdir.C os.C path.C package.C rename.C socktools.C systemcall.C tempname.C userinfo.C unlink.C ''')] ) Alias('supports', supports) # # src/mathed # if build_lyx or 'mathed' in targets: print "Processing files in src/mathed" mathed = env.StaticLibrary( target = '$LOCALLIBPATH/mathed', source = ["$BUILDDIR/common/mathed/%s" % x for x in Split(''' textpainter.C math_amsarrayinset.C math_arrayinset.C math_atom.C math_autocorrect.C math_biginset.C math_binominset.C math_boldsymbolinset.C math_boxinset.C math_boxedinset.C math_braceinset.C math_casesinset.C math_charinset.C math_colorinset.C math_commentinset.C math_data.C math_decorationinset.C math_deliminset.C math_dfracinset.C math_diffinset.C math_diminset.C math_dotsinset.C math_envinset.C math_extern.C math_exfuncinset.C math_exintinset.C math_factory.C math_fboxinset.C math_frameboxinset.C math_fontinset.C math_fontoldinset.C math_fracinset.C math_fracbase.C math_gridinset.C math_hullinset.C math_inset.C math_kerninset.C math_lefteqninset.C math_liminset.C math_macro.C math_macroarg.C math_macrotemplate.C math_macrotable.C math_makeboxinset.C math_mathmlstream.C math_matrixinset.C math_nestinset.C math_numberinset.C math_oversetinset.C math_parinset.C math_parser.C math_phantominset.C math_rootinset.C math_scriptinset.C math_sizeinset.C math_spaceinset.C math_splitinset.C math_sqrtinset.C math_stackrelinset.C math_streamstr.C math_stringinset.C math_substackinset.C math_support.C math_symbolinset.C math_tabularinset.C math_tfracinset.C math_unknowninset.C math_undersetinset.C math_xarrowinset.C math_xymatrixinset.C command_inset.C ref_inset.C ''')] ) Alias('mathed', mathed) if build_lyx or 'insets' in targets: # # src/insets # print "Processing files in src/insets" insets = env.StaticLibrary( target = '$LOCALLIBPATH/insets', source = ["$BUILDDIR/common/insets/%s" % x for x in Split(''' mailinset.C ExternalSupport.C ExternalTemplate.C ExternalTransforms.C render_button.C render_graphic.C render_preview.C inset.C insetbase.C insetbibitem.C insetbibtex.C insetbox.C insetbranch.C insetcaption.C insetcharstyle.C insetcite.C insetcollapsable.C insetcommand.C insetcommandparams.C insetenv.C insetert.C insetexternal.C insetfloat.C insetfloatlist.C insetfoot.C insetfootlike.C insetgraphicsParams.C insetgraphics.C insethfill.C insetinclude.C insetindex.C insetlabel.C insetlatexaccent.C insetline.C insetmarginal.C insetnewline.C insetnote.C insetoptarg.C insetpagebreak.C insetquotes.C insetref.C insetspace.C insetspecialchar.C insettabular.C insettext.C insettoc.C inseturl.C insetvspace.C insetwrap.C ''')] ) Alias('insets', insets) if build_lyx or 'frontends' in targets: # # src/frontends # print "Processing files in src/frontends" frontends = env.StaticLibrary( target = '$LOCALLIBPATH/frontends', source = ["$BUILDDIR/common/frontends/%s" % x for x in Split(''' Alert.C Dialogs.C LyXView.C Painter.C Timeout.C Toolbars.C guiapi.C nullpainter.C screen.C ''')] ) Alias('frontends', frontends) if build_lyx or 'graphics' in targets: # # src/graphics # print "Processing files in src/graphics" graphics = env.StaticLibrary( target = '$LOCALLIBPATH/graphics', source = ["$BUILDDIR/common/graphics/%s" % x for x in Split(''' GraphicsCache.C GraphicsCacheItem.C GraphicsConverter.C GraphicsImage.C GraphicsLoader.C GraphicsParams.C LoaderQueue.C GraphicsTypes.C PreviewImage.C PreviewLoader.C Previews.C ''')] ) Alias('graphics', graphics) if build_lyx or 'controllers' in targets: # # src/frontends/controllers # print "Processing files in src/frontends/controllers" controllers = env.StaticLibrary( target = '$LOCALLIBPATH/controllers', source = ["$BUILDDIR/common/frontends/controllers/%s" % x for x in Split(''' Dialog.C Kernel.C biblio.C character.C frnt_lang.C tex_helpers.C BCView.C ButtonController.C ButtonPolicies.C ControlAboutlyx.C ControlBibtex.C ControlBox.C ControlBranch.C ControlCharacter.C ControlChanges.C ControlCitation.C ControlCommand.C ControlCommandBuffer.C ControlDocument.C ControlErrorList.C ControlERT.C ControlExternal.C ControlFloat.C ControlGraphics.C ControlInclude.C ControlLog.C ControlViewSource.C ControlMath.C ControlNote.C ControlParagraph.C ControlPreamble.C ControlPrefs.C ControlPrint.C ControlRef.C ControlSearch.C ControlSendto.C ControlShowFile.C ControlSpellchecker.C ControlTabular.C ControlTabularCreate.C ControlTexinfo.C ControlThesaurus.C ControlToc.C ControlVSpace.C ControlWrap.C helper_funcs.C helper_funcs.h ''')] ) Alias('controllers', controllers) # # src/frontend/qt3/4 # if build_lyx or env['frontend'] in targets: frontend = env['frontend'] env.BuildDir('$BUILDDIR/$frontend', '$TOP_SRC_DIR/src/frontend/$frontend', duplicate = 0) else: # frontend is qt3, but specify target qt4, OK if 'qt3' in targets: frontned = 'qt3' elif 'qt4' in targets: frontend = 'qt4' else: frontend = None if frontend == 'qt3': print "Processing files in src/frontends/qt3" qt3env = env.Copy() # load qt3 tools qt3env.Tool('qt') qt3env.Append(CPPPATH = [ '$BUILDDIR/common', '$BUILDDIR/common/frontends', '$BUILDDIR/common/frontends/qt3', '$BUILDDIR/common/images', '$BUILDDIR/common/frontends/controllers', '$BUILDDIR/common/frontends/qt3', '$QT_INC_DIR'] ) qt3_ui_files = Split(''' BiblioModuleBase.ui BranchesModuleBase.ui BulletsModuleBase.ui TextLayoutModuleBase.ui LanguageModuleBase.ui LaTeXModuleBase.ui MarginsModuleBase.ui NumberingModuleBase.ui MathsModuleBase.ui PageLayoutModuleBase.ui PreambleModuleBase.ui QAboutDialogBase.ui QAskForTextDialog.ui QBibitemDialogBase.ui QBibtexDialogBase.ui QBibtexAddDialogBase.ui QBoxDialogBase.ui QBranchDialogBase.ui QChangesDialogBase.ui QCharacterDialogBase.ui QCitationDialogBase.ui QCitationFindDialogBase.ui QDelimiterDialogBase.ui QDocumentDialogBase.ui QErrorListDialogBase.ui QERTDialogBase.ui QExternalDialogBase.ui QFloatDialogBase.ui QGraphicsDialogBase.ui QIncludeDialogBase.ui QIndexDialogBase.ui QLogDialogBase.ui QViewSourceDialogBase.ui QMathDialogBase.ui QMathMatrixDialogBase.ui QNoteDialogBase.ui QParagraphDialogBase.ui QPrefAsciiModule.ui QPrefColorsModule.ui QPrefConvertersModule.ui QPrefCopiersModule.ui QPrefCygwinPathModule.ui QPrefDateModule.ui QPrefDisplayModule.ui QPrefFileformatsModule.ui QPrefIdentityModule.ui QPrefKeyboardModule.ui QPrefLanguageModule.ui QPrefLatexModule.ui QPrefPathsModule.ui QPrefPrinterModule.ui QPrefScreenFontsModule.ui QPrefsDialogBase.ui QPrefSpellcheckerModule.ui QPrefUIModule.ui QPrintDialogBase.ui QRefDialogBase.ui QSearchDialogBase.ui QSendtoDialogBase.ui QShowFileDialogBase.ui QSpellcheckerDialogBase.ui QTabularCreateDialogBase.ui QTabularDialogBase.ui QTexinfoDialogBase.ui QThesaurusDialogBase.ui QTocDialogBase.ui QURLDialogBase.ui QVSpaceDialogBase.ui QWrapDialogBase.ui ''') qt3_moc_files = ["$BUILDDIR/common/frontends/qt3/%s" % x for x in Split(''' BulletsModule.C emptytable.C FileDialog_private.C floatplacement.C iconpalette.C lengthcombo.C panelstack.C QAboutDialog.C QBibitemDialog.C QBibtexDialog.C QBoxDialog.C QBranchDialog.C QBrowseBox.C QChangesDialog.C QCharacterDialog.C QCitationDialog.C QCommandBuffer.C QCommandEdit.C QContentPane.C QDelimiterDialog.C QDocumentDialog.C QErrorListDialog.C QERTDialog.C QExternalDialog.C QFloatDialog.C QGraphicsDialog.C QIncludeDialog.C QIndexDialog.C QLogDialog.C QViewSourceDialog.C QLPopupMenu.C QLPrintDialog.C QMathDialog.C QMathMatrixDialog.C QNoteDialog.C QParagraphDialog.C QPrefsDialog.C QRefDialog.C QSearchDialog.C QSendtoDialog.C qsetborder.C QShowFileDialog.C QSpellcheckerDialog.C QDialogView.C QTabularCreateDialog.C QTabularDialog.C QTexinfoDialog.C QThesaurusDialog.C QTocDialog.C qttableview.C QtView.C QURLDialog.C QVSpaceDialog.C QWrapDialog.C QLToolbar.C socket_callback.C validators.C ''')] # under windows, because of the .C/.c confusion # moc_files are not moced automatically. # I am doing it manually here, until lyx changes # file extension from .C to .cpp qt3_moced_files = [] if os.name == 'nt' or sys.platform == 'cygwin': qt3_moced_files = [qt3env.Moc(x.replace('.C', '.h')) for x in qt3_moc_files] qt3 = qt3env.StaticLibrary( target = '$LOCALLIBPATH/qt3', source = ["$BUILDDIR/common/frontends/qt3/%s" % x for x in Split(''' QDialogView.C Alert_pimpl.C Dialogs.C FileDialog.C LyXKeySymFactory.C LyXScreenFactory.C QLMenubar.C qtTimeout.C QAbout.C QBibitem.C QBibtex.C QBox.C QBranch.C QChanges.C QCharacter.C QCitation.C QDocument.C QErrorList.C QERT.C QExternal.C QFloat.C QGraphics.C QInclude.C QIndex.C QLImage.C QLog.C QViewSource.C QLPainter.C QLyXKeySym.C QMath.C QNote.C QParagraph.C QPrefs.C QPrint.C QRef.C QSearch.C QSendto.C QShowFile.C QSpellchecker.C QTabular.C QTabularCreate.C QTexinfo.C QThesaurus.C QToc.C QURL.C QVSpace.C QWorkArea.C QWrap.C Qt2BC.C WorkAreaFactory.C checkedwidgets.C lyx_gui.C lcolorcache.C panelstack.C qcoloritem.C qfontexample.C qfont_loader.C qfont_metrics.C qscreen.C qt_helpers.C ''')] + qt3_moc_files + qt3_moced_files + ['$BUILDDIR/common/frontends/qt3/ui/' + x for x in qt3_ui_files] ) Alias('qt3', qt3) elif frontend == 'qt4': print "Processing files in src/frontends/qt4" qt4env = env.Copy() # local qt4 toolset from # http://www.iua.upf.es/~dgarcia/Codders/sconstools.html # # NOTE: I have to patch qt4.py since it does not automatically # process .C file!!! (add to cxx_suffixes ) # qt4env.Tool('qt4', [env['SCONS_DIR']]) qt4env.EnableQt4Modules(env['QT_LIB'], debug = False) qt4env.Append(CPPPATH = [ '$BUILDDIR/common', '$BUILDDIR/common/images', '$BUILDDIR/common/frontends', '$BUILDDIR/common/frontends/qt4', '$BUILDDIR/common/frontends/controllers', '$QT_INC_PATH', '$QT_INC_PATH/Qt', '$QT_INC_PATH/QtCore', '$QT_INC_PATH/QtGui'] ) # FIXME: replace by something from pkg_config qt4env.Append(CCFLAGS = [ '-DHAVE_CONFIG_H', '-DQT_CLEAN_NAMESPACE', '-DQT_GENUINE_STR', '-DQT_NO_STL', '-DQT3_SUPPORT', '-Winvalid-pch'] ) qt4_ui_files = Split(''' BiblioUi BranchesUi BulletsUi TextLayoutUi LanguageUi LaTeXUi MarginsUi NumberingUi MathsUi PageLayoutUi PreambleUi QAboutUi QAskForTextUi QBibitemUi QBibtexUi QBibtexAddUi QBoxUi QBranchUi QChangesUi QCharacterUi QCitationUi QCitationFindUi QDelimiterUi QDocumentUi QErrorListUi QERTUi QExternalUi QFloatUi QGraphicsUi QIncludeUi QIndexUi QLogUi QViewSourceUi QMathUi QMathMatrixUi QNoteUi QParagraphUi QPrefAsciiUi QPrefColorsUi QPrefConvertersUi QPrefCopiersUi QPrefCygwinPathUi QPrefDateUi QPrefDisplayUi QPrefFileformatsUi QPrefIdentityUi QPrefKeyboardUi QPrefLanguageUi QPrefLatexUi QPrefPathsUi QPrefPrinterUi QPrefScreenFontsUi QPrefsUi QPrefSpellcheckerUi QPrefUi QPrintUi QRefUi QSearchUi QSendtoUi QShowFileUi QSpellcheckerUi QTabularCreateUi QTabularUi QTexinfoUi QThesaurusUi QTocUi QURLUi QVSpaceUi QWrapUi ''') qt4_moc_files = Split(''' BulletsModule.C emptytable.C FileDialog_private.C floatplacement.C iconpalette.C lengthcombo.C panelstack.C QAboutDialog.C QBibitemDialog.C QBibtexDialog.C QBoxDialog.C QBranchDialog.C QBranches.C QChangesDialog.C QCharacterDialog.C QCitationDialog.C QCommandBuffer.C QCommandEdit.C QDelimiterDialog.C QDocumentDialog.C QErrorListDialog.C QERTDialog.C QExternalDialog.C QFloatDialog.C QGraphicsDialog.C QIncludeDialog.C QIndexDialog.C QLAction.C QLogDialog.C QViewSourceDialog.C QViewSource.C QLMenubar.C QLPopupMenu.C QLPrintDialog.C QMathDialog.C QMathMatrixDialog.C QNoteDialog.C QParagraphDialog.C QPrefsDialog.C QRefDialog.C QSearchDialog.C QSendtoDialog.C qsetborder.C QShowFileDialog.C QSpellcheckerDialog.C QDialogView.C QTabularCreateDialog.C QTabularDialog.C QTexinfoDialog.C QThesaurusDialog.C TocModel.C QTocDialog.C QtView.C QURLDialog.C QVSpaceDialog.C QWorkArea.C QWrapDialog.C QLToolbar.C socket_callback.C validators.C ''') # # Compile resources # for x in qt4_ui_files: qt4env.Uic4('$BUILDDIR/common/frontends/qt4/ui/' + x) qt4_source_files = Split(''' QDialogView.C Alert_pimpl.C Dialogs.C FileDialog.C LyXKeySymFactory.C LyXScreenFactory.C QLMenubar.C qtTimeout.C QAbout.C QBibitem.C QBibtex.C QBox.C QBranch.C QBranches.C QChanges.C QCharacter.C QCitation.C QDocument.C QErrorList.C QERT.C QExternal.C QFloat.C QGraphics.C QInclude.C QIndex.C QLAction.C QLImage.C QLog.C QViewSource.C QLPainter.C QLyXKeySym.C QMath.C QNote.C QParagraph.C QPrefs.C QPrint.C QRef.C QSearch.C QSendto.C QShowFile.C QSpellchecker.C QTabular.C QTabularCreate.C QTexinfo.C QThesaurus.C QToc.C QURL.C QVSpace.C QWorkArea.C QWrap.C Qt2BC.C WorkAreaFactory.C checkedwidgets.C lyx_gui.C lcolorcache.C panelstack.C qfontexample.C qfont_loader.C qfont_metrics.C qscreen.C qt_helpers.C ''') qt4 = qt4env.StaticLibrary( target = '$LOCALLIBPATH/qt4', LIBS = qt4env['QT_LIB'], source = ["$BUILDDIR/common/frontends/qt4/%s" % x for x in qt4_source_files] + \ ["$BUILDDIR/common/frontends/qt4/%s" % x for x in qt4_moc_files] ) Alias('qt4', qt4) if 'client' in targets or 'install' in targets: # # src/client # env.BuildDir('$BUILDDIR/common', '$TOP_SRC_DIR/src', duplicate = 0) print "Processing files in src/client" client = env.Program( target = '$BUILDDIR/common/client/lyxclient', LIBS = env['BOOST_LIBRARIES'] + env['socket_libs'] + ['supports'], source = ["$BUILDDIR/common/client/%s" % x for x in Split(''' boost.C client.C debug.C gettext.C messages.C ''')] ) Alias('client', env.fileCopy('$BUILDDIR/lyxclient', '$BUILDDIR/common/client/lyxclient')) Alias('client', client) if 'tex2lyx' in targets or 'install' in targets: # # tex2lyx # print "Processing files in src/tex2lyx" tex2lyx_env = env.Copy() # the order is important here. tex2lyx_env.Prepend(CPPPATH = ['$BUILDDIR/common/tex2lyx']) tex2lyx_env.Append(LIBPATH = ['#$LOCALLIBPATH']) tex2lyx_env.fileCopy('$BUILDDIR/common/tex2lyx/FloatList.C', '$TOP_SRC_DIR/src/FloatList.C') tex2lyx_env.fileCopy('$BUILDDIR/common/tex2lyx/Floating.C', '$TOP_SRC_DIR/src/Floating.C') tex2lyx_env.fileCopy('$BUILDDIR/common/tex2lyx/counters.C', '$TOP_SRC_DIR/src/counters.C') # for some reason I do not know, I have to copy the header files as well. tex2lyx_env.fileCopy('$BUILDDIR/common/tex2lyx/lyxlayout.h', '$TOP_SRC_DIR/src/lyxlayout.h') tex2lyx_env.fileCopy('$BUILDDIR/common/tex2lyx/lyxlayout.C', '$TOP_SRC_DIR/src/lyxlayout.C') tex2lyx_env.fileCopy('$BUILDDIR/common/tex2lyx/lyxtextclass.h', '$TOP_SRC_DIR/src/lyxtextclass.h') tex2lyx_env.fileCopy('$BUILDDIR/common/tex2lyx/lyxtextclass.C', '$TOP_SRC_DIR/src/lyxtextclass.C') 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') 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.fileCopy('$BUILDDIR/tex2lyx', '$BUILDDIR/common/tex2lyx/tex2lyx')) Alias('tex2lyx', tex2lyx) # # src/ # if build_lyx or 'lyxbase' in targets: print "Processing files in src" env['SUBST_KEYS'] = ['PACKAGE_VERSION', 'VERSION_INFO'] env.substFile('$BUILDDIR/common/version.C', '$TOP_SRC_DIR/src/version.C.in') lyx_source_pre = Split(''' Bidi.C BufferView.C BufferView_pimpl.C Bullet.C BranchList.C Chktex.C Color.C CutAndPaste.C DepTable.C FloatList.C Floating.C FontIterator.C FuncStatus.C InsetList.C LColor.C LaTeX.C LaTeXFeatures.C LyXAction.C MenuBackend.C ParagraphParameters.C Spacing.C ToolbarBackend.C author.C boost.C buffer.C buffer_funcs.C bufferlist.C bufferparams.C bufferview_funcs.C changes.C chset.C converter.C counters.C coordcache.C cursor.C cursor_slice.C debug.C dociterator.C encoding.C errorlist.C exporter.C gettext.C factory.C format.C funcrequest.C graph.C importer.C intl.C insetiterator.C kbmap.C kbsequence.C language.C session.C lengthcommon.C lyx_cb.C lyx_main.C lyx_sty.C lyxfont.C lyxfind.C lyxfunc.C lyxgluelength.C lyxlayout.C lyxlength.C lyxlex.C lyxlex_pimpl.C lyxrc.C lyxrow.C lyxrow_funcs.C lyxserver.C lyxsocket.C lyxtextclass.C lyxtextclasslist.C lyxvc.C messages.C metricsinfo.C mover.C output.C outputparams.C output_docbook.C output_latex.C output_linuxdoc.C output_plaintext.C paragraph.C paragraph_funcs.C paragraph_pimpl.C pariterator.C rowpainter.C sgml.C tex-accent.C tex-strings.C texrow.C text.C text2.C text3.C TocBackend.C toc.C trans.C trans_mgr.C undo.C vc-backend.C version.C vspace.C main.C ''') lyx_source_post = Split(''' tabular.C dimension.C PrinterParams.C box.C Thesaurus.C SpellBase.C ''') if env.has_key('USE_ASPELL') and env['USE_ASPELL']: lyx_source_pre.append('aspell.C') elif env.has_key('USE_PSPELL') and env['USE_PSPELL']: lyx_source_pre.append('pspell.C') elif env.has_key('USE_ISPELL') and env['USE_ISPELL']: lyx_source_pre.append('ispell.C') lyxbase_pre = env.StaticLibrary( target = '$LOCALLIBPATH/lyxbase_pre', source = ["$BUILDDIR/common/%s" % x for x in lyx_source_pre] ) lyxbase_post = env.StaticLibrary( target = '$LOCALLIBPATH/lyxbase_post', source = ["$BUILDDIR/common/%s" % x for x in lyx_source_post] ) Alias('lyxbase', lyxbase_pre) Alias('lyxbase', lyxbase_post) if build_lyx or 'lyx' in targets: # # Build lyx with given frontend # 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['SYSTEM_LIBS'] ) Alias('lyx', env.fileCopy('$BUILDDIR/lyx-$frontend', '$BUILDDIR/$frontend/lyx')) Alias('lyx', lyx) if 'install' in targets: # # This does not look clever right now. I am using the basic # install builder of scons instead of fancier wiki solutions # with the hope that scons can finish standarding this soon. # import glob def install(dest, src): ''' recusive installation of src ''' # separate file and directory files = filter(os.path.isfile, [x for x in src]) dirs = filter(os.path.isdir, [x for x in src]) # install file env.Install(dest, files) # install directory ins_dir = [dest] for dir in dirs: ins_dir.extend(install(os.path.join(dest, os.path.basename(dir)), glob.glob(os.path.join(dir, '*'))) ) return ins_dir # # other targets include client, tex2lyx env.Install(env['BIN_DIR'], [lyx, tex2lyx, client]) Alias('install', env['BIN_DIR']) # # copy files dirs = install(os.path.join(env['PREFIX'], 'share/lyx/'), [env.subst('$TOP_SRC_DIR/lib/') + file for file in ['configure.py', 'encodings', 'chkconfig.ltx', 'CREDITS', 'external_templates', 'symbols', 'languages', 'lyxrc.example', 'syntax.default', \ 'images', 'layouts', 'scripts', 'templates', \ 'examples', 'kbd', 'lyx2lyx', 'tex', 'clipart', 'doc', 'ui']] ) Alias('install', dirs) Default('lyx')