79 UnixMakefileGenerator::writeMakefile(QTextStream &t) |
79 UnixMakefileGenerator::writeMakefile(QTextStream &t) |
80 { |
80 { |
81 |
81 |
82 writeHeader(t); |
82 writeHeader(t); |
83 if(!project->values("QMAKE_FAILED_REQUIREMENTS").isEmpty()) { |
83 if(!project->values("QMAKE_FAILED_REQUIREMENTS").isEmpty()) { |
84 t << "QMAKE = " << (project->isEmpty("QMAKE_QMAKE") ? QString("qmake") : var("QMAKE_QMAKE")) << endl; |
84 t << "QMAKE = " << var("QMAKE_QMAKE") << endl; |
85 QStringList &qut = project->values("QMAKE_EXTRA_TARGETS"); |
85 QStringList &qut = project->values("QMAKE_EXTRA_TARGETS"); |
86 for(QStringList::ConstIterator it = qut.begin(); it != qut.end(); ++it) |
86 for(QStringList::ConstIterator it = qut.begin(); it != qut.end(); ++it) |
87 t << *it << " "; |
87 t << *it << " "; |
88 t << "first all clean install distclean uninstall qmake_all:" << "\n\t" |
88 t << "first all clean install distclean uninstall qmake_all:" << "\n\t" |
89 << "@echo \"Some of the required modules (" |
89 << "@echo \"Some of the required modules (" |
146 t << endl; |
146 t << endl; |
147 |
147 |
148 if(!project->isActiveConfig("staticlib")) { |
148 if(!project->isActiveConfig("staticlib")) { |
149 t << "LINK = " << var("QMAKE_LINK") << endl; |
149 t << "LINK = " << var("QMAKE_LINK") << endl; |
150 t << "LFLAGS = " << var("QMAKE_LFLAGS") << endl; |
150 t << "LFLAGS = " << var("QMAKE_LFLAGS") << endl; |
151 t << "LIBS = " << "$(SUBLIBS) " << var("QMAKE_FRAMEWORKDIR_FLAGS") << " " |
151 t << "LIBS = " << "$(SUBLIBS) " << var("QMAKE_FRAMEWORKPATH_FLAGS") << " " |
152 << var("QMAKE_LIBDIR_FLAGS") << " " << var("QMAKE_LIBS") << " " << var("QMAKE_LIBS_PRIVATE") << endl; |
152 << var("QMAKE_LIBDIR_FLAGS") << " " << var("QMAKE_LIBS") << " " << var("QMAKE_LIBS_PRIVATE") << endl; |
153 } |
153 } |
154 |
154 |
155 t << "AR = " << var("QMAKE_AR") << endl; |
155 t << "AR = " << var("QMAKE_AR") << endl; |
156 t << "RANLIB = " << var("QMAKE_RANLIB") << endl; |
156 t << "RANLIB = " << var("QMAKE_RANLIB") << endl; |
157 t << "QMAKE = " << (project->isEmpty("QMAKE_QMAKE") ? QString("qmake") : var("QMAKE_QMAKE")) << endl; |
157 t << "QMAKE = " << var("QMAKE_QMAKE") << endl; |
158 t << "TAR = " << var("QMAKE_TAR") << endl; |
158 t << "TAR = " << var("QMAKE_TAR") << endl; |
159 t << "COMPRESS = " << var("QMAKE_GZIP") << endl; |
159 t << "COMPRESS = " << var("QMAKE_GZIP") << endl; |
160 if(project->isActiveConfig("compile_libtool")) |
160 if(project->isActiveConfig("compile_libtool")) |
161 t << "LIBTOOL = " << var("QMAKE_LIBTOOL") << endl; |
161 t << "LIBTOOL = " << var("QMAKE_LIBTOOL") << endl; |
162 t << "COPY = " << var("QMAKE_COPY") << endl; |
162 t << "COPY = " << var("QMAKE_COPY") << endl; |
175 t << "CHK_DIR_EXISTS= " << var("QMAKE_CHK_DIR_EXISTS") << endl; |
175 t << "CHK_DIR_EXISTS= " << var("QMAKE_CHK_DIR_EXISTS") << endl; |
176 t << "MKDIR = " << var("QMAKE_MKDIR") << endl; |
176 t << "MKDIR = " << var("QMAKE_MKDIR") << endl; |
177 if(!project->isEmpty("QMAKE_MACOSX_DEPLOYMENT_TARGET")) |
177 if(!project->isEmpty("QMAKE_MACOSX_DEPLOYMENT_TARGET")) |
178 t << "export MACOSX_DEPLOYMENT_TARGET = " //exported to children processes |
178 t << "export MACOSX_DEPLOYMENT_TARGET = " //exported to children processes |
179 << project->first("QMAKE_MACOSX_DEPLOYMENT_TARGET") << endl; |
179 << project->first("QMAKE_MACOSX_DEPLOYMENT_TARGET") << endl; |
|
180 |
|
181 if (!project->isEmpty("QMAKE_SYMBIAN_SHLIB")) { |
|
182 t << "vpath %.dso " << project->values("QMAKE_LIBDIR").join(":") << endl; |
|
183 t << "vpath %.lib " << project->values("QMAKE_LIBDIR").join(":") << endl; |
|
184 } |
|
185 |
180 t << endl; |
186 t << endl; |
181 |
187 |
182 t << "####### Output directory" << endl << endl; |
188 t << "####### Output directory" << endl << endl; |
183 if (! project->values("OBJECTS_DIR").isEmpty()) |
189 if (! project->values("OBJECTS_DIR").isEmpty()) |
184 t << "OBJECTS_DIR = " << var("OBJECTS_DIR") << endl; |
190 t << "OBJECTS_DIR = " << var("OBJECTS_DIR") << endl; |
231 } else if(!project->isActiveConfig("staticlib") && project->values("QMAKE_APP_FLAG").isEmpty()) { |
237 } else if(!project->isActiveConfig("staticlib") && project->values("QMAKE_APP_FLAG").isEmpty()) { |
232 t << "TARGETA = " << escapeFilePath(var("TARGETA")) << endl; |
238 t << "TARGETA = " << escapeFilePath(var("TARGETA")) << endl; |
233 if(!project->isEmpty("QMAKE_BUNDLE")) { |
239 if(!project->isEmpty("QMAKE_BUNDLE")) { |
234 t << "TARGETD = " << escapeFilePath(var("TARGET_x.y")) << endl; |
240 t << "TARGETD = " << escapeFilePath(var("TARGET_x.y")) << endl; |
235 t << "TARGET0 = " << escapeFilePath(var("TARGET_")) << endl; |
241 t << "TARGET0 = " << escapeFilePath(var("TARGET_")) << endl; |
|
242 } else if(!project->isEmpty("QMAKE_SYMBIAN_SHLIB")) { |
|
243 t << "TARGETD = " << escapeFilePath(var("TARGET")) << endl; |
236 } else if(project->isEmpty("QMAKE_HPUX_SHLIB")) { |
244 } else if(project->isEmpty("QMAKE_HPUX_SHLIB")) { |
237 t << "TARGETD = " << escapeFilePath(var("TARGET_x.y.z")) << endl; |
245 t << "TARGETD = " << escapeFilePath(var("TARGET_x.y.z")) << endl; |
238 t << "TARGET0 = " << escapeFilePath(var("TARGET_")) << endl; |
246 t << "TARGET0 = " << escapeFilePath(var("TARGET_")) << endl; |
239 t << "TARGET1 = " << escapeFilePath(var("TARGET_x")) << endl; |
247 t << "TARGET1 = " << escapeFilePath(var("TARGET_x")) << endl; |
240 t << "TARGET2 = " << escapeFilePath(var("TARGET_x.y")) << endl; |
248 t << "TARGET2 = " << escapeFilePath(var("TARGET_x.y")) << endl; |
330 if(!project->isEmpty("SUBLIBS_DIR")) |
338 if(!project->isEmpty("SUBLIBS_DIR")) |
331 libdir = project->first("SUBLIBS_DIR"); |
339 libdir = project->first("SUBLIBS_DIR"); |
332 t << "SUBLIBS = "; |
340 t << "SUBLIBS = "; |
333 QStringList &l = project->values("SUBLIBS"); |
341 QStringList &l = project->values("SUBLIBS"); |
334 for(QStringList::Iterator it = l.begin(); it != l.end(); ++it) |
342 for(QStringList::Iterator it = l.begin(); it != l.end(); ++it) |
335 t << libdir << "lib" << (*it) << ".a "; |
343 t << libdir << project->first("QMAKE_PREFIX_STATICLIB") << (*it) << "." |
|
344 << project->first("QMAKE_EXTENSION_STATICLIB") << " "; |
336 t << endl << endl; |
345 t << endl << endl; |
337 } |
346 } |
338 if(project->isActiveConfig("depend_prl") && !project->isEmpty("QMAKE_PRL_INTERNAL_FILES")) { |
347 if(project->isActiveConfig("depend_prl") && !project->isEmpty("QMAKE_PRL_INTERNAL_FILES")) { |
339 QStringList &l = project->values("QMAKE_PRL_INTERNAL_FILES"); |
348 QStringList &l = project->values("QMAKE_PRL_INTERNAL_FILES"); |
340 QStringList::Iterator it; |
349 QStringList::Iterator it; |
540 project->first("QMAKE_FRAMEWORK_VERSION") + |
549 project->first("QMAKE_FRAMEWORK_VERSION") + |
541 "/$(TARGET) $(DESTDIR)$(TARGET0)") << "\n\t" |
550 "/$(TARGET) $(DESTDIR)$(TARGET0)") << "\n\t" |
542 << "-$(DEL_FILE) " << destdir << "Versions/Current" << "\n\t" |
551 << "-$(DEL_FILE) " << destdir << "Versions/Current" << "\n\t" |
543 << varGlue("QMAKE_LN_SHLIB","-"," ", " " + project->first("QMAKE_FRAMEWORK_VERSION") + |
552 << varGlue("QMAKE_LN_SHLIB","-"," ", " " + project->first("QMAKE_FRAMEWORK_VERSION") + |
544 " " + destdir + "Versions/Current") << "\n\t"; |
553 " " + destdir + "Versions/Current") << "\n\t"; |
|
554 if(!project->isEmpty("QMAKE_POST_LINK")) |
|
555 t << "\n\t" << var("QMAKE_POST_LINK"); |
|
556 t << endl << endl; |
|
557 } else if(!project->isEmpty("QMAKE_SYMBIAN_SHLIB")) { |
|
558 t << "\n\t" |
|
559 << "-$(DEL_FILE) $(TARGET)" << "\n\t" |
|
560 << var("QMAKE_LINK_SHLIB_CMD"); |
|
561 if(!destdir.isEmpty()) |
|
562 t << "\n\t" |
|
563 << "-$(DEL_FILE) " << destdir << "$(TARGET)\n\t" |
|
564 << "-$(MOVE) $(TARGET) " << destdir; |
545 if(!project->isEmpty("QMAKE_POST_LINK")) |
565 if(!project->isEmpty("QMAKE_POST_LINK")) |
546 t << "\n\t" << var("QMAKE_POST_LINK"); |
566 t << "\n\t" << var("QMAKE_POST_LINK"); |
547 t << endl << endl; |
567 t << endl << endl; |
548 } else if(project->isEmpty("QMAKE_HPUX_SHLIB")) { |
568 } else if(project->isEmpty("QMAKE_HPUX_SHLIB")) { |
549 t << "\n\t" |
569 t << "\n\t" |
858 QString libdir = "tmp/"; |
878 QString libdir = "tmp/"; |
859 if(!project->isEmpty("SUBLIBS_DIR")) |
879 if(!project->isEmpty("SUBLIBS_DIR")) |
860 libdir = project->first("SUBLIBS_DIR"); |
880 libdir = project->first("SUBLIBS_DIR"); |
861 QStringList &l = project->values("SUBLIBS"); |
881 QStringList &l = project->values("SUBLIBS"); |
862 for(it = l.begin(); it != l.end(); ++it) |
882 for(it = l.begin(); it != l.end(); ++it) |
863 t << libdir << "lib" << (*it) << ".a" << ":\n\t" |
883 t << libdir << project->first("QMAKE_PREFIX_STATICLIB") << (*it) << "." |
|
884 << project->first("QMAKE_EXTENSION_STATICLIB") << ":\n\t" |
864 << var(QString("MAKELIB") + (*it)) << endl << endl; |
885 << var(QString("MAKELIB") + (*it)) << endl << endl; |
865 } |
886 } |
866 |
887 |
867 QString destdir = project->first("DESTDIR"); |
888 QString destdir = project->first("DESTDIR"); |
868 if(!destdir.isEmpty() && destdir.right(1) != Option::dir_sep) |
889 if(!destdir.isEmpty() && destdir.right(1) != Option::dir_sep) |
873 t << "\t-$(DEL_FILE) -r " << bundlePath << endl; |
894 t << "\t-$(DEL_FILE) -r " << bundlePath << endl; |
874 } else if(project->isActiveConfig("compile_libtool")) { |
895 } else if(project->isActiveConfig("compile_libtool")) { |
875 t << "\t-$(LIBTOOL) --mode=clean $(DEL_FILE) " << "$(TARGET)" << endl; |
896 t << "\t-$(LIBTOOL) --mode=clean $(DEL_FILE) " << "$(TARGET)" << endl; |
876 } else if(!project->isActiveConfig("staticlib") && project->values("QMAKE_APP_FLAG").isEmpty() && |
897 } else if(!project->isActiveConfig("staticlib") && project->values("QMAKE_APP_FLAG").isEmpty() && |
877 !project->isActiveConfig("plugin")) { |
898 !project->isActiveConfig("plugin")) { |
878 t << "\t-$(DEL_FILE) " << destdir << "$(TARGET)" << " " << endl |
899 t << "\t-$(DEL_FILE) " << destdir << "$(TARGET)" << " " << endl; |
879 << "\t-$(DEL_FILE) " << destdir << "$(TARGET0) " << destdir << "$(TARGET1) " |
900 if (project->values("QMAKE_SYMBIAN_SHLIB").isEmpty()) |
880 << destdir << "$(TARGET2) $(TARGETA)" << endl; |
901 t << "\t-$(DEL_FILE) " << destdir << "$(TARGET0) " << destdir << "$(TARGET1) " |
|
902 << destdir << "$(TARGET2) $(TARGETA)" << endl; |
881 } else { |
903 } else { |
882 t << "\t-$(DEL_FILE) " << "$(TARGET)" << " " << endl; |
904 t << "\t-$(DEL_FILE) " << "$(TARGET)" << " " << endl; |
883 } |
905 } |
884 t << varGlue("QMAKE_DISTCLEAN","\t-$(DEL_FILE) "," ","\n"); |
906 t << varGlue("QMAKE_DISTCLEAN","\t-$(DEL_FILE) "," ","\n"); |
885 { |
907 { |
990 if(!project->isEmpty("TARGET")) |
1012 if(!project->isEmpty("TARGET")) |
991 project->values("TARGET").first().prepend(project->first("DESTDIR")); |
1013 project->values("TARGET").first().prepend(project->first("DESTDIR")); |
992 if (!project->values("QMAKE_CYGWIN_EXE").isEmpty()) |
1014 if (!project->values("QMAKE_CYGWIN_EXE").isEmpty()) |
993 project->values("TARGET_EXT").append(".exe"); |
1015 project->values("TARGET_EXT").append(".exe"); |
994 } else if (project->isActiveConfig("staticlib")) { |
1016 } else if (project->isActiveConfig("staticlib")) { |
995 project->values("TARGET").first().prepend("lib"); |
1017 project->values("TARGET").first().prepend(project->first("QMAKE_PREFIX_STATICLIB")); |
996 project->values("TARGET").first() += ".a"; |
1018 project->values("TARGET").first() += "." + project->first("QMAKE_EXTENSION_STATICLIB"); |
997 if(project->values("QMAKE_AR_CMD").isEmpty()) |
1019 if(project->values("QMAKE_AR_CMD").isEmpty()) |
998 project->values("QMAKE_AR_CMD").append("$(AR) $(TARGET) $(OBJECTS)"); |
1020 project->values("QMAKE_AR_CMD").append("$(AR) $(TARGET) $(OBJECTS)"); |
999 } else { |
1021 } else { |
1000 project->values("TARGETA").append(project->first("DESTDIR") + "lib" + project->first("TARGET") + ".a"); |
1022 project->values("TARGETA").append(project->first("DESTDIR") + project->first("QMAKE_PREFIX_STATICLIB") |
|
1023 + project->first("TARGET") + "." + project->first("QMAKE_EXTENSION_STATICLIB")); |
1001 if(project->isActiveConfig("compile_libtool")) |
1024 if(project->isActiveConfig("compile_libtool")) |
1002 project->values("TARGET_la") = QStringList(project->first("DESTDIR") + "lib" + project->first("TARGET") + Option::libtool_ext); |
1025 project->values("TARGET_la") = QStringList(project->first("DESTDIR") + "lib" + project->first("TARGET") + Option::libtool_ext); |
1003 |
1026 |
1004 if (!project->values("QMAKE_AR_CMD").isEmpty()) |
1027 if (!project->values("QMAKE_AR_CMD").isEmpty()) |
1005 project->values("QMAKE_AR_CMD").first().replace("(TARGET)","(TARGETA)"); |
1028 project->values("QMAKE_AR_CMD").first().replace("(TARGET)","(TARGETA)"); |
1043 else |
1066 else |
1044 project->values("TARGET_x").append("lib" + project->first("TARGET") + "." + |
1067 project->values("TARGET_x").append("lib" + project->first("TARGET") + "." + |
1045 project->first("VER_MAJ")); |
1068 project->first("VER_MAJ")); |
1046 project->values("TARGET") = project->values("TARGET_x"); |
1069 project->values("TARGET") = project->values("TARGET_x"); |
1047 } else if (!project->isEmpty("QMAKE_AIX_SHLIB")) { |
1070 } else if (!project->isEmpty("QMAKE_AIX_SHLIB")) { |
1048 project->values("TARGET_").append("lib" + project->first("TARGET") + ".a"); |
1071 project->values("TARGET_").append(project->first("QMAKE_PREFIX_STATICLIB") + project->first("TARGET") |
|
1072 + "." + project->first("QMAKE_EXTENSION_STATICLIB")); |
1049 if(project->isActiveConfig("lib_version_first")) { |
1073 if(project->isActiveConfig("lib_version_first")) { |
1050 project->values("TARGET_x").append("lib" + project->first("TARGET") + "." + |
1074 project->values("TARGET_x").append("lib" + project->first("TARGET") + "." + |
1051 project->first("VER_MAJ") + "." + |
1075 project->first("VER_MAJ") + "." + |
1052 project->first("QMAKE_EXTENSION_SHLIB")); |
1076 project->first("QMAKE_EXTENSION_SHLIB")); |
1053 project->values("TARGET_x.y").append("lib" + project->first("TARGET") + "." + |
1077 project->values("TARGET_x.y").append("lib" + project->first("TARGET") + "." + |
1072 project->first("VER_MAJ") + "." + |
1096 project->first("VER_MAJ") + "." + |
1073 project->first("VER_MIN") + "." + |
1097 project->first("VER_MIN") + "." + |
1074 project->first("VER_PAT")); |
1098 project->first("VER_PAT")); |
1075 } |
1099 } |
1076 project->values("TARGET") = project->values("TARGET_x.y.z"); |
1100 project->values("TARGET") = project->values("TARGET_x.y.z"); |
|
1101 } else if (!project->isEmpty("QMAKE_SYMBIAN_SHLIB")) { |
|
1102 project->values("TARGET_").append(project->first("TARGET") + "." + |
|
1103 project->first("QMAKE_EXTENSION_SHLIB")); |
|
1104 project->values("TARGET") = project->values("TARGET_"); |
1077 } else { |
1105 } else { |
1078 project->values("TARGET_").append("lib" + project->first("TARGET") + "." + |
1106 project->values("TARGET_").append("lib" + project->first("TARGET") + "." + |
1079 project->first("QMAKE_EXTENSION_SHLIB")); |
1107 project->first("QMAKE_EXTENSION_SHLIB")); |
1080 if(project->isActiveConfig("lib_version_first")) { |
1108 if(project->isActiveConfig("lib_version_first")) { |
1081 project->values("TARGET_x").append("lib" + project->first("TARGET") + "." + |
1109 project->values("TARGET_x").append("lib" + project->first("TARGET") + "." + |