[fix] support latest code support coverage build
This commit is contained in:
		@ -39,7 +39,10 @@ if(WITH_COVERAGE)
 | 
			
		||||
  # -ftest-coverage to generate .gcno file
 | 
			
		||||
  # -fprofile-arcs to generate .gcda file
 | 
			
		||||
  # -DDBUILD_COVERAGE marco use to mark 'coverage build type' and to handle some speical case
 | 
			
		||||
  set(CMAKE_COVERAGE_FLAG "-ftest-coverage -fprofile-arcs -Xclang -coverage-version='502*' -DBUILD_COVERAGE")
 | 
			
		||||
  set(CMAKE_COVERAGE_COMPILE_OPTIONS -ftest-coverage -fprofile-arcs -Xclang -coverage-version=408R -DBUILD_COVERAGE)
 | 
			
		||||
  set(CMAKE_COVERAGE_EXE_LINKER_OPTIONS "-ftest-coverage -fprofile-arcs")
 | 
			
		||||
 | 
			
		||||
  add_compile_options(${CMAKE_COVERAGE_COMPILE_OPTIONS})
 | 
			
		||||
  set(DEBUG_PREFIX "")
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
@ -97,11 +100,11 @@ if (OB_USE_CLANG)
 | 
			
		||||
    set(REORDER_LINK_OPT "-Wl,--no-rosegment,--build-id=sha1,--no-warn-symbol-ordering,--symbol-ordering-file,${HOTFUNC_PATH}")
 | 
			
		||||
    set(OB_LD_BIN "${DEVTOOLS_DIR}/bin/ld.lld")
 | 
			
		||||
  endif()
 | 
			
		||||
  set(CMAKE_CXX_FLAGS "--gcc-toolchain=${GCC9} ${DEBUG_PREFIX} ${AUTO_FDO_OPT} ${THIN_LTO_OPT} -fcolor-diagnostics ${REORDER_COMP_OPT} -fmax-type-align=8 ${CMAKE_ASAN_FLAG} ${CMAKE_COVERAGE_FLAG} -std=gnu++11")
 | 
			
		||||
  set(CMAKE_C_FLAGS "--gcc-toolchain=${GCC9} ${DEBUG_PREFIX} ${AUTO_FDO_OPT} ${THIN_LTO_OPT} -fcolor-diagnostics ${REORDER_COMP_OPT} -fmax-type-align=8 ${CMAKE_ASAN_FLAG} ${CMAKE_COVERAGE_FLAG}")
 | 
			
		||||
  set(CMAKE_CXX_FLAGS "--gcc-toolchain=${GCC9} ${DEBUG_PREFIX} ${AUTO_FDO_OPT} ${THIN_LTO_OPT} -fcolor-diagnostics ${REORDER_COMP_OPT} -fmax-type-align=8 ${CMAKE_ASAN_FLAG} -std=gnu++11")
 | 
			
		||||
  set(CMAKE_C_FLAGS "--gcc-toolchain=${GCC9} ${DEBUG_PREFIX} ${AUTO_FDO_OPT} ${THIN_LTO_OPT} -fcolor-diagnostics ${REORDER_COMP_OPT} -fmax-type-align=8 ${CMAKE_ASAN_FLAG}")
 | 
			
		||||
  set(CMAKE_CXX_LINK_FLAGS "${LD_OPT} ${THIN_LTO_CONCURRENCY_LINK} --gcc-toolchain=${GCC9} ${DEBUG_PREFIX} ${AUTO_FDO_OPT}")
 | 
			
		||||
  set(CMAKE_SHARED_LINKER_FLAGS "${LD_OPT} -Wl,-z,noexecstack ${THIN_LTO_CONCURRENCY_LINK} ${REORDER_LINK_OPT}")
 | 
			
		||||
  set(CMAKE_EXE_LINKER_FLAGS "${LD_OPT} -Wl,-z,noexecstack ${THIN_LTO_CONCURRENCY_LINK} ${REORDER_LINK_OPT} ${OB_EXE_LINKER_OPT}")
 | 
			
		||||
  set(CMAKE_EXE_LINKER_FLAGS "${LD_OPT} -Wl,-z,noexecstack ${THIN_LTO_CONCURRENCY_LINK} ${REORDER_LINK_OPT} ${OB_EXE_LINKER_OPT} ${CMAKE_COVERAGE_EXE_LINKER_OPTIONS}")
 | 
			
		||||
else() # not clang, use gcc
 | 
			
		||||
  message("gcc9 not support currently, please set OB_USE_CLANG ON and we will finish it as soon as possible")
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
@ -85,6 +85,15 @@ function(config_ccls_flag target)
 | 
			
		||||
  endif()
 | 
			
		||||
endfunction()
 | 
			
		||||
 | 
			
		||||
function(config_remove_coverage_flag target)
 | 
			
		||||
  # 针对于特定的目标,由于某种写法会命中clang的DAG解析的bug,将少量文件不参与coverage编译
 | 
			
		||||
  if (WITH_COVERAGE)
 | 
			
		||||
    get_target_property(EXTLIB_COMPILE_FLAGS ${target} COMPILE_OPTIONS)
 | 
			
		||||
    list(REMOVE_ITEM EXTLIB_COMPILE_FLAGS ${CMAKE_COVERAGE_COMPILE_OPTIONS})
 | 
			
		||||
    set_target_properties(${target} PROPERTIES COMPILE_OPTIONS "${EXTLIB_COMPILE_FLAGS}")
 | 
			
		||||
  endif()
 | 
			
		||||
endfunction()
 | 
			
		||||
 | 
			
		||||
function(ob_add_object_target target)
 | 
			
		||||
  add_library(${target} OBJECT "${${target}_cache_objects_}")
 | 
			
		||||
  config_target_unity(${target})
 | 
			
		||||
 | 
			
		||||
@ -84,6 +84,12 @@ add_library(ob_sql_server_parser_objects OBJECT
 | 
			
		||||
target_link_libraries(ob_sql_proxy_parser_objects PUBLIC ob_base ob_sql_parser_base)
 | 
			
		||||
target_link_libraries(ob_sql_server_parser_objects PUBLIC ob_base)
 | 
			
		||||
 | 
			
		||||
if (WITH_COVERAGE)
 | 
			
		||||
  # 排除少量sql解析文件,不参与coverage编译,clang针对于特殊语法文件会core
 | 
			
		||||
  config_remove_coverage_flag(ob_sql_proxy_parser_objects)
 | 
			
		||||
  config_remove_coverage_flag(ob_sql_server_parser_objects)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
target_compile_definitions(ob_sql_proxy_parser_objects PUBLIC SQL_PARSER_COMPILATION)
 | 
			
		||||
 | 
			
		||||
add_library(ob_sql_proxy_parser_static
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user