Please test the attached patch. msvc2005 works here, with intl support.
There is one BIG change. namely, I am trying to use the glob module to find source files, instead of listing all filenames. The performance penalty should not be noticable. This change will allow me to add source files to the msvcproject function easier, and it should allow me to build lyx1.4.x with minimal changes to the scons system. Anyway, many people prefer to list source files explicitly. If you are one of them, you still get a chance to persuade me. Cheers, Bo
Index: development/scons/SConscript =================================================================== --- development/scons/SConscript (revision 13980) +++ development/scons/SConscript (working copy) @@ -9,6 +9,8 @@ # Full author contact details are available in file CREDITS. import os, sys +sys.path.append('config') +from scons_utils import globSource Import('env') @@ -28,6 +30,7 @@ build_po = 'po' in targets or 'install' in targets or 'all' in targets build_qt3 = (build_lyx and env['frontend'] == 'qt3') or 'qt3' in targets build_qt4 = (build_lyx and env['frontend'] == 'qt4') or 'qt4' in targets +build_msvc_projects = env['USE_VC'] and 'msvc_projects' in targets # now, if rebuild_targets is specified, do not rebuild some targets @@ -80,53 +83,32 @@ filesystem = boostenv.StaticLibrary( target = '$LOCALLIBPATH/included_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 - ''')] + source = globSource(dir = env.subst('$TOP_SRC_DIR/boost/libs/filesystem/src'), + pattern = '*.cpp', build_dir = '$BUILDDIR/boost/filesystem/src') ) print 'Processing files in boost/libs/regex/src...' regex = boostenv.StaticLibrary( target = '$LOCALLIBPATH/included_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 - ''')] + source = globSource(dir = env.subst('$TOP_SRC_DIR/boost/libs/regex/src'), pattern = '*.cpp', + build_dir = '$BUILDDIR/boost/regex/src') ) print 'Processing files in boost/libs/signals/src...' signals = boostenv.StaticLibrary( target = '$LOCALLIBPATH/included_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 - ''')] + source = globSource(dir = env.subst('$TOP_SRC_DIR/boost/libs/signals/src'), pattern = '*.cpp', + build_dir = '$BUILDDIR/boost/signals/src') ) print 'Processing files in boost/libs/iostreams/src...' iostreams = boostenv.StaticLibrary( target = '$LOCALLIBPATH/included_boost_iostreams', - source = ["$BUILDDIR/boost/iostreams/src/%s" % x for x in Split(''' - file_descriptor.cpp - mapped_file.cpp - zlib.cpp - ''') ] + source = globSource(dir = env.subst('$TOP_SRC_DIR/boost/libs/iostreams/src'), pattern = '*.cpp', + build_dir = '$BUILDDIR/boost/iostreams/src') ) Alias('boost', filesystem) Alias('boost', regex) @@ -145,7 +127,7 @@ intlenv = env.Copy() # we need the original C compiler for these files intlenv['CC'] = intlenv['C_COMPILER'] - intlenv['CCFLAGS'] = intlenv['C_CCFLAGS'].split() + intlenv['CCFLAGS'] = intlenv['C_CCFLAGS'] intlenv['CPPPATH'] += ['intl'] intlenv.Append(CCFLAGS = [ @@ -172,32 +154,9 @@ intl = intlenv.StaticLibrary( target = '$LOCALLIBPATH/included_intl', LIBS = ['c'], - source = ["$BUILDDIR/intl/%s" % x for x in Split(''' - bindtextdom.c - dcgettext.c - dgettext.c - gettext.c - finddomain.c - loadmsgcat.c - localealias.c - textdomain.c - l10nflist.c - explodename.c - dcigettext.c - dcngettext.c - dngettext.c - ngettext.c - plural.c - plural-exp.c - localcharset.c - relocatable.c - localename.c - log.c - printf.c - osdep.c - os2compat.c - intl-compat.c - ''')] + source = globSource(dir = env.subst('$TOP_SRC_DIR/intl'), pattern = '*.c', + exclude = ['vasnprintf.c', 'printf-parse.c', 'printf-args.c', 'os2compat.c'], + build_dir = '$BUILDDIR/intl') ) Alias('intl', intl) @@ -217,36 +176,9 @@ 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 - ''')] + source = globSource(dir = env.subst('$TOP_SRC_DIR/src/support'), pattern = env['LYX_EXT'], + exclude = ['os_win32.C', 'os_unix.C', 'os_cygwin.C', 'atexit.c'], + include = ['package.C'], build_dir = '$BUILDDIR/common/support') ) Alias('supports', supports) @@ -259,80 +191,9 @@ 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 - ''')] + source = globSource(dir = env.subst('$TOP_SRC_DIR/src/mathed'), pattern = env['LYX_EXT'], + exclude = ['math_xyarrowinset.C', 'math_mboxinset.C', 'formulamacro.C'], + build_dir = '$BUILDDIR/common/mathed') ) Alias('mathed', mathed) @@ -345,57 +206,8 @@ 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 - ''')] + source = globSource(dir = env.subst('$TOP_SRC_DIR/src/insets'), pattern = env['LYX_EXT'], + exclude = ['insettheorem.C'], build_dir = '$BUILDDIR/common/insets') ) Alias('insets', insets) @@ -408,17 +220,8 @@ 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 - ''')] + source = globSource(dir = env.subst('$TOP_SRC_DIR/src/frontends'), pattern = env['LYX_EXT'], + build_dir = '$BUILDDIR/common/frontends') ) Alias('frontends', frontends) @@ -431,19 +234,8 @@ 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 - ''')] + source = globSource(dir = env.subst('$TOP_SRC_DIR/src/graphics'), pattern = env['LYX_EXT'], + build_dir = '$BUILDDIR/common/graphics') ) Alias('graphics', graphics) @@ -456,55 +248,9 @@ 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 - ''')] - ) + source = globSource(dir = env.subst('$TOP_SRC_DIR/src/frontends/controllers'), pattern = env['LYX_EXT'], + build_dir = '$BUILDDIR/common/frontends/controllers') + ) Alias('controllers', controllers) @@ -534,78 +280,6 @@ '$QT_INC_PATH'] ) - 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 @@ -669,76 +343,17 @@ # manually moc and uic files for better performance qt3_moced_files = [qt3env.Moc(x.replace('.C', '_moc.cpp'), x.replace('.C', '.h')) for x in qt3_moc_files] - qt3_uiced_files = [qt3env.Uic('$BUILDDIR/common/frontends/qt3/ui/'+x) for x in qt3_ui_files] + qt3_uiced_files = [qt3env.Uic('$BUILDDIR/common/frontends/qt3/ui/'+x) for x in \ + globSource(dir = env.subst('$TOP_SRC_DIR/src/frontends/qt3/ui'), pattern = '*.ui')] + qt3_uiced_cc_files = [] for x in qt3_uiced_files: qt3_uiced_cc_files.extend(x[1:]) 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 + qt3_uiced_cc_files + source = globSource(dir = env.subst('$TOP_SRC_DIR/src/frontends/qt3/'), pattern = env['LYX_EXT'], + build_dir = '$BUILDDIR/common/frontends/qt3') + qt3_moced_files + qt3_uiced_cc_files ) Alias('qt3', qt3) @@ -777,77 +392,6 @@ ] ) - qt4_ui_files = ['$BUILDDIR/common/frontends/qt4/ui/%s' % x for x in 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 = ["$BUILDDIR/common/frontends/qt4/%s" % x for x in Split(''' BulletsModule.C @@ -856,7 +400,7 @@ floatplacement.C iconpalette.C lengthcombo.C - InsertTableWidget.C + InsertTableWidget.C panelstack.C QAboutDialog.C QBibitemDialog.C @@ -913,74 +457,12 @@ validators.C ''') ] - qt4_source_files = ["$BUILDDIR/common/frontends/qt4/%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 - 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 - ''')] - # # Compile resources # - resources = [qt4env.Uic4(x) for x in qt4_ui_files] + resources = [qt4env.Uic4(x.split('.')[0]) for x in \ + globSource(dir = env.subst('$TOP_SRC_DIR/src/frontends/qt4/ui'), pattern = '*.ui', + build_dir = '$BUILDDIR/common/frontends/qt4/ui')] # # moc qt4_moc_files, the moced files are included in the original files @@ -990,7 +472,8 @@ qt4 = qt4env.StaticLibrary( target = '$LOCALLIBPATH/qt4', LIBS = qt4env['QT_LIB'], - source = qt4_source_files + qt4_moc_files + source = globSource(dir = env.subst('$TOP_SRC_DIR/src/frontends/qt4'), pattern = env['LYX_EXT'], + exclude = ['QBrowseBox.C'], build_dir = '$BUILDDIR/common/frontends/qt4') ) Alias('qt4', qt4) @@ -1008,13 +491,8 @@ target = '$BUILDDIR/common/client/lyxclient', LIBS = ['supports'] + env['INTL_LIBS'] + env['SYSTEM_LIBS'] + env['SOCKET_LIBS'] + env['BOOST_LIBRARIES'], - source = ["$BUILDDIR/common/client/%s" % x for x in Split(''' - boost.C - client.C - debug.C - gettext.C - messages.C - ''')] + source = globSource(dir = env.subst('$TOP_SRC_DIR/src/client'), pattern = env['LYX_EXT'], + build_dir = '$BUILDDIR/common/client') ) Alias('client', env.Command(os.path.join('$BUILDDIR', os.path.split(str(client[0]))[1]), client, [Copy('$TARGET', '$SOURCE')])) @@ -1042,26 +520,10 @@ 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 - ''')] + source = globSource(dir = env.subst('$TOP_SRC_DIR/src/tex2lyx'), pattern = env['LYX_EXT'], + include = ['FloatList.C', 'Floating.C', 'counters.C', 'lyxlayout.C', + 'lyxtextclass.C', 'lyxlex.C', 'lyxlex_pimpl.C'], + build_dir = '$BUILDDIR/common/tex2lyx') ) Alias('tex2lyx', env.Command(os.path.join('$BUILDDIR', os.path.split(str(tex2lyx[0]))[1]), tex2lyx, [Copy('$TARGET', '$SOURCE')])) @@ -1076,116 +538,7 @@ 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 - ''') - - # temporary fix for MSVC, will remove later. - if not env['USE_VC']: - lyx_source_pre.append('main.C') - - lyx_source_post = Split(''' + lyx_post_source = Split(''' tabular.C dimension.C PrinterParams.C @@ -1193,21 +546,29 @@ Thesaurus.C SpellBase.C ''') - + if env.has_key('USE_ASPELL') and env['USE_ASPELL']: - lyx_source_post.append('aspell.C') + lyx_post_source.append('aspell.C') elif env.has_key('USE_PSPELL') and env['USE_PSPELL']: - lyx_source_post.append('pspell.C') + lyx_post_source.append('pspell.C') elif env.has_key('USE_ISPELL') and env['USE_ISPELL']: - lyx_source_post.append('ispell.C') + lyx_post_source.append('ispell.C') + # temporary fix for MSVC, will remove later. + if not env['USE_VC']: + main_source = ['main.C'] + else: + main_source = [] + lyxbase_pre = env.StaticLibrary( target = '$LOCALLIBPATH/lyxbase_pre', - source = ["$BUILDDIR/common/%s" % x for x in lyx_source_pre] + source = globSource(dir = env.subst('$TOP_SRC_DIR/src'), pattern = env['LYX_EXT'], + exclude = lyx_post_source + ['main.C', 'aspell.C', 'pspell.C', 'ispell.C', 'Variables.C', 'Sectioning.C'], + include = ['version.C'] + main_source, build_dir = '$BUILDDIR/common') ) lyxbase_post = env.StaticLibrary( target = '$LOCALLIBPATH/lyxbase_post', - source = ["$BUILDDIR/common/%s" % x for x in lyx_source_post] + source = ["$BUILDDIR/common/%s" % x for x in lyx_post_source] ) Alias('lyxbase', lyxbase_pre) Alias('lyxbase', lyxbase_post) @@ -1249,6 +610,29 @@ Alias('lyx', lyx) +if build_msvc_projects: + if env['HAVE_FCNTL']: + env.MSVSProject(target = 'client' + env['MSVSPROJECTSUFFIX'], + srcs = ['$TOP_SRC_DIR/client/%s' % x for x in client_source], + incs = [], + localincs = ['$TOP_SRC_DIR/client/%s' % x.replace('.C', '.h') for x in client_source], + resources = [], + misc = [], + buildtarget = client, + variant = 'Release' + ) + env.MSVSProject(target = 'lyx-qt4' + env['MSVSPROJECTSUFFIX'], + srcs = [], + incs = [], + localincs = [], + resources = [], + misc = barmisc, + buildtarget = lyx, + variant = 'Release' + ) + Alias('msvc_projects', 'lyx-qt4' + env['MSVSPROJECTSUFFIX']) + + if build_po: # # po/ Index: development/scons/SConstruct =================================================================== --- development/scons/SConstruct (revision 13980) +++ development/scons/SConstruct (working copy) @@ -71,7 +71,7 @@ # features. # -import os, sys, copy, cPickle +import os, sys, copy, cPickle, glob # config/scons_utils.py defines a few utility function sys.path.append('config') @@ -105,6 +105,7 @@ PACKAGE_VERSION = '1.5.0svn' DEVEL_VERSION = True default_build_mode = 'debug' +lyx_ext = '*.C' PACKAGE = 'lyx' PACKAGE_BUGREPORT = 'lyx-devel@lists.lyx.org' @@ -354,6 +355,7 @@ frontend = env.get('frontend', default_frontend) # make sure the key exists env['frontend'] = frontend +env['LYX_EXT'] = lyx_ext # use_X11 = env.get('X11', default_with_x) use_vc = env.get('use_vc', False) @@ -506,7 +508,7 @@ # # save the old c compiler and CCFLAGS (used by libintl) env['C_COMPILER'] = env.subst('$CC') -env['C_CCFLAGS'] = env.subst('$CCFLAGS') +env['C_CCFLAGS'] = env.subst('$CCFLAGS').split() # if we use ms vc, the commands are fine (cl.exe and link.exe) if not use_vc: if env.has_key('CXX') and env['CXX']: @@ -521,9 +523,7 @@ # in the current code page (number) # C4996: foo was decleared deprecated env.Append(CCFLAGS=['/TP', '/EHsc', '/wd4819', '/wd4996']) - env['LINKFLAGS'] = [env['LINKFLAGS'], '/MANIFEST'] - env['LINKCOM' ] = [env['LINKCOM'], 'mt /manifest ${TARGET}.manifest /outputresource:$TARGET'] - env['SHLINKCOM'] = [env['SHLINKCOM'], 'mt /manifest ${TARGET}.manifest -outputresource:$TARGET;#2'] + env.Append(C_CCFLAGS=['/Dinline#', '/D__attribute__(x)#', '/Duintmax_t=UINT_MAX']) #---------------------------------------------------------- @@ -596,6 +596,12 @@ print 'Did not find qt libraries, exiting!' Exit(1) +# now, if msvc2005 is used, we will need that QT_LIB_PATH/QT_LIB.manifest file +if use_vc: + # glob file xxx.dll.manifest (msvc 2003 may not have it) + manifests = glob.glob(os.path.join(env.subst('$QT_LIB_PATH'), '*.dll.manifest')) + if manifests != []: + env['LINKCOM'] = [env['LINKCOM'], 'mt.exe /MANIFEST %s /outputresource:$TARGET;1' % manifests[0]] # check socket libs if not fast_start: @@ -727,8 +733,6 @@ # for libintl % grep HAVE * | grep _H | cut -d: -f2 | sort -u - # HAVE_STDINT_H_WITH_UINTMAX - # HAVE_INTTYPES_H_WITH_UINTMAX # # HAVE_INTTYPES_H # HAVE_STDINT_H @@ -893,7 +897,6 @@ env[func[1]] = 0 # HAVE_INTMAX_T - # HAVE_INTTYPES_H_WITH_UINTMAX # HAVE_DECL_ISTREAMBUF_ITERATOR utils.addToConfig("/* Define to 1 if you have the `intmax_t' type. */", newline=1) if conf.CheckType('intmax_t', includes='#include <stdint.h>') or \ @@ -908,6 +911,7 @@ # HAVE_WCHAR_T # HAVE_WINT_T # HAVE_INTTYPES_H_WITH_UINTMAX + # HAVE_STDINT_H_WITH_UINTMAX types = [ ('intmax_t', 'HAVE_INTMAX_T', None), @@ -916,6 +920,7 @@ ('wchar_t', 'HAVE_WCHAR_T', None), ('wint_t', 'HAVE_WINT_T', None), ('uintmax_t', 'HAVE_INTTYPES_H_WITH_UINTMAX', '#include <inttypes.h>'), + ('uintmax_t', 'HAVE_STDINT_H_WITH_UINTMAX', '#include <stdint.h>'), ('std::istreambuf_iterator<std::istream>', 'HAVE_DECL_ISTREAMBUF_ITERATOR', '#include <streambuf>\n#include <istream>') ] Index: development/scons/scons_utils.py =================================================================== --- development/scons/scons_utils.py (revision 13980) +++ development/scons/scons_utils.py (working copy) @@ -70,6 +70,16 @@ #st = os.stat(str(source[0])) #os.chmod(str(target[0]), stat.S_IMODE(st[stat.ST_MODE]) | stat.S_IWRITE) +# +# glob filenames +# +def globSource(dir, pattern, build_dir=None, exclude=[], include=[]): + ''' glob files, in dir and use build_dir as returned path name ''' + files = filter(lambda x: x not in exclude, glob.glob1(dir, pattern)) + include + if build_dir is None: + return files + else: + return ['%s/%s' % (build_dir, x) for x in files] # # autoconf tests