lol

Merge pull request #29812 from j-hao/master

qt59.qtbase: fix darwin build so qtdeclarative can build

authored by

Daiderd Jordan and committed by
GitHub
0d8c6f40 6a046500

+306 -8
+3
pkgs/development/libraries/qt-5/5.9/qtbase/darwin-series
··· 1 + mkspecs-common-mac.patch 2 + mkspecs-features-mac.patch 3 + darwin-cf.patch
+8 -8
pkgs/development/libraries/qt-5/5.9/qtbase/default.nix
··· 45 45 libjpeg libpng libtiff 46 46 ] 47 47 48 - ++ lib.optional mesaSupported mesa 48 + ++ lib.optional (mesaSupported && !stdenv.isDarwin) mesa 49 49 50 50 ++ lib.optionals (!stdenv.isDarwin) [ 51 51 dbus glib udev ··· 80 80 81 81 patches = 82 82 copyPathsToStore (lib.readPathsFromFile ./. ./series) 83 - ++ stdenv.lib.optional stdenv.isDarwin ./darwin-cf.patch; 83 + ++ stdenv.lib.optional stdenv.isDarwin (copyPathsToStore (lib.readPathsFromFile ./. ./darwin-series)); 84 84 85 85 postPatch = 86 86 '' ··· 94 94 sed -i '/PATHS.*NO_DEFAULT_PATH/ d' mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in 95 95 '' 96 96 97 - + lib.optionalString mesaSupported '' 97 + + lib.optionalString (mesaSupported && !stdenv.isDarwin) '' 98 98 sed -i mkspecs/common/linux.conf \ 99 99 -e "/^QMAKE_INCDIR_OPENGL/ s|$|${mesa.dev or mesa}/include|" \ 100 100 -e "/^QMAKE_LIBDIR_OPENGL/ s|$|${mesa.out}/lib|" ··· 110 110 -e 's#sdk_val=$(/usr/bin/xcrun -sdk $sdk -find $(echo $val | cut -d \x27 \x27 -f 1))##' \ 111 111 -e 's#val=$(echo $sdk_val $(echo $val | cut -s -d \x27 \x27 -f 2-))##' \ 112 112 ./configure 113 - sed -i '3,$d' ./mkspecs/features/mac/default_pre.prf 114 - sed -i '27,$d' ./mkspecs/features/mac/default_post.prf 115 - sed -i '1,$d' ./mkspecs/features/mac/sdk.prf 116 - sed -i 's/QMAKE_LFLAGS_RPATH = -Wl,-rpath,/QMAKE_LFLAGS_RPATH =/' ./mkspecs/common/mac.conf 113 + substituteInPlace ./mkspecs/common/mac.conf \ 114 + --replace "/System/Library/Frameworks/OpenGL.framework/" "${darwin.apple_sdk.frameworks.OpenGL}/Library/Frameworks/OpenGL.framework/" 115 + substituteInPlace ./mkspecs/common/mac.conf \ 116 + --replace "/System/Library/Frameworks/AGL.framework/" "${darwin.apple_sdk.frameworks.AGL}/Library/Frameworks/AGL.framework/" 117 117 ''; 118 118 # Note on the above: \x27 is a way if including a single-quote 119 119 # character in the sed string arguments. ··· 144 144 ''-DNIXPKGS_LIBXCURSOR="${libXcursor.out}/lib/libXcursor"'' 145 145 ] 146 146 147 - ++ lib.optional mesaSupported 147 + ++ lib.optional (mesaSupported && !stdenv.isDarwin) 148 148 ''-DNIXPKGS_MESA_GL="${mesa.out}/lib/libGL"'' 149 149 150 150 ++ lib.optionals (!stdenv.isDarwin)
+11
pkgs/development/libraries/qt-5/5.9/qtbase/mkspecs-common-mac.patch
··· 1 + --- qtbase-opensource-src-5.9.1.orig/mkspecs/common/mac.conf 2017-09-16 16:40:30.000000000 +0800 2 + +++ qtbase-opensource-src-5.9.1/mkspecs/common/mac.conf 2017-09-16 16:41:27.000000000 +0800 3 + @@ -23,7 +23,7 @@ 4 + 5 + QMAKE_FIX_RPATH = install_name_tool -id 6 + 7 + -QMAKE_LFLAGS_RPATH = -Wl,-rpath, 8 + +QMAKE_LFLAGS_RPATH = 9 + QMAKE_LFLAGS_GCSECTIONS = -Wl,-dead_strip 10 + 11 + QMAKE_LFLAGS_REL_RPATH =
+278
pkgs/development/libraries/qt-5/5.9/qtbase/mkspecs-features-mac.patch
··· 1 + diff -u qtbase-opensource-src-5.9.1.orig/mkspecs/features/mac/default_post.prf qtbase-opensource-src-5.9.1/mkspecs/features/mac/default_post.prf 2 + --- qtbase-opensource-src-5.9.1.orig/mkspecs/features/mac/default_post.prf 2017-09-16 16:40:30.000000000 +0800 3 + +++ qtbase-opensource-src-5.9.1/mkspecs/features/mac/default_post.prf 2017-09-16 16:41:03.000000000 +0800 4 + @@ -24,165 +24,3 @@ 5 + } 6 + } 7 + } 8 + - 9 + -# Add the same default rpaths as Xcode does for new projects. 10 + -# This is especially important for iOS/tvOS/watchOS where no other option is possible. 11 + -!no_default_rpath { 12 + - QMAKE_RPATHDIR += @executable_path/Frameworks 13 + - equals(TEMPLATE, lib):!plugin:lib_bundle: QMAKE_RPATHDIR += @loader_path/Frameworks 14 + -} 15 + - 16 + -# Don't pass -headerpad_max_install_names when using Bitcode. 17 + -# In that case the linker emits a warning stating that the flag is ignored when 18 + -# used with bitcode, for reasons that cannot be determined (rdar://problem/20748962). 19 + -# Using this flag is also unnecessary in practice on UIKit platforms since they 20 + -# are sandboxed, and only UIKit platforms support bitcode to begin with. 21 + -!bitcode: QMAKE_LFLAGS += $$QMAKE_LFLAGS_HEADERPAD 22 + - 23 + -app_extension_api_only { 24 + - QMAKE_CFLAGS += $$QMAKE_CFLAGS_APPLICATION_EXTENSION 25 + - QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_APPLICATION_EXTENSION 26 + - QMAKE_CXXFLAGS_PRECOMPILE += $$QMAKE_CFLAGS_APPLICATION_EXTENSION 27 + - QMAKE_LFLAGS += $$QMAKE_CFLAGS_APPLICATION_EXTENSION 28 + -} 29 + - 30 + -macx-xcode { 31 + - !isEmpty(QMAKE_XCODE_DEBUG_INFORMATION_FORMAT) { 32 + - debug_information_format.name = DEBUG_INFORMATION_FORMAT 33 + - debug_information_format.value = $$QMAKE_XCODE_DEBUG_INFORMATION_FORMAT 34 + - debug_information_format.build = debug 35 + - QMAKE_MAC_XCODE_SETTINGS += debug_information_format 36 + - } 37 + - 38 + - QMAKE_XCODE_ARCHS = 39 + - 40 + - arch_device.name = "ARCHS[sdk=$${device.sdk}*]" 41 + - arch_device.value = $$QMAKE_APPLE_DEVICE_ARCHS 42 + - QMAKE_XCODE_ARCHS += $$QMAKE_APPLE_DEVICE_ARCHS 43 + - QMAKE_MAC_XCODE_SETTINGS += arch_device 44 + - 45 + - simulator { 46 + - arch_simulator.name = "ARCHS[sdk=$${simulator.sdk}*]" 47 + - arch_simulator.value = $$QMAKE_APPLE_SIMULATOR_ARCHS 48 + - QMAKE_XCODE_ARCHS += $$QMAKE_APPLE_SIMULATOR_ARCHS 49 + - QMAKE_MAC_XCODE_SETTINGS += arch_simulator 50 + - } 51 + - 52 + - only_active_arch.name = ONLY_ACTIVE_ARCH 53 + - only_active_arch.value = YES 54 + - only_active_arch.build = debug 55 + - QMAKE_MAC_XCODE_SETTINGS += only_active_arch 56 + -} else { 57 + - device|!simulator: VALID_DEVICE_ARCHS = $$QMAKE_APPLE_DEVICE_ARCHS 58 + - simulator: VALID_SIMULATOR_ARCHS = $$QMAKE_APPLE_SIMULATOR_ARCHS 59 + - VALID_ARCHS = $$VALID_DEVICE_ARCHS $$VALID_SIMULATOR_ARCHS 60 + - 61 + - isEmpty(VALID_ARCHS): \ 62 + - error("QMAKE_APPLE_DEVICE_ARCHS or QMAKE_APPLE_SIMULATOR_ARCHS must contain at least one architecture") 63 + - 64 + - single_arch: VALID_ARCHS = $$first(VALID_ARCHS) 65 + - 66 + - ACTIVE_ARCHS = $(filter $(EXPORT_VALID_ARCHS), $(ARCHS)) 67 + - ARCH_ARGS = $(foreach arch, $(if $(EXPORT_ACTIVE_ARCHS), $(EXPORT_ACTIVE_ARCHS), $(EXPORT_VALID_ARCHS)), -arch $(arch)) 68 + - 69 + - QMAKE_EXTRA_VARIABLES += VALID_ARCHS ACTIVE_ARCHS ARCH_ARGS 70 + - 71 + - arch_flags = $(EXPORT_ARCH_ARGS) 72 + - 73 + - QMAKE_CFLAGS += $$arch_flags 74 + - QMAKE_CXXFLAGS += $$arch_flags 75 + - QMAKE_LFLAGS += $$arch_flags 76 + - 77 + - QMAKE_PCH_ARCHS = $$VALID_ARCHS 78 + - 79 + - macos: deployment_target = $$QMAKE_MACOSX_DEPLOYMENT_TARGET 80 + - ios: deployment_target = $$QMAKE_IOS_DEPLOYMENT_TARGET 81 + - tvos: deployment_target = $$QMAKE_TVOS_DEPLOYMENT_TARGET 82 + - watchos: deployment_target = $$QMAKE_WATCHOS_DEPLOYMENT_TARGET 83 + - 84 + - # If we're doing a simulator and device build, device and simulator 85 + - # architectures use different paths and flags for the sysroot and 86 + - # deployment target switch, so we must multiplex them across multiple 87 + - # architectures using -Xarch. Otherwise we fall back to the simple path. 88 + - # This is not strictly necessary, but results in cleaner command lines 89 + - # and makes it easier for people to override EXPORT_VALID_ARCHS to limit 90 + - # individual rules to a different set of architecture(s) from the overall 91 + - # build (such as machtest in QtCore). 92 + - simulator:device { 93 + - QMAKE_XARCH_CFLAGS = 94 + - QMAKE_XARCH_LFLAGS = 95 + - QMAKE_EXTRA_VARIABLES += QMAKE_XARCH_CFLAGS QMAKE_XARCH_LFLAGS 96 + - 97 + - for (arch, VALID_ARCHS) { 98 + - contains(VALID_SIMULATOR_ARCHS, $$arch) { 99 + - sdk = $$simulator.sdk 100 + - version_identifier = $$simulator.deployment_identifier 101 + - } else { 102 + - sdk = $$device.sdk 103 + - version_identifier = $$device.deployment_identifier 104 + - } 105 + - 106 + - version_min_flags = \ 107 + - -Xarch_$${arch} \ 108 + - -m$${version_identifier}-version-min=$$deployment_target 109 + - QMAKE_XARCH_CFLAGS_$${arch} = $$version_min_flags \ 110 + - -Xarch_$${arch} \ 111 + - -isysroot$$xcodeSDKInfo(Path, $$sdk) 112 + - QMAKE_XARCH_LFLAGS_$${arch} = $$version_min_flags \ 113 + - -Xarch_$${arch} \ 114 + - -Wl,-syslibroot,$$xcodeSDKInfo(Path, $$sdk) 115 + - 116 + - QMAKE_XARCH_CFLAGS += $(EXPORT_QMAKE_XARCH_CFLAGS_$${arch}) 117 + - QMAKE_XARCH_LFLAGS += $(EXPORT_QMAKE_XARCH_LFLAGS_$${arch}) 118 + - 119 + - QMAKE_EXTRA_VARIABLES += \ 120 + - QMAKE_XARCH_CFLAGS_$${arch} \ 121 + - QMAKE_XARCH_LFLAGS_$${arch} 122 + - } 123 + - 124 + - QMAKE_CFLAGS += $(EXPORT_QMAKE_XARCH_CFLAGS) 125 + - QMAKE_CXXFLAGS += $(EXPORT_QMAKE_XARCH_CFLAGS) 126 + - QMAKE_LFLAGS += $(EXPORT_QMAKE_XARCH_LFLAGS) 127 + - } else { 128 + - simulator: \ 129 + - version_identifier = $$simulator.deployment_identifier 130 + - else: \ 131 + - version_identifier = $$device.deployment_identifier 132 + - version_min_flag = -m$${version_identifier}-version-min=$$deployment_target 133 + - QMAKE_CFLAGS += -isysroot $$QMAKE_MAC_SDK_PATH $$version_min_flag 134 + - QMAKE_CXXFLAGS += -isysroot $$QMAKE_MAC_SDK_PATH $$version_min_flag 135 + - QMAKE_LFLAGS += -Wl,-syslibroot,$$QMAKE_MAC_SDK_PATH $$version_min_flag 136 + - } 137 + - 138 + - # Enable precompiled headers for multiple architectures 139 + - QMAKE_CFLAGS_USE_PRECOMPILE = 140 + - for (arch, VALID_ARCHS) { 141 + - icc_pch_style: \ 142 + - use_flag = "-pch-use " 143 + - else: \ 144 + - use_flag = -include 145 + - 146 + - # Only use Xarch with multi-arch, as the option confuses ccache 147 + - count(VALID_ARCHS, 1, greaterThan): \ 148 + - QMAKE_CFLAGS_USE_PRECOMPILE += \ 149 + - -Xarch_$${arch} 150 + - 151 + - QMAKE_CFLAGS_USE_PRECOMPILE += \ 152 + - $${use_flag}${QMAKE_PCH_OUTPUT_$${arch}} 153 + - } 154 + - icc_pch_style { 155 + - QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE -include ${QMAKE_PCH_INPUT} 156 + - QMAKE_CFLAGS_USE_PRECOMPILE = 157 + - } else { 158 + - QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE 159 + - QMAKE_OBJCFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE 160 + - QMAKE_OBJCXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE 161 + - } 162 + - 163 + - QMAKE_PCH_OUTPUT_EXT = _${QMAKE_PCH_ARCH}$${QMAKE_PCH_OUTPUT_EXT} 164 + -} 165 + - 166 + -cache(QMAKE_XCODE_DEVELOPER_PATH, stash) 167 + -cache(QMAKE_XCODE_VERSION, stash) 168 + - 169 + -QMAKE_XCODE_LIBRARY_SUFFIX = $$qtPlatformTargetSuffix() 170 + diff -u qtbase-opensource-src-5.9.1.orig/mkspecs/features/mac/default_pre.prf qtbase-opensource-src-5.9.1/mkspecs/features/mac/default_pre.prf 171 + --- qtbase-opensource-src-5.9.1.orig/mkspecs/features/mac/default_pre.prf 2017-09-16 16:40:30.000000000 +0800 172 + +++ qtbase-opensource-src-5.9.1/mkspecs/features/mac/default_pre.prf 2017-09-16 16:40:45.000000000 +0800 173 + @@ -1,51 +1,2 @@ 174 + CONFIG = asset_catalogs rez $$CONFIG 175 + load(default_pre) 176 + - 177 + -isEmpty(QMAKE_XCODE_DEVELOPER_PATH) { 178 + - # Get path of Xcode's Developer directory 179 + - QMAKE_XCODE_DEVELOPER_PATH = $$system("/usr/bin/xcode-select --print-path 2>/dev/null") 180 + - isEmpty(QMAKE_XCODE_DEVELOPER_PATH): \ 181 + - error("Xcode path is not set. Please use xcode-select to choose Xcode installation path.") 182 + - 183 + - # Make sure Xcode path is valid 184 + - !exists($$QMAKE_XCODE_DEVELOPER_PATH): \ 185 + - error("Xcode is not installed in $${QMAKE_XCODE_DEVELOPER_PATH}. Please use xcode-select to choose Xcode installation path.") 186 + - 187 + - # Make sure Xcode is set up properly 188 + - isEmpty($$list($$system("/usr/bin/xcrun -find xcodebuild 2>/dev/null"))): \ 189 + - error("Xcode not set up properly. You may need to confirm the license agreement by running /usr/bin/xcodebuild.") 190 + -} 191 + - 192 + -isEmpty(QMAKE_XCODE_VERSION) { 193 + - # Extract Xcode version using xcodebuild 194 + - xcode_version = $$system("/usr/bin/xcodebuild -version") 195 + - QMAKE_XCODE_VERSION = $$member(xcode_version, 1) 196 + - isEmpty(QMAKE_XCODE_VERSION): error("Could not resolve Xcode version.") 197 + - unset(xcode_version) 198 + -} 199 + - 200 + -isEmpty(QMAKE_TARGET_BUNDLE_PREFIX) { 201 + - QMAKE_XCODE_PREFERENCES_FILE = $$(HOME)/Library/Preferences/com.apple.dt.Xcode.plist 202 + - exists($$QMAKE_XCODE_PREFERENCES_FILE): \ 203 + - QMAKE_TARGET_BUNDLE_PREFIX = $$system("/usr/libexec/PlistBuddy -c 'print IDETemplateOptions:bundleIdentifierPrefix' $$QMAKE_XCODE_PREFERENCES_FILE 2>/dev/null") 204 + - 205 + - !isEmpty(_QMAKE_CACHE_):!isEmpty(QMAKE_TARGET_BUNDLE_PREFIX): \ 206 + - cache(QMAKE_TARGET_BUNDLE_PREFIX) 207 + -} 208 + - 209 + -QMAKE_ASSET_CATALOGS_APP_ICON = AppIcon 210 + - 211 + -# Make the default debug info format for static debug builds 212 + -# DWARF instead of DWARF with dSYM. This cuts down build times 213 + -# for application debug builds significantly, as Xcode doesn't 214 + -# have to pull out all the DWARF info from the Qt static libs 215 + -# and put it into a dSYM file. We don't need that dSYM file in 216 + -# the first place, since the information is available in the 217 + -# object files inside the archives (static libraries). 218 + -macx-xcode:qtConfig(static): \ 219 + - QMAKE_XCODE_DEBUG_INFORMATION_FORMAT = dwarf 220 + - 221 + -# This variable is used by the xcode_dynamic_library_suffix 222 + -# feature, which allows Xcode to choose the Qt libraries to link to 223 + -# at build time, depending on the current Xcode SDK and configuration. 224 + -QMAKE_XCODE_LIBRARY_SUFFIX_SETTING = QT_LIBRARY_SUFFIX 225 + diff -u qtbase-opensource-src-5.9.1.orig/mkspecs/features/mac/sdk.prf qtbase-opensource-src-5.9.1/mkspecs/features/mac/sdk.prf 226 + --- qtbase-opensource-src-5.9.1.orig/mkspecs/features/mac/sdk.prf 2017-09-16 16:40:30.000000000 +0800 227 + +++ qtbase-opensource-src-5.9.1/mkspecs/features/mac/sdk.prf 2017-09-16 16:41:16.000000000 +0800 228 + @@ -1,49 +0,0 @@ 229 + - 230 + -isEmpty(QMAKE_MAC_SDK): \ 231 + - error("QMAKE_MAC_SDK must be set when using CONFIG += sdk.") 232 + - 233 + -contains(QMAKE_MAC_SDK, .*/.*): \ 234 + - error("QMAKE_MAC_SDK can only contain short-form SDK names (eg. macosx, iphoneos)") 235 + - 236 + -defineReplace(xcodeSDKInfo) { 237 + - info = $$1 238 + - sdk = $$2 239 + - isEmpty(sdk): \ 240 + - sdk = $$QMAKE_MAC_SDK 241 + - 242 + - isEmpty(QMAKE_MAC_SDK.$${sdk}.$${info}) { 243 + - QMAKE_MAC_SDK.$${sdk}.$${info} = $$system("/usr/bin/xcodebuild -sdk $$sdk -version $$info 2>/dev/null") 244 + - isEmpty(QMAKE_MAC_SDK.$${sdk}.$${info}): error("Could not resolve SDK $$info for \'$$sdk\'") 245 + - cache(QMAKE_MAC_SDK.$${sdk}.$${info}, set stash, QMAKE_MAC_SDK.$${sdk}.$${info}) 246 + - } 247 + - 248 + - return($$eval(QMAKE_MAC_SDK.$${sdk}.$${info})) 249 + -} 250 + - 251 + -QMAKE_MAC_SDK_PATH = $$xcodeSDKInfo(Path) 252 + -QMAKE_MAC_SDK_PLATFORM_PATH = $$xcodeSDKInfo(PlatformPath) 253 + -QMAKE_MAC_SDK_VERSION = $$xcodeSDKInfo(SDKVersion) 254 + - 255 + -sysrootified = 256 + -for(val, QMAKE_INCDIR_OPENGL): sysrootified += $${QMAKE_MAC_SDK_PATH}$$val 257 + -QMAKE_INCDIR_OPENGL = $$sysrootified 258 + - 259 + -QMAKESPEC_NAME = $$basename(QMAKESPEC) 260 + - 261 + -# Resolve SDK version of various tools 262 + -for(tool, $$list(QMAKE_CC QMAKE_CXX QMAKE_FIX_RPATH QMAKE_AR QMAKE_RANLIB QMAKE_LINK QMAKE_LINK_SHLIB QMAKE_ACTOOL)) { 263 + - tool_variable = QMAKE_MAC_SDK.$${QMAKESPEC_NAME}.$${QMAKE_MAC_SDK}.$${tool} 264 + - !isEmpty($$tool_variable) { 265 + - $$tool = $$eval($$tool_variable) 266 + - next() 267 + - } 268 + - 269 + - value = $$eval($$tool) 270 + - isEmpty(value): next() 271 + - 272 + - sysrooted = $$system("/usr/bin/xcrun -sdk $$QMAKE_MAC_SDK -find $$first(value) 2>/dev/null") 273 + - isEmpty(sysrooted): next() 274 + - 275 + - $$tool = $$sysrooted $$member(value, 1, -1) 276 + - cache($$tool_variable, set stash, $$tool) 277 + -} 278 + Common subdirectories: qtbase-opensource-src-5.9.1.orig/mkspecs/features/mac/unsupported and qtbase-opensource-src-5.9.1/mkspecs/features/mac/unsupported
+6
pkgs/development/libraries/qt-5/qtbase-setup-hook-darwin.sh
··· 2 2 qtQmlPrefix=@qtQmlPrefix@ 3 3 qtDocPrefix=@qtDocPrefix@ 4 4 5 + _qtRmCMakeLink() { 6 + find "${!outputLib}" -name "*.cmake" -type l | xargs rm 7 + } 8 + 9 + postInstallHooks+=(_qtRmCMakeLink) 10 + 5 11 addToSearchPathOnceWithCustomDelimiter() { 6 12 local delim="$1" 7 13 local search="$2"