@@ -207,7 +207,13 @@ function(absl_cc_library)
207207 set (PC_CFLAGS "${PC_CFLAGS} ${cflag} " )
208208 endif ()
209209 endforeach ()
210- string (REPLACE ";" " " PC_LINKOPTS "${ABSL_CC_LIB_LINKOPTS} " )
210+ # Remove ABSL_DEFAULT_LINKOPTS from ABSL_CC_LIB_LINKOPTS to prevent
211+ # duplication and exportation of linker-only flags.
212+ set (_ABSL_CC_LIB_LINKOPTS "${ABSL_CC_LIB_LINKOPTS} " )
213+ foreach (_opt IN LISTS ABSL_DEFAULT_LINKOPTS)
214+ list (REMOVE_ITEM _ABSL_CC_LIB_LINKOPTS "${_opt} " )
215+ endforeach ()
216+ string (REPLACE ";" " " PC_LINKOPTS "${_ABSL_CC_LIB_LINKOPTS} " )
211217 FILE (GENERATE OUTPUT "${CMAKE_BINARY_DIR} /lib/pkgconfig/absl_${_NAME} .pc" CONTENT "\
212218prefix=${CMAKE_INSTALL_PREFIX} \n\
213219exec_prefix=\$ {prefix}\n\
@@ -238,10 +244,9 @@ Cflags: -I\${includedir}${PC_CFLAGS}\n")
238244 )
239245 target_link_libraries (${_NAME}
240246 PUBLIC ${_dll_deps}
241- PRIVATE
242- ${ABSL_CC_LIB_LINKOPTS}
243- ${ABSL_DEFAULT_LINKOPTS}
247+ PRIVATE ${_ABSL_CC_LIB_LINKOPTS}
244248 )
249+ target_link_options (${_NAME} PRIVATE ${ABSL_DEFAULT_LINKOPTS} )
245250
246251 if (ABSL_CC_LIB_TESTONLY)
247252 set (_gtest_link_define "GTEST_LINKED_AS_SHARED_LIBRARY=1" )
@@ -266,11 +271,10 @@ Cflags: -I\${includedir}${PC_CFLAGS}\n")
266271 INSTALL_RPATH "$ORIGIN" )
267272 endif ()
268273 target_link_libraries (${_NAME}
269- PUBLIC ${ABSL_CC_LIB_DEPS}
270- PRIVATE
271- ${ABSL_CC_LIB_LINKOPTS}
272- ${ABSL_DEFAULT_LINKOPTS}
274+ PUBLIC ${ABSL_CC_LIB_DEPS}
275+ PRIVATE ${_ABSL_CC_LIB_LINKOPTS}
273276 )
277+ target_link_options (${_NAME} PRIVATE ${ABSL_DEFAULT_LINKOPTS} )
274278 else ()
275279 message (FATAL_ERROR "Invalid build type: ${_build_type} " )
276280 endif ()
@@ -337,8 +341,7 @@ Cflags: -I\${includedir}${PC_CFLAGS}\n")
337341 target_link_libraries (${_NAME}
338342 INTERFACE
339343 ${ABSL_CC_LIB_DEPS}
340- ${ABSL_CC_LIB_LINKOPTS}
341- ${ABSL_DEFAULT_LINKOPTS}
344+ ${_ABSL_CC_LIB_LINKOPTS}
342345 )
343346 target_compile_definitions (${_NAME} INTERFACE ${ABSL_CC_LIB_DEFINES} )
344347
0 commit comments