diff options
Diffstat (limited to 'mkspecs')
24 files changed, 187 insertions, 74 deletions
diff --git a/mkspecs/android-g++/qmake.conf b/mkspecs/android-g++/qmake.conf index d1b94bb1aa..5a056b3d00 100644 --- a/mkspecs/android-g++/qmake.conf +++ b/mkspecs/android-g++/qmake.conf @@ -27,6 +27,10 @@ contains(QMAKE_HOST.os,Windows) { } else { MINGW_IN_SHELL = 1 QMAKE_DIR_SEP = / + # Because install's ability to set permissions is not relevant on Windows, + # and git's msys does not provide it to start with. + QMAKE_INSTALL_FILE = cp -f + QMAKE_INSTALL_PROGRAM = cp -f } } diff --git a/mkspecs/common/ios/clang.conf b/mkspecs/common/ios/clang.conf index 5da7e5a233..8da555e6fa 100644 --- a/mkspecs/common/ios/clang.conf +++ b/mkspecs/common/ios/clang.conf @@ -1,10 +1,6 @@ # # compiler settings for iOS clang compilers # -# Depends on: -# -# QMAKE_XCODE_VERSION - set in xcode.conf -# # iOS build flags QMAKE_IOS_CFLAGS += -fvisibility=hidden -fpascal-strings -fmessage-length=0 @@ -24,9 +20,6 @@ QMAKE_IOS_CFLAGS += -Wno-missing-field-initializers -Wno-missing-prototype QMAKE_IOS_CXXFLAGS += -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors QMAKE_IOS_OBJ_CFLAGS += -Wno-deprecated-implementations -Wprotocol -Wno-selector -Wno-strict-selector-match -Wno-undeclared-selector -# Warn about unsupported (later than 4.5) Xcode versions -!lessThan(QMAKE_XCODE_VERSION, "4.7"): warning("The version of Xcode installed on this system is not recognised - custom compiler settings may be necessary") - # Set build flags QMAKE_CFLAGS += $$QMAKE_IOS_CFLAGS QMAKE_CXXFLAGS += $$QMAKE_IOS_CFLAGS $$QMAKE_IOS_CXXFLAGS diff --git a/mkspecs/common/mac.conf b/mkspecs/common/mac.conf index f31db3bb4b..cf54f3f580 100644 --- a/mkspecs/common/mac.conf +++ b/mkspecs/common/mac.conf @@ -26,7 +26,4 @@ QMAKE_LIBS_THREAD = QMAKE_AR = ar cq QMAKE_RANLIB = ranlib -s -# We rely on Xcode to build -include(xcode.conf) - include(unix.conf) diff --git a/mkspecs/common/xcode.conf b/mkspecs/common/xcode.conf deleted file mode 100644 index b15266b678..0000000000 --- a/mkspecs/common/xcode.conf +++ /dev/null @@ -1,21 +0,0 @@ -# -# qmake configuration for Xcode -# - -# Get path of Xcode's Developer directory -QMAKE_XCODE_DEVELOPER_PATH = $$system("/usr/bin/xcode-select --print-path 2>/dev/null") -isEmpty(QMAKE_XCODE_DEVELOPER_PATH): \ - error("Xcode path is not set. Please use xcode-select to choose Xcode installation path.") - -# Make sure Xcode path is valid -!exists($$QMAKE_XCODE_DEVELOPER_PATH): \ - error("Xcode is not installed in $${QMAKE_XCODE_DEVELOPER_PATH}. Please use xcode-select to choose Xcode installation path.") - -# Make sure Xcode is set up properly -isEmpty($$list($$system("/usr/bin/xcrun -find xcrun 2>/dev/null"))): \ - error("Xcode not set up properly. You may need to confirm the license agreement by running /usr/bin/xcodebuild.") - -# Extract Xcode version using xcodebuild -xcode_version = $$system("/usr/bin/xcodebuild -version") -QMAKE_XCODE_VERSION = $$member(xcode_version, 1) -unset(xcode_version) diff --git a/mkspecs/features/create_cmake.prf b/mkspecs/features/create_cmake.prf index a9757acd17..3dae3895de 100644 --- a/mkspecs/features/create_cmake.prf +++ b/mkspecs/features/create_cmake.prf @@ -41,6 +41,8 @@ contains(CMAKE_INCLUDE_DIR, "^\\.\\./.*") { CMAKE_INCLUDE_DIR_IS_ABSOLUTE = True } +!exists($$first(QT.$${MODULE}.private_includes)): CMAKE_NO_PRIVATE_INCLUDES = true + CMAKE_LIB_DIR = $$cmakeRelativePath($$[QT_INSTALL_LIBS], $$[QT_INSTALL_PREFIX]) contains(CMAKE_LIB_DIR,"^\\.\\./.*") { CMAKE_LIB_DIR = $$[QT_INSTALL_LIBS]/ diff --git a/mkspecs/features/ctest_testcase.prf b/mkspecs/features/ctest_testcase.prf index be972e0864..8eb6f3263e 100644 --- a/mkspecs/features/ctest_testcase.prf +++ b/mkspecs/features/ctest_testcase.prf @@ -57,7 +57,8 @@ isEmpty(CMAKE_VERSION) { dependentmodules -= $$CMAKE_QT_MODULES_UNDER_TEST dependentmodules = $$cmakeModuleList($$dependentmodules) - contains(QT_CONFIG, angle): CMAKE_ANGLE_DEFINE = -DQT_WITH_ANGLE=True + contains(QT_CONFIG, angle): CMAKE_GL_DEFINES = -DQT_WITH_ANGLE=True + !contains(QT_CONFIG, egl): CMAKE_GL_DEFINES += -DNO_EGL=True CMAKE_MODULE_VERSIONS = CMAKE_MODULES_UNDER_TEST = @@ -76,7 +77,7 @@ isEmpty(CMAKE_VERSION) { cmake $$_PRO_FILE_PWD_ $$CMAKE_GENERATOR \ -DCMAKE_VERBOSE_MAKEFILE=1 \ $$CMAKE_MODULE_DEFINES \ - $$CMAKE_ANGLE_DEFINE \ + $$CMAKE_GL_DEFINES \ -DCMAKE_BUILD_TYPE=$${CMAKE_BUILD_TYPE} \ -DCMAKE_PREFIX_PATH=$$CMAKE_PREFIX_PATH \ -DQt5_MODULE_TEST_DEPENDS=\"$${dependentmodules}\" \ diff --git a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in index a77a6bd22d..f6fd61602f 100644 --- a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in +++ b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in @@ -28,28 +28,48 @@ set(Qt5$${CMAKE_MODULE_NAME}_VERSION_STRING "$$eval(QT.$${MODULE}.MAJOR_VERSION) set(Qt5$${CMAKE_MODULE_NAME}_LIBRARIES Qt5::$${CMAKE_MODULE_NAME}) +macro(_qt5_$${CMAKE_MODULE_NAME}_check_file_exists file) + if(NOT EXISTS \"${file}\" ) + message(FATAL_ERROR \"The imported target \\\"Qt5::$${CMAKE_MODULE_NAME}\\\" references the file + \\\"${file}\\\" +but this file does not exist. Possible reasons include: +* The file was deleted, renamed, or moved to another location. +* An install or uninstall procedure did not complete successfully. +* The installation package was faulty and contained + \\\"${CMAKE_CURRENT_LIST_FILE}\\\" +but not all the files it references. +\") + endif() +endmacro() + + macro(_populate_$${CMAKE_MODULE_NAME}_target_properties Configuration LIB_LOCATION IMPLIB_LOCATION) set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration}) - set_target_properties(Qt5::$${CMAKE_MODULE_NAME} PROPERTIES - \"IMPORTED_LINK_INTERFACE_LIBRARIES_${Configuration}\" \"${_Qt5$${CMAKE_MODULE_NAME}_LIB_DEPENDENCIES}\" !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) - \"IMPORTED_LOCATION_${Configuration}\" \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}${LIB_LOCATION}\" + set(imported_location \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}${LIB_LOCATION}\") !!ELSE - \"IMPORTED_LOCATION_${Configuration}\" \"$${CMAKE_LIB_DIR}${LIB_LOCATION}\" + set(imported_location \"IMPORTED_LOCATION_${Configuration}\" \"$${CMAKE_LIB_DIR}${LIB_LOCATION}\") !!ENDIF + _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${imported_location}) + set_target_properties(Qt5::$${CMAKE_MODULE_NAME} PROPERTIES + \"IMPORTED_LINK_INTERFACE_LIBRARIES_${Configuration}\" \"${_Qt5$${CMAKE_MODULE_NAME}_LIB_DEPENDENCIES}\" + \"IMPORTED_LOCATION_${Configuration}\" ${imported_location} !!IF !isEmpty(CMAKE_LIB_SONAME) \"IMPORTED_SONAME_${Configuration}\" \"$${CMAKE_LIB_SONAME}\" !!ENDIF ) + !!IF !isEmpty(CMAKE_WINDOWS_BUILD) - if(NOT \"${IMPLIB_LOCATION}\" STREQUAL \"\") - set_target_properties(Qt5::$${CMAKE_MODULE_NAME} PROPERTIES !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) - \"IMPORTED_IMPLIB_${Configuration}\" \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\" + set(imported_implib \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\") !!ELSE - \"IMPORTED_IMPLIB_${Configuration}\" \"$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\" + set(imported_implib \"IMPORTED_IMPLIB_${Configuration}\" \"$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\") !!ENDIF + _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${imported_implib}) + if(NOT \"${IMPLIB_LOCATION}\" STREQUAL \"\") + set_target_properties(Qt5::$${CMAKE_MODULE_NAME} PROPERTIES + \"IMPORTED_IMPLIB_${Configuration}\" ${imported_implib} ) endif() !!ENDIF @@ -60,21 +80,34 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) !!IF !no_module_headers !!IF isEmpty(CMAKE_INCLUDE_DIR_IS_ABSOLUTE) set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$$CMAKE_INCLUDE_DIR\" \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}\") +!!IF isEmpty(CMAKE_NO_PRIVATE_INCLUDES) set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/${Qt5$${CMAKE_MODULE_NAME}_VERSION_STRING}\" \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/${Qt5$${CMAKE_MODULE_NAME}_VERSION_STRING}/$${MODULE_INCNAME}\" ) !!ELSE + set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS) +!!ENDIF +!!ELSE set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS \"$$CMAKE_INCLUDE_DIR\" \"$${CMAKE_INCLUDE_DIR}Qt$${CMAKE_MODULE_NAME}\") +!!IF isEmpty(CMAKE_NO_PRIVATE_INCLUDES) set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/${Qt5$${CMAKE_MODULE_NAME}_VERSION_STRING}\" \"$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/${Qt5$${CMAKE_MODULE_NAME}_VERSION_STRING}/$${MODULE_INCNAME}\" ) +!!ELSE + set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS) +!!ENDIF !!ENDIF !!ELSE set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS) set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS) !!ENDIF + + foreach(_dir ${_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS} ${Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS}) + _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${_dir}) + endforeach() + set(Qt5$${CMAKE_MODULE_NAME}_INCLUDE_DIRS ${_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS}) set(Qt5$${CMAKE_MODULE_NAME}_DEFINITIONS -D$${MODULE_DEFINE}) @@ -215,4 +248,6 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) include(\"${CMAKE_CURRENT_LIST_DIR}/Qt5$${CMAKE_MODULE_NAME}Macros.cmake\") !!ENDIF +_qt5_$${CMAKE_MODULE_NAME}_check_file_exists(\"${CMAKE_CURRENT_LIST_DIR}/Qt5$${CMAKE_MODULE_NAME}ConfigVersion.cmake\") + endif() diff --git a/mkspecs/features/ios/default_pre.prf b/mkspecs/features/ios/default_pre.prf index e2956bd77d..fa0245aa2c 100644 --- a/mkspecs/features/ios/default_pre.prf +++ b/mkspecs/features/ios/default_pre.prf @@ -2,3 +2,9 @@ unset(MAKEFILE_GENERATOR) load(default_pre) + +# Check for supported Xcode versions +lessThan(QMAKE_XCODE_VERSION, "4.3"): \ + error("This mkspec requires Xcode 4.3 or later") +!lessThan(QMAKE_XCODE_VERSION, "4.7"): \ + warning("The version of Xcode installed on this system is not recognized - custom compiler settings may be necessary") diff --git a/mkspecs/features/java.prf b/mkspecs/features/java.prf index 25f6e66427..7360103757 100644 --- a/mkspecs/features/java.prf +++ b/mkspecs/features/java.prf @@ -7,6 +7,11 @@ android { isEmpty(API_VERSION): API_VERSION = android-10 } + isEmpty(BUILD_TOOLS_REVISION) { + BUILD_TOOLS_REVISION = $$(ANDROID_BUILD_TOOLS_REVISION) + isEmpty(BUILD_TOOLS_REVISION): BUILD_TOOLS_REVISION = 17.0.0 + } + !exists($$SDK_ROOT/platforms/$$API_VERSION/android.jar) { error("The Path $$SDK_ROOT/platforms/$$API_VERSION/android.jar does not exist. Make sure the ANDROID_SDK_ROOT and ANDROID_API_VERSION environment variables are correctly set.") } @@ -56,7 +61,9 @@ android:!bundled_jar_file { DEX_CMD = $$PWD/data/android/dx $$SDK_ROOT } else { DEX_CMD = $$SDK_ROOT/platform-tools/dx + !exists($$DEX_CMD): DEX_CMD = $$SDK_ROOT/build-tools/$$BUILD_TOOLS_REVISION/dx } + !exists($$DEX_CMD): error("The path $$DEX_CMD does not exist. Please set the environment variable ANDROID_BUILD_TOOLS_REVISION to the revision of the build tools installed in your Android SDK.") QMAKE_LINK_SHLIB_CMD = $$DEX_CMD --dex --output $(TARGET) $$CLASS_DIR } else { QMAKE_LINK_SHLIB_CMD = jar cf $(TARGET) -C $$CLASS_DIR . diff --git a/mkspecs/features/mac/default_post.prf b/mkspecs/features/mac/default_post.prf index 437e3d93e4..0538a81771 100644 --- a/mkspecs/features/mac/default_post.prf +++ b/mkspecs/features/mac/default_post.prf @@ -16,6 +16,14 @@ qt:!isEmpty(QT_CONFIG) { } } +isEmpty(_QMAKE_CACHE_) { + warning("No .qmake.cache is present. This significantly slows down qmake with this makespec.") + warning("Call 'cache()' in the top-level project file to rectify this problem.") +} else { + cache(QMAKE_XCODE_DEVELOPER_PATH) + cache(QMAKE_XCODE_VERSION) +} + # Ensure that we process sdk.prf first, as it will update QMAKE_CXX # and friends that other features/extra compilers may depend on. sdk: load(sdk) diff --git a/mkspecs/features/mac/default_pre.prf b/mkspecs/features/mac/default_pre.prf index 81e1d061f8..e535c4d9e9 100644 --- a/mkspecs/features/mac/default_pre.prf +++ b/mkspecs/features/mac/default_pre.prf @@ -1,3 +1,25 @@ CONFIG = sdk rez $$CONFIG load(default_pre) +isEmpty(QMAKE_XCODE_DEVELOPER_PATH) { + # Get path of Xcode's Developer directory + QMAKE_XCODE_DEVELOPER_PATH = $$system("/usr/bin/xcode-select --print-path 2>/dev/null") + isEmpty(QMAKE_XCODE_DEVELOPER_PATH): \ + error("Xcode path is not set. Please use xcode-select to choose Xcode installation path.") + + # Make sure Xcode path is valid + !exists($$QMAKE_XCODE_DEVELOPER_PATH): \ + error("Xcode is not installed in $${QMAKE_XCODE_DEVELOPER_PATH}. Please use xcode-select to choose Xcode installation path.") + + # Make sure Xcode is set up properly + isEmpty($$list($$system("/usr/bin/xcrun -find xcrun 2>/dev/null"))): \ + error("Xcode not set up properly. You may need to confirm the license agreement by running /usr/bin/xcodebuild.") +} + +isEmpty(QMAKE_XCODE_VERSION) { + # Extract Xcode version using xcodebuild + xcode_version = $$system("/usr/bin/xcodebuild -version") + QMAKE_XCODE_VERSION = $$member(xcode_version, 1) + isEmpty(QMAKE_XCODE_VERSION): error("Could not resolve Xcode version.") + unset(xcode_version) +} diff --git a/mkspecs/features/mac/sdk.prf b/mkspecs/features/mac/sdk.prf index f5b1639a5d..0da0b65d41 100644 --- a/mkspecs/features/mac/sdk.prf +++ b/mkspecs/features/mac/sdk.prf @@ -5,8 +5,13 @@ isEmpty(QMAKE_MAC_SDK): \ contains(QMAKE_MAC_SDK, .*/.*): \ error("QMAKE_MAC_SDK can only contain short-form SDK names (eg. macosx, iphoneos)") -QMAKE_MAC_SDK_PATH = $$system("/usr/bin/xcodebuild -sdk $$QMAKE_MAC_SDK -version Path 2>/dev/null") -isEmpty(QMAKE_MAC_SDK_PATH): error("Could not resolve SDK path for \'$$QMAKE_MAC_SDK\'") +isEmpty(QMAKE_MAC_SDK.$${QMAKE_MAC_SDK}.path) { + QMAKE_MAC_SDK_PATH = $$system("/usr/bin/xcodebuild -sdk $$QMAKE_MAC_SDK -version Path 2>/dev/null") + isEmpty(QMAKE_MAC_SDK_PATH): error("Could not resolve SDK path for \'$$QMAKE_MAC_SDK\'") + !isEmpty(_QMAKE_CACHE_): cache(QMAKE_MAC_SDK.$${QMAKE_MAC_SDK}.path, set, QMAKE_MAC_SDK_PATH) +} else { + QMAKE_MAC_SDK_PATH = $$eval(QMAKE_MAC_SDK.$${QMAKE_MAC_SDK}.path) +} !equals(MAKEFILE_GENERATOR, XCODE) { QMAKE_CFLAGS += -isysroot $$QMAKE_MAC_SDK_PATH @@ -21,6 +26,11 @@ QMAKE_INCDIR_OPENGL = $$sysrootified # Resolve SDK version of various tools for(tool, $$list(QMAKE_CC QMAKE_CXX QMAKE_FIX_RPATH QMAKE_AR QMAKE_RANLIB QMAKE_LINK QMAKE_LINK_SHLIB)) { + !isEmpty(QMAKE_MAC_SDK.$${QMAKE_MAC_SDK}.$${tool}) { + $$tool = $$eval(QMAKE_MAC_SDK.$${QMAKE_MAC_SDK}.$${tool}) + next() + } + value = $$eval($$tool) isEmpty(value): next() @@ -28,15 +38,21 @@ for(tool, $$list(QMAKE_CC QMAKE_CXX QMAKE_FIX_RPATH QMAKE_AR QMAKE_RANLIB QMAKE_ isEmpty(sysrooted): next() $$tool = $$sysrooted $$member(value, 1, -1) + !isEmpty(_QMAKE_CACHE_): cache(QMAKE_MAC_SDK.$${QMAKE_MAC_SDK}.$${tool}, set, $$tool) } -# We use xml as the output format instead of json since plutil on 10.6 does not have that option -QMAKE_MAC_PLATFORM_NAME = $$system("/usr/bin/plutil -convert xml1 \"$$QMAKE_MAC_SDK_PATH/SDKSettings.plist\" -o - 2>/dev/null | " \ - "sed '/^<!DOCTYPE/d' | " \ # Don't look up http://www.apple.com/DTDs/PropertyList-1.0.dtd - "PERL5LIB= xpath 'string(//key[.=\"PLATFORM_NAME\"]/following-sibling::*[1])' 2>/dev/null | " \ - "sed 's/.*Value: \\(.*\\)/\\1/'") +isEmpty(QMAKE_MAC_SDK.$${QMAKE_MAC_SDK}.platform_name) { + # We use xml as the output format instead of json since plutil on 10.6 does not have that option + QMAKE_MAC_PLATFORM_NAME = $$system("/usr/bin/plutil -convert xml1 \"$$QMAKE_MAC_SDK_PATH/SDKSettings.plist\" -o - 2>/dev/null | " \ + "sed '/^<!DOCTYPE/d' | " \ # Don't look up http://www.apple.com/DTDs/PropertyList-1.0.dtd + "PERL5LIB= xpath 'string(//key[.=\"PLATFORM_NAME\"]/following-sibling::*[1])' 2>/dev/null | " \ + "sed 's/.*Value: \\(.*\\)/\\1/'") -isEmpty(QMAKE_MAC_PLATFORM_NAME): error("Could not resolve platform name for SDK '$$QMAKE_MAC_SDK'") + isEmpty(QMAKE_MAC_PLATFORM_NAME): error("Could not resolve platform name for SDK '$$QMAKE_MAC_SDK'") + !isEmpty(_QMAKE_CACHE_): cache(QMAKE_MAC_SDK.$${QMAKE_MAC_SDK}.platform_name, set, QMAKE_MAC_PLATFORM_NAME) +} else { + QMAKE_MAC_PLATFORM_NAME = $$eval(QMAKE_MAC_SDK.$${QMAKE_MAC_SDK}.platform_name) +} !equals(MAKEFILE_GENERATOR, XCODE) { # FIXME: Get the version_min_flag out of the platform's 'Native Build System.xcspec' diff --git a/mkspecs/features/qt_android_deps.prf b/mkspecs/features/qt_android_deps.prf index ba37649201..c258d55687 100644 --- a/mkspecs/features/qt_android_deps.prf +++ b/mkspecs/features/qt_android_deps.prf @@ -43,7 +43,10 @@ DEPENDENCY_FILE = $$ANDROID_DEPENDS_DIR$$TARGET-android-dependencies.xml !isEmpty(ANDROID_LIB_DEPENDENCIES) { for(LIB_FILE, ANDROID_LIB_DEPENDENCIES) { - FILE_CONTENT += "<lib file=\"$$LIB_FILE\" />" + EXTENDS = $$section(LIB_FILE, ":", 1, 1) + !isEmpty(EXTENDS): EXTENDS = "extends=\"$$EXTENDS\"" + LIB_FILE = $$section(LIB_FILE, ":", 0, 0) + FILE_CONTENT += "<lib file=\"$$LIB_FILE\" $$EXTENDS />" } } diff --git a/mkspecs/features/qt_config.prf b/mkspecs/features/qt_config.prf index 061399d78c..77d2c0ffc7 100644 --- a/mkspecs/features/qt_config.prf +++ b/mkspecs/features/qt_config.prf @@ -20,6 +20,7 @@ QMAKE_QT_CONFIG = $$[QT_HOST_DATA/get]/mkspecs/qconfig.pri # qt_<module>.pri forwarding file QT_MODULE_INCLUDE_BASE = $$[QT_INSTALL_HEADERS] QT_MODULE_LIB_BASE = $$[QT_INSTALL_LIBS] + QT_MODULE_HOST_LIB_BASE = $$[QT_HOST_LIBS] QT_MODULE_PLUGIN_BASE = $$[QT_INSTALL_PLUGINS] QT_MODULE_LIBEXEC_BASE = $$[QT_INSTALL_LIBEXECS] QT_MODULE_BIN_BASE = $$[QT_INSTALL_BINS] @@ -30,6 +31,7 @@ QMAKE_QT_CONFIG = $$[QT_HOST_DATA/get]/mkspecs/qconfig.pri } unset(QT_MODULE_INCLUDE_BASE) unset(QT_MODULE_LIB_BASE) + unset(QT_MODULE_HOST_LIB_BASE) unset(QT_MODULE_PLUGIN_BASE) unset(QT_MODULE_LIBEXEC_BASE) unset(QT_MODULE_BIN_BASE) diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf index 8cd2473224..9ec22d57db 100644 --- a/mkspecs/features/qt_functions.prf +++ b/mkspecs/features/qt_functions.prf @@ -194,12 +194,10 @@ defineTest(qtPrepareTool) { $$1 = $$eval(QT_TOOL.$${2}.command) isEmpty($$1) { $$1 = $$[QT_HOST_BINS]/$$2 - contains(QMAKE_HOST.os, Windows):!contains($$1, .*\\.(exe|bat)$) { - exists($$eval($$1).bat) { - $$1 = $$eval($$1).bat - } else { - $$1 = $$eval($$1).exe - } + exists($$eval($$1).pl) { + $$1 = perl -w $$eval($$1).pl + } else: contains(QMAKE_HOST.os, Windows) { + $$1 = $$eval($$1).exe } else:contains(QMAKE_HOST.os, Darwin) { BUNDLENAME = $$eval($$1).app/Contents/MacOS/$$2 exists($$BUNDLENAME) { diff --git a/mkspecs/features/qt_installs.prf b/mkspecs/features/qt_installs.prf index cc720ac8c0..e82b499009 100644 --- a/mkspecs/features/qt_installs.prf +++ b/mkspecs/features/qt_installs.prf @@ -12,10 +12,16 @@ #library !qt_no_install_library { win32 { - dlltarget.path = $$[QT_INSTALL_BINS] + host_build: \ + dlltarget.path = $$[QT_HOST_BINS] + else: \ + dlltarget.path = $$[QT_INSTALL_BINS] INSTALLS += dlltarget } - target.path = $$[QT_INSTALL_LIBS] + host_build: \ + target.path = $$[QT_HOST_LIBS] + else: \ + target.path = $$[QT_INSTALL_LIBS] INSTALLS += target } diff --git a/mkspecs/features/qt_module.prf b/mkspecs/features/qt_module.prf index 3531d28b42..429e00bed9 100644 --- a/mkspecs/features/qt_module.prf +++ b/mkspecs/features/qt_module.prf @@ -128,7 +128,10 @@ load(qt_installs) unix|win32-g++* { CONFIG += create_pc - QMAKE_PKGCONFIG_LIBDIR = $$[QT_INSTALL_LIBS/raw] + host_build: \ + QMAKE_PKGCONFIG_LIBDIR = $$[QT_HOST_LIBS] + else: \ + QMAKE_PKGCONFIG_LIBDIR = $$[QT_INSTALL_LIBS/raw] QMAKE_PKGCONFIG_INCDIR = $$[QT_INSTALL_HEADERS/raw] QMAKE_PKGCONFIG_CFLAGS = -I${includedir}/$$MODULE_INCNAME QMAKE_PKGCONFIG_DESTDIR = pkgconfig @@ -139,14 +142,14 @@ unix|win32-g++* { include_replace.match = $$rplbase/include include_replace.replace = $$[QT_INSTALL_HEADERS/raw] lib_replace.match = $$rplbase/lib - lib_replace.replace = $$[QT_INSTALL_LIBS/raw] + lib_replace.replace = $$QMAKE_PKGCONFIG_LIBDIR QMAKE_PKGCONFIG_INSTALL_REPLACE += include_replace lib_replace QMAKE_PRL_INSTALL_REPLACE += include_replace lib_replace } unix { CONFIG += create_libtool explicitlib - QMAKE_LIBTOOL_LIBDIR = $$[QT_INSTALL_LIBS/raw] + QMAKE_LIBTOOL_LIBDIR = $$QMAKE_PKGCONFIG_LIBDIR QMAKE_LIBTOOL_INSTALL_REPLACE += include_replace lib_replace } diff --git a/mkspecs/features/qt_module_pris.prf b/mkspecs/features/qt_module_pris.prf index bedcfd4c47..9e40a67b51 100644 --- a/mkspecs/features/qt_module_pris.prf +++ b/mkspecs/features/qt_module_pris.prf @@ -19,10 +19,18 @@ else: \ !build_pass { # Create a module .pri file - unix:!static: \ - module_rpath = "QT.$${MODULE}.rpath = $$[QT_INSTALL_LIBS/raw]" + host_build: \ + module_libs = "\$\$QT_MODULE_HOST_LIB_BASE" else: \ + module_libs = "\$\$QT_MODULE_LIB_BASE" + unix:!static { + host_build: \ + module_rpath = "QT.$${MODULE}.rpath = $$[QT_HOST_LIBS]" + else: \ + module_rpath = "QT.$${MODULE}.rpath = $$[QT_INSTALL_LIBS/raw]" + } else { module_rpath = + } !isEmpty(QT_FOR_PRIVATE) { contains(QT_FOR_PRIVATE, .*-private$):error("QT_FOR_PRIVATE may not contain *-private.") module_privdep = "QT.$${MODULE}.private_depends = $$QT_FOR_PRIVATE" @@ -55,15 +63,17 @@ else: \ "QT.$${MODULE}.PATCH_VERSION = $$section(VERSION, ., 2, 2)" \ "" \ "QT.$${MODULE}.name = $$TARGET" \ - "QT.$${MODULE}.bins = \$\$QT_MODULE_BIN_BASE" \ + "QT.$${MODULE}.libs = $$module_libs" \ + $$module_rpath \ + "QT.$${MODULE}.private_includes = $$MODULE_PRIVATE_INCLUDES" + !host_build: MODULE_PRI_CONT += \ "QT.$${MODULE}.includes = $$MODULE_INCLUDES" \ - "QT.$${MODULE}.private_includes = $$MODULE_PRIVATE_INCLUDES" \ - "QT.$${MODULE}.libs = \$\$QT_MODULE_LIB_BASE" \ + "QT.$${MODULE}.bins = \$\$QT_MODULE_BIN_BASE" \ "QT.$${MODULE}.libexecs = \$\$QT_MODULE_LIBEXEC_BASE" \ - $$module_rpath \ "QT.$${MODULE}.plugins = \$\$QT_MODULE_PLUGIN_BASE" \ "QT.$${MODULE}.imports = \$\$QT_MODULE_IMPORT_BASE" \ - "QT.$${MODULE}.qml = \$\$QT_MODULE_QML_BASE" \ + "QT.$${MODULE}.qml = \$\$QT_MODULE_QML_BASE" + MODULE_PRI_CONT += \ "QT.$${MODULE}.depends =$$join(MODULE_DEPENDS, " ", " ")" \ $$module_privdep \ $$module_rundep \ @@ -84,6 +94,7 @@ else: \ "QT_MODULE_IMPORT_BASE = $$MODULE_BASE_OUTDIR/imports" \ "QT_MODULE_QML_BASE = $$MODULE_BASE_OUTDIR/qml" \ "QT_MODULE_LIB_BASE = $$MODULE_BASE_OUTDIR/lib" \ + "QT_MODULE_HOST_LIB_BASE = $$MODULE_BASE_OUTDIR/lib" \ "QT_MODULE_LIBEXEC_BASE = $$MODULE_BASE_OUTDIR/libexec" \ "QT_MODULE_PLUGIN_BASE = $$MODULE_BASE_OUTDIR/plugins" \ "include($$MODULE_PRI)" @@ -99,6 +110,7 @@ else: \ QT_MODULE_IMPORT_BASE = $$[QT_INSTALL_IMPORTS] QT_MODULE_QML_BASE = $$[QT_INSTALL_QML] QT_MODULE_LIB_BASE = $$[QT_INSTALL_LIBS] + QT_MODULE_HOST_LIB_BASE = $$[QT_HOST_LIBS] QT_MODULE_LIBEXEC_BASE = $$[QT_INSTALL_LIBEXECS] QT_MODULE_PLUGIN_BASE = $$[QT_INSTALL_PLUGINS] diff --git a/mkspecs/unsupported/macx-ios-clang/qmake.conf b/mkspecs/unsupported/macx-ios-clang/qmake.conf index 833e22e3bd..3dc2715a5f 100644 --- a/mkspecs/unsupported/macx-ios-clang/qmake.conf +++ b/mkspecs/unsupported/macx-ios-clang/qmake.conf @@ -22,6 +22,4 @@ include(../../common/clang-mac.conf) include(../../common/ios/clang.conf) include(../../common/ios/qmake.conf) -lessThan(QMAKE_XCODE_VERSION, "4.3"): error("This mkspec requires Xcode 4.3 or later") - load(qt_config) diff --git a/mkspecs/win32-g++/qmake.conf b/mkspecs/win32-g++/qmake.conf index 22277e1e82..9c776e8655 100644 --- a/mkspecs/win32-g++/qmake.conf +++ b/mkspecs/win32-g++/qmake.conf @@ -94,6 +94,10 @@ QMAKE_LIBS_QT_ENTRY = -lmingw32 -lqtmain MINGW_IN_SHELL = 1 QMAKE_DIR_SEP = / include(../common/shell-unix.conf) + # Because install's ability to set permissions is not relevant on Windows, + # and git's msys does not provide it to start with. + QMAKE_INSTALL_FILE = cp -f + QMAKE_INSTALL_PROGRAM = cp -f } else { include(../common/shell-win32.conf) } diff --git a/mkspecs/win32-msvc2005/qmake.conf b/mkspecs/win32-msvc2005/qmake.conf index 6d072242c9..508db2a11c 100644 --- a/mkspecs/win32-msvc2005/qmake.conf +++ b/mkspecs/win32-msvc2005/qmake.conf @@ -8,7 +8,11 @@ MAKEFILE_GENERATOR = MSVC.NET QMAKE_PLATFORM = win32 CONFIG += incremental flat precompile_header autogen_precompile_source debug_and_release debug_and_release_target embed_manifest_dll embed_manifest_exe DEFINES += UNICODE WIN32 -QMAKE_COMPILER_DEFINES += _MSC_VER=1400 WIN32 +QMAKE_COMPILER_DEFINES += _MSC_VER=1400 _WIN32 +contains(QMAKE_TARGET.arch, x86_64) { + DEFINES += WIN64 + QMAKE_COMPILER_DEFINES += _WIN64 +} QMAKE_COMPILER = msvc diff --git a/mkspecs/win32-msvc2008/qmake.conf b/mkspecs/win32-msvc2008/qmake.conf index bd9a83a5d1..7d1304aaed 100644 --- a/mkspecs/win32-msvc2008/qmake.conf +++ b/mkspecs/win32-msvc2008/qmake.conf @@ -8,7 +8,11 @@ MAKEFILE_GENERATOR = MSVC.NET QMAKE_PLATFORM = win32 CONFIG += incremental flat precompile_header autogen_precompile_source debug_and_release debug_and_release_target embed_manifest_dll embed_manifest_exe DEFINES += UNICODE WIN32 -QMAKE_COMPILER_DEFINES += _MSC_VER=1500 WIN32 +QMAKE_COMPILER_DEFINES += _MSC_VER=1500 _WIN32 +contains(QMAKE_TARGET.arch, x86_64) { + DEFINES += WIN64 + QMAKE_COMPILER_DEFINES += _WIN64 +} QMAKE_COMPILER = msvc diff --git a/mkspecs/win32-msvc2010/qmake.conf b/mkspecs/win32-msvc2010/qmake.conf index f0e44078f9..ebe043ceba 100644 --- a/mkspecs/win32-msvc2010/qmake.conf +++ b/mkspecs/win32-msvc2010/qmake.conf @@ -8,7 +8,11 @@ MAKEFILE_GENERATOR = MSBUILD QMAKE_PLATFORM = win32 CONFIG += incremental flat precompile_header autogen_precompile_source debug_and_release debug_and_release_target embed_manifest_dll embed_manifest_exe DEFINES += UNICODE WIN32 -QMAKE_COMPILER_DEFINES += _MSC_VER=1600 WIN32 +QMAKE_COMPILER_DEFINES += _MSC_VER=1600 _WIN32 +contains(QMAKE_TARGET.arch, x86_64) { + DEFINES += WIN64 + QMAKE_COMPILER_DEFINES += _WIN64 +} QMAKE_COMPILER = msvc diff --git a/mkspecs/win32-msvc2012/qmake.conf b/mkspecs/win32-msvc2012/qmake.conf index c9e3f8c8e0..253e11b1d2 100644 --- a/mkspecs/win32-msvc2012/qmake.conf +++ b/mkspecs/win32-msvc2012/qmake.conf @@ -5,9 +5,14 @@ # MAKEFILE_GENERATOR = MSBUILD +QMAKE_PLATFORM = win32 CONFIG += incremental flat precompile_header autogen_precompile_source debug_and_release debug_and_release_target embed_manifest_dll embed_manifest_exe DEFINES += UNICODE WIN32 -QMAKE_COMPILER_DEFINES += _MSC_VER=1700 WIN32 +QMAKE_COMPILER_DEFINES += _MSC_VER=1700 _WIN32 +contains(QMAKE_TARGET.arch, x86_64) { + DEFINES += WIN64 + QMAKE_COMPILER_DEFINES += _WIN64 +} QMAKE_COMPILER = msvc |