git repos / blockattack-game

blame: source/misc/embedded_libs/fmt-8.1.1/support/build.gradle

normal view · raw

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