summaryrefslogtreecommitdiff
path: root/qt/tmake
Side-by-side diff
Diffstat (limited to 'qt/tmake') (more/less context) (ignore whitespace changes)
-rw-r--r--qt/tmake/propagate.t368
1 files changed, 368 insertions, 0 deletions
diff --git a/qt/tmake/propagate.t b/qt/tmake/propagate.t
new file mode 100644
index 0000000..1efadaa
--- a/dev/null
+++ b/qt/tmake/propagate.t
@@ -0,0 +1,368 @@
+#############################################################################
+#!
+#! This is a tmake template for building UNIX libraries.
+#!
+#! Actually, it will be trivial to make app vs. lib a config option.
+#!
+#${
+ Project('CONFIG *= propagate');
+ $project{"TMAKE_CXXFLAGS"} = "";
+ $project{"TMAKE_CFLAGS"} = "";
+ $project{"TMAKE_LFLAGS"} = "";
+ $project{"TMAKE_LIBS"} = "";
+
+ Project('TMAKE_LIBS += $$LIBS'); # Misc. project-specific extras
+
+ if ( !Project("INTERFACE_DECL_PATH") ) {
+ Project('INTERFACE_DECL_PATH = .' );
+ }
+ if ( Config("qgl") ) {
+ #! qgl apps need X11 includes and libraries
+ Project('CONFIG *= x11lib');
+ Project('CONFIG *= x11inc');
+ }
+
+ if ( Config("x11") ) {
+ Project('CONFIG *= x11lib');
+ Project('CONFIG *= x11inc');
+ }
+ if ( Config("opengl") ) {
+ Project('TMAKE_CXXFLAGS *= $(SYSCONF_CXXFLAGS_OPENGL)');
+ Project('TMAKE_LFLAGS *= $(SYSCONF_LFLAGS_OPENGL)');
+ Project('TMAKE_LIBS *= $(SYSCONF_LIBS_OPENGL)');
+ }
+ if ( Config("qt") ) {
+ $moc_aware = 1;
+ Project('TMAKE_CXXFLAGS *= $(SYSCONF_CXXFLAGS_QT)');
+ if ( Project("TARGET") ne "qt"
+ && Project("TARGET") ne "qte" ) {
+ Project('TMAKE_LFLAGS *= $(SYSCONF_LFLAGS_QT)');
+ Project('TMAKE_LFLAGS *= $(SYSCONF_RPATH_QT)');
+ Project('TMAKE_LIBS *= $(SYSCONF_LIBS_QT)');
+ }
+ } elsif ( Config("qtinc") ) {
+ Project('TMAKE_CXXFLAGS *= $(SYSCONF_CXXFLAGS_QT)');
+ }
+ if ( Config("x11inc") ) {
+ Project('TMAKE_CXXFLAGS *= $(SYSCONF_CXXFLAGS_X11)');
+ }
+ if ( Config("x11lib") ) {
+ Project('TMAKE_LFLAGS *= $(SYSCONF_LFLAGS_X11)');
+ Project('TMAKE_LFLAGS *= $(SYSCONF_RPATH_X11)');
+ Project('TMAKE_LIBS *= $(SYSCONF_LIBS_X11)');
+ }
+
+ ##### These may still need replacing
+ if ( !Project("TMAKE_RUN_CC") ) {
+ Project('TMAKE_RUN_CC = $(CC) -c $(CFLAGS) $(INCPATH) -o $obj $src');
+ }
+ if ( !Project("TMAKE_RUN_CC_IMP") ) {
+ Project('TMAKE_RUN_CC_IMP = $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<');
+ }
+ if ( !Project("TMAKE_RUN_CXX") ) {
+ Project('TMAKE_RUN_CXX = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $obj $src');
+ }
+ if ( !Project("TMAKE_RUN_CXX_IMP") ) {
+ Project('TMAKE_RUN_CXX_IMP = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<');
+ }
+
+ Project('TMAKE_FILETAGS = HEADERS SOURCES TARGET DESTDIR $$FILETAGS');
+ Project('DESTDIR = ./') unless Project('DESTDIR');
+
+ if ( Config("embedded") && Project("PRECOMPH") ) {
+ Project('SOURCES += allmoc.cpp');
+ $project{'HEADERS_ORIG'} = Project('HEADERS');
+ $project{'HEADERS'} = "";
+ }
+
+ StdInit();
+
+ if ( Config("qt") ) {
+ if ( Project("TARGET") eq "qt"
+ || Project("TARGET") eq "qte" ) {
+ $project{"PNG_OBJECTS"} = &Objects($project{"PNG_SOURCES"});
+ $project{"ZLIB_OBJECTS"} = &Objects($project{"ZLIB_SOURCES"});
+ $project{"FT_OBJECTS"} = &Objects($project{"FT_SOURCES"});
+ }
+ }
+
+ my ($module,$label);
+ for $module ( split / /, $project{"MODULES"} ) {
+ for $label ( "HEADERS", "OBJECTS", "OBJMOC", "SOURCES", "SRCMOC" ) {
+ my $o = "";
+ my $p = $project{$label};
+ while ( $p =~ s/\s*\b($module\/\S*)// ) {
+ $o .= " " if $o;
+ $o .= "$1";
+ }
+ $p =~ s/^ *//;
+ $p =~ s/ *$//;
+ $project{$label} = $p;
+ $project{"${label}_${module}"} = $o;
+ }
+ }
+
+ $project{"DESTDIR"} = FixPath($project{"DESTDIR"});
+ $project{"VERSION"} || ($project{"VERSION"} = "1.0.0");
+ ($project{"VER_MAJ"},
+ $project{"VER_MIN"},
+ $project{"VER_PATCH"}) = $project{"VERSION"} =~ /(\d+)\.(\d+)(?:\.(\d+))?/;
+ $project{"VER_PATCH"} = 0 if !$project{"VER_PATCH"};
+ if ( Config("dll") ) {
+ Project('TMAKE_CXXFLAGS *= $(SYSCONF_CXXFLAGS_SHOBJ)' );
+ Project('TMAKE_CFLAGS *= $(SYSCONF_CFLAGS_SHOBJ)' );
+ Project('TMAKE_LFLAGS *= $(SYSCONF_LFLAGS_SHOBJ)');
+ }
+ if ( Config("yacc") ) {
+ Project('TMAKE_CXXFLAGS *= $(SYSCONF_CXXFLAGS_YACC)' );
+ Project('TMAKE_LIBS *= $(SYSCONF_LIBS_YACC)' );
+ }
+ Project('TMAKE_CXXFLAGS *= $(SYSCONF_CXXFLAGS)' );
+ Project('TMAKE_CFLAGS *= $(SYSCONF_CFLAGS)' );
+ Project('TMAKE_LFLAGS *= $(SYSCONF_LFLAGS)' );
+ if ( Project('TEMPLATE') eq "lib" || Project('TEMPLATE') eq "qt.t" ) {
+ Project('TMAKE_CXXFLAGS *= $(SYSCONF_CXXFLAGS_LIB)' );
+ Project('TMAKE_CFLAGS *= $(SYSCONF_CFLAGS_LIB)' );
+ } else {
+ Project('TMAKE_LIBS *= $(SYSCONF_LIBS)' );
+ }
+#$}
+
+####### Compiler, tools and options
+
+CXX = $(SYSCONF_CXX) $(QT_CXX_MT)
+CXXFLAGS= #$ Expand("TMAKE_CXXFLAGS"); ExpandGlue("DEFINES","-D"," -D",""); (Project("TARGET") eq "qt" || Project("TARGET") eq "qte") && ($text = $text . ' $(QT_CXXFLAGS_OPT)');
+CC = $(SYSCONF_CC) $(QT_C_MT)
+CFLAGS = #$ Expand("TMAKE_CFLAGS"); ExpandGlue("DEFINES","-D"," -D",""); (Project("TARGET") eq "qt" || Project("TARGET") eq "qte") && ($text = $text . ' $(QT_CFLAGS_OPT)');
+INCPATH = #$ ExpandGlue("INCPATH","-I"," -I","");
+LFLAGS = #$ Expand("TMAKE_LFLAGS"); $text .= ' $(QT_LFLAGS_MT)'
+LIBS = $(SUBLIBS) #${
+ Expand("TMAKE_LIBS");
+ if (Project("TARGET") eq "qt" || Project("TARGET") eq "qte") {
+ $text .= ' $(SYSCONF_LIBS_QTLIB)';
+ } else {
+ $text .= ' $(SYSCONF_LIBS_QTAPP)';
+ }
+#$}
+MOC = $(SYSCONF_MOC)
+UIC = $(SYSCONF_UIC)
+
+####### Target
+
+DESTDIR = #$ Expand("DESTDIR");
+VER_MAJ = #$ Expand("VER_MAJ");
+VER_MIN = #$ Expand("VER_MIN");
+VER_PATCH = #$ Expand("VER_PATCH");
+TARGET = #$ Expand("TARGET"); $text .= '$(QT_THREAD_SUFFIX)' if Project("TARGET") eq "qt" || Project("TARGET") eq "qte";
+TARGET1 = lib$(TARGET).so.$(VER_MAJ)
+
+####### Files
+
+HEADERS = #$ ExpandList("HEADERS");
+SOURCES = #$ ExpandList("SOURCES");
+OBJECTS = #$ ExpandList("OBJECTS"); (Project("TARGET") eq "qt" || Project("TARGET") eq "qte") && ($text = $text . ' $(QT_MODULE_OBJ)');
+INTERFACES = #$ ExpandList("INTERFACES");
+UICDECLS = #$ ExpandList("UICDECLS");
+UICIMPLS = #$ ExpandList("UICIMPLS");
+SRCMOC = #$ ExpandList("SRCMOC");
+OBJMOC = #$ ExpandList("OBJMOC");
+#$ if (Project("TARGET") ne "qt" && Project("TARGET") ne "qte") { DisableOutput(); }
+PNG_OBJECTS = #$ ExpandList("PNG_OBJECTS");
+ZLIB_OBJECTS = #$ ExpandList("ZLIB_OBJECTS");
+FT_OBJECTS = #$ ExpandList("FT_OBJECTS");
+#$ if (Project("TARGET") ne "qt" && Project("TARGET") ne "qte") { EnableOutput(); }
+
+#${
+ my $module;
+ $t = "";
+ for $module ( split / /, $project{"MODULES"} ) {
+ $t .= "\nOBJECTS_$module = ";
+ $text = "";
+ ExpandList("OBJECTS_$module");
+ $t .= $text;
+ if ( Project("OBJMOC_$module") ) {
+ $text = "";
+ ExpandList("OBJMOC_$module");
+ $t .= " \\\n\t\t$text";
+ }
+ }
+ $text = "$t\n";
+#$}
+
+####### Implicit rules
+
+.SUFFIXES: .cpp .cxx .cc .C .c
+
+.cpp.o:
+ #$ Expand("TMAKE_RUN_CXX_IMP");
+
+.cxx.o:
+ #$ Expand("TMAKE_RUN_CXX_IMP");
+
+.cc.o:
+ #$ Expand("TMAKE_RUN_CXX_IMP");
+
+.C.o:
+ #$ Expand("TMAKE_RUN_CXX_IMP");
+
+.c.o:
+ #$ Expand("TMAKE_RUN_CC_IMP");
+
+####### Build rules
+
+#${
+ if ( Project("SUBLIBS") ) {
+ $text = "SUBLIBS=";
+ for $m ( split / /, Project("SUBLIBS") ) {
+ $text .= "tmp/lib$m.a ";
+ }
+ $text .= "\n";
+ }
+#$}
+
+#${
+ if ( Project('TEMPLATE') eq "lib" || Project('TEMPLATE') eq "qt.t" ) {
+ $targ='$(SYSCONF_LINK_TARGET)';
+ } else {
+ if ( Config('dll') ) {
+ if ($is_unix) {
+ $targ = '$(TARGET)' . ".so";
+ } else {
+ $targ = '$(TARGET)' . ".dll";
+ $targ = "np" . $targ if Config('np');
+ }
+ } else {
+ $targ = '$(TARGET)';
+ }
+ }
+ $targ = '$(DESTDIR)'.$targ;
+ $text .= 'all: ';
+ ExpandGlue("ALL_DEPS",""," "," ");
+ $text .= $targ . "\n\n";
+ $text .= $targ . ': $(UICDECLS) $(OBJECTS) $(OBJMOC) $(SUBLIBS)';
+ Expand("TARGETDEPS");
+ $text .= "\n\t";
+ if ( Project('TEMPLATE') eq "lib" || Project('TEMPLATE') eq "qt.t" ) {
+ $text .= '$(SYSCONF_LINK_LIB)';
+ } else {
+ $text .= '$(SYSCONF_LINK) $(LFLAGS) ';
+ $text .= '-o '.$targ.' $(OBJECTS) $(OBJMOC) $(LIBS)';
+ }
+#$}
+
+moc: $(SRCMOC)
+
+#$ TmakeSelf();
+
+clean:
+ -rm -f $(OBJECTS) $(OBJMOC) $(SRCMOC) $(UICIMPLS) $(UICDECLS)
+ #$ ExpandGlue("TMAKE_CLEAN","-rm -f "," ","");
+ -rm -f *~ core
+ #$ ExpandGlue("CLEAN_FILES","-rm -f "," ","");
+ -rm -f allmoc.cpp
+
+####### Extension Modules
+
+listpromodules:
+ @echo #$ ExpandList("MODULES_BASE"); ExpandList("MODULES_PRO");
+
+listallmodules:
+ @echo #$ ExpandList("MODULES");
+
+listaddonpromodules:
+ @echo #$ ExpandList("MODULES_PRO");
+
+listaddonentmodules:
+ @echo #$ ExpandList("MODULES_PRO"); ExpandList("MODULES_ENT");
+
+
+REQUIRES=#$ $text .= Project("REQUIRES");
+
+####### Sub-libraries
+
+#${
+ if ( Project("SUBLIBS") ) {
+ for $m ( split / /, Project("SUBLIBS") ) {
+ $text .= "tmp/lib$m.a:\n\t";
+ if ( $m eq "freetype" ) {
+ $text .= '$(MAKE) -C 3rdparty/freetype2 \
+ CONFIG_MK=config$(DASHCROSS).mk OBJ_DIR=../../tmp \
+ ../../tmp/libfreetype.a'."\n";
+ } else {
+ if ( Config('embedded') ) {
+ if ( $m eq "z" ) {
+ $text .= '$(MAKE) -C 3rdparty/zlib -f Makefile$(DASHCROSS); \
+ cp 3rdparty/zlib/libz.a tmp'."\n";
+ }
+ if ( $m eq "png" ) {
+ $text .= '$(MAKE) -C 3rdparty/libpng \
+ -f scripts/makefile.linux$(DASHCROSS); \
+ cp 3rdparty/libpng/libpng.a tmp'."\n";
+ }
+ if ( $m eq "mng" ) {
+ $text .= '$(MAKE) -C 3rdparty/libmng \
+ -f makefiles/makefile.linux$(DASHCROSS); \
+ cp 3rdparty/libmng/libmng.a tmp'."\n";
+ }
+ if ( $m eq "jpeg" ) {
+ $text .= '$(MAKE) -C 3rdparty/jpeglib -f makefile.unix$(DASHCROSS); \
+ cp 3rdparty/jpeglib/libjpeg.a tmp'."\n";
+ }
+ } else {
+ $text .= $project{"MAKELIB$m"}."\n";
+ }
+ }
+
+ }
+ }
+#$}
+
+###### Combined headers
+
+#${
+ if ( Config("embedded") && Project("PRECOMPH") ) {
+ $t = "allmoc.cpp: ".Project("PRECOMPH")." ".$original_HEADERS;
+ ExpandList("HEADERS_ORIG");
+ $t.= $text;
+ $t.= "\n\techo '#include \"".Project("PRECOMPH")."\"' >allmoc.cpp";
+ $t.= "\n\t\$(CXX) -E -DQT_MOC_CPP \$(CXXFLAGS) \$(INCPATH) >allmoc.h allmoc.cpp";
+ $t.= "\n\t\$(MOC) -o allmoc.cpp allmoc.h";
+ $t.= "\n\tperl -pi -e 's{\"allmoc.h\"}{\"".Project("PRECOMPH")."\"}' allmoc.cpp";
+ $t.= "\n\trm allmoc.h";
+ $t.= "\n";
+ $text = $t;
+ }
+#$}
+
+
+####### Compile
+
+#$ BuildObj(Project("OBJECTS"),Project("SOURCES"));
+#$ BuildUicSrc(Project("INTERFACES"));
+#$ BuildObj(Project("UICOBJECTS"),Project("UICIMPLS"));
+#$ BuildMocObj(Project("OBJMOC"),Project("SRCMOC"));
+#$ BuildMocSrc(Project("HEADERS"));
+#$ BuildMocSrc(Project("SOURCES"));
+#$ BuildMocSrc(Project("UICDECLS"));
+#$ if (Project("TARGET") ne "qt" && Project("TARGET") ne "qte") { DisableOutput(); }
+#$ Project("PNG_SOURCES") && BuildObj(Project("PNG_OBJECTS"),Project("PNG_SOURCES"));
+#$ Project("ZLIB_SOURCES") && BuildObj(Project("ZLIB_OBJECTS"),Project("ZLIB_SOURCES"));
+#$ Project("FT_SOURCES") && BuildObj(Project("FT_OBJECTS"),Project("FT_SOURCES"));
+#$ if (Project("TARGET") ne "qt" && Project("TARGET") ne "qte") { EnableOutput(); }
+
+#${
+ my $module;
+ $t = "";
+ for $module ( split / /, $project{"MODULES"} ) {
+ $t .= "\n# Module $module...\n";
+ $text = ""; BuildMocObj(Project("OBJMOC_$module"),Project("SRCMOC_$module"));
+ $t .= $text;
+ $text = ""; BuildMocSrc(Project("HEADERS_$module"));
+ $t .= $text;
+ $text = ""; BuildMocSrc(Project("SOURCES_$module"));
+ $t .= $text;
+ $text = ""; BuildObj(Project("OBJECTS_$module"),Project("SOURCES_$module"));
+ $t .= $text;
+ $text = $t;
+ }
+#$}