gecko/Makefile.toml

301 lines
7.8 KiB
TOML

[env]
CARGO_MAKE_EXTEND_WORKSPACE_MAKEFILE = true
CARGO_MAKE_WORKSPACE_INCLUDE_MEMBERS = ["native/dubp_rs"]
ANDROID_PLATFORM_VERSION = "21"
TARGET_OS = "unknown"
RELEASE = true
DEV = false
LIB_OUT_DIR = "release"
[env.debug]
DEV = true
RELEASE = false
LIB_OUT_DIR = "debug"
[tasks.test-flow]
disabled = true
[tasks.android-dev32]
description = "development android i686 emulator"
category = "Build"
dependencies = [
"setup-crate-type-android",
"pre-android",
"android-i686",
"android-i686-release",
"post-android-i686",
"post-android",
]
[tasks.android-dev]
description = "development android x86_64 emulator"
category = "Build"
dependencies = [
"setup-crate-type-android",
"pre-android",
"android-x86_64",
"android-x86_64-release",
"post-android-x86_64",
"post-android",
]
[tasks.android-arm]
description = "build android ARM64 for actual device"
category = "Build"
dependencies = [
"setup-crate-type-android",
"pre-android",
"android-aarch64",
"android-aarch64-release",
"post-android-aarch64",
"post-android",
]
[tasks.build]
description = "Runs the rust compiler."
category = "Build"
dependencies = ["android"]
[tasks.build.mac]
description = "Runs the rust compiler."
category = "Build"
dependencies = ["android", "ios"]
[tasks.ios]
description = "build iOS targets"
category = "Build"
dependencies = ["ios-build", "ios-release", "post-ios"]
[tasks.ios-build]
condition = { platforms = ["mac"], env_true = ["DEV"] }
description = "Build ios targets."
category = "Build"
command = "cargo"
args = ["lipo"]
dependencies = [
"setup-crate-type-ios",
]
[tasks.ios-release]
condition = { platforms = ["mac"], env_true = ["RELEASE"] }
description = "Build ios targets."
category = "Build"
command = "cargo"
args = ["lipo", "--release"]
dependencies = [
"setup-crate-type-ios",
]
[tasks.post-ios]
script_runner = "@duckscript"
condition = { platforms = ["mac"] }
script = [
"""
cp ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/target/universal/${LIB_OUT_DIR}/lib${CARGO_MAKE_CRATE_FS_NAME}.a \
${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/packages/${CARGO_MAKE_CRATE_FS_NAME}/ios/lib${CARGO_MAKE_CRATE_FS_NAME}.a
""",
"""
cp ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/native/${CARGO_MAKE_CRATE_CURRENT_WORKSPACE_MEMBER}/binding.h \
${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/packages/${CARGO_MAKE_CRATE_FS_NAME}/ios/Classes/binding.h
""",
]
dependencies = ["restore-crate-type"]
[tasks.android]
description = "Build android targets."
category = "Build"
dependencies = [
"setup-crate-type-android",
"pre-android",
"android-aarch64",
"android-aarch64-release",
"post-android-aarch64",
"android-armv7",
"android-armv7-release",
"post-android-armv7",
#"android-i686",
#"android-i686-release",
#"post-android-i686",
#"android-x86_64",
#"android-x86_64-release",
#"post-android-x86_64",
"post-android"
]
[tasks.android-build]
private = true
condition = { env_true = ["DEV"], env_set = ["ANDROID_TARGET"] }
command = "cargo"
args = [
"ndk",
"--platform",
"${ANDROID_PLATFORM_VERSION}",
"--target",
"${ANDROID_TARGET}",
"build",
]
[tasks.android-build-release]
private = true
condition = { env_true = ["RELEASE"], env_set = ["ANDROID_TARGET"] }
command = "cargo"
args = [
"ndk",
"--platform",
"${ANDROID_PLATFORM_VERSION}",
"--target",
"${ANDROID_TARGET}",
"build",
"--release"
]
[tasks.android-aarch64]
private = true
condition = { env_true = ["DEV"] }
env = { ANDROID_TARGET = "aarch64-linux-android" }
run_task = "android-build"
[tasks.android-armv7]
private = true
condition = { env_true = ["DEV"] }
env = { ANDROID_TARGET = "armv7-linux-androideabi" }
run_task = "android-build"
[tasks.android-i686]
private = true
condition = { env_true = ["DEV"] }
env = { ANDROID_TARGET = "i686-linux-android" }
run_task = "android-build"
[tasks.android-x86_64]
private = true
condition = { env_true = ["DEV"] }
env = { ANDROID_TARGET = "x86_64-linux-android" }
run_task = "android-build"
[tasks.android-aarch64-release]
private = true
condition = { env_true = ["RELEASE"] }
env = { ANDROID_TARGET = "aarch64-linux-android" }
run_task = "android-build-release"
[tasks.android-armv7-release]
private = true
condition = { env_true = ["RELEASE"] }
env = { ANDROID_TARGET = "armv7-linux-androideabi" }
run_task = "android-build-release"
[tasks.android-i686-release]
private = true
condition = { env_true = ["RELEASE"] }
env = { ANDROID_TARGET = "i686-linux-android" }
run_task = "android-build-release"
[tasks.android-x86_64-release]
private = true
condition = { env_true = ["RELEASE"] }
env = { ANDROID_TARGET = "x86_64-linux-android" }
run_task = "android-build-release"
[tasks.pre-android]
private = true
script_runner = "@duckscript"
script = [
"mkdir ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/packages/${CARGO_MAKE_CRATE_FS_NAME}/android/src/main/jniLibs/arm64-v8a",
"mkdir ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/packages/${CARGO_MAKE_CRATE_FS_NAME}/android/src/main/jniLibs/armeabi-v7a",
"mkdir ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/packages/${CARGO_MAKE_CRATE_FS_NAME}/android/src/main/jniLibs/x86",
"mkdir ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/packages/${CARGO_MAKE_CRATE_FS_NAME}/android/src/main/jniLibs/x86_64",
]
[tasks.copy-lib]
private = true
condition = { env_set = ["ANDROID_TARGET", "JNI_LIB_DIR"] }
script_runner = "@duckscript"
script = [
"""
cp ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/target/${ANDROID_TARGET}/${LIB_OUT_DIR}/lib${CARGO_MAKE_CRATE_FS_NAME}.so \
${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/packages/${CARGO_MAKE_CRATE_FS_NAME}/android/src/main/jniLibs/${JNI_LIB_DIR}/lib${CARGO_MAKE_CRATE_FS_NAME}.so
""",
]
[tasks.post-android-aarch64]
private = true
env = { ANDROID_TARGET = "aarch64-linux-android", JNI_LIB_DIR = "arm64-v8a" }
run_task = "copy-lib"
[tasks.post-android-armv7]
private = true
env = { ANDROID_TARGET = "armv7-linux-androideabi", JNI_LIB_DIR = "armeabi-v7a" }
run_task = "copy-lib"
[tasks.post-android-i686]
private = true
env = { ANDROID_TARGET = "i686-linux-android", JNI_LIB_DIR = "x86" }
run_task = "copy-lib"
[tasks.post-android-x86_64]
private = true
env = { ANDROID_TARGET = "x86_64-linux-android", JNI_LIB_DIR = "x86_64" }
run_task = "copy-lib"
[tasks.post-android]
dependencies = ["restore-crate-type"]
[tasks.setup-crate-type-android]
private = true
env = { TARGET_OS = "android" }
run_task = "setup-crate-type"
[tasks.setup-crate-type-ios]
private = true
env = { TARGET_OS = "ios" }
run_task = "setup-crate-type"
[tasks.setup-crate-type]
private = true
script_runner = "@duckscript"
script = [
"""
toml = readfile ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/native/${CARGO_MAKE_CRATE_CURRENT_WORKSPACE_MEMBER}/Cargo.toml
crate_type = set ""
os = get_env TARGET_OS
is_android = eq ${os} "android"
is_ios = eq ${os} "ios"
if ${is_android}
crate_type = set "cdylib"
elseif ${is_ios}
crate_type = set "staticlib"
else
crate_type = set "rlib"
end
val = replace ${toml} "rlib" ${crate_type}
result = writefile ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/native/${CARGO_MAKE_CRATE_CURRENT_WORKSPACE_MEMBER}/Cargo.toml ${val}
assert ${result}
""",
]
[tasks.restore-crate-type]
private = true
script_runner = "@duckscript"
script = [
"""
toml = readfile ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/native/${CARGO_MAKE_CRATE_CURRENT_WORKSPACE_MEMBER}/Cargo.toml
crate_type = set ""
os = get_env TARGET_OS
is_android = eq ${os} "android"
is_ios = eq ${os} "ios"
if ${is_android}
crate_type = set "cdylib"
elseif ${is_ios}
crate_type = set "staticlib"
else
crate_type = set "rlib"
end
val = replace ${toml} ${crate_type} "rlib"
result = writefile ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/native/${CARGO_MAKE_CRATE_CURRENT_WORKSPACE_MEMBER}/Cargo.toml ${val}
assert ${result}
""",
]