Skip to content

Commit

Permalink
[eclipse-iceoryx#210] Make cmake build the Rust project
Browse files Browse the repository at this point in the history
  • Loading branch information
elBoberido committed Jun 1, 2024
1 parent 468b4e4 commit 983d857
Showing 1 changed file with 47 additions and 4 deletions.
51 changes: 47 additions & 4 deletions iceoryx2-lang/c/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,18 +1,61 @@
cmake_minimum_required(VERSION 3.28)
project(iceoryx2_lang_c)

########## Rust target ##########

set(RUST_BUILD_TYPE "release")
set(RUST_BUILD_TYPE_FLAG "--${RUST_BUILD_TYPE}")
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set(RUST_BUILD_TYPE "debug")
set(RUST_BUILD_TYPE_FLAG "")
endif()

set(RUST_ARCH_TRIPLET "")
set(RUST_ARCH_TRIPLET_FLAG "")
# if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "i486")
# set(RUST_ARCH_TRIPLET "i686-unknown-linux-gnu")
# set(RUST_ARCH_TRIPLET_FLAG "--target=${RUST_ARCH_TRIPLET}")
# elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "armv7l")
# set(RUST_ARCH_TRIPLET "armv7-unknown-linux-gnueabihf")
# set(RUST_ARCH_TRIPLET_FLAG "--target=${RUST_ARCH_TRIPLET}")
# elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64")
# set(RUST_ARCH_TRIPLET "${CMAKE_SYSTEM_PROCESSOR}-unknown-linux-gnu")
# set(RUST_ARCH_TRIPLET_FLAG "--target=${RUST_ARCH_TRIPLET}")
# endif()

set(RUST_TARGET_DIR ${CMAKE_BINARY_DIR}/rust)
set(RUST_ARCH_TARGET_DIR ${RUST_TARGET_DIR}/${RUST_ARCH_TRIPLET})

set(ICEORYX2_LANG_C_LIB ${RUST_ARCH_TARGET_DIR}/${RUST_BUILD_TYPE}/libiceoryx2_lang_c.a)

# run cargo
add_custom_target(
iceoryx2 ALL
COMMAND cargo build ${RUST_BUILD_TYPE_FLAG} --target-dir=${RUST_TARGET_DIR} ${RUST_ARCH_TRIPLET_FLAG}
BYPRODUCTS
"${CMAKE_CURRENT_SOURCE_DIR}/iceoryx2.h"
${ICEORYX2_LANG_C_LIB}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
VERBATIM
USES_TERMINAL
)

# TODO remove once generation works as expected ... have a look at iceoryx-rs
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/iceoryx2.h"
"${CMAKE_BINARY_DIR}/generated/include/iox2/iceoryx2.h" @ONLY)

set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES ".so")
list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES ".dll")
# set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
# list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES ".so")
# list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES ".dll")
#
# find_library(ICEORYX2_LANG_C_LIB ${PROJECT_NAME} HINTS ${iceoryx2_SOURCE_DIR}/target/release)

find_library(ICEORYX2_LANG_C_LIB ${PROJECT_NAME} HINTS ${iceoryx2_SOURCE_DIR}/target/release)
########## C target ##########

add_library(${PROJECT_NAME} INTERFACE)

add_dependencies(${PROJECT_NAME} iceoryx2)

target_include_directories(${PROJECT_NAME} INTERFACE ${CMAKE_BINARY_DIR}/generated/include)

target_link_libraries(${PROJECT_NAME} INTERFACE ${ICEORYX2_LANG_C_LIB})
Expand Down

0 comments on commit 983d857

Please sign in to comment.