summaryrefslogtreecommitdiffstats
path: root/mkspecs/features
diff options
context:
space:
mode:
authorAlexis Menard <alexis.menard@nokia.com>2009-04-17 14:06:06 (GMT)
committerAlexis Menard <alexis.menard@nokia.com>2009-04-17 14:06:06 (GMT)
commitf15b8a83e2e51955776a3f07cb85ebfc342dd8ef (patch)
treec5dc684986051654898db11ce73e03b9fec8db99 /mkspecs/features
downloadQt-f15b8a83e2e51955776a3f07cb85ebfc342dd8ef.zip
Qt-f15b8a83e2e51955776a3f07cb85ebfc342dd8ef.tar.gz
Qt-f15b8a83e2e51955776a3f07cb85ebfc342dd8ef.tar.bz2
Initial import of statemachine branch from the old kinetic repository
Diffstat (limited to 'mkspecs/features')
-rw-r--r--mkspecs/features/assistant.prf9
-rw-r--r--mkspecs/features/build_pass.prf1
-rw-r--r--mkspecs/features/dbusadaptors.prf44
-rw-r--r--mkspecs/features/dbusinterfaces.prf45
-rw-r--r--mkspecs/features/debug.prf8
-rw-r--r--mkspecs/features/debug_and_release.prf1
-rw-r--r--mkspecs/features/default_post.prf10
-rw-r--r--mkspecs/features/default_pre.prf2
-rw-r--r--mkspecs/features/designer.prf6
-rw-r--r--mkspecs/features/dll.prf2
-rw-r--r--mkspecs/features/exclusive_builds.prf100
-rw-r--r--mkspecs/features/help.prf4
-rw-r--r--mkspecs/features/incredibuild_xge.prf11
-rw-r--r--mkspecs/features/lex.prf24
-rw-r--r--mkspecs/features/link_pkgconfig.prf6
-rw-r--r--mkspecs/features/mac/default_post.prf2
-rw-r--r--mkspecs/features/mac/default_pre.prf3
-rw-r--r--mkspecs/features/mac/dwarf2.prf6
-rw-r--r--mkspecs/features/mac/objective_c.prf24
-rw-r--r--mkspecs/features/mac/ppc.prf7
-rw-r--r--mkspecs/features/mac/ppc64.prf7
-rw-r--r--mkspecs/features/mac/rez.prf16
-rw-r--r--mkspecs/features/mac/sdk.prf8
-rw-r--r--mkspecs/features/mac/x86.prf7
-rw-r--r--mkspecs/features/mac/x86_64.prf7
-rw-r--r--mkspecs/features/moc.prf86
-rw-r--r--mkspecs/features/no_debug_info.prf5
-rw-r--r--mkspecs/features/qdbus.prf2
-rw-r--r--mkspecs/features/qt.prf184
-rw-r--r--mkspecs/features/qt_config.prf14
-rw-r--r--mkspecs/features/qt_functions.prf66
-rw-r--r--mkspecs/features/qtestlib.prf4
-rw-r--r--mkspecs/features/qtopia.prf1
-rw-r--r--mkspecs/features/qtopiainc.prf1
-rw-r--r--mkspecs/features/qtopialib.prf2
-rw-r--r--mkspecs/features/qttest_p4.prf101
-rw-r--r--mkspecs/features/release.prf7
-rw-r--r--mkspecs/features/resources.prf31
-rw-r--r--mkspecs/features/shared.prf7
-rw-r--r--mkspecs/features/silent.prf6
-rw-r--r--mkspecs/features/static.prf9
-rw-r--r--mkspecs/features/static_and_shared.prf3
-rw-r--r--mkspecs/features/staticlib.prf1
-rw-r--r--mkspecs/features/uic.prf111
-rw-r--r--mkspecs/features/uitools.prf12
-rw-r--r--mkspecs/features/unix/bsymbolic_functions.prf6
-rw-r--r--mkspecs/features/unix/dylib.prf1
-rw-r--r--mkspecs/features/unix/hide_symbols.prf4
-rw-r--r--mkspecs/features/unix/largefile.prf2
-rw-r--r--mkspecs/features/unix/opengl.prf4
-rw-r--r--mkspecs/features/unix/separate_debug_info.prf17
-rw-r--r--mkspecs/features/unix/thread.prf14
-rw-r--r--mkspecs/features/unix/x11.prf1
-rw-r--r--mkspecs/features/unix/x11inc.prf3
-rw-r--r--mkspecs/features/unix/x11lib.prf2
-rw-r--r--mkspecs/features/unix/x11sm.prf2
-rw-r--r--mkspecs/features/use_c_linker.prf5
-rw-r--r--mkspecs/features/warn_off.prf4
-rw-r--r--mkspecs/features/warn_on.prf5
-rw-r--r--mkspecs/features/win32/console.prf2
-rw-r--r--mkspecs/features/win32/default_post.prf11
-rw-r--r--mkspecs/features/win32/default_pre.prf3
-rw-r--r--mkspecs/features/win32/dumpcpp.prf11
-rw-r--r--mkspecs/features/win32/embed_manifest_dll.prf11
-rw-r--r--mkspecs/features/win32/embed_manifest_exe.prf11
-rw-r--r--mkspecs/features/win32/exceptions.prf5
-rw-r--r--mkspecs/features/win32/exceptions_off.prf5
-rw-r--r--mkspecs/features/win32/opengl.prf3
-rw-r--r--mkspecs/features/win32/qaxcontainer.prf34
-rw-r--r--mkspecs/features/win32/qaxserver.prf64
-rw-r--r--mkspecs/features/win32/qt_dll.prf1
-rw-r--r--mkspecs/features/win32/rtti.prf3
-rw-r--r--mkspecs/features/win32/rtti_off.prf3
-rw-r--r--mkspecs/features/win32/stl.prf3
-rw-r--r--mkspecs/features/win32/stl_off.prf3
-rw-r--r--mkspecs/features/win32/thread.prf30
-rw-r--r--mkspecs/features/win32/thread_off.prf2
-rw-r--r--mkspecs/features/win32/windows.prf15
-rw-r--r--mkspecs/features/yacc.prf42
79 files changed, 1345 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: &#x0d;&#x0a;
+ # 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: &#x0d;&#x0a;
+ # 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..3ef864e
--- /dev/null
+++ b/mkspecs/features/qt.prf
@@ -0,0 +1,184 @@
+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 experimental-animation 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, experimental-animation):qlib = QtAnimation
+ 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..3e1c918
--- /dev/null
+++ b/mkspecs/features/qttest_p4.prf
@@ -0,0 +1,101 @@
+isEmpty(TEMPLATE):TEMPLATE=app
+CONFIG += qt warn_on console depend_includepath
+
+wince*:{
+LIBS += corelibc.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib coredll.lib winsock.lib
+CONFIG(debug, debug|release) {
+ LIBS += $$[QT_INSTALL_LIBS]/qtmaind.lib
+} else {
+ LIBS += $$[QT_INSTALL_LIBS]/qtmain.lib
+}
+}
+
+# find testlib's prl file and extract the librarie's name
+QTEST_LIB =
+mac:exists($$[QT_INSTALL_LIBS]/QtTest.framework):QTEST_LIB = QtTest.framework
+CONFIG(debug, debug|release) {
+ isEmpty(QTEST_LIB) {
+ win32 {
+ QTEST_LIB = $$fromfile($$[QT_INSTALL_LIBS]/QtTest$${QT_LIBINFIX}d.prl, QMAKE_PRL_TARGET)4.dll
+ }
+ mac {
+ QTEST_LIB = $$fromfile($$[QT_INSTALL_LIBS]/libQtTest$${QT_LIBINFIX}_debug.prl, QMAKE_PRL_TARGET)
+ }
+ unix:!mac {
+ QTEST_LIB = $$fromfile($$[QT_INSTALL_LIBS]/libQtTest$${QT_LIBINFIX}.prl, QMAKE_PRL_TARGET)
+ }
+ }
+ OBJECTS_DIR = tmp/debug
+ MOC_DIR = tmp/debug
+} else {
+ isEmpty(QTEST_LIB) {
+ win32 {
+ QTEST_LIB = $$fromfile($$[QT_INSTALL_LIBS]/QtTest$${QT_LIBINFIX}.prl, QMAKE_PRL_TARGET)4.dll
+ } else {
+ QTEST_LIB = $$fromfile($$[QT_INSTALL_LIBS]/libQtTest$${QT_LIBINFIX}.prl, QMAKE_PRL_TARGET)
+ }
+ }
+ OBJECTS_DIR = tmp/release
+ MOC_DIR = tmp/release
+}
+isEmpty(QTEST_LIB) {
+ warning("Cannot find testlib's prl file, run qmake in $QTDIR/src/testlib")
+ CONFIG += embed_testlib
+} else {
+ !exists($$[QT_INSTALL_LIBS]/$$QTEST_LIB):CONFIG += embed_testlib
+}
+
+# make sure the test is build according to your Qt configuration
+contains(QT_CONFIG, embedded):CONFIG += embedded
+
+embed_testlib {
+ QTESTDIR = $${QT_SOURCE_TREE}
+ isEmpty(QTESTDIR):QTESTDIR = $$(QTSRCDIR)
+ isEmpty(QTESTDIR):QTESTDIR = $$(QTDIR)
+ isEmpty(QTESTDIR):warning("Cannot find QTestLib sources, set QTDIR or QTSRCDIR")
+ QTESTDIR = $${QTESTDIR}/src/testlib
+ HEADERS += $${QTESTDIR}/qtesteventloop.h
+ SOURCES += $${QTESTDIR}/qasciikey.cpp \
+ $${QTESTDIR}/qabstracttestlogger.cpp \
+ $${QTESTDIR}/qsignaldumper.cpp \
+ $${QTESTDIR}/qtestdata.cpp \
+ $${QTESTDIR}/qtestresult.cpp \
+ $${QTESTDIR}/qxmltestlogger.cpp \
+ $${QTESTDIR}/qplaintestlogger.cpp \
+ $${QTESTDIR}/qtestcase.cpp \
+ $${QTESTDIR}/qbenchmark.cpp \
+ $${QTESTDIR}/qbenchmarkevent.cpp \
+ $${QTESTDIR}/qbenchmarkmeasurement.cpp \
+ $${QTESTDIR}/qbenchmarkvalgrind.cpp \
+ $${QTESTDIR}/qtestlog.cpp \
+ $${QTESTDIR}/qtesttable.cpp
+ DEFINES += QTEST_EMBED QTEST_LIGHT
+} else {
+ CONFIG += qtestlib
+}
+
+embedded:QMAKE_CXXFLAGS+=-fno-rtti
+
+# 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
+}