Skip to content

Commit

Permalink
update and fix cargo integration
Browse files Browse the repository at this point in the history
  • Loading branch information
Marc-André Moreau authored and awakecoding committed Feb 18, 2025
1 parent 28b8a5a commit 79d8055
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 17 deletions.
46 changes: 31 additions & 15 deletions cargo/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.0)
cmake_minimum_required(VERSION 3.15)

project(cbake-cargo C CXX)

Expand Down Expand Up @@ -26,6 +26,10 @@ set(CARGO_TARGET "${CARGO_TARGET_ARCH}-unknown-linux-gnu")
string(REGEX REPLACE "[.|-]" "_" CARGO_TARGET_ENV_SUFFIX ${CARGO_TARGET})
message(STATUS "CARGO_TARGET: ${CARGO_TARGET}")

if(NOT DEFINED CARGO_CBAKE_NAME)
set(CARGO_CBAKE_NAME "${CARGO_TARGET}")
endif()

# cc-rs
set(CC_CARGO_TARGET_ENV_NAME "CC_${CARGO_TARGET_ENV_SUFFIX}")
set(CFLAGS_CARGO_TARGET_ENV_NAME "CFLAGS_${CARGO_TARGET_ENV_SUFFIX}")
Expand All @@ -36,6 +40,9 @@ set(PKG_CONFIG_PATH_CARGO_TARGET_ENV_NAME "PKG_CONFIG_PATH_${CARGO_TARGET_ENV_SU
set(PKG_CONFIG_LIBDIR_CARGO_TARGET_ENV_NAME "PKG_CONFIG_LIBDIR_${CARGO_TARGET_ENV_SUFFIX}")
set(PKG_CONFIG_SYSROOT_DIR_CARGO_TARGET_ENV_NAME "PKG_CONFIG_SYSROOT_DIR_${CARGO_TARGET_ENV_SUFFIX}")

# cmake-rs
set(CMAKE_TOOLCHAIN_FILE_CARGO_TARGET_ENV_NAME "CMAKE_TOOLCHAIN_FILE_${CARGO_TARGET_ENV_SUFFIX}")

function(cargo_config_key_env INPUT_VALUE OUTPUT_VARIABLE)
set(CARGO_CONFIG_KEY_ENV_NAME "CARGO_${INPUT_VALUE}")
string(TOUPPER ${CARGO_CONFIG_KEY_ENV_NAME} CARGO_CONFIG_KEY_ENV_NAME)
Expand Down Expand Up @@ -65,11 +72,16 @@ set(${PKG_CONFIG_PATH_CARGO_TARGET_ENV_NAME} "${PKG_CONFIG_DIR}")
set(${PKG_CONFIG_LIBDIR_CARGO_TARGET_ENV_NAME} "${PKG_CONFIG_LIBDIR}")
set(${PKG_CONFIG_SYSROOT_DIR_CARGO_TARGET_ENV_NAME} "${PKG_CONFIG_SYSROOT_DIR}")

set(${CMAKE_TOOLCHAIN_FILE_CARGO_TARGET_ENV_NAME} "${CMAKE_TOOLCHAIN_FILE}")

set(ENV_VARS
"${PKG_CONFIG_PATH_CARGO_TARGET_ENV_NAME}"
"${PKG_CONFIG_LIBDIR_CARGO_TARGET_ENV_NAME}"
"${PKG_CONFIG_SYSROOT_DIR_CARGO_TARGET_ENV_NAME}")

list(APPEND ENV_VARS
"${CMAKE_TOOLCHAIN_FILE_CARGO_TARGET_ENV_NAME}")

list(APPEND ENV_VARS
"${CC_CARGO_TARGET_ENV_NAME}"
"${CFLAGS_CARGO_TARGET_ENV_NAME}"
Expand All @@ -78,31 +90,35 @@ list(APPEND ENV_VARS
list(APPEND ENV_VARS
"${CARGO_TARGET_LINKER_ENV_NAME}")

# generate environment scripts

set(DOTENV_FILE "")
set(ENTER_ENV_SH "")
set(LEAVE_ENV_SH "")
set(ENTER_ENV_PS1 "")
set(LEAVE_ENV_PS1 "")

foreach(ENV_VAR ${ENV_VARS})
list(APPEND DOTENV_FILE "${ENV_VAR}=${${ENV_VAR}}")
list(APPEND ENTER_ENV_SH "export ${ENV_VAR}=\"${${ENV_VAR}}\"")
list(APPEND LEAVE_ENV_SH "unset ${ENV_VAR}")
list(APPEND ENTER_ENV_PS1 "\$Env:${ENV_VAR}='${${ENV_VAR}}'")
list(APPEND LEAVE_ENV_PS1 "\$Env:${ENV_VAR}=\$null")
endforeach()

list(APPEND DOTENV_FILE "")
list(JOIN DOTENV_FILE "\n" DOTENV_FILE)

set(ENTER_ENV_SH "")
foreach(ENV_VAR ${ENV_VARS})
list(APPEND ENTER_ENV_SH "export ${ENV_VAR}=\"${${ENV_VAR}}\"")
endforeach()
list(APPEND ENTER_ENV_SH "")
list(JOIN ENTER_ENV_SH "\n" ENTER_ENV_SH)

set(LEAVE_ENV_SH "")
foreach(ENV_VAR ${ENV_VARS})
list(APPEND LEAVE_ENV_SH "unset ${ENV_VAR}")
endforeach()
list(APPEND LEAVE_ENV_SH "")
list(JOIN LEAVE_ENV_SH "\n" LEAVE_ENV_SH)

if(NOT DEFINED CARGO_CBAKE_NAME)
set(CARGO_CBAKE_NAME "${CARGO_TARGET}")
endif()
list(APPEND ENTER_ENV_PS1 "")
list(JOIN ENTER_ENV_PS1 "\n" ENTER_ENV_PS1)
list(APPEND LEAVE_ENV_PS1 "")
list(JOIN LEAVE_ENV_PS1 "\n" LEAVE_ENV_PS1)

file(WRITE "${CARGO_CBAKE_DIR}/${CARGO_CBAKE_NAME}.env" "${DOTENV_FILE}")
file(WRITE "${CARGO_CBAKE_DIR}/${CARGO_CBAKE_NAME}-enter.sh" "${ENTER_ENV_SH}")
file(WRITE "${CARGO_CBAKE_DIR}/${CARGO_CBAKE_NAME}-leave.sh" "${LEAVE_ENV_SH}")
file(WRITE "${CARGO_CBAKE_DIR}/${CARGO_CBAKE_NAME}-enter.ps1" "${ENTER_ENV_PS1}")
file(WRITE "${CARGO_CBAKE_DIR}/${CARGO_CBAKE_NAME}-leave.ps1" "${LEAVE_ENV_PS1}")
5 changes: 3 additions & 2 deletions cmake/linux.toolchain.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,9 @@ set(CROSS_LIBSTDCPPBITS_INC_DIR "${CROSS_LIBSTDCPP_INC_DIR}/${CROSS_TARGET}")
set(CROSS_LIBGCC_DIR "${LIBGCC_DIR}/${CROSS_TARGET}/${CROSS_GCC_VERSION}")
set(CROSS_COMPILER_FLAGS "-iwithsysroot ${CROSS_MULTIARCH_INC_DIR}")
set(CROSS_LINKER_FLAGS "-fuse-ld=lld -stdlib=libstdc++ -L \"${CMAKE_SYSROOT}/${CROSS_LIBGCC_DIR}\"")
set(CMAKE_AR "${LLVM_PREFIX}/bin/llvm-ar" CACHE FILEPATH "" FORCE)
set(CMAKE_NM "${LLVM_PREFIX}/bin/llvm-nm" CACHE FILEPATH "" FORCE)
set(CMAKE_LINKER "${LLVM_PREFIX}/bin/ld.lld${EXE_SUFFIX}" CACHE FILEPATH "" FORCE)
set(CMAKE_AR "${LLVM_PREFIX}/bin/llvm-ar${EXE_SUFFIX}" CACHE FILEPATH "" FORCE)
set(CMAKE_NM "${LLVM_PREFIX}/bin/llvm-nm${EXE_SUFFIX}" CACHE FILEPATH "" FORCE)
set(CMAKE_RANLIB "${LLVM_PREFIX}/bin/llvm-ranlib${EXE_SUFFIX}" CACHE FILEPATH "" FORCE)
set(CMAKE_OBJCOPY "${LLVM_PREFIX}/bin/llvm-objcopy${EXE_SUFFIX}" CACHE FILEPATH "" FORCE)
set(CMAKE_SIZE_UTIL "${LLVM_PREFIX}/bin/llvm-size${EXE_SUFFIX}" CACHE FILEPATH "" FORCE)
Expand Down

0 comments on commit 79d8055

Please sign in to comment.