From eea0eb7e9f84be32ac17965fe34c15bb49644e6a Mon Sep 17 00:00:00 2001 From: Ilya Matveev Date: Tue, 17 Oct 2017 19:32:38 +0300 Subject: [PATCH] samples: Use reworked DSL in gradle builds --- samples/androidNativeActivity/build.gradle | 20 ++-- samples/concurrent/buildCpp.sh | 2 +- samples/csvparser/build.gradle | 2 +- samples/gitchurn/build.gradle | 12 +-- samples/gtk/build.gradle | 15 +-- samples/libcurl/build.gradle | 12 +-- samples/nonBlockingEchoServer/build.gradle | 2 +- samples/objc/build.gradle | 6 +- samples/opengl/build.gradle | 6 +- samples/settings.gradle | 4 +- samples/socket/build.gradle | 2 +- samples/tensorflow/build.gradle | 15 +-- samples/tetris/build.gradle | 111 ++++++++++----------- samples/uikit/build.gradle | 6 +- 14 files changed, 100 insertions(+), 115 deletions(-) diff --git a/samples/androidNativeActivity/build.gradle b/samples/androidNativeActivity/build.gradle index b8911cf8416..e7009705172 100644 --- a/samples/androidNativeActivity/build.gradle +++ b/samples/androidNativeActivity/build.gradle @@ -25,21 +25,17 @@ allprojects { apply plugin: "konan" +konanTargets = ["android_arm32", "android_arm64"] + konanArtifacts { - PolyhedronArm32 { - target "android_arm32" - outputDir 'PolyhedronArm32' - outputName 'libpoly' - } - PolyhedronArm64 { - target "android_arm64" - outputDir 'PolyhedronArm64' + Polyhedron { + baseDir 'Polyhedron' outputName 'libpoly' } } def platforms = ["armeabi-v7a", "arm64-v8a"] -def artifacts = ["PolyhedronArm32", "PolyhedronArm64"] +def artifacts = ["Polyhedron/armeabi-v7a", "Polyhedron/arm64-v8a"] apply plugin: "com.android.model.application" @@ -91,12 +87,10 @@ model { } tasks.matching { it.name == 'preBuild' }.all { - it.dependsOn 'compileKonanPolyhedronArm32' - it.dependsOn 'compileKonanPolyhedronArm64' + it.dependsOn 'compileKonan' } task buildApk(type: DefaultTask) { - dependsOn "compileKonanPolyhedronArm32" - dependsOn "compileKonanPolyhedronArm64" + dependsOn "compileKonan" dependsOn "assembleDebug" } \ No newline at end of file diff --git a/samples/concurrent/buildCpp.sh b/samples/concurrent/buildCpp.sh index 25659ae037a..7c818fabd4b 100755 --- a/samples/concurrent/buildCpp.sh +++ b/samples/concurrent/buildCpp.sh @@ -23,4 +23,4 @@ CLANG=${!var} mkdir -p $DIR/build/clang/ -$CLANG -std=c++11 -c $DIR/src/main/cpp/MessageChannel.cpp -o $DIR/build/clang/MessageChannel.bc -emit-llvm || exit 1 \ No newline at end of file +$CLANG -H -std=c++11 -c $DIR/src/main/cpp/MessageChannel.cpp -o $DIR/build/clang/MessageChannel.bc -emit-llvm || exit 1 diff --git a/samples/csvparser/build.gradle b/samples/csvparser/build.gradle index bafbb8b350c..a21d21c6e13 100644 --- a/samples/csvparser/build.gradle +++ b/samples/csvparser/build.gradle @@ -1,5 +1,5 @@ apply plugin: 'konan' konanArtifacts { - CsvParser + program('CsvParser') } \ No newline at end of file diff --git a/samples/gitchurn/build.gradle b/samples/gitchurn/build.gradle index 863c1c930c2..aa8ff87b284 100644 --- a/samples/gitchurn/build.gradle +++ b/samples/gitchurn/build.gradle @@ -1,13 +1,13 @@ apply plugin: 'konan' -konanInterop { - libgit2 { +konanArtifacts { + interop('libgit2') { includeDirs '/opt/local/include', '/usr/include', '/usr/local/include' } -} -konanArtifacts { - GitChurn { - useInterop 'libgit2' + program('GitChurn') { + libraries { + artifact 'libgit2' + } } } diff --git a/samples/gtk/build.gradle b/samples/gtk/build.gradle index 16584f13243..c76e0db1bb9 100644 --- a/samples/gtk/build.gradle +++ b/samples/gtk/build.gradle @@ -1,17 +1,18 @@ apply plugin: 'konan' -konanInterop { - def includePrefixes = [ '/opt/local/include', '/usr/include', '/usr/local/include' ] - gtk3 { +def includePrefixes = [ '/opt/local/include', '/usr/include', '/usr/local/include' ] + +konanArtifacts { + interop('gtk3') { includePrefixes.each { includeDirs "$it/atk-1.0", "$it/gdk-pixbuf-2.0", "$it/cairo", "$it/pango-1.0", "$it/gtk-3.0", "$it/glib-2.0" } includeDirs '/opt/local/lib/glib-2.0/include', '/usr/lib/x86_64-linux-gnu/glib-2.0/include', '/usr/local/lib/glib-2.0/include' } -} -konanArtifacts { - Gtk3Demo { - useInterop 'gtk3' + program('Gtk3Demo') { + libraries { + artifact 'gtk3' + } } } diff --git a/samples/libcurl/build.gradle b/samples/libcurl/build.gradle index 6c61b82e420..7a3f4721811 100644 --- a/samples/libcurl/build.gradle +++ b/samples/libcurl/build.gradle @@ -1,13 +1,13 @@ apply plugin: 'konan' -konanInterop { - libcurl { +konanArtifacts { + interop('libcurl') { includeDirs '/usr/include', '/opt/local/include', '/usr/local/opt/curl/include', '.' } -} -konanArtifacts { - Curl { - useInterop 'libcurl' + program('Curl') { + libraries { + artifact 'libcurl' + } } } diff --git a/samples/nonBlockingEchoServer/build.gradle b/samples/nonBlockingEchoServer/build.gradle index c7c2e2bd767..7499064f7cd 100644 --- a/samples/nonBlockingEchoServer/build.gradle +++ b/samples/nonBlockingEchoServer/build.gradle @@ -1,5 +1,5 @@ apply plugin: 'konan' konanArtifacts { - EchoServer + program('EchoServer') } diff --git a/samples/objc/build.gradle b/samples/objc/build.gradle index 8c08eaa7527..8d183eb8a21 100644 --- a/samples/objc/build.gradle +++ b/samples/objc/build.gradle @@ -1,7 +1,7 @@ apply plugin: 'konan' +konanTargets = ['macbook'] + konanArtifacts { - Window { - target "macbook" - } + program('Window') } diff --git a/samples/opengl/build.gradle b/samples/opengl/build.gradle index 6243debfc89..581161d91dc 100644 --- a/samples/opengl/build.gradle +++ b/samples/opengl/build.gradle @@ -1,7 +1,7 @@ apply plugin: 'konan' +konanTargets = ["macbook"] + konanArtifacts { - OpenGlTeapot { - target "macbook" - } + program('OpenGlTeapot') } diff --git a/samples/settings.gradle b/samples/settings.gradle index 4720f97d63a..33ac11ca7bd 100644 --- a/samples/settings.gradle +++ b/samples/settings.gradle @@ -1,3 +1,4 @@ +// TODO: Uncomment include ':csvparser' include ':gitchurn' include ':gtk' @@ -7,11 +8,10 @@ include ':opengl' include ':socket' include ':tetris' include ':tensorflow' -include ':concurrent' // Android native activity build requires Android SDK. // So temporary switching off for now, as it breaks the build // of other samples if SDK is not present. -//include ':androidNativeActivity' +// include ':androidNativeActivity' include ':objc' include ':uikit' includeBuild '../' diff --git a/samples/socket/build.gradle b/samples/socket/build.gradle index c7c2e2bd767..7499064f7cd 100644 --- a/samples/socket/build.gradle +++ b/samples/socket/build.gradle @@ -1,5 +1,5 @@ apply plugin: 'konan' konanArtifacts { - EchoServer + program('EchoServer') } diff --git a/samples/tensorflow/build.gradle b/samples/tensorflow/build.gradle index 5910fa6e11c..29c260e8a63 100644 --- a/samples/tensorflow/build.gradle +++ b/samples/tensorflow/build.gradle @@ -2,15 +2,16 @@ apply plugin: 'konan' def tensorflowHome = "${System.getProperty("user.home")}/.konan/third-party/tensorflow" -konanInterop { - tensorflow { +konanArtifacts { + interop('TensorflowInterop') { + defFile "src/main/c_interop/tensorflow.def" includeDirs "${tensorflowHome}/include" } -} -konanArtifacts { - Tensorflow { - useInterop "tensorflow" + program('Tensorflow') { + libraries { + artifact 'TensorflowInterop' + } linkerOpts "-L${tensorflowHome}/lib -ltensorflow" } } @@ -29,6 +30,6 @@ task downloadTensorflow(type: Exec) { commandLine './downloadTensorflow.sh' } -processTensorflowInterop { +compileKonanTensorflowInterop { dependsOn 'downloadTensorflow' } diff --git a/samples/tetris/build.gradle b/samples/tetris/build.gradle index 6892577057b..5e8438d8295 100644 --- a/samples/tetris/build.gradle +++ b/samples/tetris/build.gradle @@ -1,79 +1,68 @@ apply plugin: 'konan' -konanInterop { - sdlMacbook { - defFile 'src/main/c_interop/sdl.def' - pkg 'sdl' - includeDirs '/Library/Frameworks/SDL2.framework/Headers', - "${System.getProperty("user.home")}/Library/Frameworks/SDL2.framework/Headers", - '/opt/local/include/SDL2', - '/usr/local/include/SDL2' - - target 'macbook' - } - - sdlLinux { - defFile 'src/main/c_interop/sdl.def' - pkg 'sdl' - includeDirs '/usr/include/SDL2' - target 'linux' - } - - sdlIphone { - defFile 'src/main/c_interop/sdl.def' - pkg 'sdl' - includeDirs "${project.property("konan.home")}/dependencies/target-sysroot-2-darwin-ios/System/Library/Frameworks/SDL2.framework/Headers" - target 'iphone' - } - - sdlRaspberry { - defFile 'src/main/c_interop/sdl.def' - pkg 'sdl' - includeDirs "${project.property("konan.home")}/dependencies/target-sysroot-1-raspberrypi/usr/include/SDL2" - target 'raspberrypi' - } -} +konanTargets.clear() +konanTargets.addAll(['macbook', 'linux', 'iphone', 'raspberrypi']) konanArtifacts { - TetrisMacbook { - useInterop 'sdlMacbook' - linkerOpts "-F ${System.getProperty("user.home")}/Library/Frameworks -F /Library/Frameworks -framework SDL2" - // Use this line instead of the previous one if you've got a 'No SDL-framework' error. - //linkerOpts "-L/opt/local/lib -L/usr/local/lib -lSDL2" - target 'macbook' + + interop ('sdl') { + defFile 'src/main/c_interop/sdl.def' + pkg 'sdl' + + target 'macbook', { + includeDirs '/Library/Frameworks/SDL2.framework/Headers', + "${System.getProperty("user.home")}/Library/Frameworks/SDL2.framework/Headers", + '/opt/local/include/SDL2', + '/usr/local/include/SDL2' + } + + target 'linux', { + includeDirs '/usr/include/SDL2' + } + + target 'iphone', { + includeDirs "${project.property("konan.home")}/dependencies/target-sysroot-2-darwin-ios/System/Library/Frameworks/SDL2.framework/Headers" + } + + target 'raspberrypi', { + includeDirs "${project.property("konan.home")}/dependencies/target-sysroot-1-raspberrypi/usr/include/SDL2" + } } - TetrisLinux { - useInterop 'sdlLinux' - linkerOpts '-L/usr/lib/x86_64-linux-gnu -lSDL2' - target 'linux' - } + program ('tetris') { + libraries { + artifact 'sdl' + } - TetrisIphone { - useInterop 'sdlIphone' - linkerOpts '-framework SDL2 -framework AVFoundation -framework CoreGraphics -framework CoreMotion ' + - '-framework Foundation -framework GameController -framework AudioToolbox -framework OpenGLES ' + - '-framework QuartzCore -framework UIKit' - noMain() - target 'iphone' - } + target 'macbook', { + linkerOpts "-F ${System.getProperty("user.home")}/Library/Frameworks -F /Library/Frameworks -framework SDL2" + // Use this line instead of the previous one if you've got a 'No SDL-framework' error. + //linkerOpts "-L/opt/local/lib -L/usr/local/lib -lSDL2" + } - TetrisRaspberry { - useInterop 'sdlRaspberry' - linkerOpts '-lSDL2' - target 'raspberrypi' + target 'linux', { + linkerOpts '-L/usr/lib/x86_64-linux-gnu -lSDL2' + } + + target 'iphone', { + linkerOpts '-framework SDL2 -framework AVFoundation -framework CoreGraphics -framework CoreMotion ' + + '-framework Foundation -framework GameController -framework AudioToolbox -framework OpenGLES ' + + '-framework QuartzCore -framework UIKit' + noMain true + } + + target 'raspberrypi', { + linkerOpts '-lSDL2' + } } } compileKonan { - project.ext { - buildTasks = getTaskDependencies().getDependencies().findAll { task -> task.name.startsWith("compileKonan") } - } doLast { - buildTasks.forEach() { task -> + konanArtifacts.tetris.forEach() { task -> copy { from 'src/main/resources' - into file(task.artifactPath).parentFile + into task.artifact.parentFile } } } diff --git a/samples/uikit/build.gradle b/samples/uikit/build.gradle index 682f4c77b38..23a704bbd33 100644 --- a/samples/uikit/build.gradle +++ b/samples/uikit/build.gradle @@ -1,7 +1,7 @@ apply plugin: 'konan' +konanTargets = ['iphone'] + konanArtifacts { - app { - target "iphone" - } + program('app') }