Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
cmake_minimum_required(VERSION 3.10)
project(gdk VERSION 0.77.7 LANGUAGES C CXX)

# Keep the absolute checkout path out of compiled output.
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang")
add_compile_options("-ffile-prefix-map=${CMAKE_SOURCE_DIR}=.")
endif()

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

Expand Down
2 changes: 1 addition & 1 deletion cmake/includes/helpers.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ macro(create_gdkrust_target)
# cmake_path(GET OPENSSL_INCLUDE_DIR ROOT_DIRECTORY OPENSSL_ROOT_DIR)
set(OPENSSL_ROOT_DIR ${CMAKE_PREFIX_PATH})
add_custom_target(cargo-cmd
COMMAND ${_buildTool} "${CMAKE_BUILD_TYPE}" "${_rustTriple}" "${ANDROID_TOOLCHAIN_ROOT}" ${CMAKE_AR} ${OPENSSL_INCLUDE_DIR} ${OPENSSL_CRYPTO_LIBRARY} ${_gdkRustSrcDir} ${_gdkRustBuildDir} ${_gdkRustLibArtifact} "${CMAKE_OSX_DEPLOYMENT_TARGET}"
COMMAND ${_buildTool} "${CMAKE_BUILD_TYPE}" "${_rustTriple}" "${ANDROID_TOOLCHAIN_ROOT}" ${CMAKE_AR} ${OPENSSL_INCLUDE_DIR} ${OPENSSL_CRYPTO_LIBRARY} ${_gdkRustSrcDir} ${_gdkRustBuildDir} ${_gdkRustLibArtifact} "${CMAKE_OSX_DEPLOYMENT_TARGET}" "${CMAKE_SOURCE_DIR}"
VERBATIM
BYPRODUCTS ${_gdkRustLibArtifact}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
Expand Down
29 changes: 28 additions & 1 deletion tools/buildgdk_rust.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ SOURCE_DIR="$1"; shift
OUTPUT_DIR="$1"; shift
ARTIFACT="$1"; shift
export MACOSX_DEPLOYMENT_TARGET=$1; shift
GDK_ROOT="$1"; shift

export CC_i686_linux_android=i686-linux-android23-clang
export CARGO_TARGET_I686_LINUX_ANDROID_LINKER=${CC_i686_linux_android}
Expand All @@ -22,6 +23,12 @@ export CC_aarch64_linux_android=aarch64-linux-android23-clang
export CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER=${CC_aarch64_linux_android}
export AR=${ARCHIVER}

# rustc flags this script must contribute.
GDK_RUSTC_FLAGS=()
if [ -n "${GDK_ROOT}" ]; then
GDK_RUSTC_FLAGS+=("--remap-path-prefix=${GDK_ROOT}=.")
fi

export CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse


Expand All @@ -36,6 +43,7 @@ ARTIFACT_PATH_HINT=${OUTPUT_DIR}
CARGO_ARGS=()
CARGO_ARGS+=("--manifest-path=${SOURCE_DIR}/Cargo.toml")
CARGO_ARGS+=("--target-dir=${OUTPUT_DIR}")
CARGO_ARGS+=("--locked")

if [ "$BUILDTYPE" == "Release" ]; then
CARGO_ARGS+=("--release")
Expand Down Expand Up @@ -91,7 +99,7 @@ fi

if [[ ${TRIPLE} == *"android"* ]];then
export PATH=${PATH}:${ANDROID_TOOLCHAIN_ROOT}/bin
export RUSTFLAGS="-L${SOURCE_DIR}/libgcc"
GDK_RUSTC_FLAGS+=("-L${SOURCE_DIR}/libgcc")
elif [[ ${TRIPLE} == "aarch64-apple-ios" ]]; then
LD_ARCH="-arch arm64 -platform_version ios ${MACOSX_DEPLOYMENT_TARGET} ${MACOSX_DEPLOYMENT_TARGET}"
elif [[ ${TRIPLE} == "x86_64-apple-ios" ]]; then
Expand All @@ -104,6 +112,25 @@ elif [[ ${TRIPLE} == "x86_64-apple-darwin" ]]; then
LD_ARCH="-arch x86_64 -platform_version macos ${MACOSX_DEPLOYMENT_TARGET} ${MACOSX_DEPLOYMENT_TARGET}"
fi

# Cargo uses CARGO_ENCODED_RUSTFLAGS instead of RUSTFLAGS when the encoded
# variable is set, even when it is empty. Append to the source Cargo will use.
if [ ${#GDK_RUSTC_FLAGS[@]} -gt 0 ]; then
if [ -n "${CARGO_ENCODED_RUSTFLAGS+set}" ]; then
_gdk_us=$'\x1f'
for _gdk_flag in "${GDK_RUSTC_FLAGS[@]}"; do
CARGO_ENCODED_RUSTFLAGS="${CARGO_ENCODED_RUSTFLAGS:+${CARGO_ENCODED_RUSTFLAGS}${_gdk_us}}${_gdk_flag}"
done
export CARGO_ENCODED_RUSTFLAGS
unset _gdk_us _gdk_flag
else
for _gdk_flag in "${GDK_RUSTC_FLAGS[@]}"; do
RUSTFLAGS="${RUSTFLAGS:+${RUSTFLAGS} }${_gdk_flag}"
done
export RUSTFLAGS
unset _gdk_flag
fi
fi

# behaving correctly when no-op
oldT=$(date +%s)

Expand Down