buildSrc/mac.gradle

Print this page
rev 8319 : RT-34388: [Mac] Update build system to properly support Xcode 5 and later

*** 39,53 **** // Lambda for naming the generated libs MAC.library = { name -> return "lib${name}.dylib" as String } MAC.libDest = "lib" ! // Define settings for Mac compilation. This is much easier than Windows because we know what version we're ! // compiling against and Mac always puts it in the same place. In extreme cases you can provide your own ! // properties in your home dir to override these settings or pass them on the command line via -P ! defineProperty("MACOSX_MIN_VERSION", "10.7"); ! defineProperty("MACOSX_SDK_PATH", "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${MACOSX_MIN_VERSION}.sdk"); def commonParams = [ "-mmacosx-version-min=$MACOSX_MIN_VERSION", "-isysroot", "$MACOSX_SDK_PATH", "-arch", "x86_64"] --- 39,118 ---- // Lambda for naming the generated libs MAC.library = { name -> return "lib${name}.dylib" as String } MAC.libDest = "lib" ! /* ! * Define settings for Mac compilation. If we don't find the SDK in the ! * default location then we will use "xcodebuild" to locate a suitable SDK. ! * In extreme cases you can provide your own properties in your home dir to ! * override these settings or pass them on the command line. ! */ ! def minSdkVersion = "10.7" ! def defaultSdkPath = "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${minSdkVersion}.sdk"; ! ! // Ordered list of SDKs to search if default path is not found ! def macosxSdks = [ ! "macosx10.7", ! "macosx10.8", ! "macosx10.9", ! ] ! ! // Set the minimum API version that we require (developers do not need to override this) ! defineProperty("MACOSX_MIN_VERSION", "$minSdkVersion"); ! ! // Create $buildDir/mac_tools.properties file and load props from it ! setupTools("mac_tools", ! { propFile -> ! propFile << "" ! if (!file(defaultSdkPath).isDirectory()) { ! // Collect all macosx sdks. ! ByteArrayOutputStream results = new ByteArrayOutputStream(); ! exec { ! commandLine("xcodebuild", "-version", "-showsdks"); ! setStandardOutput(results); ! } ! ! BufferedReader reader = new BufferedReader(new StringReader(results.toString().trim())); ! def sdkList = [] ! while (true) { ! def line = reader.readLine(); ! if (line == null) break; ! def idx = line.indexOf("-sdk macosx"); ! if (idx >= 0) { ! sdkList += line.substring(idx+4).trim(); ! } ! } ! ! // Loop through the predefined list of SDKs that we recognize ! for (String sdk : macosxSdks) { ! if (sdkList.contains(sdk)) { ! results = new ByteArrayOutputStream(); ! exec { ! commandLine("xcodebuild", "-version", "-sdk", "$sdk", "Path"); ! setStandardOutput(results); ! } ! String sdkPath = results.toString().trim(); ! if (file(sdkPath).isDirectory()) { ! propFile << "MACOSX_SDK_PATH=" << sdkPath << "\n"; ! break; ! } ! } ! } ! } ! }, ! { properties -> ! defineProperty("MACOSX_SDK_PATH", properties, "$defaultSdkPath") ! } ! ) ! ! println "MACOSX_MIN_VERSION = $MACOSX_MIN_VERSION" ! println "MACOSX_SDK_PATH = $MACOSX_SDK_PATH" ! ! if (!file(MACOSX_SDK_PATH).isDirectory()) { ! throw new GradleException("FAIL: Cannot find $MACOSX_SDK_PATH") ! } def commonParams = [ "-mmacosx-version-min=$MACOSX_MIN_VERSION", "-isysroot", "$MACOSX_SDK_PATH", "-arch", "x86_64"]