mirror of
https://github.com/deepseek-ai/3FS
synced 2025-06-26 18:16:45 +00:00
Initial commit
This commit is contained in:
109
cmake/Target.cmake
Normal file
109
cmake/Target.cmake
Normal file
@@ -0,0 +1,109 @@
|
||||
# Check if IPO is supported
|
||||
include(CheckIPOSupported)
|
||||
check_ipo_supported(RESULT HAVE_IPO)
|
||||
|
||||
# Enable IPO in non-debug build
|
||||
macro(target_enable_ipo NAME)
|
||||
if(NOT CMAKE_BUILD_TYPE_UC STREQUAL "DEBUG" AND HAVE_IPO)
|
||||
set_property(TARGET ${NAME} PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
|
||||
message (STATUS "Enabled IPO for target: ${NAME}")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(target_add_lib NAME)
|
||||
file(GLOB_RECURSE FILES CONFIGURE_DEPENDS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.cc" "*.h")
|
||||
add_library(${NAME} STATIC ${FILES} ${FBS_FILES})
|
||||
target_include_directories(${NAME}
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src>
|
||||
${PROJECT_SOURCE_DIR}
|
||||
${PROJECT_BINARY_DIR}/src
|
||||
${PROJECT_BINARY_DIR}
|
||||
)
|
||||
target_link_libraries(${NAME} ${ARGN} "")
|
||||
endmacro()
|
||||
|
||||
macro(target_add_shared_lib NAME)
|
||||
file(GLOB_RECURSE FILES CONFIGURE_DEPENDS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.cc" "*.h")
|
||||
add_library(${NAME} SHARED ${FILES} ${FBS_FILES})
|
||||
target_include_directories(${NAME}
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src>
|
||||
${PROJECT_SOURCE_DIR}
|
||||
${PROJECT_BINARY_DIR}/src
|
||||
${PROJECT_BINARY_DIR}
|
||||
)
|
||||
target_link_libraries(${NAME} ${ARGN} "")
|
||||
target_enable_ipo(${NAME})
|
||||
endmacro()
|
||||
|
||||
macro(target_add_bin NAME MAIN_FILE)
|
||||
add_executable(${NAME} ${MAIN_FILE})
|
||||
target_link_libraries(${NAME} ${ARGN} "")
|
||||
target_include_directories(${NAME}
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src>
|
||||
${PROJECT_SOURCE_DIR}
|
||||
${PROJECT_SOURCE_DIR}/src/lib/api
|
||||
${PROJECT_BINARY_DIR}/src
|
||||
${PROJECT_BINARY_DIR}
|
||||
)
|
||||
set_target_properties(${NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
|
||||
target_enable_ipo(${NAME})
|
||||
endmacro()
|
||||
|
||||
macro(target_add_test NAME)
|
||||
file(GLOB_RECURSE FILES CONFIGURE_DEPENDS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.cc")
|
||||
add_executable(${NAME} ${FILES})
|
||||
target_link_libraries(${NAME} gmock test_main ${ARGN} "")
|
||||
target_include_directories(${NAME}
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src>
|
||||
${PROJECT_SOURCE_DIR}
|
||||
${PROJECT_BINARY_DIR}/src
|
||||
${PROJECT_BINARY_DIR}
|
||||
)
|
||||
add_test(NAME ${NAME} COMMAND ${NAME})
|
||||
set_target_properties(${NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/tests")
|
||||
endmacro()
|
||||
|
||||
macro(target_add_fbs NAME PATH)
|
||||
cmake_parse_arguments(FBS "SERVICE" "" "DEPS" ${ARGN})
|
||||
|
||||
message("Fbs " ${NAME} " FBS_SERVICE " ${FBS_SERVICE} " ARGN " ${ARGN})
|
||||
|
||||
set(FLATBUFFERS_FLATC_SCHEMA_EXTRA_ARGS
|
||||
--scoped-enums
|
||||
--gen-object-api
|
||||
--gen-mutable
|
||||
--gen-compare
|
||||
--cpp-std=c++17
|
||||
--python
|
||||
--hf3fs
|
||||
--keep-prefix
|
||||
)
|
||||
|
||||
get_filename_component(NAME_WE ${PATH} NAME_WE)
|
||||
get_filename_component(DIR ${PATH} DIRECTORY)
|
||||
|
||||
build_flatbuffers(${PATH}
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/${DIR};${CMAKE_SOURCE_DIR}/src"
|
||||
"${NAME_WE}-generated"
|
||||
""
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${DIR}"
|
||||
""
|
||||
""
|
||||
)
|
||||
|
||||
add_library(${NAME} INTERFACE)
|
||||
target_link_libraries(${NAME} INTERFACE common)
|
||||
target_include_directories(${NAME}
|
||||
INTERFACE
|
||||
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src>
|
||||
${PROJECT_SOURCE_DIR}
|
||||
${PROJECT_BINARY_DIR}/src
|
||||
${PROJECT_BINARY_DIR}
|
||||
)
|
||||
|
||||
add_dependencies(${NAME} "${NAME_WE}-generated" ${FBS_DEPS})
|
||||
endmacro()
|
||||
Reference in New Issue
Block a user