summaryrefslogtreecommitdiffstats
path: root/mkspecs/common/gcc-base.conf
diff options
context:
space:
mode:
authorTor Arne Vestbø <tor.arne.vestbo@nokia.com>2010-10-13 12:09:10 (GMT)
committerTor Arne Vestbø <tor.arne.vestbo@nokia.com>2010-10-13 18:03:01 (GMT)
commit86636e0c4ab91bfb60be1e18d6daff34d41a5927 (patch)
treeee89e8d15a27377afb45e7b6fb9ee0e4ef42bc8a /mkspecs/common/gcc-base.conf
parent2def16770a623df4e5fc0dcd5f0e55c485251992 (diff)
downloadQt-86636e0c4ab91bfb60be1e18d6daff34d41a5927.zip
Qt-86636e0c4ab91bfb60be1e18d6daff34d41a5927.tar.gz
Qt-86636e0c4ab91bfb60be1e18d6daff34d41a5927.tar.bz2
Refactor GCC mkspecs to share more configuration options
The g++ and llvm mkspecs now share the common parts in common/gcc-base.conf Each top level mkspec includes a platform-specific version of this base, either common/gcc-base-unix.conf or common/gcc-base-mac.conf, and these platform specific bases will include the cross-platform one. The same pattern is then used for the g++ specific configurations, which are split up into common/g++.conf, common/g++-unix.conf and common/g++-mac.conf The qplatformdefs.h for mac was also shared where possible. The test in tests/manual/mkspecs was used to ensure that the final output of all the mkspecs was the same after the refactoring as before. Reviewed-by: ossi
Diffstat (limited to 'mkspecs/common/gcc-base.conf')
-rw-r--r--mkspecs/common/gcc-base.conf73
1 files changed, 73 insertions, 0 deletions
diff --git a/mkspecs/common/gcc-base.conf b/mkspecs/common/gcc-base.conf
new file mode 100644
index 0000000..2afe9d6
--- /dev/null
+++ b/mkspecs/common/gcc-base.conf
@@ -0,0 +1,73 @@
+#
+# This file is used as a basis for the following compilers:
+#
+# - The GNU C++ compiler (g++)
+# - LLVM
+# - Clang
+#
+# Platform-specific options shared by these compilers are put into:
+#
+# - gcc-base-mac.conf
+# - gcc-base-unix.conf
+#
+# These base files are then combined with configurations for each compiler:
+#
+# - g++.conf
+# - g++-mac.conf
+# - g++-unix.conf
+# - llvm.conf
+# - clang.conf
+#
+# The combination happens in the top level mkspec, by including a platform-
+# specific version of the base-file, for example gcc-base-mac.conf, and then
+# a (possibly platform-specific) version of the actual compiler configuration,
+# for example g++-mac.conf.
+#
+# If you are making changes to any of these files, please consider the
+# possible effect it may have due to these include-rules, and whether it
+# might make more sense to share the rule or make it more specific.
+#
+# To verify that your change has the desired effect on the final configuration
+# you can use the manual test in tests/manual/mkspecs.
+#
+
+# Allow including configurations to override
+isEmpty(QMAKE_CC): QMAKE_CC = gcc
+
+QMAKE_CFLAGS += -pipe
+QMAKE_CFLAGS_DEPS += -M
+QMAKE_CFLAGS_WARN_ON += -Wall -W
+QMAKE_CFLAGS_WARN_OFF += -w
+QMAKE_CFLAGS_RELEASE += -O2
+QMAKE_CFLAGS_DEBUG += -g
+QMAKE_CFLAGS_SHLIB += -fPIC
+QMAKE_CFLAGS_STATIC_LIB += -fPIC
+QMAKE_CFLAGS_YACC += -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden
+QMAKE_CFLAGS_PRECOMPILE += -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+QMAKE_CFLAGS_USE_PRECOMPILE += -include ${QMAKE_PCH_OUTPUT_BASE}
+
+isEmpty(QMAKE_CXX): QMAKE_CXX = g++
+
+QMAKE_CXXFLAGS += $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS += $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON += $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF += $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB += $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_STATIC_LIB += $$QMAKE_CFLAGS_STATIC_LIB
+QMAKE_CXXFLAGS_YACC += $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
+QMAKE_CXXFLAGS_PRECOMPILE += -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+
+QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
+
+QMAKE_LINK = $$QMAKE_CXX
+QMAKE_LINK_SHLIB = $$QMAKE_CXX
+
+QMAKE_LFLAGS +=
+QMAKE_LFLAGS_DEBUG +=
+QMAKE_LFLAGS_APP +=
+QMAKE_LFLAGS_RELEASE +=
+