Files
ePowerSwitch/CMakeLists.txt
T
2026-04-30 15:46:07 +02:00

126 lines
2.7 KiB
CMake

cmake_minimum_required(VERSION 3.03)
project(ePowerSwitchFrontend VERSION 1.0)
add_subdirectory(submodule/mepicsca)
add_compile_options(
-Wall
-Wformat=2
-O3
-Wno-format-nonliteral
-Wno-strict-aliasing
-Wuninitialized
-Wno-unused-function
)
# Check if the required environment variables MIDASSYS and EPICSSYS are available
if (NOT DEFINED ENV{MIDASSYS})
message(SEND_ERROR "MIDASSYS environment variable not defined.")
endif()
if (NOT DEFINED ENV{EPICSSYS})
message(SEND_ERROR "EPICSSYS environment variable not defined.")
endif()
set(CMAKE_CXX_STANDARD 17)
set(MIDASSYS $ENV{MIDASSYS})
set(EPICSSYS $ENV{EPICSSYS})
# Select the correct EPICS library depending on the OS (currently Linus or Darwin are available)
if (${CMAKE_SYSTEM_NAME} MATCHES Linux)
link_directories(${EPICSSYS}/lib/linux-x86_64)
set(LIBS ${LIBS} -lpthread -lutil -lrt -lbsd -ldl)
endif()
if (${CMAKE_SYSTEM_NAME} MATCHES Darwin)
link_directories(${EPICSSYS}/lib/darwin-aarch64)
set(LIBS ${LIBS} -lutil -lca)
endif()
set(LIBS
${LIBS}
${EPICSSYS}/lib/$ENV{EPICS_HOST_ARCH}/libca.so
${EPICSSYS}/lib/$ENV{EPICS_HOST_ARCH}/libCom.so # For alarm.h
)
find_package(Midas REQUIRED)
################################################################################
## Device Library
################################################################################
add_library(
ePowerSwitchEquipment
src/device/ePowerSwitchEquipment.cpp
)
set_property(
TARGET
ePowerSwitchEquipment
PROPERTY
CXX_STANDARD 17
)
target_link_libraries(
ePowerSwitchEquipment
PRIVATE
midas::mfe
m_epics_ca
${LIBS}
)
target_include_directories(
ePowerSwitchEquipment
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE
${EPICSSYS}/include
${EPICSSYS}/include/os/Linux
${EPICSSYS}/include/os/Darwin
${EPICSSYS}/include/compiler/gcc
${EPICSSYS}/include/compiler/clang
)
################################################################################
## Frontend
################################################################################
add_executable(ePowerSwitchFrontend
src/frontend/ePowerSwitchFrontend.cpp
)
set_property(
TARGET
ePowerSwitchFrontend
PROPERTY
CXX_STANDARD 17
)
target_include_directories(
ePowerSwitchFrontend
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE
${EPICSSYS}/include
${EPICSSYS}/include/os/Linux
${EPICSSYS}/include/os/Darwin
${EPICSSYS}/include/compiler/gcc
${EPICSSYS}/include/compiler/clang
)
target_link_libraries(
ePowerSwitchFrontend
PRIVATE
ePowerSwitchEquipment
midas::mfe
m_epics_ca
${LIBS}
)
# install(
# TARGETS
# ePowerSwitchFrontend
# RUNTIME DESTINATION bin
# )