diff options
author | Lars Knoll <lars.knoll@nokia.com> | 2009-03-23 09:34:13 (GMT) |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2009-03-23 09:34:13 (GMT) |
commit | 67ad0519fd165acee4a4d2a94fa502e9e4847bd0 (patch) | |
tree | 1dbf50b3dff8d5ca7e9344733968c72704eb15ff /mkspecs/features | |
download | Qt-67ad0519fd165acee4a4d2a94fa502e9e4847bd0.zip Qt-67ad0519fd165acee4a4d2a94fa502e9e4847bd0.tar.gz Qt-67ad0519fd165acee4a4d2a94fa502e9e4847bd0.tar.bz2 |
Long live Qt!
Diffstat (limited to 'mkspecs/features')
79 files changed, 1271 insertions, 0 deletions
diff --git a/mkspecs/features/assistant.prf b/mkspecs/features/assistant.prf new file mode 100644 index 0000000..25e5d4d --- /dev/null +++ b/mkspecs/features/assistant.prf @@ -0,0 +1,9 @@ + +INCLUDEPATH = $$QMAKE_INCDIR_QT/QtAssistant $$INCLUDEPATH + +mac:!static:contains(QT_CONFIG, qt_framework) { + qtAddLibrary(QtAssistant) +} else { + qtAddLibrary(QtAssistantClient) +} +QT += network diff --git a/mkspecs/features/build_pass.prf b/mkspecs/features/build_pass.prf new file mode 100644 index 0000000..6547c97 --- /dev/null +++ b/mkspecs/features/build_pass.prf @@ -0,0 +1 @@ +CONFIG += no_autoqmake diff --git a/mkspecs/features/dbusadaptors.prf b/mkspecs/features/dbusadaptors.prf new file mode 100644 index 0000000..241ace6 --- /dev/null +++ b/mkspecs/features/dbusadaptors.prf @@ -0,0 +1,44 @@ +isEmpty(QMAKE_QDBUSXML2CPP) { + win32:QMAKE_QDBUSXML2CPP = $$[QT_INSTALL_BINS]\qdbusxml2cpp.exe + else:QMAKE_QDBUSXML2CPP = $$[QT_INSTALL_BINS]/qdbusxml2cpp +} + +for(DBUS_ADAPTOR, $$list($$unique(DBUS_ADAPTORS))) { + + !contains(DBUS_ADAPTOR, .*\w\.xml$) { + warning("Invalid D-BUS adaptor: '$${DBUS_ADAPTOR}', please use 'com.mydomain.myinterface.xml' instead.") + next() + } + + DBUS_ADAPTOR_LIST += $${DBUS_ADAPTOR} +} + +dbus_adaptor_header.commands = $$QMAKE_QDBUSXML2CPP -a ${QMAKE_FILE_OUT}: ${QMAKE_FILE_IN} +dbus_adaptor_header.output_function = dbus_adaptor_header_output +dbus_adaptor_header.name = DBUSXML2CPP ADAPTOR HEADER ${QMAKE_FILE_IN} +dbus_adaptor_header.variable_out = DBUS_ADAPTOR_HEADERS +dbus_adaptor_header.input = DBUS_ADAPTOR_LIST + +defineReplace(dbus_adaptor_header_output) { + return("$$lower($$section($$list($$basename(1)),.,-2,-2))_adaptor.h") +} + +dbus_adaptor_source.commands = $$QMAKE_QDBUSXML2CPP -i ${QMAKE_FILE_OUT_BASE}.h -a :${QMAKE_FILE_OUT} ${QMAKE_FILE_IN} +dbus_adaptor_source.output_function = dbus_adaptor_source_output +dbus_adaptor_source.name = DBUSXML2CPP ADAPTOR SOURCE ${QMAKE_FILE_IN} +dbus_adaptor_source.variable_out = SOURCES +dbus_adaptor_source.input = DBUS_ADAPTOR_LIST + +load(moc) +dbus_adaptor_moc.commands = $$moc_header.commands +dbus_adaptor_moc.output = $$moc_header.output +dbus_adaptor_moc.depends = $$dbus_adaptor_header.output +dbus_adaptor_moc.input = DBUS_ADAPTOR_HEADERS +dbus_adaptor_moc.variable_out = GENERATED_SOURCES +dbus_adaptor_moc.name = $$moc_header.name + +defineReplace(dbus_adaptor_source_output) { + return("$$lower($$section($$list($$basename(1)),.,-2,-2))_adaptor.cpp") +} + +QMAKE_EXTRA_COMPILERS += dbus_adaptor_header dbus_adaptor_source dbus_adaptor_moc diff --git a/mkspecs/features/dbusinterfaces.prf b/mkspecs/features/dbusinterfaces.prf new file mode 100644 index 0000000..c32597a --- /dev/null +++ b/mkspecs/features/dbusinterfaces.prf @@ -0,0 +1,45 @@ +load(moc) + +isEmpty(QMAKE_QDBUSXML2CPP) { + win32:QMAKE_QDBUSXML2CPP = $$[QT_INSTALL_BINS]\qdbusxml2cpp.exe + else:QMAKE_QDBUSXML2CPP = $$[QT_INSTALL_BINS]/qdbusxml2cpp +} + +for(DBUS_INTERFACE, $$list($$unique(DBUS_INTERFACES))) { + + !contains(DBUS_INTERFACE, .*\w\.xml$) { + warning("Invalid D-BUS interface : '$${DBUS_INTERFACE}', please use 'com.mydomain.myinterface.xml' instead.") + next() + } + + DBUS_INTERFACE_LIST += $${DBUS_INTERFACE} +} + +dbus_interface_header.commands = $$QMAKE_QDBUSXML2CPP -p ${QMAKE_FILE_OUT}: ${QMAKE_FILE_IN} +dbus_interface_header.output_function = dbus_interface_header_output +dbus_interface_header.name = DBUSXML2CPP INTERFACE HEADER ${QMAKE_FILE_IN} +dbus_interface_header.variable_out = DBUS_INTERFACE_HEADERS +dbus_interface_header.input = DBUS_INTERFACE_LIST + +defineReplace(dbus_interface_header_output) { + return("$$lower($$section($$list($$basename(1)),.,-2,-2))_interface.h") +} + +dbus_interface_source.commands = $$QMAKE_QDBUSXML2CPP -i ${QMAKE_FILE_OUT_BASE}.h -p :${QMAKE_FILE_OUT} ${QMAKE_FILE_IN} +dbus_interface_source.output_function = dbus_interface_source_output +dbus_interface_source.name = DBUSXML2CPP INTERFACE SOURCE ${QMAKE_FILE_IN} +dbus_interface_source.variable_out = SOURCES +dbus_interface_source.input = DBUS_INTERFACE_LIST + +dbus_interface_moc.commands = $$moc_header.commands +dbus_interface_moc.output = $$moc_header.output +dbus_interface_moc.depends = $$dbus_interface_header.output +dbus_interface_moc.input = DBUS_INTERFACE_HEADERS +dbus_interface_moc.variable_out = GENERATED_SOURCES +dbus_interface_moc.name = $$moc_header.name + +defineReplace(dbus_interface_source_output) { + return("$$lower($$section($$list($$basename(1)),.,-2,-2))_interface.cpp") +} + +QMAKE_EXTRA_COMPILERS += dbus_interface_header dbus_interface_source dbus_interface_moc diff --git a/mkspecs/features/debug.prf b/mkspecs/features/debug.prf new file mode 100644 index 0000000..c1ba125 --- /dev/null +++ b/mkspecs/features/debug.prf @@ -0,0 +1,8 @@ +CONFIG -= release +contains(QT_CONFIG,dwarf2)|dwarf2:load(dwarf2, true) +QMAKE_CFLAGS += $$QMAKE_CFLAGS_DEBUG +QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_DEBUG +QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_OBJECTIVE_CFLAGS_DEBUG +QMAKE_LFLAGS += $$QMAKE_LFLAGS_DEBUG +QMAKE_LIBFLAGS += $$QMAKE_LIBFLAGS_DEBUG +!debug_and_release:fix_output_dirs:fixExclusiveOutputDirs(debug, release) diff --git a/mkspecs/features/debug_and_release.prf b/mkspecs/features/debug_and_release.prf new file mode 100644 index 0000000..8b89321 --- /dev/null +++ b/mkspecs/features/debug_and_release.prf @@ -0,0 +1 @@ +!macx-xcode:addExclusiveBuilds(debug, Debug, release, Release) diff --git a/mkspecs/features/default_post.prf b/mkspecs/features/default_post.prf new file mode 100644 index 0000000..01074f4 --- /dev/null +++ b/mkspecs/features/default_post.prf @@ -0,0 +1,10 @@ +CONFIG(debug, debug|release):load(debug) +else:load(release) +debug_and_release:load(debug_and_release) +incredibuild_xge { + CONFIG -= incredibuild_xge + CONFIG = incredibuild_xge $$CONFIG +} + +QMAKE_INCDIR += $$QMAKE_INCDIR_POST +QMAKE_LIBDIR += $$QMAKE_LIBDIR_POST diff --git a/mkspecs/features/default_pre.prf b/mkspecs/features/default_pre.prf new file mode 100644 index 0000000..6442594 --- /dev/null +++ b/mkspecs/features/default_pre.prf @@ -0,0 +1,2 @@ +load(exclusive_builds) +CONFIG = lex yacc warn_on debug uic resources $$CONFIG diff --git a/mkspecs/features/designer.prf b/mkspecs/features/designer.prf new file mode 100644 index 0000000..61a30cf --- /dev/null +++ b/mkspecs/features/designer.prf @@ -0,0 +1,6 @@ +QT += xml script +qt:load(qt) + +plugin:DEFINES += QDESIGNER_EXPORT_WIDGETS + +qtAddLibrary(QtDesigner) diff --git a/mkspecs/features/dll.prf b/mkspecs/features/dll.prf new file mode 100644 index 0000000..943ab93 --- /dev/null +++ b/mkspecs/features/dll.prf @@ -0,0 +1,2 @@ +CONFIG += shared + diff --git a/mkspecs/features/exclusive_builds.prf b/mkspecs/features/exclusive_builds.prf new file mode 100644 index 0000000..8898c96 --- /dev/null +++ b/mkspecs/features/exclusive_builds.prf @@ -0,0 +1,100 @@ +# fixExclusiveOutputDirs(1config, 2config) +# Change all output paths that references 2config to have the string 1config in them +defineTest(fixExclusiveOutputDirs) { + unset(firstBuild) + unset(secondBuild) + unset(appendFirstBuild) + firstBuild = $$1 + secondBuild = $$2 + count(ARGS, 2, greaterThan):isEqual($$list($$lower($$3)), false):appendFirstBuild = false + else:appendFirstBuild = true + + isEmpty(QMAKE_DIR_REPLACE):QMAKE_DIR_REPLACE += OBJECTS_DIR MOC_DIR RCC_DIR + lessThan(firstBuild, $$secondBuild):eval($${firstBuild}_and_$${secondBuild}_target:QMAKE_DIR_REPLACE += DESTDIR) + else:eval($${secondBuild}_and_$${firstBuild}_target:QMAKE_DIR_REPLACE += DESTDIR) + for(fix, QMAKE_DIR_REPLACE) { + isEmpty($$fix)|isEqual($$fix, .) { + eval($$fix = $${firstBuild}) + } else:contains($$list($$first($$fix)), .*$${secondBuild}.*) { + eval($$fix ~= s/$${secondBuild}/$${firstBuild}/gi) + } else:isEqual(appendFirstBuild, true):!contains($$list($$first($$fix)), .*$${firstBuild}.*) { + contains($$list($${first($$fix)}), .*/$):eval($$fix = $${first($$fix)}$${firstBuild}) + else:eval($$fix = $${first($$fix)}-$${firstBuild}) + } + export($$fix) + } + return(true) +} + +# addExclusiveBuilds(1config, 1name, 2config, 2name) +# Adds two BUILDS which are exclusive to each other. +defineTest(addExclusiveBuilds) { + unset(firstBuild) + unset(firstBuildName) + unset(secondBuild) + unset(secondBuildName) + + firstBuild = $$1 + firstBuildName = $$2 + secondBuild = $$3 + secondBuildName = $$4 + + contains(TEMPLATE, subdirs) { + eval(sub_$${firstBuildName}.target = $$firstBuild) + export(sub_$${firstBuildName}.target) + eval(sub_$${firstBuildName}.CONFIG = recursive) + export(sub_$${firstBuildName}.CONFIG) + eval(sub_$${secondBuildName}.target = $$secondBuild) + export(sub_$${secondBuildName}.target) + eval(sub_$${secondBuildName}.CONFIG = recursive) + export(sub_$${secondBuildName}.CONFIG) + QMAKE_EXTRA_TARGETS += sub_$${firstBuildName} sub_$${secondBuildName} + export(QMAKE_EXTRA_TARGETS) + } else:!build_pass { + first_BUILDS = + second_BUILDS = + suffix_BUILDS = Build + + isEmpty(BUILDS): BUILDPERMUTATIONS = $$suffix_BUILDS + else: BUILDPERMUTATIONS = $$BUILDS + + for(permutation, BUILDPERMUTATIONS) { + permutation ~= s/$${suffix_BUILDS}$// + isEmpty(permutation): permutationName = + else: permutationName = -$$permutation + # Makefile target rule + eval($${firstBuildName}$${permutation}.target = $${firstBuild}$$lower($${permutationName})) + export($${firstBuildName}$${permutation}.target) + # IDE name + eval($${firstBuildName}$${permutation}.name = $${firstBuildName}$${permutationName}) + export($${firstBuildName}$${permutation}.name) + # prl import CONFIG option + eval($${firstBuildName}$${permutation}.PRL_CONFIG = $${firstBuild}$${permutation}) + export($${firstBuildName}$${permutation}.PRL_CONFIG) + # Individual CONFIG option + eval($${firstBuildName}$${permutation}.CONFIG = $${firstBuild} $${firstBuildName}Build $$eval($${permutation}.CONFIG)) + export($${firstBuildName}$${permutation}.CONFIG) + + eval($${secondBuildName}$${permutation}.target = $${secondBuild}$$lower($${permutationName})) + export($${secondBuildName}$${permutation}.target) + eval($${secondBuildName}$${permutation}.name = $${secondBuildName}$${permutationName}) + export($${secondBuildName}$${permutation}.name) + eval($${secondBuildName}$${permutation}.PRL_CONFIG = $${secondBuild}$${permutation}) + export($${secondBuildName}$${permutation}.PRL_CONFIG) + eval($${secondBuildName}$${permutation}.CONFIG = $${secondBuild} $${secondBuildName}Build $$eval($${permutation}.CONFIG)) + export($${secondBuildName}$${permutation}.CONFIG) + + first_BUILDS += $${firstBuildName}$${permutation} + second_BUILDS += $${secondBuildName}$${permutation} + } + + # A mutual exclusive block. + CONFIG($${firstBuild}, $${firstBuild}|$${secondBuild}): BUILDS = $$first_BUILDS $$second_BUILDS + else: BUILDS = $$second_BUILDS $$first_BUILDS + export(BUILDS) + } else { + eval($${firstBuildName}Build:fixExclusiveOutputDirs($$firstBuild, $$secondBuild, false)) + eval($${secondBuildName}Build:fixExclusiveOutputDirs($$secondBuild, $$firstBuild, false)) + } + return(true) +} diff --git a/mkspecs/features/help.prf b/mkspecs/features/help.prf new file mode 100644 index 0000000..15685e7 --- /dev/null +++ b/mkspecs/features/help.prf @@ -0,0 +1,4 @@ +INCLUDEPATH = $$QMAKE_INCDIR_QT/QtHelp $$INCLUDEPATH +QT += xml sql + +qtAddLibrary(QtHelp) diff --git a/mkspecs/features/incredibuild_xge.prf b/mkspecs/features/incredibuild_xge.prf new file mode 100644 index 0000000..2fce443 --- /dev/null +++ b/mkspecs/features/incredibuild_xge.prf @@ -0,0 +1,11 @@ +contains(TEMPLATE, "vc.*")|contains(TEMPLATE_PREFIX, "vc") { + EOC = \$\$escape_expand(\n\t) + + # The VCPROJ generator will replace the \r\h with the coded \r\n: 
 + # No other generator understands the \h + win32-msvc.net|win32-msvc2*|wince*msvc*: EOC = \$\$escape_expand(\r\h) + + for(xge, INCREDIBUILD_XGE) { + eval($${xge}.commands = Rem IncrediBuild_AllowRemote $$EOC Rem IncrediBuild_OutputFile $$replace($${xge}.output,/,\\) $$EOC $$eval($${xge}.commands)) + } +} diff --git a/mkspecs/features/lex.prf b/mkspecs/features/lex.prf new file mode 100644 index 0000000..df76a68 --- /dev/null +++ b/mkspecs/features/lex.prf @@ -0,0 +1,24 @@ +# +# Lex extra-compiler for handling files specified in the LEXSOURCES variable +# + +{ + lex.name = Lex ${QMAKE_FILE_IN} + lex.input = LEXSOURCES + lex_included { + lex.CONFIG += no_link + } else { + lex.variable_out = GENERATED_SOURCES + } + isEmpty(QMAKE_LEXFLAGS_MANGLE):QMAKE_LEXFLAGS_MANGLE = -P${QMAKE_FILE_BASE} + QMAKE_LEXEXTRAFLAGS = $$QMAKE_LEXFLAGS + !yacc_no_name_mangle:QMAKE_LEXEXTRAFLAGS += $$QMAKE_LEXFLAGS_MANGLE + + lex.commands = $$QMAKE_LEX $$QMAKE_LEXEXTRAFLAGS ${QMAKE_FILE_IN}$$escape_expand(\n\t) \ + $$QMAKE_DEL_FILE $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}_lex$${first(QMAKE_EXT_CPP)}$$escape_expand(\n\t) \ + $$QMAKE_MOVE lex.${QMAKE_FILE_BASE}.c $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}_lex$${first(QMAKE_EXT_CPP)}$$escape_expand(\n\t) + lex.output = $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}_lex$${first(QMAKE_EXT_CPP)} + + silent:lex.commands = @echo Lex ${QMAKE_FILE_IN} && $$lex.commands + QMAKE_EXTRA_COMPILERS += lex +} diff --git a/mkspecs/features/link_pkgconfig.prf b/mkspecs/features/link_pkgconfig.prf new file mode 100644 index 0000000..4c528aa --- /dev/null +++ b/mkspecs/features/link_pkgconfig.prf @@ -0,0 +1,6 @@ +# handle pkg-config files +for(PKGCONFIG_LIB, $$list($$unique(PKGCONFIG))) { + QMAKE_CXXFLAGS += $$system(pkg-config --cflags $$PKGCONFIG_LIB) + QMAKE_CFLAGS += $$system(pkg-config --cflags $$PKGCONFIG_LIB) + LIBS += $$system(pkg-config --libs $$PKGCONFIG_LIB) +} diff --git a/mkspecs/features/mac/default_post.prf b/mkspecs/features/mac/default_post.prf new file mode 100644 index 0000000..ea9e9bd --- /dev/null +++ b/mkspecs/features/mac/default_post.prf @@ -0,0 +1,2 @@ +load(default_post) +!no_objective_c:CONFIG += objective_c diff --git a/mkspecs/features/mac/default_pre.prf b/mkspecs/features/mac/default_pre.prf new file mode 100644 index 0000000..81e1d06 --- /dev/null +++ b/mkspecs/features/mac/default_pre.prf @@ -0,0 +1,3 @@ +CONFIG = sdk rez $$CONFIG +load(default_pre) + diff --git a/mkspecs/features/mac/dwarf2.prf b/mkspecs/features/mac/dwarf2.prf new file mode 100644 index 0000000..fc05562 --- /dev/null +++ b/mkspecs/features/mac/dwarf2.prf @@ -0,0 +1,6 @@ +macx-xcode|macx-pbuilder { +} else { + QMAKE_CFLAGS_DEBUG += $$QMAKE_CFLAGS_DWARF2 + QMAKE_OBJECTIVE_CFLAGS_DEBUG += $$QMAKE_OBJECTIVE_DWARF2 + QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CXXFLAGS_DWARF2 +} diff --git a/mkspecs/features/mac/objective_c.prf b/mkspecs/features/mac/objective_c.prf new file mode 100644 index 0000000..0a73af9 --- /dev/null +++ b/mkspecs/features/mac/objective_c.prf @@ -0,0 +1,24 @@ + +isEmpty(QMAKE_OBJECTIVE_CC):QMAKE_OBJECTIVE_CC = $$QMAKE_CC +isEmpty(QMAKE_OBJECTIVE_CFLAGS) { #bootstrap + QMAKE_OBJECTIVE_CFLAGS = $$QMAKE_CFLAGS + QMAKE_OBJECTIVE_CFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON + QMAKE_OBJECTIVE_CFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF + QMAKE_OBJECTIVE_CFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG + QMAKE_OBJECTIVE_CFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE + QMAKE_OBJECTIVE_CFLAGS_X86 = $$QMAKE_CFLAGS_X86 + QMAKE_OBJECTIVE_CFLAGS_PPC = $$QMAKE_CFLAGS_PPC + QMAKE_OBJECTIVE_CFLAGS_HIDESYMS = $$QMAKE_CXXFLAGS_HIDESYMS +} +OBJECTIVE_C_OBJECTS_DIR = $$OBJECTS_DIR +isEmpty(OBJECTIVE_C_OBJECTS_DIR):OBJECTIVE_C_OBJECTS_DIR = . +isEmpty(QMAKE_EXT_OBJECTIVE_C):QMAKE_EXT_OBJECTIVE_C = .mm .m + +objective_c.dependency_type = TYPE_C +objective_c.variables = QMAKE_OBJECTIVE_CFLAGS +objective_c.commands = $$QMAKE_OBJECTIVE_CC -c $(QMAKE_COMP_QMAKE_OBJECTIVE_CFLAGS) $(DEFINES) $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} +objective_c.output = $$OBJECTIVE_C_OBJECTS_DIR/${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} +objective_c.input = OBJECTIVE_SOURCES +objective_c.name = Compile ${QMAKE_FILE_IN} +silent:objective_c.commands = @echo objective-c ${QMAKE_FILE_IN} && $$objective_c.commands +QMAKE_EXTRA_COMPILERS += objective_c diff --git a/mkspecs/features/mac/ppc.prf b/mkspecs/features/mac/ppc.prf new file mode 100644 index 0000000..e9169d9 --- /dev/null +++ b/mkspecs/features/mac/ppc.prf @@ -0,0 +1,7 @@ +macx-xcode|macx-pbuilder { +} else { + QMAKE_CFLAGS += $$QMAKE_CFLAGS_PPC + QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_OBJECTIVE_CFLAGS_PPC + QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_PPC + QMAKE_LFLAGS += $$QMAKE_LFLAGS_PPC +} diff --git a/mkspecs/features/mac/ppc64.prf b/mkspecs/features/mac/ppc64.prf new file mode 100644 index 0000000..5a04d5b --- /dev/null +++ b/mkspecs/features/mac/ppc64.prf @@ -0,0 +1,7 @@ +macx-xcode|macx-pbuilder { +} else { + QMAKE_CFLAGS += $$QMAKE_CFLAGS_PPC_64 + QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_OBJECTIVE_CFLAGS_PPC_64 + QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_PPC_64 + QMAKE_LFLAGS += $$QMAKE_LFLAGS_PPC_64 +} diff --git a/mkspecs/features/mac/rez.prf b/mkspecs/features/mac/rez.prf new file mode 100644 index 0000000..3defd86 --- /dev/null +++ b/mkspecs/features/mac/rez.prf @@ -0,0 +1,16 @@ + +#global defaults +isEmpty(QMAKE_REZ) { + QMAKE_REZ = /Developer/Tools/Rez +} +isEmpty(REZ_DIR):REZ_DIR = . +isEmpty(QMAKE_EXT_REZ):QMAKE_EXT_REZ = .rsrc + +rez_source.CONFIG += no_link +rez_source.dependency_type = TYPE_C +rez_source.commands = $$QMAKE_REZ ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} -useDF +rez_source.output = $$REZ_DIR/${QMAKE_FILE_BASE}$${first(QMAKE_EXT_REZ)} +rez_source.input = REZ_FILES +rez_source.name = REZ ${QMAKE_FILE_IN} +silent:rez_source.commands = @echo rez ${QMAKE_FILE_IN} && $$rez_source.commands +QMAKE_EXTRA_COMPILERS += rez_source diff --git a/mkspecs/features/mac/sdk.prf b/mkspecs/features/mac/sdk.prf new file mode 100644 index 0000000..5eab948 --- /dev/null +++ b/mkspecs/features/mac/sdk.prf @@ -0,0 +1,8 @@ +!isEmpty(QMAKE_MAC_SDK) { + !macx-xcode:!macx-pbuilder { + QMAKE_CFLAGS += -isysroot $$QMAKE_MAC_SDK + QMAKE_OBJECTIVE_CFLAGS += -isysroot $$QMAKE_MAC_SDK + QMAKE_CXXFLAGS += -isysroot $$QMAKE_MAC_SDK + QMAKE_LFLAGS += -Wl,-syslibroot,$$QMAKE_MAC_SDK + } +} diff --git a/mkspecs/features/mac/x86.prf b/mkspecs/features/mac/x86.prf new file mode 100644 index 0000000..a7a9f84 --- /dev/null +++ b/mkspecs/features/mac/x86.prf @@ -0,0 +1,7 @@ +macx-xcode|macx-pbuilder { +} else { + QMAKE_CFLAGS += $$QMAKE_CFLAGS_X86 + QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_OBJECTIVE_CFLAGS_X86 + QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_X86 + QMAKE_LFLAGS += $$QMAKE_LFLAGS_X86 +} diff --git a/mkspecs/features/mac/x86_64.prf b/mkspecs/features/mac/x86_64.prf new file mode 100644 index 0000000..65b6b79 --- /dev/null +++ b/mkspecs/features/mac/x86_64.prf @@ -0,0 +1,7 @@ +macx-xcode|macx-pbuilder { +} else { + QMAKE_CFLAGS += $$QMAKE_CFLAGS_X86_64 + QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_OBJECTIVE_CFLAGS_X86_64 + QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_X86_64 + QMAKE_LFLAGS += $$QMAKE_LFLAGS_X86_64 +} diff --git a/mkspecs/features/moc.prf b/mkspecs/features/moc.prf new file mode 100644 index 0000000..faa9871 --- /dev/null +++ b/mkspecs/features/moc.prf @@ -0,0 +1,86 @@ + +#global defaults +isEmpty(QMAKE_MOC) { + win32:QMAKE_MOC = $$[QT_INSTALL_BINS]\moc.exe + else:QMAKE_MOC = $$[QT_INSTALL_BINS]/moc +} +isEmpty(MOC_DIR):MOC_DIR = . +isEmpty(QMAKE_H_MOD_MOC):QMAKE_H_MOD_MOC = moc_ +isEmpty(QMAKE_EXT_CPP_MOC):QMAKE_EXT_CPP_MOC = .moc + +# This function on Windows puts the includes into a .inc file which moc will read, if the project +# has more than 30 includes. We do this to overcome a command-line limit on Win < XP +# Otherwise the function simply returns the normal command-line for moc +defineReplace(mocCmd) { + win32:count($$list($$INCPATH), 40, >) { + EOC = $$escape_expand(\n\t) + + if(contains(TEMPLATE, "vc.*")|contains(TEMPLATE_PREFIX, "vc")) { + # the VCPROJ generator will replace the \r\h with the coded \r\n: 
 + # No other generator understands the \h + if(win32-msvc.net|win32-msvc2*|wince*msvc*): EOC = $$escape_expand(\r\h) + else: EOC = $$escape_expand(\\)$$escape_expand(\n\t) + } + + INCLUDETEMP = mocinclude.tmp + unset(INCFILELIST) + RET = + for(incfile, $$list($$INCPATH)) { + INCFILELIST = -I$$incfile + isEmpty(RET): RET += @echo $$INCFILELIST> $$INCLUDETEMP $$EOC + else: RET += @echo $$INCFILELIST>> $$INCLUDETEMP $$EOC + } + !isEmpty(INCFILELIST):RET += @echo $$INCFILELIST>> $$INCLUDETEMP $$EOC + RET += $$QMAKE_MOC $(DEFINES) @$$INCLUDETEMP $$join(QMAKE_COMPILER_DEFINES, " -D", -D) $$1 -o $$2 + return($$RET) + } + return($$QMAKE_MOC $(DEFINES) $(INCPATH) $$join(QMAKE_COMPILER_DEFINES, " -D", -D) $$1 -o $$2) +} + +#moc headers +moc_header.CONFIG = moc_verify +moc_header.dependency_type = TYPE_C +moc_header.commands = ${QMAKE_FUNC_mocCmd} +moc_header.output = $$MOC_DIR/$${QMAKE_H_MOD_MOC}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_CPP)} +moc_header.input = HEADERS +moc_header.variable_out = SOURCES +moc_header.name = MOC ${QMAKE_FILE_IN} +silent:moc_header.commands = @echo moc ${QMAKE_FILE_IN} && $$moc_header.commands +QMAKE_EXTRA_COMPILERS += moc_header +INCREDIBUILD_XGE += moc_header + +#moc sources +moc_source.CONFIG = no_link moc_verify +moc_source.dependency_type = TYPE_C +moc_source.commands = ${QMAKE_FUNC_mocCmd} +moc_source.output = $$MOC_DIR/$${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_EXT_CPP_MOC} +moc_source.input = SOURCES OBJECTIVE_SOURCES +moc_source.name = MOC ${QMAKE_FILE_IN} +silent:moc_source.commands = @echo moc ${QMAKE_FILE_IN} && $$moc_source.commands +QMAKE_EXTRA_COMPILERS += moc_source +INCREDIBUILD_XGE += moc_source + +#make sure we can include these files +INCLUDEPATH += $$MOC_DIR + +#auto depend on moc +unix:!no_mocdepend { + moc_source.depends += $$first(QMAKE_MOC) + moc_header.depends += $$first(QMAKE_MOC) + !contains(TARGET, moc) { #auto build moc + isEmpty(QMAKE_MOC_SRC):QMAKE_MOC_SRC = "$(QTDIR)/src/tools/moc" + make_moc.target = $$first(QMAKE_MOC) + make_moc.commands = (cd $$QMAKE_MOC_SRC && $(MAKE)) + QMAKE_EXTRA_TARGETS += make_moc + } +} + +#generate a mocclean +build_pass|isEmpty(BUILDS):mocclean.depends = compiler_moc_header_clean compiler_moc_source_clean +else:mocclean.CONFIG += recursive +QMAKE_EXTRA_TARGETS += mocclean + +#generate a mocables +build_pass|isEmpty(BUILDS):mocables.depends = compiler_moc_header_make_all compiler_moc_source_make_all +else:mocables.CONFIG += recursive +QMAKE_EXTRA_TARGETS += mocables diff --git a/mkspecs/features/no_debug_info.prf b/mkspecs/features/no_debug_info.prf new file mode 100644 index 0000000..3acf6c8 --- /dev/null +++ b/mkspecs/features/no_debug_info.prf @@ -0,0 +1,5 @@ + +QMAKE_CFLAGS -= -g -ggdb3 +QMAKE_CXXFLAGS -= -g -ggdb3 +QMAKE_LFLAGS -= -g -ggdb3 +QMAKE_LIBFLAGS -= -g -ggdb3 diff --git a/mkspecs/features/qdbus.prf b/mkspecs/features/qdbus.prf new file mode 100644 index 0000000..1d8704d --- /dev/null +++ b/mkspecs/features/qdbus.prf @@ -0,0 +1,2 @@ +qtAddLibrary(QtDBus) +CONFIG += dbusadaptors dbusinterfaces diff --git a/mkspecs/features/qt.prf b/mkspecs/features/qt.prf new file mode 100644 index 0000000..0c6e09a --- /dev/null +++ b/mkspecs/features/qt.prf @@ -0,0 +1,183 @@ +CONFIG *= moc thread + +#handle defines +win32 { + qt_static:DEFINES += QT_NODLL + !contains(DEFINES, QT_NODLL) { + QT_ENV_DLL = $$(QT_DLL) + QT_ENV_NO_DLL = $$(QT_NODLL) + isEmpty(QT_ENV_NO_DLL) { + shared|!isEmpty(QT_ENV_DLL):DEFINES += QT_DLL + } + contains(DEFINES, QT_MAKEDLL)|contains(DEFINES, QT_DLL):QMAKE_QT_DLL = 1 + } +} +CONFIG(release, debug|release):DEFINES += QT_NO_DEBUG +no_keywords:DEFINES += QT_NO_KEYWORDS +plugin { #Qt plugins + static:DEFINES += QT_STATICPLUGIN + DEFINES += QT_PLUGIN + + # Triggers both on Qt being configured with -arch boundschecker, + # and if you qmake CONFIG+=boundchecker on your plugin project + boundschecker|contains(QT_CONFIG,boundschecker) { + # This option is added for plugins when Qt is configured for Boundschecker, + # since we want Boundschecker to not instrument the qt_plugin_query_verification_data + # function, as we call that function without the plugin's dependent DLLs, thus + # Boundscheckers instrumentation will fail. The function only returns a const char *, + # so no instrumentation is really needed on that function anyways. + QMAKE_CFLAGS += /nmignore:*:qt_plugin_query_verification_data + QMAKE_CXXFLAGS += /nmignore:*:qt_plugin_query_verification_data + } +} + +#handle includes +INCLUDEPATH = $$QMAKE_INCDIR_QT $$INCLUDEPATH #prepending prevents us from picking up "stale" includes +win32:INCLUDEPATH += $$QMAKE_INCDIR_QT/ActiveQt + +# As order does matter for static libs, we reorder the QT variable here +TMPLIBS = webkit phonon dbus testlib script scripttools svg qt3support sql xmlpatterns xml opengl gui network core +for(QTLIB, $$list($$TMPLIBS)) { + contains(QT, $$QTLIB): QT_ORDERED += $$QTLIB +} + +QT_UNKNOWN = $$QT +QT_UNKNOWN -= $$QT_ORDERED +QT = $$QT_ORDERED +for(QTLIB, $$list($$QT_UNKNOWN)) { + !contains(TMPLIBS, $$QTLIB):message("Warning: unknown QT: $$QTLIB") +} + +QT_PLUGIN_VERIFY = QTPLUGIN DEPLOYMENT_PLUGIN +for(QT_CURRENT_VERIFY, $$list($$QT_PLUGIN_VERIFY)) { + for(QTPLUG, $$list($$lower($$unique($$QT_CURRENT_VERIFY)))) { + qplugin_style = + !qt_debug:!qt_release { + CONFIG(debug, debug|release):qplugin_style = debug + else:qplugin_style = release + } else:CONFIG(qt_debug, qt_debug|qt_release) { + qplugin_style = debug + } else { + qplugin_style = release + } + + # Check if the plugin is known to Qt. We can use this to determine + # the plugin path. Unknown plugins must rely on the default link path. + ACCESSIBLEPLUGINS = qtaccessiblewidgets qtaccessiblecompatwidgets + CODECPLUGINS = qcncodecs qjpcodecs qkrcodecs qtwcodecs + DECORATIONPLUGINS = qdecorationdefault qdecorationwindows + GFXDRIVERPLUGINS = qgfxvnc qscreenvfb qgfxsnap qgfxvga16 qgfxmatrox qgfxvoodoo qgfxtransformed qgfxshadowfb + IMAGEPLUGINS = qgif qmng qjpeg qsvg + INPUTPLUGINS = qimsw-multi + MOUSEDRIVERPLUGINS = qtslibmousehandler + SQLPLUGINS = qsqldb2 qsqloci qsqltds qsqlodbc qsqlpsql qsqlibase qsqlmysql qsqlite2 qsqlite + PHONONPLUGINS = phonon_waveout phonon_ds9 + + ALLQTPLUGINS = $$ACCESSIBLEPLUGINS $$CODECPLUGINS $$DECORATIONPLUGINS $$GFXDRIVERPLUGINS $$IMAGEPLUGINS $$INPUTPLUGINS $$MOUSEDRIVERPLUGINS $$SQLPLUGINS $$PHONONPLUGINS + + QT_PLUGINPATH = + contains(ALLQTPLUGINS, $$QTPLUG) { + # Determine the plugin path + contains(ACCESSIBLEPLUGINS, $$QTPLUG): QT_PLUGINPATH = accessible + contains(CODECPLUGINS, $$QTPLUG): QT_PLUGINPATH = codecs + contains(DECORATIONPLUGINS, $$QTPLUG): QT_PLUGINPATH = decorations + contains(GFXDRIVERPLUGINS, $$QTPLUG): QT_PLUGINPATH = gfxdrivers + contains(IMAGEPLUGINS, $$QTPLUG): QT_PLUGINPATH = imageformats + contains(INPUTPLUGINS, $$QTPLUG): QT_PLUGINPATH = inputmethods + contains(MOUSEDRIVERPLUGINS, $$QTPLUG): QT_PLUGINPATH = mousedrivers + contains(SQLPLUGINS, $$QTPLUG): QT_PLUGINPATH = sqldrivers + contains(PHONONPLUGINS, $$QTPLUG): QT_PLUGINPATH = phonon_backend + } + + # Generate the plugin linker line + target_qt:isEqual(TARGET, QTPLUG) { + warning($$TARGET cannot have a QTPLUGIN of $$QTPLUG) + } else { + QT_LINKAGE = -l$${QTPLUG} + win32 { + CONFIG(debug, debug|release):QT_LINKAGE = -l$${QTPLUG}d + } else:mac { + isEqual(qplugin_style, debug):QT_LINKAGE = -l$${QTPLUG}_debug + } + } + + # Only link against plugin in static builds + isEqual(QT_CURRENT_VERIFY, QTPLUGIN): { + !isEmpty(QT_PLUGINPATH): LIBS *= -L$$[QT_INSTALL_PLUGINS]/$$QT_PLUGINPATH + LIBS += $$QT_LINKAGE + # if the plugin is linked statically there is no need to deploy it + DEPLOYMENT_PLUGIN -= $$QT_CURRENT_VERIFY + } + isEqual(QT_CURRENT_VERIFY, DEPLOYMENT_PLUGIN):shared:wince*: { + QT_ITEM = + CONFIG(debug, debug|release): QT_ITEM = $${QTPLUG}d4.dll + else: QT_ITEM = $${QTPLUG}4.dll + + eval(qt_additional_plugin_$${QTPLUG}.sources = $$[QT_INSTALL_PLUGINS]/$${QT_PLUGINPATH}/$${QT_ITEM}) + eval(qt_additional_plugin_$${QTPLUG}.path = $${QT_PLUGINPATH}) + + DEPLOYMENT *= qt_additional_plugin_$${QTPLUG} + } + } +} +#specific module settings +!isEmpty(QT_BUILD_TREE):QMAKE_LIBDIR = $$QT_BUILD_TREE/lib $$QMAKE_LIBDIR #as above, prepending prevents us from picking up "stale" libs +QMAKE_LIBDIR += $$QMAKE_LIBDIR_QT +for(QTLIB, $$list($$lower($$unique(QT)))) { + unset(qlib_style) + !qt_debug:!qt_release { + CONFIG(debug, debug|release):qlib_style = debug + else:qlib_style = release + } else:CONFIG(qt_debug, qt_debug|qt_release) { + qlib_style = debug + } else { + qlib_style = release + } + + unset(qlib) + isEqual(QTLIB, gui):qlib = QtGui + else:isEqual(QTLIB, network):qlib = QtNetwork + else:isEqual(QTLIB, xml):qlib = QtXml + else:isEqual(QTLIB, xmlpatterns):qlib = QtXmlPatterns + else:isEqual(QTLIB, opengl):qlib = QtOpenGL + else:isEqual(QTLIB, sql):qlib = QtSql + else:isEqual(QTLIB, core):qlib = QtCore + else:isEqual(QTLIB, canvas):qlib = QtCanvas + else:isEqual(QTLIB, qt3support):qlib = Qt3Support + else:isEqual(QTLIB, svg):qlib = QtSvg + else:isEqual(QTLIB, script):qlib = QtScript + else:isEqual(QTLIB, scripttools):qlib = QtScriptTools + else:isEqual(QTLIB, testlib):qlib = QtTest + else:isEqual(QTLIB, dbus):qlib = QtDBus + else:isEqual(QTLIB, phonon):qlib = phonon + else:isEqual(QTLIB, webkit):qlib = QtWebKit + else:message("Unknown QT: $$QTLIB"):qlib = + !isEmpty(qlib) { + target_qt:isEqual(TARGET, qlib) { + warning($$TARGET cannot have a QT of $$QTLIB) + } else { + DEFINES *= $$upper(QT_$${QTLIB}_LIB) + isEqual(QTLIB, opengl):CONFIG += opengl + isEqual(QTLIB, qt3support):DEFINES *= QT3_SUPPORT + isEqual(QTLIB, testlib):CONFIG += console + isEqual(QTLIB, dbus):CONFIG += dbusadaptors dbusinterfaces + + qtAddLibrary($$qlib) + } + } +} + +qt_compat { + !qt_compat_no_warning:QTDIR_build:warning(***USE of COMPAT inside of QTDIR!**) #just for us + INCLUDEPATH *= $$QMAKE_INCDIR_QT/Qt + DEFINES *= QT_COMPAT +} + +wince*:static:gui { + QTLIB += qmenu_wce.res +} + +!isEmpty(QT_NAMESPACE):DEFINES *= QT_NAMESPACE=$$QT_NAMESPACE +mac { + !isEmpty(QT_NAMESPACE_MAC_CRC):DEFINES *= QT_NAMESPACE_MAC_CRC=$$QT_NAMESPACE_MAC_CRC +} diff --git a/mkspecs/features/qt_config.prf b/mkspecs/features/qt_config.prf new file mode 100644 index 0000000..779c2e5 --- /dev/null +++ b/mkspecs/features/qt_config.prf @@ -0,0 +1,14 @@ +exists($$_QMAKE_CACHE_):QMAKE_QT_CONFIG = $$fromfile($$_QMAKE_CACHE_, QMAKE_QT_CONFIG) +isEmpty(QMAKE_QT_CONFIG)|!exists($$QMAKE_QT_CONFIG) { + !isEmpty(QT_BUILD_TREE):QMAKE_QT_CONFIG = $$QT_BUILD_TREE/mkspecs/qconfig.pri + else:exists($$_QMAKE_CACHE_):infile($$_QMAKE_CACHE_, QT_BUILD_TREE):QMAKE_QT_CONFIG = $$fromfile($$_QMAKE_CACHE_, QT_BUILD_TREE)/mkspecs/qconfig.pri + else:exists($$[QT_INSTALL_DATA]/mkspecs/qconfig.pri):QMAKE_QT_CONFIG = $$[QT_INSTALL_DATA]/mkspecs/qconfig.pri +} +!exists($$QMAKE_QT_CONFIG)|!include($$QMAKE_QT_CONFIG) { + debug(1, "Cannot load qconfig.pri!") +} else { + debug(1, "Loaded .qconfig.pri from ($$QMAKE_QT_CONFIG)") +} + +load(qt_functions) + diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf new file mode 100644 index 0000000..8956ef7 --- /dev/null +++ b/mkspecs/features/qt_functions.prf @@ -0,0 +1,66 @@ +defineReplace(qtLibraryTarget) { + unset(LIBRARY_NAME) + LIBRARY_NAME = $$1 + mac:!static:contains(QT_CONFIG, qt_framework) { + QMAKE_FRAMEWORK_BUNDLE_NAME = $$LIBRARY_NAME + export(QMAKE_FRAMEWORK_BUNDLE_NAME) + } + contains(TEMPLATE, .*lib):CONFIG(debug, debug|release) { + !debug_and_release|build_pass { + mac:RET = $$member(LIBRARY_NAME, 0)_debug + else:win32:RET = $$member(LIBRARY_NAME, 0)d + } + } + isEmpty(RET):RET = $$LIBRARY_NAME + return($$RET) +} + +defineTest(qtAddLibrary) { + INCLUDEPATH -= $$QMAKE_INCDIR_QT/$$1 + INCLUDEPATH = $$QMAKE_INCDIR_QT/$$1 $$INCLUDEPATH + + LIB_NAME = $$1 + unset(LINKAGE) + mac { + CONFIG(qt_framework, qt_framework|qt_no_framework) { #forced + QMAKE_FRAMEWORKPATH *= $${QMAKE_LIBDIR_QT} + FRAMEWORK_INCLUDE = $$QMAKE_LIBDIR_QT/$${LIB_NAME}.framework/Headers + !qt_no_framework_direct_includes:exists($$FRAMEWORK_INCLUDE) { + INCLUDEPATH -= $$FRAMEWORK_INCLUDE + INCLUDEPATH = $$FRAMEWORK_INCLUDE $$INCLUDEPATH + } + LINKAGE = -framework $${LIB_NAME}$${QT_LIBINFIX} + } else:!qt_no_framework { #detection + for(frmwrk_dir, $$list($$QMAKE_LIBDIR_QT $$QMAKE_LIBDIR $$(DYLD_FRAMEWORK_PATH) /Library/Frameworks)) { + exists($${frmwrk_dir}/$${LIB_NAME}.framework) { + QMAKE_FRAMEWORKPATH *= $${frmwrk_dir} + FRAMEWORK_INCLUDE = $$frmwrk_dir/$${LIB_NAME}.framework/Headers + !qt_no_framework_direct_includes:exists($$FRAMEWORK_INCLUDE) { + INCLUDEPATH -= $$FRAMEWORK_INCLUDE + INCLUDEPATH = $$FRAMEWORK_INCLUDE $$INCLUDEPATH + } + LINKAGE = -framework $${LIB_NAME} + break() + } + } + } + } + isEmpty(LINKAGE) { + CONFIG(debug, debug|release) { + win32:LINKAGE = -l$${LIB_NAME}$${QT_LIBINFIX}d + mac:LINKAGE = -l$${LIB_NAME}$${QT_LIBINFIX}_debug + } + isEmpty(LINKAGE):LINKAGE = -l$${LIB_NAME}$${QT_LIBINFIX} + } + !isEmpty(QMAKE_LSB) { + QMAKE_LFLAGS *= --lsb-libpath=$$$$QMAKE_LIBDIR_QT + QMAKE_LFLAGS *= -L/opt/lsb/lib + QMAKE_LFLAGS *= --lsb-shared-libs=$${LIB_NAME}$${QT_LIBINFIX} + } + LIBS += $$LINKAGE + export(LIBS) + export(INCLUDEPATH) + export(QMAKE_FRAMEWORKPATH) + export(QMAKE_LFLAGS) + return(true) +} diff --git a/mkspecs/features/qtestlib.prf b/mkspecs/features/qtestlib.prf new file mode 100644 index 0000000..0b1fbee --- /dev/null +++ b/mkspecs/features/qtestlib.prf @@ -0,0 +1,4 @@ + +CONFIG += console + +qtAddLibrary(QtTest) diff --git a/mkspecs/features/qtopia.prf b/mkspecs/features/qtopia.prf new file mode 100644 index 0000000..7672a8d --- /dev/null +++ b/mkspecs/features/qtopia.prf @@ -0,0 +1 @@ +CONFIG *= qtopiainc qtopialib diff --git a/mkspecs/features/qtopiainc.prf b/mkspecs/features/qtopiainc.prf new file mode 100644 index 0000000..2665da5 --- /dev/null +++ b/mkspecs/features/qtopiainc.prf @@ -0,0 +1 @@ +INCLUDEPATH += $$QMAKE_INCDIR_QTOPIA diff --git a/mkspecs/features/qtopialib.prf b/mkspecs/features/qtopialib.prf new file mode 100644 index 0000000..0c5ccf1 --- /dev/null +++ b/mkspecs/features/qtopialib.prf @@ -0,0 +1,2 @@ +!isEmpty(QMAKE_LIBDIR_QTOPIA):QMAKE_LIBDIR = $$QMAKE_LIBDIR_QTOPIA +LIBS += $$QMAKE_LIBS_QTOPIA diff --git a/mkspecs/features/qttest_p4.prf b/mkspecs/features/qttest_p4.prf new file mode 100644 index 0000000..e9d79b0 --- /dev/null +++ b/mkspecs/features/qttest_p4.prf @@ -0,0 +1,28 @@ +isEmpty(TEMPLATE):TEMPLATE=app +CONFIG += qt warn_on console depend_includepath + +qtAddLibrary(QtTest) + +# prefix test binary with tst_ +!contains(TARGET, ^tst_.*):TARGET = $$join(TARGET,,"tst_") + +######################################################################## +# Use install rule to run test application. +# This lets you do 'make install' on a test to both build and run it, +# and lets you easily build and run all tests from the parent directory. +# ---------------------------------------------------------------------- + +runme.files = +runme.path = . +!isEmpty(DESTDIR): runme.commands = cd ./$(DESTDIR) && +macx: runme.commands += ./$(QMAKE_TARGET).app/Contents/MacOS/$(QMAKE_TARGET) +else:unix: runme.commands += ./$(QMAKE_TARGET) +else:win32: { + CONFIG(debug, debug|release):runme.commands += debug\\$(QMAKE_TARGET) + else:runme.commands += release\\$(QMAKE_TARGET) +} +embedded: runme.commands += -qws +INSTALLS += runme + + +######################################################################## diff --git a/mkspecs/features/release.prf b/mkspecs/features/release.prf new file mode 100644 index 0000000..2d63c24 --- /dev/null +++ b/mkspecs/features/release.prf @@ -0,0 +1,7 @@ +CONFIG -= debug +QMAKE_CFLAGS += $$QMAKE_CFLAGS_RELEASE +QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_RELEASE +QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_OBJECTIVE_CFLAGS_RELEASE +QMAKE_LFLAGS += $$QMAKE_LFLAGS_RELEASE +QMAKE_LIBFLAGS += $$QMAKE_LIBFLAGS_RELEASE +!debug_and_release:fix_output_dirs:fixExclusiveOutputDirs(release, debug)
\ No newline at end of file diff --git a/mkspecs/features/resources.prf b/mkspecs/features/resources.prf new file mode 100644 index 0000000..8ccd576 --- /dev/null +++ b/mkspecs/features/resources.prf @@ -0,0 +1,31 @@ +isEmpty(QMAKE_RCC) { + win32:QMAKE_RCC = $$[QT_INSTALL_BINS]\rcc.exe + else:QMAKE_RCC = $$[QT_INSTALL_BINS]/rcc +} + +isEmpty(RCC_DIR):RCC_DIR = . +isEmpty(QMAKE_RESOURCE_PREFIX):QMAKE_RESOURCE_PREFIX = /tmp/ +isEmpty(QMAKE_MOD_RCC):QMAKE_MOD_RCC = qrc + +resource_combine { + rcc.CONFIG += combine + rcc.output = $$RCC_DIR/$${first(QMAKE_MOD_RCC)}_combined$${first(QMAKE_EXT_CPP)} +} else { + rcc.output = $$RCC_DIR/$${first(QMAKE_MOD_RCC)}_${QMAKE_FILE_BASE}$${first(QMAKE_EXT_CPP)} +} +!contains(QMAKE_RESOURCE_FLAGS, -root):!isEmpty(QMAKE_RESOURCE_ROOT):QMAKE_RESOURCE_FLAGS += -root $$QMAKE_RESOURCE_ROOT +!contains(QMAKE_RESOURCE_FLAGS, -name) { + resource_combine { + isEmpty(QMAKE_RESOURCE_NAME):!isEmpty(TARGET):QMAKE_RESOURCE_NAME = $$TARGET + !isEmpty(QMAKE_RESOURCE_NAME):QMAKE_RESOURCE_FLAGS += -name $$QMAKE_RESOURCE_NAME + } else { + QMAKE_RESOURCE_FLAGS += -name ${QMAKE_FILE_BASE} + } +} +rcc.commands = "$$QMAKE_RCC" $$QMAKE_RESOURCE_FLAGS "${QMAKE_FILE_IN}" -o "${QMAKE_FILE_OUT}" +rcc.depend_command = "$$QMAKE_RCC" -list $$QMAKE_RESOURCE_FLAGS "${QMAKE_FILE_IN}" +rcc.input = RESOURCES +rcc.variable_out = SOURCES +rcc.name = RCC ${QMAKE_FILE_IN} +silent:rcc.commands = @echo rcc "${QMAKE_FILE_IN}" && $$rcc.commands +QMAKE_EXTRA_COMPILERS += rcc diff --git a/mkspecs/features/shared.prf b/mkspecs/features/shared.prf new file mode 100644 index 0000000..86efd8e --- /dev/null +++ b/mkspecs/features/shared.prf @@ -0,0 +1,7 @@ +CONFIG -= static +contains(TEMPLATE, ".*lib"): { + CONFIG += dll + CONFIG -= staticlib + win32:QMAKE_LFLAGS += $$QMAKE_LFLAGS_DLL +} +!static_and_shared:fix_output_dirs:fixExclusiveOutputDirs(shared, static) diff --git a/mkspecs/features/silent.prf b/mkspecs/features/silent.prf new file mode 100644 index 0000000..66b4bb7 --- /dev/null +++ b/mkspecs/features/silent.prf @@ -0,0 +1,6 @@ +!macx-xcode { + QMAKE_CC = @echo compiling $< && $$QMAKE_CC + QMAKE_CXX = @echo compiling $< && $$QMAKE_CXX + QMAKE_LINK = @echo linking $@ && $$QMAKE_LINK + QMAKE_LINK_SHLIB = @echo linking $@ && $$QMAKE_LINK_SHLIB +} diff --git a/mkspecs/features/static.prf b/mkspecs/features/static.prf new file mode 100644 index 0000000..6e2b54f --- /dev/null +++ b/mkspecs/features/static.prf @@ -0,0 +1,9 @@ +CONFIG -= shared dll +contains(TEMPLATE, ".*lib"):{ + CONFIG += staticlib + unix { + QMAKE_CFLAGS += $$QMAKE_CFLAGS_STATIC_LIB + QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_STATIC_LIB + } +} +!static_and_shared:fix_output_dirs:fixExclusiveOutputDirs(static, shared) diff --git a/mkspecs/features/static_and_shared.prf b/mkspecs/features/static_and_shared.prf new file mode 100644 index 0000000..f586bdd --- /dev/null +++ b/mkspecs/features/static_and_shared.prf @@ -0,0 +1,3 @@ +!contains(TEMPLATE, subdirs):!macx-xcode { + addExclusiveBuilds(static, Static, shared, Shared) +} diff --git a/mkspecs/features/staticlib.prf b/mkspecs/features/staticlib.prf new file mode 100644 index 0000000..4884964 --- /dev/null +++ b/mkspecs/features/staticlib.prf @@ -0,0 +1 @@ +CONFIG += static diff --git a/mkspecs/features/uic.prf b/mkspecs/features/uic.prf new file mode 100644 index 0000000..885fad7 --- /dev/null +++ b/mkspecs/features/uic.prf @@ -0,0 +1,111 @@ + +isEmpty(QMAKE_UIC3) { + win32:QMAKE_UIC3 = $$[QT_INSTALL_BINS]\uic3.exe + else:QMAKE_UIC3 = $$[QT_INSTALL_BINS]/uic3 +} + +isEmpty(QMAKE_UIC) { + win32:QMAKE_UIC = $$[QT_INSTALL_BINS]\uic.exe + else:QMAKE_UIC = $$[QT_INSTALL_BINS]/uic +} + +isEmpty(UI_DIR):UI_DIR = . +isEmpty(UI_SOURCES_DIR):UI_SOURCES_DIR = $$UI_DIR +isEmpty(UI_HEADERS_DIR):UI_HEADERS_DIR = $$UI_DIR +isEmpty(QMAKE_MOD_UIC):QMAKE_MOD_UIC = ui_ + +# Allow FORMS3 to contain old UIC3 forms, while FORMS contains new +# UIC files in the same project. However, if CONFIG+=uic3 and no +# FORMS3 is defined, FORMS may only contain old UIC3 files. + +!uic3|!isEmpty(FORMS3) { + # If we have CONFIG+=uic3 and no FORMS3, then don't do this step, + # as UIC3 files don't need a ui_<formname>.h file + + uic.commands = $$QMAKE_UIC ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} + uic.depend_command = "$$QMAKE_UIC" -d "${QMAKE_FILE_IN}" + uic.output = $$UI_HEADERS_DIR/$${QMAKE_MOD_UIC}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_H)} + uic.input = FORMS + uic.variable_out = GENERATED_FILES + uic.CONFIG += no_link target_predeps + uic.name = UIC ${QMAKE_FILE_IN} + silent:uic.commands = @echo uic ${QMAKE_FILE_IN} && $$uic.commands + QMAKE_EXTRA_COMPILERS += uic + INCREDIBUILD_XGE += uic +} + +INCLUDEPATH += $$UI_HEADERS_DIR + +uic3 { + isEmpty(FORMS3) { + UIC3_FORMS = FORMS + !build_pass:message("Project contains CONFIG+=uic3, but no files in FORMS3; .ui files in FORMS treated as UIC3 form files.") + } else { + UIC3_FORMS = FORMS3 + } + + uic3_decl.commands = $$QMAKE_UIC3 ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} + uic3_decl.dependency_type = TYPE_UI + uic3_decl.output = $$UI_HEADERS_DIR/${QMAKE_FILE_BASE}$${first(QMAKE_EXT_H)} + uic3_decl.input = $$UIC3_FORMS + uic3_decl.CONFIG += no_link + uic3_decl.variable_out = GENERATED_FILES UIC3_HEADERS + uic3_decl.name = UIC3 Decl ${QMAKE_FILE_IN} + silent:uic3_decl.commands = @echo uic3 ${QMAKE_FILE_IN} && $$uic3_decl.commands + QMAKE_EXTRA_COMPILERS += uic3_decl + + uic3_impl.commands = $$QMAKE_UIC3 -impl ${QMAKE_FILE_BASE}$${first(QMAKE_EXT_H)} ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} + uic3_impl.dependency_type = TYPE_UI + uic3_impl.output = $$UI_SOURCES_DIR/${QMAKE_FILE_BASE}$${first(QMAKE_EXT_CPP)} + uic3_impl.depends = $$UI_HEADERS_DIR/${QMAKE_FILE_BASE}$${first(QMAKE_EXT_H)} + uic3_impl.input = $$UIC3_FORMS + uic3_impl.variable_out = GENERATED_SOURCES + uic3_impl.name = UIC3 Impl ${QMAKE_FILE_IN} + silent:uic3_impl.commands = @echo uic3 -impl ${QMAKE_FILE_IN} && $$uic3_impl.commands + QMAKE_EXTRA_COMPILERS += uic3_impl + + ### add a moc step + load(moc) + uic3_moc.commands = $$moc_header.commands + uic3_moc.output = $$moc_header.output + uic3_moc.depends = $$UI_HEADERS_DIR/${QMAKE_FILE_BASE}$${first(QMAKE_EXT_H)} + uic3_moc.input = UIC3_HEADERS + uic3_moc.variable_out = GENERATED_SOURCES + uic3_moc.name = $$moc_header.name + QMAKE_EXTRA_COMPILERS += uic3_moc +} + +defineReplace(imageCollectionCmd) { + unset(EMBEDDED_IMAGES) + RET = + for(image, $$list($$split(1))) { + EMBEDDED_IMAGES += $$image + count(EMBEDDED_IMAGES, 5) { + isEmpty(RET): RET += echo $$EMBEDDED_IMAGES > images.tmp $$escape_expand(\n\t) + else: RET += echo $$EMBEDDED_IMAGES >> images.tmp $$escape_expand(\n\t) + unset(EMBEDDED_IMAGES) + } + } + !isEmpty(EMBEDDED_IMAGES):RET += echo $$EMBEDDED_IMAGES >> images.tmp $$escape_expand(\n\t) + !isEmpty(RET) { + RET += $$QMAKE_UIC3 -embed $$TARGET -f images.tmp -o $$2 $$escape_expand(\n\t) + return($$RET) + } + return($$QMAKE_UIC3 -embed $$TARGET $$1 -o $$2) +} + +image_collection.output = qmake_image_collection$${first(QMAKE_EXT_CPP)} +image_collection.variable_out = SOURCES +image_collection.input = IMAGES +image_collection.CONFIG += combine +image_collection.name = UIC3 Image collection in ${QMAKE_FILE_OUT} +!win32 { + image_collection.commands = $$QMAKE_UIC3 -embed $$TARGET ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} + silent:image_collection.commands = @echo uic3 -embed ${QMAKE_FILE_IN} && $$image_collection.commands +} else { + image_collection.commands = ${QMAKE_FUNC_imageCollectionCmd} + silent:image_collection.commands = @echo uic3 -embed $$TARGET -f images.tmp && $image_collection.commands +} +QMAKE_EXTRA_COMPILERS += image_collection + + diff --git a/mkspecs/features/uitools.prf b/mkspecs/features/uitools.prf new file mode 100644 index 0000000..6eba066 --- /dev/null +++ b/mkspecs/features/uitools.prf @@ -0,0 +1,12 @@ +QT += xml +qt:load(qt) + +# Include the correct version of the UiLoader library +QTUITOOLS_LINKAGE = -lQtUiTools +CONFIG(debug, debug|release) { + mac: QTUITOOLS_LINKAGE = -lQtUiTools_debug + win32: QTUITOOLS_LINKAGE = -lQtUiToolsd +} +LIBS += $$QTUITOOLS_LINKAGE + +INCLUDEPATH = $$QMAKE_INCDIR_QT/QtUiTools $$INCLUDEPATH diff --git a/mkspecs/features/unix/bsymbolic_functions.prf b/mkspecs/features/unix/bsymbolic_functions.prf new file mode 100644 index 0000000..5a60463 --- /dev/null +++ b/mkspecs/features/unix/bsymbolic_functions.prf @@ -0,0 +1,6 @@ + +!staticlib:!static:contains(TEMPLATE, lib) { + QMAKE_LFLAGS_SHLIB += $$QMAKE_LFLAGS_BSYMBOLIC_FUNC + + !isEmpty(QMAKE_DYNAMIC_LIST_FILE):QMAKE_LFLAGS_SHLIB += $$QMAKE_LFLAGS_DYNAMIC_LIST$$QMAKE_DYNAMIC_LIST_FILE +} diff --git a/mkspecs/features/unix/dylib.prf b/mkspecs/features/unix/dylib.prf new file mode 100644 index 0000000..1268fae --- /dev/null +++ b/mkspecs/features/unix/dylib.prf @@ -0,0 +1 @@ +LIBS += $$QMAKE_LIBS_DYNLOAD diff --git a/mkspecs/features/unix/hide_symbols.prf b/mkspecs/features/unix/hide_symbols.prf new file mode 100644 index 0000000..4af99c2 --- /dev/null +++ b/mkspecs/features/unix/hide_symbols.prf @@ -0,0 +1,4 @@ +QMAKE_CFLAGS += $$QMAKE_CFLAGS_HIDESYMS +QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_HIDESYMS +QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_OBJECTIVE_CFLAGS_HIDESYMS +QMAKE_LFLAGS += $$QMAKE_LFLAGS_HIDESYMS diff --git a/mkspecs/features/unix/largefile.prf b/mkspecs/features/unix/largefile.prf new file mode 100644 index 0000000..104d675 --- /dev/null +++ b/mkspecs/features/unix/largefile.prf @@ -0,0 +1,2 @@ +DEFINES += _LARGEFILE64_SOURCE _LARGEFILE_SOURCE + diff --git a/mkspecs/features/unix/opengl.prf b/mkspecs/features/unix/opengl.prf new file mode 100644 index 0000000..231d0aa --- /dev/null +++ b/mkspecs/features/unix/opengl.prf @@ -0,0 +1,4 @@ +INCLUDEPATH += $$QMAKE_INCDIR_OPENGL +!isEmpty(QMAKE_LIBDIR_OPENGL):QMAKE_LIBDIR += $$QMAKE_LIBDIR_OPENGL +target_qt:LIBS += $$QMAKE_LIBS_OPENGL_QT +else:LIBS += $$QMAKE_LIBS_OPENGL diff --git a/mkspecs/features/unix/separate_debug_info.prf b/mkspecs/features/unix/separate_debug_info.prf new file mode 100644 index 0000000..0c95baf --- /dev/null +++ b/mkspecs/features/unix/separate_debug_info.prf @@ -0,0 +1,17 @@ + +!staticlib:!static:!contains(TEMPLATE, subdirs):!isEmpty(QMAKE_OBJCOPY) { + QMAKE_SEPARATE_DEBUG_INFO = (test -z \"$(DESTDIR)\" || cd \"$(DESTDIR)\" ; targ=`basename $(TARGET)`; $$QMAKE_OBJCOPY --only-keep-debug \"\$\$targ\" \"\$\$targ.debug\" && $$QMAKE_OBJCOPY --strip-debug \"\$\$targ\" && $$QMAKE_OBJCOPY --add-gnu-debuglink=\"\$\$targ.debug\" \"\$\$targ\" && chmod -x \"\$\$targ.debug\" ) ; + QMAKE_INSTALL_SEPARATE_DEBUG_INFO = test -z "$(DESTDIR)" || cd \"$(DESTDIR)\" ; $(INSTALL_FILE) `basename $(TARGET)`.debug $(INSTALL_ROOT)/\$\$target_path/ + + QMAKE_POST_LINK = $$QMAKE_SEPARATE_DEBUG_INFO $$QMAKE_POST_LINK + silent:QMAKE_POST_LINK = @echo creating $@.debug && $$QMAKE_POST_LINK + + isEmpty(DESTDIR) { + target.targets += "`basename $(TARGET)`.debug" + QMAKE_DISTCLEAN += "`basename $(TARGET)`.debug" + } else { + target.targets += "$(DESTDIR)/`basename $(TARGET)`.debug" + QMAKE_DISTCLEAN += "$(DESTDIR)/`basename $(TARGET)`.debug" + } +} + diff --git a/mkspecs/features/unix/thread.prf b/mkspecs/features/unix/thread.prf new file mode 100644 index 0000000..d6df7b6 --- /dev/null +++ b/mkspecs/features/unix/thread.prf @@ -0,0 +1,14 @@ +!isEmpty(QMAKE_CFLAGS_THREAD) { + QMAKE_CFLAGS += $$QMAKE_CFLAGS_THREAD + QMAKE_EXPORT_CFLAGS += $$QMAKE_CFLAGS_THREAD +} +!isEmpty(QMAKE_CXXFLAGS_THREAD) { + QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_THREAD + QMAKE_EXPORT_CXXFLAGS += $$QMAKE_CXXFLAGS_THREAD +} +INCLUDEPATH += $$QMAKE_INCDIR_THREAD +LIBS += $$QMAKE_LIBS_THREAD +!isEmpty(QMAKE_LFLAGS_THREAD):QMAKE_LFLAGS += $$QMAKE_LFLAGS_THREAD +!isEmpty(QMAKE_CC_THREAD):QMAKE_CC = $$QMAKE_CC_THREAD +!isEmpty(QMAKE_CXX_THREAD):QMAKE_CXX = $$QMAKE_CXX_THREAD +!isEmpty(QMAKE_LINK_THREAD):QMAKE_LINK = $$QMAKE_LINK_THREAD diff --git a/mkspecs/features/unix/x11.prf b/mkspecs/features/unix/x11.prf new file mode 100644 index 0000000..404ce08 --- /dev/null +++ b/mkspecs/features/unix/x11.prf @@ -0,0 +1 @@ +CONFIG *= x11lib x11inc diff --git a/mkspecs/features/unix/x11inc.prf b/mkspecs/features/unix/x11inc.prf new file mode 100644 index 0000000..7e11b5b --- /dev/null +++ b/mkspecs/features/unix/x11inc.prf @@ -0,0 +1,3 @@ +INCLUDEPATH += $$QMAKE_INCDIR_X11 +QMAKE_CFLAGS += $$QMAKE_CFLAGS_X11 +QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_X11 diff --git a/mkspecs/features/unix/x11lib.prf b/mkspecs/features/unix/x11lib.prf new file mode 100644 index 0000000..521518a --- /dev/null +++ b/mkspecs/features/unix/x11lib.prf @@ -0,0 +1,2 @@ +!isEmpty(QMAKE_LIBDIR_X11):QMAKE_LIBDIR += $$QMAKE_LIBDIR_X11 +LIBS += $$QMAKE_LIBS_X11 diff --git a/mkspecs/features/unix/x11sm.prf b/mkspecs/features/unix/x11sm.prf new file mode 100644 index 0000000..b455b01 --- /dev/null +++ b/mkspecs/features/unix/x11sm.prf @@ -0,0 +1,2 @@ +!isEmpty(QMAKE_LIBDIR_X11):QMAKE_LIBDIR += $$QMAKE_LIBDIR_X11 +LIBS += $$QMAKE_LIBS_X11SM diff --git a/mkspecs/features/use_c_linker.prf b/mkspecs/features/use_c_linker.prf new file mode 100644 index 0000000..e07ce6a --- /dev/null +++ b/mkspecs/features/use_c_linker.prf @@ -0,0 +1,5 @@ +!isEmpty(QMAKE_LINK_C):QMAKE_LINK = $$QMAKE_LINK_C +!isEmpty(QMAKE_LINK_C_SHLIB) { + !isEmpty(QMAKE_LINK_SHLIB_CMD):QMAKE_LINK_SHLIB_CMD ~= s/^$$re_escape($$QMAKE_LINK_SHLIB)$/$$QMAKE_LINK_C_SHLIB/ + QMAKE_LINK_SHLIB = $$QMAKE_LINK_C_SHLIB +} diff --git a/mkspecs/features/warn_off.prf b/mkspecs/features/warn_off.prf new file mode 100644 index 0000000..e37979c --- /dev/null +++ b/mkspecs/features/warn_off.prf @@ -0,0 +1,4 @@ +CONFIG -= warn_on +QMAKE_CFLAGS += $$QMAKE_CFLAGS_WARN_OFF +QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_WARN_OFF +QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_OBJECTIVE_CFLAGS_WARN_OFF
\ No newline at end of file diff --git a/mkspecs/features/warn_on.prf b/mkspecs/features/warn_on.prf new file mode 100644 index 0000000..7e78a8e --- /dev/null +++ b/mkspecs/features/warn_on.prf @@ -0,0 +1,5 @@ +CONFIG -= warn_off +QMAKE_CFLAGS += $$QMAKE_CFLAGS_WARN_ON +QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_WARN_ON +QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_OBJECTIVE_CFLAGS_WARN_ON + diff --git a/mkspecs/features/win32/console.prf b/mkspecs/features/win32/console.prf new file mode 100644 index 0000000..b34e1c6 --- /dev/null +++ b/mkspecs/features/win32/console.prf @@ -0,0 +1,2 @@ +CONFIG -= windows +contains(TEMPLATE, ".*app") : QMAKE_LFLAGS += $$QMAKE_LFLAGS_CONSOLE diff --git a/mkspecs/features/win32/default_post.prf b/mkspecs/features/win32/default_post.prf new file mode 100644 index 0000000..a1d8b52 --- /dev/null +++ b/mkspecs/features/win32/default_post.prf @@ -0,0 +1,11 @@ +!isEmpty(CE_ARCH) { + QMAKESPEC_DIR = $$QMAKESPEC + exists($$QMAKESPEC_DIR/default_post.prf) { + isEmpty(QMAKESPEC_DIR):QMAKESPEC_DIR = $$QMAKESPEC_ORIGINAL + !isEmpty(QMAKESPEC_DIR):load($$QMAKESPEC_DIR/default_post.prf) + } +} + +# Now load the global default_post +load(default_post) + diff --git a/mkspecs/features/win32/default_pre.prf b/mkspecs/features/win32/default_pre.prf new file mode 100644 index 0000000..6789174 --- /dev/null +++ b/mkspecs/features/win32/default_pre.prf @@ -0,0 +1,3 @@ +CONFIG = rtti_off exceptions_off stl_off incremental_off thread_off windows $$CONFIG +load(default_pre) + diff --git a/mkspecs/features/win32/dumpcpp.prf b/mkspecs/features/win32/dumpcpp.prf new file mode 100644 index 0000000..1963799 --- /dev/null +++ b/mkspecs/features/win32/dumpcpp.prf @@ -0,0 +1,11 @@ +isEmpty(QMAKE_DUMPCPP_NAME) { + QMAKE_DUMPCPP_NAME = make_dumpcpp +} + +# auto depend on dumpcpp +!contains(TARGET, dumpcpp) { + isEmpty(QMAKE_DUMPCPP_SRC): QMAKE_DUMPCPP_SRC = "$(QTDIR)/tools/activeqt/dumpcpp" + make_dumpcpp.commands = (cd $$QMAKE_DUMPCPP_SRC && $(QMAKE) && $(MAKE)) + QMAKE_EXTRA_TARGETS += $$QMAKE_DUMPCPP_NAME +} + diff --git a/mkspecs/features/win32/embed_manifest_dll.prf b/mkspecs/features/win32/embed_manifest_dll.prf new file mode 100644 index 0000000..90d9a2b --- /dev/null +++ b/mkspecs/features/win32/embed_manifest_dll.prf @@ -0,0 +1,11 @@ +!if(plugin:no_plugin_manifest):if(win32-msvc2005|win32-msvc2008):!static:!equals(TEMPLATE_PREFIX, "vc"):equals(TEMPLATE, "lib") { + NOPATH_TARGET = $$TARGET + NOPATH_TARGET ~= s,\\ , ,q # Remove space escaping (NOPATH_TARGET is quoted) + NOPATH_TARGET ~= s,\\,/,g # Change to single type separators + NOPATH_TARGET ~= s,^(.*/)+,, # Remove all paths + QMAKE_LFLAGS += /MANIFEST $$quote(/MANIFESTFILE:\"$${OBJECTS_DIR}\\$${NOPATH_TARGET}.intermediate.manifest\") + QMAKE_PREV_POST_LINK = $$QMAKE_POST_LINK + QMAKE_POST_LINK = $$quote(mt.exe -nologo -manifest \"$$replace(OBJECTS_DIR,/,\\)\\$${NOPATH_TARGET}.intermediate.manifest\" -outputresource:$(DESTDIR_TARGET);2$$escape_expand(\n\t)) + QMAKE_POST_LINK += $$QMAKE_PREV_POST_LINK + QMAKE_CLEAN += \"$$replace(OBJECTS_DIR,/,\\)\\$${NOPATH_TARGET}.intermediate.manifest\" +} diff --git a/mkspecs/features/win32/embed_manifest_exe.prf b/mkspecs/features/win32/embed_manifest_exe.prf new file mode 100644 index 0000000..e1747f1 --- /dev/null +++ b/mkspecs/features/win32/embed_manifest_exe.prf @@ -0,0 +1,11 @@ +if(win32-msvc2005|win32-msvc2008):!equals(TEMPLATE_PREFIX, "vc"):equals(TEMPLATE, "app") { + NOPATH_TARGET = $$TARGET + NOPATH_TARGET ~= s,\\ , ,q # Remove space escaping (NOPATH_TARGET is quoted) + NOPATH_TARGET ~= s,\\,/,g # Change to single type separators + NOPATH_TARGET ~= s,^(.*/)+,, # Remove all paths + QMAKE_LFLAGS += /MANIFEST $$quote(/MANIFESTFILE:\"$${OBJECTS_DIR}\\$${NOPATH_TARGET}.intermediate.manifest\") + QMAKE_PREV_POST_LINK = $$QMAKE_POST_LINK + QMAKE_POST_LINK = $$quote(mt.exe -nologo -manifest \"$$replace(OBJECTS_DIR,/,\\)\\$${NOPATH_TARGET}.intermediate.manifest\" -outputresource:$(DESTDIR_TARGET);1$$escape_expand(\n\t)) + QMAKE_POST_LINK += $$QMAKE_PREV_POST_LINK + QMAKE_CLEAN += \"$$replace(OBJECTS_DIR,/,\\)\\$${NOPATH_TARGET}.intermediate.manifest\" +} diff --git a/mkspecs/features/win32/exceptions.prf b/mkspecs/features/win32/exceptions.prf new file mode 100644 index 0000000..7866659 --- /dev/null +++ b/mkspecs/features/win32/exceptions.prf @@ -0,0 +1,5 @@ +CONFIG -= exceptions_off +QMAKE_CFLAGS *= $$QMAKE_CFLAGS_EXCEPTIONS_ON +QMAKE_CXXFLAGS *= $$QMAKE_CXXFLAGS_EXCEPTIONS_ON +QMAKE_LFLAGS *= $$QMAKE_LFLAGS_EXCEPTIONS_ON + diff --git a/mkspecs/features/win32/exceptions_off.prf b/mkspecs/features/win32/exceptions_off.prf new file mode 100644 index 0000000..9de53d3 --- /dev/null +++ b/mkspecs/features/win32/exceptions_off.prf @@ -0,0 +1,5 @@ +CONFIG -= exceptions +QMAKE_CFLAGS += $$QMAKE_CFLAGS_EXCEPTIONS_OFF +QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_EXCEPTIONS_OFF +QMAKE_LFLAGS += $$QMAKE_LFLAGS_EXCEPTIONS_OFF + diff --git a/mkspecs/features/win32/opengl.prf b/mkspecs/features/win32/opengl.prf new file mode 100644 index 0000000..30af2a3 --- /dev/null +++ b/mkspecs/features/win32/opengl.prf @@ -0,0 +1,3 @@ +QMAKE_LIBS += $$QMAKE_LIBS_OPENGL +QMAKE_LFLAGS += $$QMAKE_LFLAGS_OPENGL + diff --git a/mkspecs/features/win32/qaxcontainer.prf b/mkspecs/features/win32/qaxcontainer.prf new file mode 100644 index 0000000..49edb2a --- /dev/null +++ b/mkspecs/features/win32/qaxcontainer.prf @@ -0,0 +1,34 @@ +!debug_and_release|build_pass { + CONFIG(debug, debug|release) { + LIBS += -lQAxContainerd + } else { + LIBS += -lQAxContainer + } +} else { + LIBS += -lQAxContainer +} + +isEmpty(QMAKE_DUMPCPP) { + win32:QMAKE_DUMPCPP = $$[QT_INSTALL_BINS]\dumpcpp.exe +} + +dumpcpp_decl.commands = $$QMAKE_DUMPCPP ${QMAKE_FILE_IN} -o ${QMAKE_FILE_BASE} +qaxcontainer_compat: dumpcpp_decl.commands += -compat +dumpcpp_decl.output = ${QMAKE_FILE_BASE}.h +dumpcpp_decl.input = TYPELIBS +dumpcpp_decl.variable_out = HEADERS +dumpcpp_decl.name = DUMP +dumpcpp_decl.CONFIG += no_link +dumpcpp_decl.depends = $$QMAKE_DUMPCPP + +QMAKE_EXTRA_COMPILERS += dumpcpp_decl + + +dumpcpp_impl.commands = $$QMAKE_DUMPCPP -donothing +dumpcpp_impl.output = ${QMAKE_FILE_BASE}.cpp +dumpcpp_impl.input = TYPELIBS +dumpcpp_impl.variable_out = SOURCES +dumpcpp_impl.name = CPP +dumpcpp_impl.depends = $$QMAKE_DUMPCPP ${QMAKE_FILE_BASE}.h + +QMAKE_EXTRA_COMPILERS += dumpcpp_impl diff --git a/mkspecs/features/win32/qaxserver.prf b/mkspecs/features/win32/qaxserver.prf new file mode 100644 index 0000000..a18c421 --- /dev/null +++ b/mkspecs/features/win32/qaxserver.prf @@ -0,0 +1,64 @@ +build_pass:console: { + warning("QAxServer applications cannot be console applications.") + warning("Remove 'console' from your CONFIG.") +} + +ACTIVEQT_VERSION = $$VERSION +isEmpty(ACTIVEQT_VERSION):ACTIVEQT_VERSION = 1.0 + +DEFINES += QAXSERVER + +ACTIVEQT_IDE = makefile +equals(TEMPLATE_PREFIX, "vc"):ACTIVEQT_IDE = VisualStudio +equals(TEMPLATE, "vcapp"):ACTIVEQT_IDE = VisualStudio +equals(TEMPLATE, "vclib"):ACTIVEQT_IDE = VisualStudio + +equals(ACTIVEQT_IDE, "VisualStudio") { + ACTIVEQT_IDC = $${QMAKE_IDC} + ACTIVEQT_IDL = $${QMAKE_IDL} + ACTIVEQT_TARGET = "$(TargetPath)" + win32-msvc { + ACTIVEQT_NEWLINE = $$escape_expand(\t) + ACTIVEQT_OUTPUT = $(IntDir)/$${TARGET} + } else { + ACTIVEQT_NEWLINE = $$escape_expand(\n\t) + ACTIVEQT_OUTPUT = $(IntDir)$${TARGET} + } + ACTIVEQT_TLBOUT = "$(TargetDir)/$${TARGET}.tlb" + GENERATED += $${OBJECTS_DIR}/$${TARGET}.idl $${ACTIVEQT_TLBOUT} +} +equals(ACTIVEQT_IDE, "makefile") { + ACTIVEQT_IDC = -$(IDC) + ACTIVEQT_IDL = -$(IDL) + ACTIVEQT_NEWLINE = $$escape_expand(\n\t) + ACTIVEQT_TARGET = $(DESTDIR_TARGET) + ACTIVEQT_OUTPUT = $(OBJECTS_DIR)/$${TARGET} + isEmpty(DESTDIR) { + ACTIVEQT_TLBOUT = $${TARGET}.tlb + } else { + ACTIVEQT_TLBOUT = $${DESTDIR}/$${TARGET}.tlb + } +} + +!qaxserver_no_postlink { + !isEmpty(QMAKE_POST_LINK):QMAKE_POST_LINK += $$quote($$ACTIVEQT_NEWLINE) + QMAKE_POST_LINK += $$quote($$ACTIVEQT_IDC $${ACTIVEQT_TARGET} /idl $${ACTIVEQT_OUTPUT}.idl -version $${ACTIVEQT_VERSION}$${ACTIVEQT_NEWLINE}) + !isEmpty(RC_FILE) { + QMAKE_POST_LINK += $$quote($$ACTIVEQT_IDL "$${ACTIVEQT_OUTPUT}.idl" /nologo /tlb "$${ACTIVEQT_OUTPUT}.tlb"$$ACTIVEQT_NEWLINE) + QMAKE_POST_LINK += $$quote($$ACTIVEQT_IDC $${ACTIVEQT_TARGET} /tlb $${ACTIVEQT_OUTPUT}.tlb$$ACTIVEQT_NEWLINE) + } else { + QMAKE_POST_LINK += $$quote($$ACTIVEQT_IDL "$${ACTIVEQT_OUTPUT}.idl" /nologo /tlb "$${ACTIVEQT_TLBOUT}"$$ACTIVEQT_NEWLINE) + message("No rc-file linked into project; type library will be a separate file.") + } + QMAKE_POST_LINK += $$quote($$ACTIVEQT_IDC $${ACTIVEQT_TARGET} /regserver) + QMAKE_CLEAN += $${ACTIVEQT_OUTPUT}.idl $${ACTIVEQT_OUTPUT}.tlb +} + +qt:!target_qt { + CONFIG(debug, debug|release) { + QMAKE_LIBS_QT_ENTRY = -lQAxServerd + } else { + QMAKE_LIBS_QT_ENTRY = -lQAxServer + } + dll:QMAKE_LIBS += $$QMAKE_LIBS_QT_ENTRY +} diff --git a/mkspecs/features/win32/qt_dll.prf b/mkspecs/features/win32/qt_dll.prf new file mode 100644 index 0000000..f03c0c0 --- /dev/null +++ b/mkspecs/features/win32/qt_dll.prf @@ -0,0 +1 @@ +CONFIG *= qt diff --git a/mkspecs/features/win32/rtti.prf b/mkspecs/features/win32/rtti.prf new file mode 100644 index 0000000..6d720d2 --- /dev/null +++ b/mkspecs/features/win32/rtti.prf @@ -0,0 +1,3 @@ +CONFIG -= rtti_off +QMAKE_CFLAGS += $$QMAKE_CFLAGS_RTTI_ON +QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_RTTI_ON diff --git a/mkspecs/features/win32/rtti_off.prf b/mkspecs/features/win32/rtti_off.prf new file mode 100644 index 0000000..8f175de --- /dev/null +++ b/mkspecs/features/win32/rtti_off.prf @@ -0,0 +1,3 @@ +CONFIG -= rtti +QMAKE_CFLAGS += $$QMAKE_CFLAGS_RTTI_OFF +QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_RTTI_OFF diff --git a/mkspecs/features/win32/stl.prf b/mkspecs/features/win32/stl.prf new file mode 100644 index 0000000..caf30ef --- /dev/null +++ b/mkspecs/features/win32/stl.prf @@ -0,0 +1,3 @@ +CONFIG -= stl_off +QMAKE_CFLAGS *= $$QMAKE_CFLAGS_STL_ON +QMAKE_CXXFLAGS *= $$QMAKE_CXXFLAGS_STL_ON diff --git a/mkspecs/features/win32/stl_off.prf b/mkspecs/features/win32/stl_off.prf new file mode 100644 index 0000000..10198c7 --- /dev/null +++ b/mkspecs/features/win32/stl_off.prf @@ -0,0 +1,3 @@ +CONFIG -= stl +QMAKE_CFLAGS += $$QMAKE_CFLAGS_STL_OFF +QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_STL_OFF diff --git a/mkspecs/features/win32/thread.prf b/mkspecs/features/win32/thread.prf new file mode 100644 index 0000000..aa844d2 --- /dev/null +++ b/mkspecs/features/win32/thread.prf @@ -0,0 +1,30 @@ +CONFIG -= thread_off +qt { + target_qt:PRL_EXPORT_DEFINES += QT_THREAD_SUPPORT + else:DEFINES += QT_THREAD_SUPPORT +} + +# #### These need to go +debug { + contains(DEFINES, QT_DLL) { + QMAKE_CFLAGS += $$QMAKE_CFLAGS_MT_DLLDBG + QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_MT_DLLDBG + } else { + QMAKE_CFLAGS += $$QMAKE_CFLAGS_MT_DBG + QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_MT_DBG + } +} else { + contains(DEFINES, QT_DLL) { + QMAKE_CFLAGS += $$QMAKE_CFLAGS_MT_DLL + QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_MT_DLL + } else { + QMAKE_CFLAGS += $$QMAKE_CFLAGS_MT + QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_MT + } +} + +win32-msvc|win32-msvc.net { + !contains(DEFINES, QT_DLL):!target_qt:!isEqual(TARGET, qtmain):QMAKE_LFLAGS += /NODEFAULTLIB:"libc" +} + +QMAKE_LIBS += $$QMAKE_LIBS_RTMT diff --git a/mkspecs/features/win32/thread_off.prf b/mkspecs/features/win32/thread_off.prf new file mode 100644 index 0000000..436a2c8 --- /dev/null +++ b/mkspecs/features/win32/thread_off.prf @@ -0,0 +1,2 @@ +CONFIG -= thread +QMAKE_LIBS += $$QMAKE_LIBS_RT diff --git a/mkspecs/features/win32/windows.prf b/mkspecs/features/win32/windows.prf new file mode 100644 index 0000000..f037c1a --- /dev/null +++ b/mkspecs/features/win32/windows.prf @@ -0,0 +1,15 @@ +CONFIG -= console +contains(TEMPLATE, ".*app"){ + QMAKE_LFLAGS += $$QMAKE_LFLAGS_WINDOWS + win32-g++:DEFINES += QT_NEEDS_QMAIN + win32-borland:DEFINES += QT_NEEDS_QMAIN + + qt:for(entryLib, $$list($$unique(QMAKE_LIBS_QT_ENTRY))) { + isEqual(entryLib, -lqtmain): { + CONFIG(debug, debug|release): QMAKE_LIBS += $${entryLib}d + else: QMAKE_LIBS += $${entryLib} + } else { + QMAKE_LIBS += $${entryLib} + } + } +} diff --git a/mkspecs/features/yacc.prf b/mkspecs/features/yacc.prf new file mode 100644 index 0000000..c078e09 --- /dev/null +++ b/mkspecs/features/yacc.prf @@ -0,0 +1,42 @@ +# +# Yacc extra-compiler for handling files specified in the YACCSOURCES variable +# + +{ + yacc_decl.name = Yacc header + yacc_decl.input = YACCSOURCES + yacc_decl.variable_out = GENERATED_FILES + + + isEmpty(QMAKE_YACCFLAGS_MANGLE) { + QMAKE_YACCFLAGS_MANGLE = -p ${QMAKE_FILE_BASE} + QMAKE_YACC_HEADER = y.tab.h + QMAKE_YACC_SOURCE = y.tab.c + } else { + QMAKE_YACCFLAGS_MANGLE ~= s/\\$base/${QMAKE_FILE_BASE}/g #backwards compat + QMAKE_YACC_HEADER ~= s/\\$base/${QMAKE_FILE_BASE}/g + QMAKE_YACC_SOURCE ~= s/\\$base/${QMAKE_FILE_BASE}/g + } + QMAKE_YACCDECLFLAGS = $$QMAKE_YACCFLAGS + !yacc_no_name_mangle:QMAKE_YACCDECLFLAGS += $$QMAKE_YACCFLAGS_MANGLE + + yacc_decl.commands = \ + $$QMAKE_YACC $$QMAKE_YACCDECLFLAGS ${QMAKE_FILE_IN}$$escape_expand(\n\t) \ + $$QMAKE_DEL_FILE $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}_yacc$${first(QMAKE_EXT_H)} $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}_yacc$${first(QMAKE_EXT_CPP)}$$escape_expand(\n\t) \ + $$QMAKE_MOVE $${QMAKE_YACC_HEADER} $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}_yacc$${first(QMAKE_EXT_H)}$$escape_expand(\n\t) \ + $$QMAKE_MOVE $${QMAKE_YACC_SOURCE} $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}_yacc$${first(QMAKE_EXT_CPP)}$$escape_expand(\n\t) + yacc_decl.output = $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}_yacc$${first(QMAKE_EXT_H)} + + silent:yacc_decl.commands = @echo Yacc ${QMAKE_FILE_IN} && $$yacc_decl.commands + QMAKE_EXTRA_COMPILERS += yacc_decl +} + +{ + yacc_impl.name = source for ${QMAKE_FILE_IN} + yacc_impl.input = YACCSOURCES + yacc_impl.variable_out = GENERATED_SOURCES + yacc_impl.commands = $$escape_expand(\n) # We don't want any commands where, but if command is empty no rules are created + yacc_impl.depends = $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}_yacc$${first(QMAKE_EXT_H)} # Make sure we depend on the step above + yacc_impl.output = $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}_yacc$${first(QMAKE_EXT_CPP)} # Faked output from this step, output really created in step above + QMAKE_EXTRA_COMPILERS += yacc_impl +} |