Files
calculet-npu-research-archive/source/repositories-complete/calrt-exact/calrt/calrtcli/CMakeLists.txt
T

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)