cmake_minimum_required(VERSION 3.16.3)
project(PTO_Framework_Calculator LANGUAGES C CXX)
if (NOT DEFINED PY3_MOD_TORCH_VERSION)
message(FATAL_ERROR "PY3_MOD_TORCH_VERSION is not defined")
endif()
if (NOT DEFINED PY3_MOD_TORCH_ROOT_PATH)
message(FATAL_ERROR "PY3_MOD_TORCH_ROOT_PATH is not defined")
endif()
if (NOT DEFINED PY3_MOD_TORCH_C_GLIBCXX_USE_CXX11_ABI)
message(FATAL_ERROR "PY3_MOD_TORCH_C_GLIBCXX_USE_CXX11_ABI is not defined")
endif()
if (NOT DEFINED PTO_FWK_SRC_ROOT)
if ("${PY3_MOD_TORCH_VERSION}" STRLESS "2.1.0")
message(FATAL_ERROR "Torch(${PY3_MOD_TORCH_VERSION}) Version less 2.1.0, interpreter not supported.")
endif ()
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "9.4.0")
message(FATAL_ERROR "Cxx Compiler(${CMAKE_CXX_COMPILER_ID}) Version(${CMAKE_CXX_COMPILER_VERSION}) less than 9.4.0, interpreter not supported.")
endif()
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "15.0.0")
message(FATAL_ERROR "Cxx Compiler(${CMAKE_CXX_COMPILER_ID}) Version(${CMAKE_CXX_COMPILER_VERSION}) less than 15.0.0, interpreter not supported.")
endif()
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
include(intf.cmake)
file(GLOB_RECURSE _Calculator_Srcs src/*.cpp)
else ()
file(GLOB_RECURSE _Calculator_Srcs *.cpp)
endif ()
message(STATUS "_Calculator_Srcs=${_Calculator_Srcs}")
add_library(tile_fwk_calculator SHARED)
target_sources(tile_fwk_calculator PRIVATE ${_Calculator_Srcs})
target_compile_options(tile_fwk_calculator
PRIVATE
-D_GLIBCXX_USE_CXX11_ABI=${PY3_MOD_TORCH_C_GLIBCXX_USE_CXX11_ABI}
-D__DEVICE__
)
target_include_directories(tile_fwk_calculator
SYSTEM PRIVATE
${PY3_MOD_TORCH_ROOT_PATH}/include
${PY3_MOD_TORCH_ROOT_PATH}/include/torch/csrc/api/include
$<$<BOOL:${PTO_FWK_SRC_ROOT}>:${PTO_FWK_SRC_ROOT}/framework/include>
$<$<BOOL:${PTO_FWK_SRC_ROOT}>:${PTO_FWK_SRC_ROOT}/framework/src/>
$<$<BOOL:${PTO_FWK_SRC_ROOT}>:${PTO_FWK_SRC_ROOT}/framework/src/interface>
$<$<NOT:$<BOOL:${PTO_FWK_SRC_ROOT}>>:${CMAKE_CURRENT_SOURCE_DIR}/include>
)
target_link_directories(tile_fwk_calculator
PUBLIC
${PY3_MOD_TORCH_ROOT_PATH}/lib
${PY3_MOD_TORCH_ROOT_PATH}/../torch.libs
$<$<NOT:$<BOOL:${PTO_FWK_SRC_ROOT}>>:${CMAKE_CURRENT_SOURCE_DIR}/../>
)
target_link_libraries(tile_fwk_calculator
PRIVATE
c_sec
torch
tile_fwk_intf_pub
)
target_link_options(tile_fwk_calculator
PRIVATE
-Wl,-no-as-needed,${PY3_MOD_TORCH_ROOT_PATH}/lib/libtorch_cpu.so -Wl,-as-needed
-Wl,-no-as-needed,${PY3_MOD_TORCH_ROOT_PATH}/lib/libc10.so -Wl,-as-needed
)
if (NOT DEFINED PTO_FWK_SRC_ROOT)
install(TARGETS tile_fwk_calculator LIBRARY DESTINATION "lib")
endif ()