|
1 #! |
|
2 #! This is a tmake template for building Win32 applications or libraries. |
|
3 #! |
|
4 #${ |
|
5 if ( Config("qt") ) { |
|
6 if ( !(Project("DEFINES") =~ /QT_NODLL/) && |
|
7 ((Project("DEFINES") =~ /QT_(?:MAKE)?DLL/) || |
|
8 ($ENV{"QT_DLL"} && !$ENV{"QT_NODLL"})) ) { |
|
9 Project('TMAKE_QT_DLL = 1'); |
|
10 if ( (Project("TARGET") eq "qt") && Project("TMAKE_LIB_FLAG") ) { |
|
11 Project('CONFIG += dll'); |
|
12 } |
|
13 } |
|
14 } |
|
15 if ( Config("dll") || Project("TMAKE_APP_FLAG") ) { |
|
16 Project('CONFIG -= staticlib'); |
|
17 Project('TMAKE_APP_OR_DLL = 1'); |
|
18 } else { |
|
19 Project('CONFIG += staticlib'); |
|
20 } |
|
21 if ( Config("warn_off") ) { |
|
22 Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_WARN_OFF'); |
|
23 Project('TMAKE_CXXFLAGS += $$TMAKE_CXXFLAGS_WARN_OFF'); |
|
24 } elsif ( Config("warn_on") ) { |
|
25 Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_WARN_ON'); |
|
26 Project('TMAKE_CXXFLAGS += $$TMAKE_CXXFLAGS_WARN_ON'); |
|
27 } |
|
28 if ( Config("debug") ) { |
|
29 Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_DEBUG'); |
|
30 Project('TMAKE_CXXFLAGS += $$TMAKE_CXXFLAGS_DEBUG'); |
|
31 Project('TMAKE_LFLAGS += $$TMAKE_LFLAGS_DEBUG'); |
|
32 } elsif ( Config("release") ) { |
|
33 Project('TMAKE_CFLAGS += $$TMAKE_CFLAGS_RELEASE'); |
|
34 Project('TMAKE_CXXFLAGS += $$TMAKE_CXXFLAGS_RELEASE'); |
|
35 Project('TMAKE_LFLAGS += $$TMAKE_LFLAGS_RELEASE'); |
|
36 } |
|
37 if ( Config("qt") || Config("opengl") ) { |
|
38 Project('CONFIG += windows' ); |
|
39 } |
|
40 if ( Config("qt") ) { |
|
41 Project('CONFIG *= moc'); |
|
42 AddIncludePath(Project("TMAKE_INCDIR_QT")); |
|
43 if ( Config("release") ) { |
|
44 Project('DEFINES += NO_DEBUG'); |
|
45 } |
|
46 if ( Config("opengl") ) { |
|
47 Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT_OPENGL'); |
|
48 } |
|
49 if ( (Project("TARGET") eq "qt") && Project("TMAKE_LIB_FLAG") ) { |
|
50 if ( Project("TMAKE_QT_DLL") ) { |
|
51 Project('DEFINES -= QT_DLL'); |
|
52 Project('DEFINES *= QT_MAKEDLL'); |
|
53 Project('TMAKE_LFLAGS += $$TMAKE_LFLAGS_QT_DLL'); |
|
54 } |
|
55 } else { |
|
56 if ( Project("TMAKE_QT_DLL") ) { |
|
57 Project('DEFINES *= QT_DLL'); |
|
58 } |
|
59 Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT'); |
|
60 if ( Project("TMAKE_QT_DLL") ) { |
|
61 my $qtver =FindHighestLibVersion($ENV{"QTDIR"} . "/lib", "qt"); |
|
62 Project("TMAKE_LIBS /= s/qt.lib/qt${qtver}.lib/"); |
|
63 if ( !Config("dll") ) { |
|
64 Project('TMAKE_LIBS *= $$TMAKE_LIBS_QT_DLL'); |
|
65 } |
|
66 } |
|
67 } |
|
68 } |
|
69 if ( Config("opengl") ) { |
|
70 Project('TMAKE_LIBS *= $$TMAKE_LIBS_OPENGL'); |
|
71 } |
|
72 if ( Config("dll") ) { |
|
73 Project('TMAKE_LFLAGS_CONSOLE_ANY = $$TMAKE_LFLAGS_CONSOLE_DLL'); |
|
74 Project('TMAKE_LFLAGS_WINDOWS_ANY = $$TMAKE_LFLAGS_WINDOWS_DLL'); |
|
75 if ( Project("TMAKE_LIB_FLAG") ) { |
|
76 my $ver = Project("VERSION"); |
|
77 $ver =~ s/\.//g; |
|
78 $project{"TARGET_EXT"} = "${ver}.dll"; |
|
79 } else { |
|
80 $project{"TARGET_EXT"} = ".dll"; |
|
81 } |
|
82 } else { |
|
83 Project('TMAKE_LFLAGS_CONSOLE_ANY = $$TMAKE_LFLAGS_CONSOLE'); |
|
84 Project('TMAKE_LFLAGS_WINDOWS_ANY = $$TMAKE_LFLAGS_WINDOWS'); |
|
85 if ( Project("TMAKE_APP_FLAG") ) { |
|
86 $project{"TARGET_EXT"} = ".exe"; |
|
87 } else { |
|
88 $project{"TARGET_EXT"} = ".a"; |
|
89 } |
|
90 } |
|
91 if ( Config("windows") ) { |
|
92 if ( Config("console") ) { |
|
93 Project('TMAKE_LFLAGS *= $$TMAKE_LFLAGS_CONSOLE_ANY'); |
|
94 Project('TMAKE_LIBS *= $$TMAKE_LIBS_CONSOLE'); |
|
95 } else { |
|
96 Project('TMAKE_LFLAGS *= $$TMAKE_LFLAGS_WINDOWS_ANY'); |
|
97 } |
|
98 Project('TMAKE_LIBS *= $$TMAKE_LIBS_WINDOWS'); |
|
99 } else { |
|
100 Project('TMAKE_LFLAGS *= $$TMAKE_LFLAGS_CONSOLE_ANY'); |
|
101 Project('TMAKE_LIBS *= $$TMAKE_LIBS_CONSOLE'); |
|
102 } |
|
103 if ( Config("moc") ) { |
|
104 $moc_aware = 1; |
|
105 } |
|
106 Project('TMAKE_LIBS += $$LIBS'); |
|
107 Project('TMAKE_FILETAGS = HEADERS SOURCES DEF_FILE RC_FILE TARGET TMAKE_LIBS DESTDIR DLLDESTDIR $$FILETAGS'); |
|
108 foreach ( split(/\s/,Project("TMAKE_FILETAGS")) ) { |
|
109 $project{$_} =~ s-[/\\]+-/-g; |
|
110 } |
|
111 if ( Project("DEF_FILE") ) { |
|
112 Project('TMAKE_LFLAGS *= $$DEF_FILE'); |
|
113 } |
|
114 if ( Project("RC_FILE") ) { |
|
115 if ( Project("RES_FILE") ) { |
|
116 tmake_error("Both .rc and .res file specified.\n" . |
|
117 "Please specify one of them, not both."); |
|
118 } |
|
119 $project{"RES_FILE"} = $project{"RC_FILE"}; |
|
120 $project{"RES_FILE"} =~ s/\.rc$/.res/i; |
|
121 Project('TARGETDEPS += $$RES_FILE'); |
|
122 } |
|
123 if ( Project("RES_FILE") ) { |
|
124 Project('TMAKE_LIBS *= $$RES_FILE'); |
|
125 } |
|
126 $obj_ext = "o"; |
|
127 $dir_sep = "/"; |
|
128 $gnuwin32 = 1; |
|
129 if ( Config("qt") ) { |
|
130 $qtdir = $ENV{"QTDIR"}; |
|
131 $project{"INCPATH"} =~ s/\$\(QTDIR\)/$qtdir/; |
|
132 $project{"INCPATH"} =~ s/\\/\//g; |
|
133 $project{"TMAKE_LIBS"} =~ s/\$\(QTDIR\)/$qtdir/; |
|
134 $project{"TMAKE_LIBS"} =~ s/\\/\//g; |
|
135 } |
|
136 StdInit(); |
|
137 if ( Project("VERSION") ) { |
|
138 $project{"VER_MAJ"} = $project{"VERSION"}; |
|
139 $project{"VER_MAJ"} =~ s/\.\d+$//; |
|
140 $project{"VER_MIN"} = $project{"VERSION"}; |
|
141 $project{"VER_MIN"} =~ s/^\d+\.//; |
|
142 } |
|
143 if ( Config("staticlib") ) { |
|
144 $project{"TARGET"} = $project{"DESTDIR"} . "lib" . $project{"TARGET"}; |
|
145 } else { |
|
146 $project{"TARGET"} = $project{"DESTDIR"} . $project{"TARGET"}; |
|
147 } |
|
148 #$} |
|
149 #! |
|
150 # Makefile for building #$ Expand("TARGET") |
|
151 # Generated by tmake at #$ Now(); |
|
152 # Project: #$ Expand("PROJECT"); |
|
153 # Template: #$ Expand("TEMPLATE"); |
|
154 ############################################################################# |
|
155 |
|
156 ####### Compiler, tools and options |
|
157 |
|
158 CC = #$ Expand("TMAKE_CC"); |
|
159 CXX = #$ Expand("TMAKE_CXX"); |
|
160 CFLAGS = #$ Expand("TMAKE_CFLAGS"); ExpandGlue("DEFINES","-D"," -D",""); |
|
161 CXXFLAGS= #$ Expand("TMAKE_CXXFLAGS"); ExpandGlue("DEFINES","-D"," -D",""); |
|
162 INCPATH = #$ ExpandPath("INCPATH",'-I',' -I',''); |
|
163 #$ !Project("TMAKE_APP_OR_DLL") && DisableOutput(); |
|
164 LINK = #$ Expand("TMAKE_LINK"); |
|
165 LFLAGS = #$ Expand("TMAKE_LFLAGS"); |
|
166 LIBS = #$ Expand("TMAKE_LIBS"); |
|
167 #$ !Project("TMAKE_APP_OR_DLL") && EnableOutput(); |
|
168 #$ Project("TMAKE_APP_OR_DLL") && DisableOutput(); |
|
169 AR = #$ Expand("TMAKE_AR"); |
|
170 RANLIB = #$ Expand("TMAKE_RANLIB"); |
|
171 #$ Project("TMAKE_APP_OR_DLL") && EnableOutput(); |
|
172 MOC = #$ Expand("TMAKE_MOC"); |
|
173 |
|
174 ZIP = #$ Expand("TMAKE_ZIP"); |
|
175 |
|
176 ####### Files |
|
177 |
|
178 HEADERS = #$ ExpandList("HEADERS"); |
|
179 SOURCES = #$ ExpandList("SOURCES"); |
|
180 OBJECTS = #$ ExpandList("OBJECTS"); |
|
181 SRCMOC = #$ ExpandList("SRCMOC"); |
|
182 OBJMOC = #$ ExpandList("OBJMOC"); |
|
183 DIST = #$ ExpandList("DISTFILES"); |
|
184 TARGET = #$ ExpandGlue("TARGET",$project{"DESTDIR"},"",$project{"TARGET_EXT"}); |
|
185 |
|
186 ####### Implicit rules |
|
187 |
|
188 .SUFFIXES: .cpp .cxx .cc .c |
|
189 |
|
190 .cpp.o: |
|
191 #$ Expand("TMAKE_RUN_CXX_IMP"); |
|
192 |
|
193 .cxx.o: |
|
194 #$ Expand("TMAKE_RUN_CXX_IMP"); |
|
195 |
|
196 .cc.o: |
|
197 #$ Expand("TMAKE_RUN_CXX_IMP"); |
|
198 |
|
199 .c.o: |
|
200 #$ Expand("TMAKE_RUN_CC_IMP"); |
|
201 |
|
202 ####### Build rules |
|
203 |
|
204 all: #$ ExpandGlue("ALL_DEPS",""," "," "); $text .= '$(TARGET)'; |
|
205 |
|
206 $(TARGET): $(OBJECTS) $(OBJMOC) #$ Expand("TARGETDEPS"); |
|
207 #$ Project("TMAKE_APP_OR_DLL") || DisableOutput(); |
|
208 $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS) |
|
209 #$ Project("TMAKE_APP_OR_DLL") || EnableOutput(); |
|
210 #$ Project("TMAKE_APP_OR_DLL") && DisableOutput(); |
|
211 -rm -f $(TARGET) |
|
212 $(AR) $(TARGET) $(OBJECTS) $(OBJMOC) |
|
213 #$ ExpandGlue("TMAKE_RANLIB","",""," \$(TARGET)"); |
|
214 #$ Project("TMAKE_APP_OR_DLL") && EnableOutput(); |
|
215 #$ (Config("dll") && Project("DLLDESTDIR")) || DisableOutput(); |
|
216 -cp $(TARGET) #$ Expand("DLLDESTDIR"); |
|
217 #$ (Config("dll") && Project("DLLDESTDIR")) || EnableOutput(); |
|
218 #$ Project('RC_FILE') || DisableOutput(); |
|
219 |
|
220 #$ Substitute("\$\$RES_FILE: \$\$RC_FILE\n\t\$\$TMAKE_RC \$\$RC_FILE"); |
|
221 #$ Project('RC_FILE') || EnableOutput(); |
|
222 |
|
223 moc: $(SRCMOC) |
|
224 |
|
225 #$ TmakeSelf(); |
|
226 |
|
227 dist: |
|
228 #$ Substitute('$(ZIP) $$PROJECT.zip $$PROJECT.pro $(SOURCES) $(HEADERS) $(DIST)'); |
|
229 |
|
230 clean: |
|
231 -rm -f $(OBJECTS) $(OBJMOC) $(SRCMOC) $(TARGET) |
|
232 #$ ExpandGlue("TMAKE_CLEAN","-rm -f "," ",""); |
|
233 -rm -f *~ core |
|
234 #$ ExpandGlue("CLEAN_FILES","-rm -f "," ",""); |
|
235 |
|
236 ####### Compile |
|
237 |
|
238 #$ BuildObj(Project("OBJECTS"),Project("SOURCES")); |
|
239 #$ BuildMocObj(Project("OBJMOC"),Project("SRCMOC")); |
|
240 #$ BuildMocSrc(Project("HEADERS")); |
|
241 #$ BuildMocSrc(Project("SOURCES")); |