]> git.lyx.org Git - lyx.git/blob - development/scons/SConscript
Scons-build system moves to development/scons, from Bo Peng (ben.bob@gmail.com)
[lyx.git] / development / scons / SConscript
1 # vi:filetype=python:expandtab:tabstop=2:shiftwidth=2
2
3 # file SConscript
4 #
5 # This file is part of LyX, the document processor.
6 # Licence details can be found in the file COPYING.
7
8 # \author Bo Peng
9 # Full author contact details are available in file CREDITS.
10
11 import os, sys
12
13 Import('env')
14
15 #
16 # boost libraries
17 #
18 if env['INCLUDED_BOOST']:
19   env.BuildDir('#$BUILDDIR/common', '$TOP_SRC_DIR/boost/libs', duplicate = 0)
20   
21   boostenv = env.Copy()
22   boostenv.Append(CCFLAGS = '-DBOOST_USER_CONFIG="<config.h>"')
23   # for config.h
24   boostenv.Append(CPPPATH = ['$TOP_SRC_DIR/src'])
25   
26   print 'Processing files in boost/libs/filesystem/src...'
27   
28   filesystem = boostenv.StaticLibrary(
29     target = '$LOCALLIBPATH/boost_filesystem',
30     source = ["#$BUILDDIR/common/filesystem/src/%s" % x for x in Split('''
31       convenience.cpp
32       exception.cpp
33       operations_posix_windows.cpp
34       path_posix_windows.cpp
35     ''')]
36   )
37   
38   print 'Processing files in boost/libs/regex/src...'
39   
40   regex = boostenv.StaticLibrary(
41     target = '$LOCALLIBPATH/boost_regex',
42     source = ["#$BUILDDIR/common/regex/src/%s" % x for x in Split('''
43       cpp_regex_traits.cpp
44       c_regex_traits.cpp
45       cregex.cpp
46       fileiter.cpp
47       instances.cpp
48       regex.cpp
49       regex_raw_buffer.cpp
50       regex_traits_defaults.cpp
51       w32_regex_traits.cpp
52     ''')]
53   )
54   
55   # Return the library
56   Return('regex')
57   
58   Import('boostenv')
59   
60   print 'Processing files in boost/libs/signals/src...'
61   
62   signals = boostenv.StaticLibrary(
63     target = '$LOCALLIBPATH/boost_signals',
64     source = ["#$BUILDDIR/common/signals/src/%s" % x for x in Split('''
65       connection.cpp
66       named_slot_map.cpp
67       signal_base.cpp
68       slot.cpp
69       trackable.cpp
70     ''')]
71   )
72   
73   print 'Processing files in boost/libs/iostreams/src...'
74   
75   iostreams = boostenv.StaticLibrary(
76     target = '$LOCALLIBPATH/boost_iostreams',
77     source = ["#$BUILDDIR/common/iostreams/src/%s" % x for x in Split('''
78       file_descriptor.cpp
79       mapped_file.cpp
80       zlib.cpp
81     ''') ]
82   )
83   
84   
85 #
86 # Now, src code under src/
87 #
88
89 env.BuildDir('#$BUILDDIR/common', '$TOP_SRC_DIR/src', duplicate = 0)
90
91 #
92 # src/support 
93 #
94
95 print "Processing files in src/support"
96
97 env.Append(CPPPATH = ['.'])
98
99 env['SUBST_KEYS'] = ['LYX_DIR', 'LOCALEDIR', 'TOP_SRCDIR', 'PROGRAM_SUFFIX']
100 env.substFile('#$BUILDDIR/common/support/package.C', '$TOP_SRC_DIR/src/support/package.C.in')
101
102 supports = env.StaticLibrary(
103   target = '$LOCALLIBPATH/supports',
104   source = ['#$BUILDDIR/common/support/%s' % x for x in Split('''
105     FileMonitor.C
106     abort.C
107     chdir.C
108     convert.C
109     copy.C
110     environment.C
111     filefilterlist.C
112     filename.C
113     filetools.C
114     forkedcall.C
115     forkedcallqueue.C
116     forkedcontr.C
117     fs_extras.C
118     getcwd.C
119     kill.C
120     lstrings.C
121     lyxtime.C
122     lyxsum.C
123     mkdir.C
124     os.C
125     path.C
126     package.C
127     rename.C
128     socktools.C
129     systemcall.C
130     tempname.C
131     userinfo.C
132     unlink.C
133   ''')]
134 )
135
136 #
137 # src/mathed
138 #
139
140 print "Processing files in src/mathed"
141
142 mathed = env.StaticLibrary(
143   target = '$LOCALLIBPATH/mathed',
144   source = ["#$BUILDDIR/common/mathed/%s" % x for x in Split('''
145     textpainter.C
146     math_amsarrayinset.C
147     math_arrayinset.C
148     math_atom.C
149     math_autocorrect.C
150     math_biginset.C
151     math_binominset.C
152     math_boldsymbolinset.C
153     math_boxinset.C
154     math_boxedinset.C
155     math_braceinset.C
156     math_casesinset.C
157     math_charinset.C
158     math_colorinset.C
159     math_commentinset.C
160     math_data.C
161     math_decorationinset.C
162     math_deliminset.C
163     math_dfracinset.C
164     math_diffinset.C
165     math_diminset.C
166     math_dotsinset.C
167     math_envinset.C
168     math_extern.C
169     math_exfuncinset.C
170     math_exintinset.C
171     math_factory.C
172     math_fboxinset.C
173     math_frameboxinset.C
174     math_fontinset.C
175     math_fontoldinset.C
176     math_fracinset.C
177     math_fracbase.C
178     math_gridinset.C
179     math_hullinset.C
180     math_inset.C
181     math_kerninset.C
182     math_lefteqninset.C
183     math_liminset.C
184     math_macro.C
185     math_macroarg.C
186     math_macrotemplate.C
187     math_macrotable.C
188     math_makeboxinset.C
189     math_mathmlstream.C
190     math_matrixinset.C
191     math_nestinset.C
192     math_numberinset.C
193     math_oversetinset.C
194     math_parinset.C
195     math_parser.C
196     math_phantominset.C
197     math_rootinset.C
198     math_scriptinset.C
199     math_sizeinset.C
200     math_spaceinset.C
201     math_splitinset.C
202     math_sqrtinset.C
203     math_stackrelinset.C
204     math_streamstr.C
205     math_stringinset.C
206     math_substackinset.C
207     math_support.C
208     math_symbolinset.C
209     math_tabularinset.C
210     math_tfracinset.C
211     math_unknowninset.C
212     math_undersetinset.C
213     math_xarrowinset.C
214     math_xymatrixinset.C
215     command_inset.C
216     ref_inset.C
217   ''')]
218 )
219
220 #
221 # src/insets
222 #
223
224 print "Processing files in src/insets"
225
226 insets = env.StaticLibrary(
227   target = '$LOCALLIBPATH/insets',
228   source = ["#$BUILDDIR/common/insets/%s" % x for x in Split('''
229     mailinset.C
230     ExternalSupport.C
231     ExternalTemplate.C
232     ExternalTransforms.C
233     render_button.C
234     render_graphic.C
235     render_preview.C
236     inset.C
237     insetbase.C
238     insetbibitem.C
239     insetbibtex.C
240     insetbox.C
241     insetbranch.C
242     insetcaption.C
243     insetcharstyle.C
244     insetcite.C
245     insetcollapsable.C
246     insetcommand.C
247     insetcommandparams.C
248     insetenv.C
249     insetert.C
250     insetexternal.C
251     insetfloat.C
252     insetfloatlist.C
253     insetfoot.C
254     insetfootlike.C
255     insetgraphicsParams.C
256     insetgraphics.C
257     insethfill.C
258     insetinclude.C
259     insetindex.C
260     insetlabel.C
261     insetlatexaccent.C
262     insetline.C
263     insetmarginal.C
264     insetnewline.C
265     insetnote.C
266     insetoptarg.C
267     insetpagebreak.C
268     insetquotes.C
269     insetref.C
270     insetspace.C
271     insetspecialchar.C
272     insettabular.C
273     insettext.C
274     insettoc.C
275     inseturl.C
276     insetvspace.C
277     insetwrap.C
278   ''')]
279 )
280
281
282 #
283 # src/frontends
284 #
285
286 print "Processing files in src/frontends"
287
288 frontends = env.StaticLibrary(
289   target = '$LOCALLIBPATH/frontends',
290   source = ["#$BUILDDIR/common/frontends/%s" % x for x in Split('''
291     Alert.C
292     Dialogs.C
293     LyXView.C
294     Painter.C
295     Timeout.C
296     Toolbars.C
297     guiapi.C
298     nullpainter.C
299     screen.C
300   ''')]
301 )
302
303
304 #
305 # src/graphics
306 #
307
308 print "Processing files in src/graphics"
309
310 graphics = env.StaticLibrary(
311   target = '$LOCALLIBPATH/graphics',
312   source = ["#$BUILDDIR/common/graphics/%s" % x for x in Split('''
313     GraphicsCache.C
314     GraphicsCacheItem.C
315     GraphicsConverter.C
316     GraphicsImage.C
317     GraphicsLoader.C
318     GraphicsParams.C
319     LoaderQueue.C
320     GraphicsTypes.C
321     PreviewImage.C
322     PreviewLoader.C
323     Previews.C
324   ''')]
325 )
326
327 #
328 # src/frontends/controllers
329 #
330
331 print "Processing files in src/frontends/controllers"
332
333 controllers = env.StaticLibrary(
334   target = '$LOCALLIBPATH/controllers',
335   source = ["#$BUILDDIR/common/frontends/controllers/%s" % x for x in Split('''
336     Dialog.C
337     Kernel.C
338     biblio.C
339     character.C
340     frnt_lang.C
341     tex_helpers.C
342     BCView.C
343     ButtonController.C
344     ButtonPolicies.C
345     ControlAboutlyx.C
346     ControlBibtex.C
347     ControlBox.C
348     ControlBranch.C
349     ControlCharacter.C
350     ControlChanges.C
351     ControlCitation.C
352     ControlCommand.C
353     ControlCommandBuffer.C
354     ControlDocument.C
355     ControlErrorList.C
356     ControlERT.C
357     ControlExternal.C
358     ControlFloat.C
359     ControlGraphics.C
360     ControlInclude.C
361     ControlLog.C
362     ControlViewSource.C
363     ControlMath.C
364     ControlNote.C
365     ControlParagraph.C
366     ControlPreamble.C
367     ControlPrefs.C
368     ControlPrint.C
369     ControlRef.C
370     ControlSearch.C
371     ControlSendto.C
372     ControlShowFile.C
373     ControlSpellchecker.C
374     ControlTabular.C
375     ControlTabularCreate.C
376     ControlTexinfo.C
377     ControlThesaurus.C
378     ControlToc.C
379     ControlVSpace.C
380     ControlWrap.C
381     helper_funcs.C
382     helper_funcs.h
383   ''')]
384   )
385
386
387 #
388 # src/frontend/qt3/4
389 #
390
391 frontend = env['frontend']
392 env.BuildDir('#$BUILDDIR/$frontend', '$TOP_SRC_DIR/src/frontend/$frontend', duplicate = 0)
393
394 if frontend == 'qt3':
395   print "Processing files in src/frontends/qt3"
396
397   qt3env = env.Copy()
398
399   # load qt3 tools
400   qt3env.Tool('qt')
401
402   qt3env.Append(CPPPATH = [
403     '#$BUILDDIR/common',
404     '#$BUILDDIR/common/frontends',
405     '#$BUILDDIR/common/images',
406     '#$BUILDDIR/common/frontends/controllers',
407     '#$BUILDDIR/common/frontends/qt3',
408     '$QT_INC_DIR',
409     '.']
410   )
411   
412   qt3_ui_files = Split('''
413     BiblioModuleBase.ui
414     BranchesModuleBase.ui
415     BulletsModuleBase.ui
416     TextLayoutModuleBase.ui
417     LanguageModuleBase.ui
418     LaTeXModuleBase.ui
419     MarginsModuleBase.ui
420     NumberingModuleBase.ui
421     MathsModuleBase.ui
422     PageLayoutModuleBase.ui
423     PreambleModuleBase.ui
424     QAboutDialogBase.ui
425     QAskForTextDialog.ui
426     QBibitemDialogBase.ui
427     QBibtexDialogBase.ui
428     QBibtexAddDialogBase.ui
429     QBoxDialogBase.ui
430     QBranchDialogBase.ui
431     QChangesDialogBase.ui
432     QCharacterDialogBase.ui
433     QCitationDialogBase.ui
434     QCitationFindDialogBase.ui
435     QDelimiterDialogBase.ui
436     QDocumentDialogBase.ui
437     QErrorListDialogBase.ui
438     QERTDialogBase.ui
439     QExternalDialogBase.ui
440     QFloatDialogBase.ui
441     QGraphicsDialogBase.ui
442     QIncludeDialogBase.ui
443     QIndexDialogBase.ui
444     QLogDialogBase.ui
445     QViewSourceDialogBase.ui
446     QMathDialogBase.ui
447     QMathMatrixDialogBase.ui
448     QNoteDialogBase.ui
449     QParagraphDialogBase.ui
450     QPrefAsciiModule.ui
451     QPrefColorsModule.ui
452     QPrefConvertersModule.ui
453     QPrefCopiersModule.ui
454     QPrefCygwinPathModule.ui
455     QPrefDateModule.ui
456     QPrefDisplayModule.ui
457     QPrefFileformatsModule.ui
458     QPrefIdentityModule.ui
459     QPrefKeyboardModule.ui
460     QPrefLanguageModule.ui
461     QPrefLatexModule.ui
462     QPrefPathsModule.ui
463     QPrefPrinterModule.ui
464     QPrefScreenFontsModule.ui
465     QPrefsDialogBase.ui
466     QPrefSpellcheckerModule.ui
467     QPrefUIModule.ui
468     QPrintDialogBase.ui
469     QRefDialogBase.ui
470     QSearchDialogBase.ui
471     QSendtoDialogBase.ui
472     QShowFileDialogBase.ui
473     QSpellcheckerDialogBase.ui
474     QTabularCreateDialogBase.ui
475     QTabularDialogBase.ui
476     QTexinfoDialogBase.ui
477     QThesaurusDialogBase.ui
478     QTocDialogBase.ui
479     QURLDialogBase.ui
480     QVSpaceDialogBase.ui
481     QWrapDialogBase.ui
482   ''')
483   
484   
485   qt3_moc_files = ["#$BUILDDIR/common/frontends/qt3/%s" % x for x in Split('''
486     BulletsModule.C
487     emptytable.C
488     FileDialog_private.C
489     floatplacement.C
490     iconpalette.C
491     lengthcombo.C
492     panelstack.C
493     QAboutDialog.C
494     QBibitemDialog.C
495     QBibtexDialog.C
496     QBoxDialog.C
497     QBranchDialog.C
498     QBrowseBox.C
499     QChangesDialog.C
500     QCharacterDialog.C
501     QCitationDialog.C
502     QCommandBuffer.C
503     QCommandEdit.C
504     QContentPane.C
505     QDelimiterDialog.C
506     QDocumentDialog.C
507     QErrorListDialog.C
508     QERTDialog.C
509     QExternalDialog.C
510     QFloatDialog.C
511     QGraphicsDialog.C
512     QIncludeDialog.C
513     QIndexDialog.C
514     QLogDialog.C
515     QViewSourceDialog.C
516     QLPopupMenu.C
517     QLPrintDialog.C
518     QMathDialog.C
519     QMathMatrixDialog.C
520     QNoteDialog.C
521     QParagraphDialog.C
522     QPrefsDialog.C
523     QRefDialog.C
524     QSearchDialog.C
525     QSendtoDialog.C
526     qsetborder.C
527     QShowFileDialog.C
528     QSpellcheckerDialog.C
529     QDialogView.C
530     QTabularCreateDialog.C
531     QTabularDialog.C
532     QTexinfoDialog.C
533     QThesaurusDialog.C
534     QTocDialog.C
535     qttableview.C
536     QtView.C
537     QURLDialog.C
538     QVSpaceDialog.C
539     QWrapDialog.C
540     QLToolbar.C
541     socket_callback.C
542     validators.C
543   ''')]
544   
545   # under windows, because of the .C/.c confusion
546   # moc_files are not moced automatically.
547   # I am doing it manually here, until lyx changes
548   # file extension from .C to .cpp
549   qt3_moced_files = []
550   if os.name == 'nt' or sys.platform == 'cygwin':
551     qt3_moced_files = [qt3env.Moc('$BUILDDIR/common/frontends/qt3/'+x.replace('.C', '.h')) for x in moc_files]
552   
553   qt3 = qt3env.StaticLibrary(
554     target = '$LOCALLIBPATH/qt3',
555     source = ["#$BUILDDIR/common/frontends/qt3/%s" % x for x in Split('''
556       QDialogView.C
557       Alert_pimpl.C
558       Dialogs.C
559       FileDialog.C
560       LyXKeySymFactory.C
561       LyXScreenFactory.C
562       QLMenubar.C
563       qtTimeout.C
564       QAbout.C
565       QBibitem.C
566       QBibtex.C
567       QBox.C
568       QBranch.C
569       QChanges.C
570       QCharacter.C
571       QCitation.C
572       QDocument.C
573       QErrorList.C
574       QERT.C
575       QExternal.C
576       QFloat.C
577       QGraphics.C
578       QInclude.C
579       QIndex.C
580       QLImage.C
581       QLog.C
582       QViewSource.C
583       QLPainter.C
584       QLyXKeySym.C
585       QMath.C
586       QNote.C
587       QParagraph.C
588       QPrefs.C
589       QPrint.C
590       QRef.C
591       QSearch.C
592       QSendto.C
593       QShowFile.C
594       QSpellchecker.C
595       QTabular.C
596       QTabularCreate.C
597       QTexinfo.C
598       QThesaurus.C
599       QToc.C
600       QURL.C
601       QVSpace.C
602       QWorkArea.C
603       QWrap.C
604       Qt2BC.C
605       WorkAreaFactory.C
606       checkedwidgets.C
607       lyx_gui.C
608       lcolorcache.C
609       panelstack.C
610       qcoloritem.C
611       qfontexample.C
612       qfont_loader.C
613       qfont_metrics.C
614       qscreen.C
615       qt_helpers.C
616     ''')] +
617     qt3_moc_files + qt3_moced_files +
618     ['#$BUILDDIR/common/frontends/qt3/ui/' + x for x in qt3_ui_files]
619   )
620 elif frontend == 'qt4':
621   print "Processing files in src/frontends/qt4"
622
623   qt4env = env.Copy()
624   
625   # local qt4 toolset from
626   # http://www.iua.upf.es/~dgarcia/Codders/sconstools.html
627   #
628   # NOTE: I have to patch qt4.py since it does not automatically
629   # process .C file!!! (add to cxx_suffixes )
630   #
631   if frontend == 'qt4':
632     qt4env.Tool('qt4', '.')
633     qt4env.EnableQt4Modules(env['QT_LIB'], debug = False)
634   
635   qt4env.Append(CPPPATH = [
636     '#$BUILDDIR/common',
637     '#$BUILDDIR/common/images',
638     '#$BUILDDIR/common/frontends',
639     '#$BUILDDIR/common/frontends/qt4',
640     '#$BUILDDIR/common/frontends/controllers',
641     '$QT_INC_PATH',
642     '$QT_INC_PATH/Qt',
643     '$QT_INC_PATH/QtCore',
644     '$QT_INC_PATH/QtGui']
645   )
646   
647   # FIXME: replace by something from pkg_config
648   qt4env.Append(CCFLAGS = [
649     '-DHAVE_CONFIG_H',
650     '-DQT_CLEAN_NAMESPACE',
651     '-DQT_GENUINE_STR',
652     '-DQT_NO_STL',
653     '-DQT3_SUPPORT',
654     '-Winvalid-pch']
655   )
656   
657   qt4_ui_files = Split('''
658     BiblioUi
659     BranchesUi
660     BulletsUi
661     TextLayoutUi
662     LanguageUi
663     LaTeXUi
664     MarginsUi
665     NumberingUi
666     MathsUi
667     PageLayoutUi
668     PreambleUi
669     QAboutUi
670     QAskForTextUi
671     QBibitemUi
672     QBibtexUi
673     QBibtexAddUi
674     QBoxUi
675     QBranchUi
676     QChangesUi
677     QCharacterUi
678     QCitationUi
679     QCitationFindUi
680     QDelimiterUi
681     QDocumentUi
682     QErrorListUi
683     QERTUi
684     QExternalUi
685     QFloatUi
686     QGraphicsUi
687     QIncludeUi
688     QIndexUi
689     QLogUi
690     QViewSourceUi
691     QMathUi
692     QMathMatrixUi
693     QNoteUi
694     QParagraphUi
695     QPrefAsciiUi
696     QPrefColorsUi
697     QPrefConvertersUi
698     QPrefCopiersUi
699     QPrefCygwinPathUi
700     QPrefDateUi
701     QPrefDisplayUi
702     QPrefFileformatsUi
703     QPrefIdentityUi
704     QPrefKeyboardUi
705     QPrefLanguageUi
706     QPrefLatexUi
707     QPrefPathsUi
708     QPrefPrinterUi
709     QPrefScreenFontsUi
710     QPrefsUi
711     QPrefSpellcheckerUi
712     QPrefUi
713     QPrintUi
714     QRefUi
715     QSearchUi
716     QSendtoUi
717     QShowFileUi
718     QSpellcheckerUi
719     QTabularCreateUi
720     QTabularUi
721     QTexinfoUi
722     QThesaurusUi
723     QTocUi
724     QURLUi
725     QVSpaceUi
726     QWrapUi
727   ''')
728   
729   qt4_moc_files = Split('''
730     BulletsModule.C
731     emptytable.C
732     FileDialog_private.C
733     floatplacement.C
734     iconpalette.C
735     lengthcombo.C
736     panelstack.C
737     QAboutDialog.C
738     QBibitemDialog.C
739     QBibtexDialog.C
740     QBoxDialog.C
741     QBranchDialog.C
742     QBranches.C
743     QChangesDialog.C
744     QCharacterDialog.C
745     QCitationDialog.C
746     QCommandBuffer.C
747     QCommandEdit.C
748     QDelimiterDialog.C
749     QDocumentDialog.C
750     QErrorListDialog.C
751     QERTDialog.C
752     QExternalDialog.C
753     QFloatDialog.C
754     QGraphicsDialog.C
755     QIncludeDialog.C
756     QIndexDialog.C
757     QLAction.C
758     QLogDialog.C
759     QViewSourceDialog.C
760     QViewSource.C
761     QLMenubar.C
762     QLPopupMenu.C
763     QLPrintDialog.C
764     QMathDialog.C
765     QMathMatrixDialog.C
766     QNoteDialog.C
767     QParagraphDialog.C
768     QPrefsDialog.C
769     QRefDialog.C
770     QSearchDialog.C
771     QSendtoDialog.C
772     qsetborder.C
773     QShowFileDialog.C
774     QSpellcheckerDialog.C
775     QDialogView.C
776     QTabularCreateDialog.C
777     QTabularDialog.C
778     QTexinfoDialog.C
779     QThesaurusDialog.C
780     TocModel.C
781     QTocDialog.C
782     QtView.C
783     QURLDialog.C
784     QVSpaceDialog.C
785     QWorkArea.C
786     QWrapDialog.C
787     QLToolbar.C
788     socket_callback.C
789     validators.C
790   ''')
791   
792   #
793   # Compile resources
794   #
795   for x in qt4_ui_files:
796     qt4env.Uic4('#$BUILDDIR/common/frontends/qt4/ui/' + x)
797   
798   qt4_source_files = Split('''
799     QDialogView.C
800     Alert_pimpl.C
801     Dialogs.C
802     FileDialog.C
803     LyXKeySymFactory.C
804     LyXScreenFactory.C
805     QLMenubar.C
806     qtTimeout.C
807     QAbout.C
808     QBibitem.C
809     QBibtex.C
810     QBox.C
811     QBranch.C
812     QBranches.C
813     QChanges.C
814     QCharacter.C
815     QCitation.C
816     QDocument.C
817     QErrorList.C
818     QERT.C
819     QExternal.C
820     QFloat.C
821     QGraphics.C
822     QInclude.C
823     QIndex.C
824     QLAction.C
825     QLImage.C
826     QLog.C
827     QViewSource.C
828     QLPainter.C
829     QLyXKeySym.C
830     QMath.C
831     QNote.C
832     QParagraph.C
833     QPrefs.C
834     QPrint.C
835     QRef.C
836     QSearch.C
837     QSendto.C
838     QShowFile.C
839     QSpellchecker.C
840     QTabular.C
841     QTabularCreate.C
842     QTexinfo.C
843     QThesaurus.C
844     QToc.C
845     QURL.C
846     QVSpace.C
847     QWorkArea.C
848     QWrap.C
849     Qt2BC.C
850     WorkAreaFactory.C
851     checkedwidgets.C
852     lyx_gui.C
853     lcolorcache.C
854     panelstack.C
855     qfontexample.C
856     qfont_loader.C
857     qfont_metrics.C
858     qscreen.C
859     qt_helpers.C
860   ''')
861   
862   qt4 = qt4env.StaticLibrary(
863     target = '$LOCALLIBPATH/qt4',
864     LIBS = qt4env['QT_LIB'],
865     source = ["#$BUILDDIR/common/frontends/qt4/%s" % x for x in qt4_source_files] + \
866        ["#$BUILDDIR/common/frontends/qt4/%s" % x for x in qt4_moc_files]
867    )
868
869
870 #
871 # src/client
872 #
873
874 if 'client' in env['BUILD_TARGETS']:
875   env.BuildDir('#$BUILDDIR/common', '$TOP_SRC_DIR/src', duplicate = 0)
876   
877   print "Processing files in src/client"
878   
879   lyxclient = env.Program(
880     target = '#$BUILDDIR/common/client/lyxclient',
881     LIBS = env['BOOST_LIBRARIES'] + env['socket_libs'],
882     source = ["#$BUILDDIR/common/client/%s" % x for x in Split('''
883       boost.C
884       client.C
885       debug.C
886       gettext.C
887       messages.C
888     ''')]
889   )
890   
891   env.copyFile('#$BUILDDIR/lyxclient', '#$BUILDDIR/common/client/lyxclient')
892  
893 #
894 # tex2lyx
895 #
896 if 'tex2lyx' in env['BUILD_TARGETS']:
897   print "Processing files in src/tex2lyx"
898   
899   tex2lyx_env = env.Copy()
900   # the order is important here.
901   tex2lyx_env.Prepend(CPPPATH = ['#$BUILDDIR/common/tex2lyx'])
902   tex2lyx_env.Append(LIBPATH = ['#$LOCALLIBPATH'])
903   
904   tex2lyx_env.fileCopy('#$BUILDDIR/common/tex2lyx/FloatList.C', 'src/FloatList.C')
905   tex2lyx_env.fileCopy('#$BUILDDIR/common/tex2lyx/Floating.C', 'src/Floating.C')
906   tex2lyx_env.fileCopy('#$BUILDDIR/common/tex2lyx/counters.C', 'src/counters.C')
907   # for some reason I do not know, I have to copy the header files as well.
908   tex2lyx_env.fileCopy('#$BUILDDIR/common/tex2lyx/lyxlayout.h', 'src/lyxlayout.h')
909   tex2lyx_env.fileCopy('#$BUILDDIR/common/tex2lyx/lyxlayout.C', 'src/lyxlayout.C')
910   tex2lyx_env.fileCopy('#$BUILDDIR/common/tex2lyx/lyxtextclass.h', 'src/lyxtextclass.h')
911   tex2lyx_env.fileCopy('#$BUILDDIR/common/tex2lyx/lyxtextclass.C', 'src/lyxtextclass.C')
912   tex2lyx_env.fileCopy('#$BUILDDIR/common/tex2lyx/lyxlex.C', 'src/lyxlex.C')
913   tex2lyx_env.fileCopy('#$BUILDDIR/common/tex2lyx/lyxlex_pimpl.C', 'src/lyxlex_pimpl.C')
914   
915   tex2lyx = tex2lyx_env.Program(
916     target = '#$BUILDDIR/common/tex2lyx/tex2lyx',
917     LIBS = ['supports'] + env['BOOST_LIBRARIES'] + env['SYSTEM_LIBS'],
918     source = ["#$BUILDDIR/common/tex2lyx/%s" % x for x in Split('''
919       FloatList.C
920       Floating.C
921       counters.C
922       lyxlayout.C
923       lyxtextclass.C
924       lyxlex.C
925       lyxlex_pimpl.C
926       boost.C
927       context.C
928       gettext.C
929       lengthcommon.C
930       lyxfont.C
931       texparser.C
932       tex2lyx.C
933       preamble.C
934       math.C
935       table.C
936       text.C
937     ''')]
938   )
939
940 #
941 # src/
942 #
943
944 print "Processing files in src"
945
946 env['SUBST_KEYS'] = ['PACKAGE_VERSION', 'VERSION_INFO']
947 env.substFile('#$BUILDDIR/common/version.C', '$TOP_SRC_DIR/src/version.C.in')
948
949 lyx_source = Split('''
950   Bidi.C
951   BufferView.C
952   BufferView_pimpl.C
953   Bullet.C
954   BranchList.C
955   Chktex.C
956   Color.C
957   CutAndPaste.C
958   DepTable.C
959   FloatList.C
960   Floating.C
961   FontIterator.C
962   FuncStatus.C
963   InsetList.C
964   LColor.C
965   LaTeX.C
966   LaTeXFeatures.C
967   LyXAction.C
968   MenuBackend.C
969   ParagraphParameters.C
970   PrinterParams.C
971   Spacing.C
972   Thesaurus.C
973   ToolbarBackend.C
974   author.C
975   boost.C
976   box.C
977   buffer.C
978   buffer_funcs.C
979   bufferlist.C
980   bufferparams.C
981   bufferview_funcs.C
982   changes.C
983   chset.C
984   converter.C
985   counters.C
986   coordcache.C
987   cursor.C
988   cursor_slice.C
989   debug.C
990   dimension.C
991   dociterator.C
992   encoding.C
993   errorlist.C
994   exporter.C
995   gettext.C
996   factory.C
997   format.C
998   funcrequest.C
999   graph.C
1000   importer.C
1001   intl.C
1002   insetiterator.C
1003   kbmap.C
1004   kbsequence.C
1005   language.C
1006   session.C
1007   lengthcommon.C
1008   lyx_cb.C
1009   lyx_main.C
1010   lyx_sty.C
1011   lyxfont.C
1012   lyxfind.C
1013   lyxfunc.C
1014   lyxgluelength.C
1015   lyxlayout.C
1016   lyxlength.C
1017   lyxlex.C
1018   lyxlex_pimpl.C
1019   lyxrc.C
1020   lyxrow.C
1021   lyxrow_funcs.C
1022   lyxserver.C
1023   lyxsocket.C
1024   lyxtextclass.C
1025   lyxtextclasslist.C
1026   lyxvc.C
1027   messages.C
1028   metricsinfo.C
1029   mover.C
1030   output.C
1031   outputparams.C
1032   output_docbook.C
1033   output_latex.C
1034   output_linuxdoc.C
1035   output_plaintext.C
1036   paragraph.C
1037   paragraph_funcs.C
1038   paragraph_pimpl.C
1039   pariterator.C
1040   SpellBase.C
1041   rowpainter.C
1042   sgml.C
1043   tabular.C
1044   tex-accent.C
1045   tex-strings.C
1046   texrow.C
1047   text.C
1048   text2.C
1049   text3.C
1050   TocBackend.C
1051   toc.C
1052   trans.C
1053   trans_mgr.C
1054   undo.C
1055   vc-backend.C
1056   version.C
1057   vspace.C
1058   main.C
1059 ''')
1060
1061 if env.has_key('USE_ASPELL') and env['USE_ASPELL']:
1062   lyx_source.append('aspell.C')
1063 elif env.has_key('USE_PSPELL') and env['USE_PSPELL']:
1064   lyx_source.append('pspell.C')
1065 elif env.has_key('USE_ISPELL') and env['USE_ISPELL']:
1066   lyx_source.append('ispell.C')
1067
1068 env.BuildDir('#$BUILDDIR/common', '$TOP_SRC_DIR/src', duplicate = 0)
1069 #
1070 # Build lyx with given frontend
1071 #
1072 lyx = env.Program(
1073   target = '#$BUILDDIR/$frontend/lyx',
1074   source = ["#$BUILDDIR/common/%s" % x for x in lyx_source],
1075   LIBS = [
1076     'mathed',
1077     'insets',
1078     'frontends',
1079     env['frontend'],
1080     'controllers',
1081     'graphics',
1082     'supports'] +
1083     env['BOOST_LIBRARIES'] +
1084     env['EXTRA_LIBS'] +
1085     env['SYSTEM_LIBS']
1086 )
1087