added toolchain file for cross compilation

This commit is contained in:
2026-05-29 15:56:18 +02:00
parent 4512e8ca49
commit 4ee517f1d3
4 changed files with 60 additions and 19 deletions
+12
View File
@@ -249,6 +249,18 @@ if(SLS_BUILD_ONLY_MOENCH)
set(SLS_USE_MOENCH ON CACHE BOOL "Enable" FORCE)
endif()
option(SLS_BUILD_ONLY_MATTERHORN "compile only Matterhorn" OFF)
if(SLS_BUILD_ONLY_MATTERHORN)
message(STATUS "Build MATTERHORN server only!")
set(SLS_BUILD_SHARED_LIBRARIES OFF CACHE BOOL "Disabled for MATTERHORN_ONLY" FORCE)
set(SLS_USE_TEXTCLIENT OFF CACHE BOOL "Disabled for MATTERHORN_ONLY" FORCE)
set(SLS_USE_DETECTOR ON CACHE BOOL "Disabled for MATTERHORN_ONLY" FORCE)
set(SLS_USE_RECEIVER OFF CACHE BOOL "Disabled for MATTERHORN_ONLY" FORCE)
set(SLS_USE_RECEIVER_BINARIES OFF CACHE BOOL "Disabled for MATTERHORN_ONLY" FORCE)
set(SLS_USE_SERVER ON CACHE BOOL "Enable building cpp server" FORCE)
set(SLS_USE_MATTERHORN ON CACHE BOOL "Enable Matterhorn" FORCE)
endif()
#Convenience option to switch off defaults when building Jungfrau binaries only
option(SLS_BUILD_ONLY_JUNGFRAU "compile only Jungfrau" OFF)
if(SLS_BUILD_ONLY_JUNGFRAU)
@@ -6,11 +6,19 @@ set(MATTERHORN_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/src/HelperFunctions.cpp
)
if(SLS_USE_SIMULATOR)
list(APPEND MATTERHORN_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/VirtualMatterhornServer.cpp)
set(MATTERHORN_SERVER_HEADER "VirtualMatterhornServer.h")
add_executable(matterhornDetectorServer_virtual ${MATTERHORN_SOURCES})
target_compile_definitions(matterhornDetectorServer_virtual PRIVATE
MATTERHORN_SERVER_HEADER=<VirtualMatterhornServer.h>
MATTERHORN_SERVER_CLASS=VirtualMatterhornServer
)
target_include_directories(matterhornDetectorServer_virtual
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
${CMAKE_CURRENT_SOURCE_DIR}/../../slsSupportLib/include
@@ -29,31 +37,35 @@ if(SLS_USE_SIMULATOR)
install(TARGETS matterhornDetectorServer_virtual
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
else()
list(APPEND MATTERHORN_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/MatterhornServer.cpp)
endif() # maybe better to have a else if build with simulators on one always uses the virtual server in MatterhornApp
add_executable(matterhornDetectorServer ${MATTERHORN_SOURCES})
list(APPEND MATTERHORN_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/MatterhornServer.cpp)
target_include_directories(matterhornDetectorServer
add_executable(matterhornDetectorServer ${MATTERHORN_SOURCES})
target_compile_definitions(matterhornDetectorServer PRIVATE
MATTERHORN_SERVER_HEADER=<MatterhornServer.h>
MATTERHORN_SERVER_CLASS=MatterhornServer
)
target_include_directories(matterhornDetectorServer
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
${CMAKE_CURRENT_SOURCE_DIR}/../../slsSupportLib/include
${CMAKE_CURRENT_SOURCE_DIR}/../slsDetectorServer_cpp/include)
target_link_libraries(matterhornDetectorServer
PUBLIC
slsSupportStatic
#slsDetectorStatic
slsServerStatic)
target_link_libraries(matterhornDetectorServer
PUBLIC
slsSupportStatic
slsServerStatic)
set_target_properties(matterhornDetectorServer PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
)
set_target_properties(matterhornDetectorServer PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
)
install(TARGETS matterhornDetectorServer
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
install(TARGETS matterhornDetectorServer
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
endif()
if(SLS_USE_TESTS)
add_subdirectory(tests)
@@ -1,5 +1,5 @@
#include "CommandLineOptions.h"
#include "VirtualMatterhornServer.h"
#include MATTERHORN_SERVER_HEADER
#include "sls/logger.h"
#include "sls/sls_detector_exceptions.h"
#include "sls/versionAPI.h"
@@ -75,7 +75,7 @@ int main(int argc, char *argv[]) {
LOG(TLogLevel::logINFOBLUE) << "Stop Server [" << opts.port + 1 << "]";
try {
VirtualMatterhornServer stopServer(opts.port + 1);
MATTERHORN_SERVER_CLASS stopServer(opts.port + 1);
while (!interruption) {
pause(); // wait for signal to exit
}
@@ -93,7 +93,7 @@ int main(int argc, char *argv[]) {
LOG(TLogLevel::logINFOBLUE) << "Control Server [" << opts.port << "]\n";
try {
VirtualMatterhornServer server(
MATTERHORN_SERVER_CLASS server(
opts.port); // TODO use virtual if compiled with virtual
// simulators on
while (!interruption) {
@@ -0,0 +1,17 @@
#Usage: cmake .. -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake -DSLS_BUILD_ONLY_MATTERHORN=ON
set(SLS_ARM_COMPILER "/psi.ch/group/detector/firmware/arm64_linux/arm-gnu-toolchain-12.3.rel1-x86_64-aarch64-none-linux-gnu/" CACHE PATH "Path to the ARM cross compiler")
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR aarch64)
set(CMAKE_C_COMPILER "${SLS_ARM_COMPILER}/bin/aarch64-none-linux-gnu-gcc")
set(CMAKE_CXX_COMPILER "${SLS_ARM_COMPILER}/bin/aarch64-none-linux-gnu-g++")
set(CMAKE_AR "${SLS_ARM_COMPILER}/bin/aarch64-none-linux-gnu-ar")
set(CMAKE_RANLIB "${SLS_ARM_COMPILER}/bin/aarch64-none-linux-gnu-ranlib")
set(CMAKE_FIND_ROOT_PATH "${SLS_ARM_COMPILER}")
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)