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