112 lines
2.7 KiB
CMake
112 lines
2.7 KiB
CMake
cmake_minimum_required(VERSION 3.15)
|
|
# get the current git commit id
|
|
execute_process(
|
|
COMMAND git rev-parse HEAD
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
OUTPUT_VARIABLE GIT_COMMIT_ID
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
|
|
# get the current git tag
|
|
execute_process(
|
|
COMMAND git describe --tags --always
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
OUTPUT_VARIABLE GIT_TAG
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
|
|
project(calrtcli VERSION 1.0)
|
|
|
|
# C++ standard
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
#C++ flags
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2")
|
|
option(PLD_MODE "enable PLD mode specs" OFF)
|
|
|
|
# Build type
|
|
if(NOT CMAKE_BUILD_TYPE)
|
|
set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "build type" FORCE)
|
|
endif()
|
|
|
|
# =====================
|
|
# Paths
|
|
# =====================
|
|
set(SRC_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/src)
|
|
set(CALRTCLI_INCLUDE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
|
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin)
|
|
|
|
# =====================
|
|
# Source Files
|
|
# =====================
|
|
set(CALRTCLI_SRC_FILES
|
|
${SRC_ROOT}/cli_command.cpp
|
|
${SRC_ROOT}/cli_parser.cpp
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/calrtcli.cpp
|
|
)
|
|
|
|
# =====================
|
|
# Executable
|
|
# =====================
|
|
|
|
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
|
find_package(Threads REQUIRED)
|
|
find_library(ELF_LIB elf REQUIRED)
|
|
|
|
set(CALRT_INCLUDE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../hostrt/include)
|
|
set(CALRT_INTER_INCLUDE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../hostrt/internal_common)
|
|
set(CALRT_DRIVER_INCLUDE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../hostrt/driver)
|
|
set(CALRT_CPP_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../hostrt/src/)
|
|
include(${CMAKE_CURRENT_SOURCE_DIR}/../hostrt/cmake/calrt_cfg.cmake)
|
|
|
|
configure_file(
|
|
${CALRT_INTER_INCLUDE_PATH}/version.h.in
|
|
${CALRT_INTER_INCLUDE_PATH}/version.h
|
|
@ONLY
|
|
)
|
|
|
|
|
|
add_executable(calrtcli ${CALRTCLI_SRC_FILES} ${CALRT_SRC_FILES})
|
|
if(PLD_MODE)
|
|
message(STATUS "Build PLD mode")
|
|
target_compile_definitions(calrtcli PRIVATE PLD)
|
|
endif()
|
|
|
|
target_compile_options(calrtcli PRIVATE
|
|
-O3
|
|
-march=x86-64
|
|
-mtune=generic
|
|
-fno-lto
|
|
-fPIE
|
|
-fno-semantic-interposition
|
|
-fno-stack-protector
|
|
-fno-asynchronous-unwind-tables
|
|
-fno-plt
|
|
-funroll-loops
|
|
-ffast-math
|
|
# -fvisibility=hidden
|
|
# -fvisibility-inlines-hidden
|
|
-ffunction-sections
|
|
-fdata-sections
|
|
)
|
|
target_link_options(calrtcli PRIVATE
|
|
-fno-lto
|
|
-Wl,-z,now
|
|
-Wl,-z,relro
|
|
-Wl,--as-needed
|
|
-Wl,-O1
|
|
-Wl,--gc-sections
|
|
)
|
|
|
|
target_include_directories(calrtcli PRIVATE
|
|
${CALRTCLI_INCLUDE_PATH}
|
|
${CALRT_INCLUDE_PATH}
|
|
${CALRT_INTER_INCLUDE_PATH}
|
|
${CALRT_DRIVER_INCLUDE_PATH}
|
|
)
|
|
target_compile_definitions(calrtcli PRIVATE SUPEROWNER CLI_USE)
|
|
target_link_libraries(calrtcli PRIVATE Threads::Threads rt ${ELF_LIB} dl)
|
|
|