@@ -13,6 +13,7 @@ ExternalProject_Add(libbpf
1313 SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /../../libbpf/src
1414 CONFIGURE_COMMAND ""
1515 BUILD_COMMAND make
16+ CC=${CMAKE_C_COMPILER}
1617 BUILD_STATIC_ONLY=1
1718 OBJDIR=${CMAKE_CURRENT_BINARY_DIR} /libbpf/libbpf
1819 DESTDIR=${CMAKE_CURRENT_BINARY_DIR} /libbpf
@@ -38,15 +39,53 @@ ExternalProject_Add(bpftool
3839
3940find_program (CARGO_EXISTS cargo)
4041if (CARGO_EXISTS)
41- ExternalProject_Add(blazesym
42- PREFIX blazesym
43- SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /../../blazesym
44- CONFIGURE_COMMAND ""
45- BUILD_COMMAND cargo build --package=blazesym-c --release
46- BUILD_IN_SOURCE TRUE
47- INSTALL_COMMAND ""
48- STEP_TARGETS build
49- )
42+ if (CMAKE_CROSSCOMPILING )
43+ # Determine target triple
44+ if (CMAKE_SYSTEM_NAME MATCHES "Linux" )
45+ if (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64" )
46+ set (CARGO_TARGET "x86_64-unknown-linux-gnu" )
47+ elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64" )
48+ set (CARGO_TARGET "aarch64-unknown-linux-gnu" )
49+ else ()
50+ message (FATAL_ERROR "Unsupported processor for Linux: ${CMAKE_SYSTEM_PROCESSOR} " )
51+ endif ()
52+
53+ if (CMAKE_CXX_COMPILER)
54+ set (RUST_LINKER ${CMAKE_CXX_COMPILER} )
55+ else ()
56+ set (RUST_LINKER ${CMAKE_C_COMPILER} )
57+ endif ()
58+ else ()
59+ message ((FATAL_ERROR "Unsupported platform: ${CMAKE_SYSTEM_NAME} " ))
60+ endif ()
61+
62+ set (LIBBLAZESYM_PATH ${CMAKE_CURRENT_SOURCE_DIR} /../../blazesym/target /${CARGO_TARGET} /release/libblazesym_c.a)
63+
64+ ExternalProject_Add(blazesym
65+ PREFIX blazesym
66+ SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /../../blazesym
67+ CONFIGURE_COMMAND ""
68+ BUILD_COMMAND ${CMAKE_COMMAND} -E env
69+ RUSTFLAGS=-C\ linker=${RUST_LINKER}
70+ cargo build --package=blazesym-c --release --target =${CARGO_TARGET}
71+ BUILD_IN_SOURCE TRUE
72+ INSTALL_COMMAND ""
73+ STEP_TARGETS build
74+ )
75+ else () # Host
76+ set (LIBBLAZESYM_PATH ${CMAKE_CURRENT_SOURCE_DIR} /../../blazesym/target /release/libblazesym_c.a)
77+
78+ ExternalProject_Add(blazesym
79+ PREFIX blazesym
80+ SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /../../blazesym
81+ CONFIGURE_COMMAND ""
82+ BUILD_COMMAND
83+ cargo build --package=blazesym-c --release
84+ BUILD_IN_SOURCE TRUE
85+ INSTALL_COMMAND ""
86+ STEP_TARGETS build
87+ )
88+ endif ()
5089endif ()
5190
5291# Set BpfObject input parameters -- note this is usually not necessary unless
@@ -91,6 +130,7 @@ foreach(app ${apps})
91130 target_include_directories (${app_stem} PRIVATE
92131 ${CMAKE_CURRENT_SOURCE_DIR} /../../blazesym/capi/include )
93132 target_link_libraries (${app_stem}
94- ${CMAKE_CURRENT_SOURCE_DIR} /../../blazesym/target /release/libblazesym_c.a -lpthread -lrt -ldl)
133+ ${LIBBLAZESYM_PATH} -lpthread -lrt -ldl)
134+ add_dependencies (${app_stem} blazesym-build )
95135 endif ()
96136endforeach ()
0 commit comments