gecko/Makefile.toml

369 lines
9.4 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"]
# ANDROID
[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.android-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 = "android-copy-lib"
[tasks.post-android-armv7]
private = true
env = { ANDROID_TARGET = "armv7-linux-androideabi", JNI_LIB_DIR = "armeabi-v7a" }
run_task = "android-copy-lib"
[tasks.post-android-i686]
private = true
env = { ANDROID_TARGET = "i686-linux-android", JNI_LIB_DIR = "x86" }
run_task = "android-copy-lib"
[tasks.post-android-x86_64]
private = true
env = { ANDROID_TARGET = "x86_64-linux-android", JNI_LIB_DIR = "x86_64" }
run_task = "android-copy-lib"
[tasks.post-android]
dependencies = ["restore-crate-type"]
# 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"]
# LINUX
[tasks.linux]
description = "Build linux targets."
category = "Build"
dependencies = [
"setup-crate-type-linux",
"pre-linux",
"linux-x86_64-release",
"linux-copy-lib",
"post-linux"
]
[tasks.pre-linux]
private = true
script_runner = "@duckscript"
script = [
"mkdir ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/packages/${CARGO_MAKE_CRATE_FS_NAME}/linux",
]
[tasks.linux-x86_64-release]
private = true
condition = { env_true = ["RELEASE"] }
env = { LINUX_TARGET = "x86_64-unknown-linux-gnu" }
run_task = "linux-build-release"
[tasks.linux-build-release]
private = true
condition = { env_true = ["RELEASE"], env_set = ["LINUX_TARGET"] }
command = "cargo"
args = [
"build",
"--release",
"--target",
"${LINUX_TARGET}"
]
[tasks.linux-copy-lib]
private = true
condition = { env_set = ["LINUX_TARGET"] }
script_runner = "@duckscript"
script = [
"""
cp ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/target/${LINUX_TARGET}/${LIB_OUT_DIR}/lib${CARGO_MAKE_CRATE_FS_NAME}.so \
${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/packages/${CARGO_MAKE_CRATE_FS_NAME}/linux/lib${CARGO_MAKE_CRATE_FS_NAME}.so
""",
]
[tasks.post-linux]
dependencies = ["restore-crate-type"]
# SETUP 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-linux]
private = true
env = { TARGET_OS = "linux" }
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"
is_linux = eq ${os} "linux"
if ${is_android}
crate_type = set "cdylib"
elseif ${is_ios}
crate_type = set "staticlib"
elseif ${is_linux}
crate_type = set "cdylib"
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}
""",
]
# RESTORE CRATE TYPE
[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"
is_linux = eq ${os} "linux"
if ${is_android}
crate_type = set "cdylib"
elseif ${is_ios}
crate_type = set "staticlib"
elseif ${is_linux}
crate_type = set "cdylib"
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}
""",
]