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