From bee2a76008e85a3b45883629ae1dc5f9b71460fa Mon Sep 17 00:00:00 2001 From: Svyatoslav Scherbina Date: Fri, 11 Nov 2016 16:36:46 +0700 Subject: [PATCH] build: refactor platform checks also improve verbosity when downloading dependencies fails --- backend.native/build.gradle | 2 +- backend.native/tests/build.gradle | 2 +- build.gradle | 31 +++++++++++++++++++++++++++++++ dependencies/build.gradle | 21 +++++++-------------- 4 files changed, 40 insertions(+), 16 deletions(-) diff --git a/backend.native/build.gradle b/backend.native/build.gradle index 22b1c11b0db..fabd1e446af 100644 --- a/backend.native/build.gradle +++ b/backend.native/build.gradle @@ -92,7 +92,7 @@ String[] linkerOpts1() { '-lLLVMCore', '-lLLVMSupport'] List ldflags = new ArrayList<>() - if (System.properties['os.name'].startsWith("Linux")) + if (isLinux()) ldflags.addAll(["-L$llvmDir/lib", "-Wl,-Bstatic", "-Wl,--whole-archive"] + libs diff --git a/backend.native/tests/build.gradle b/backend.native/tests/build.gradle index 2d8726ca131..0b8e1853bf4 100644 --- a/backend.native/tests/build.gradle +++ b/backend.native/tests/build.gradle @@ -83,7 +83,7 @@ abstract class KonanTest extends DefaultTask { } private linux() { - return System.properties['os.name'].startsWith('Linux') + return project.isLinux() } protected String linkDl() { diff --git a/build.gradle b/build.gradle index c451fb464c3..32f4945a2b6 100644 --- a/build.gradle +++ b/build.gradle @@ -6,6 +6,8 @@ if (new File("$project.rootDir/local.properties").exists()) { props.each {prop -> project.ext.set(prop.key, prop.value)} } +convention.plugins.platformInfo = new PlatformInfo() + allprojects { if (path != ":dependencies") { evaluationDependsOn(":dependencies") @@ -34,4 +36,33 @@ allprojects { } } } +} + +class PlatformInfo { + private final String osName = System.properties['os.name'] + private final String osArch = System.properties['os.arch'] + + boolean isMac() { + return osName == 'Mac OS X' + } + + boolean isLinux() { + return osName == 'Linux' + } + + boolean isAmd64() { + return osArch in ['x86_64', 'amd64'] + } + + String getGnuTriplet() { + if (isLinux() && isAmd64()) { + return "x86_64-unknown-linux-gnu" + } else { + throw unsupportedPlatformException() + } + } + + Throwable unsupportedPlatformException() { + return new Error("unsupported platform: $osName/$osArch") + } } \ No newline at end of file diff --git a/dependencies/build.gradle b/dependencies/build.gradle index 106b0d031c1..f871c1fe493 100644 --- a/dependencies/build.gradle +++ b/dependencies/build.gradle @@ -1,20 +1,12 @@ abstract class NativeDep extends DefaultTask { - private static String getCurrentHostTarget() { - String osName = System.properties['os.name'] - String osArch = System.properties['os.arch'] - - // TODO: implement more generally - if (osArch in ['x86_64', 'amd64']) { - if (osName == 'Mac OS X') { - return 'darwin-macos' - } else if (osName == 'Linux') { - return 'linux-x86-64' - } else { - throw new Error("Unsupported OS: $osName") - } + private String getCurrentHostTarget() { + if (project.isMac() && project.isAmd64()) { + return 'darwin-macos' + } else if (project.isLinux() && project.isAmd64()) { + return 'linux-x86-64' } else { - throw new Error("Unsupported arch: $osArch") + throw project.unsupportedPlatformException() } } @@ -67,6 +59,7 @@ class TgzNativeDep extends NativeDep { args "xf", archived } } catch (Throwable e) { + e.printStackTrace() project.delete(outputDir) throw e }