oceanbase/cmake/Utils.cmake
2022-04-13 14:35:09 +08:00

57 lines
1.8 KiB
CMake

macro(ob_define VAR DEFAULT)
if (NOT DEFINED ${VAR})
set(${VAR} ${DEFAULT})
endif()
endmacro()
function(ob_replace_in_file INFILE OUTFILE MATCH-STRING REPLACE-STRING)
file(READ ${INFILE} CONTENT)
string(REPLACE ${MATCH-STRING} ${REPLACE-STRING} NEW-CONTENT ${CONTENT})
file(WRITE ${OUTFILE} ${NEW-CONTENT})
endfunction()
function(ob_set_subtarget target group)
list(APPEND "${target}_cache_objects_" ${ARGN})
set("${target}_cache_objects_" ${${target}_cache_objects_} PARENT_SCOPE)
if (OB_ENABLE_UNITY)
set(i 0)
set(group_id 0)
set(ob_sub_objects "")
FOREACH(item ${ARGN})
math(EXPR i "(${i} + 1) % ${OB_MAX_UNITY_BATCH_SIZE}")
list(APPEND ob_sub_objects ${item})
if (${i} EQUAL 0)
set_source_files_properties(${ob_sub_objects} PROPERTIES UNITY_GROUP "${target}_${group}/${group_id}")
math(EXPR group_id "${group_id} + 1")
set(ob_sub_objects "")
endif()
ENDFOREACH(item)
if (${i} GREATER 0)
set_source_files_properties(${ob_sub_objects} PROPERTIES UNITY_GROUP "${target}_${group}/${group_id}")
endif()
endif()
endfunction()
set(unity_after [[
#ifdef USING_LOG_PREFIX
#undef USING_LOG_PREFIX
#endif
]])
function(ob_add_target target)
if(ARGC EQUAL 1)
add_library(${target} OBJECT "${${target}_cache_objects_}")
if (OB_ENABLE_UNITY)
set_target_properties(${target} PROPERTIES UNITY_BUILD ON)
set_target_properties(${target} PROPERTIES UNITY_BUILD_CODE_AFTER_INCLUDE "${unity_after}")
set_target_properties(${target} PROPERTIES UNITY_BUILD_MODE GROUP)
endif()
else()
add_library(${target} OBJECT ${ARGN})
endif()
endfunction()
function(disable_pch target)
set_target_properties(${target} PROPERTIES DISABLE_PRECOMPILE_HEADERS ON)
endfunction()