]> git.proxmox.com Git - ceph.git/blob - ceph/src/fmt/support/build.gradle
import quincy beta 17.1.0
[ceph.git] / ceph / src / fmt / support / build.gradle
1 import java.nio.file.Paths
2
3 // General gradle arguments for root project
4 buildscript {
5 repositories {
6 google()
7 jcenter()
8 }
9 dependencies {
10 //
11 // https://developer.android.com/studio/releases/gradle-plugin#updating-gradle
12 //
13 // Notice that 4.0.0 here is the version of [Android Gradle Plugin]
14 // Accroding to URL above you will need Gradle 6.1 or higher
15 //
16 classpath "com.android.tools.build:gradle:4.1.1"
17 }
18 }
19 repositories {
20 google()
21 jcenter()
22 }
23
24 // Project's root where CMakeLists.txt exists: rootDir/support/.cxx -> rootDir
25 def rootDir = Paths.get(project.buildDir.getParent()).getParent()
26 println("rootDir: ${rootDir}")
27
28 // Output: Shared library (.so) for Android
29 apply plugin: "com.android.library"
30 android {
31 compileSdkVersion 25 // Android 7.0
32
33 // Target ABI
34 // - This option controls target platform of module
35 // - The platform might be limited by compiler's support
36 // some can work with Clang(default), but some can work only with GCC...
37 // if bad, both toolchains might not support it
38 splits {
39 abi {
40 enable true
41 // Specify platforms for Application
42 reset()
43 include "arm64-v8a", "armeabi-v7a", "x86_64"
44 }
45 }
46 ndkVersion "21.3.6528147" // ANDROID_NDK_HOME is deprecated. Be explicit
47
48 defaultConfig {
49 minSdkVersion 21 // Android 5.0+
50 targetSdkVersion 25 // Follow Compile SDK
51 versionCode 34 // Follow release count
52 versionName "7.1.2" // Follow Official version
53
54 externalNativeBuild {
55 cmake {
56 arguments "-DANDROID_STL=c++_shared" // Specify Android STL
57 arguments "-DBUILD_SHARED_LIBS=true" // Build shared object
58 arguments "-DFMT_TEST=false" // Skip test
59 arguments "-DFMT_DOC=false" // Skip document
60 cppFlags "-std=c++17"
61 targets "fmt"
62 }
63 }
64 println(externalNativeBuild.cmake.cppFlags)
65 println(externalNativeBuild.cmake.arguments)
66 }
67
68 // External Native build
69 // - Use existing CMakeList.txt
70 // - Give path to CMake. This gradle file should be
71 // neighbor of the top level cmake
72 externalNativeBuild {
73 cmake {
74 version "3.10.0+"
75 path "${rootDir}/CMakeLists.txt"
76 // buildStagingDirectory "./build" // Custom path for cmake output
77 }
78 }
79
80 sourceSets{
81 // Android Manifest for Gradle
82 main {
83 manifest.srcFile "AndroidManifest.xml"
84 }
85 }
86
87 // https://developer.android.com/studio/build/native-dependencies#build_system_configuration
88 buildFeatures {
89 prefab true
90 prefabPublishing true
91 }
92 prefab {
93 fmt {
94 headers "${rootDir}/include"
95 }
96 }
97 }
98
99 assemble.doLast
100 {
101 // Instead of `ninja install`, Gradle will deploy the files.
102 // We are doing this since FMT is dependent to the ANDROID_STL after build
103 copy {
104 from "build/intermediates/cmake"
105 into "${rootDir}/libs"
106 }
107 // Copy debug binaries
108 copy {
109 from "${rootDir}/libs/debug/obj"
110 into "${rootDir}/libs/debug"
111 }
112 // Copy Release binaries
113 copy {
114 from "${rootDir}/libs/release/obj"
115 into "${rootDir}/libs/release"
116 }
117 // Remove empty directory
118 delete "${rootDir}/libs/debug/obj"
119 delete "${rootDir}/libs/release/obj"
120
121 // Copy AAR files. Notice that the aar is named after the folder of this script.
122 copy {
123 from "build/outputs/aar/support-release.aar"
124 into "${rootDir}/libs"
125 rename "support-release.aar", "fmt-release.aar"
126 }
127 copy {
128 from "build/outputs/aar/support-debug.aar"
129 into "${rootDir}/libs"
130 rename "support-debug.aar", "fmt-debug.aar"
131 }
132 }