blob: 38a67aa53e2b92990c5c4a526d430e27f5cadbc2 [file] [log] [blame]
David L. Jones74b2c7c2022-05-31 16:16:02 -07001# CMake definitions for libprotoc (the protobuf compiler library).
Feng Xiao4333edb2015-05-31 02:28:34 -07002
David L. Jones74b2c7c2022-05-31 16:16:02 -07003include(${protobuf_SOURCE_DIR}/src/file_lists.cmake)
Carlos O'Ryan4ad5f542023-05-30 14:55:26 -07004include(${protobuf_SOURCE_DIR}/cmake/protobuf-configure-target.cmake)
Dennis Cappendijk4eb02fe2017-05-29 17:34:08 +02005
Konstantin Podsvirovc3aa4c22015-10-15 02:56:48 +03006add_library(libprotoc ${protobuf_SHARED_OR_STATIC}
David L. Jones74b2c7c2022-05-31 16:16:02 -07007 ${libprotoc_srcs}
8 ${libprotoc_hdrs}
9 ${protobuf_version_rc_file})
Arfrever1d13b602022-03-02 02:06:14 +010010if(protobuf_HAVE_LD_VERSION_SCRIPT)
Adam Cozzetteb20209f2022-03-10 18:36:42 +000011 if(${CMAKE_VERSION} VERSION_GREATER 3.13 OR ${CMAKE_VERSION} VERSION_EQUAL 3.13)
12 target_link_options(libprotoc PRIVATE -Wl,--version-script=${protobuf_SOURCE_DIR}/src/libprotoc.map)
13 elseif(protobuf_BUILD_SHARED_LIBS)
14 target_link_libraries(libprotoc PRIVATE -Wl,--version-script=${protobuf_SOURCE_DIR}/src/libprotoc.map)
15 endif()
Arfrever1d13b602022-03-02 02:06:14 +010016 set_target_properties(libprotoc PROPERTIES
Adam Cozzetteb20209f2022-03-10 18:36:42 +000017 LINK_DEPENDS ${protobuf_SOURCE_DIR}/src/libprotoc.map)
Arfrever1d13b602022-03-02 02:06:14 +010018endif()
Adam Cozzetteb20209f2022-03-10 18:36:42 +000019target_link_libraries(libprotoc PRIVATE libprotobuf)
Harald Fernengelf7188182022-09-02 17:23:07 +020020target_link_libraries(libprotoc PUBLIC ${protobuf_ABSL_USED_TARGETS})
Carlos O'Ryan4ad5f542023-05-30 14:55:26 -070021protobuf_configure_target(libprotoc)
Adam Cozzetteb20209f2022-03-10 18:36:42 +000022if(protobuf_BUILD_SHARED_LIBS)
Konstantin Podsvirovc3aa4c22015-10-15 02:56:48 +030023 target_compile_definitions(libprotoc
24 PUBLIC PROTOBUF_USE_DLLS
25 PRIVATE LIBPROTOC_EXPORTS)
26endif()
Feng Xiao4333edb2015-05-31 02:28:34 -070027set_target_properties(libprotoc PROPERTIES
28 COMPILE_DEFINITIONS LIBPROTOC_EXPORTS
Corentin Le Molgat3bc02822018-01-29 15:11:59 +010029 VERSION ${protobuf_VERSION}
Konstantin Podsvirovf397ede2015-09-17 13:00:12 +030030 OUTPUT_NAME ${LIB_PREFIX}protoc
Mike Kruskal983fc2d2022-11-02 23:24:26 -070031 DEBUG_POSTFIX "${protobuf_DEBUG_POSTFIX}"
32 # For -fvisibility=hidden and -fvisibility-inlines-hidden
33 C_VISIBILITY_PRESET hidden
34 CXX_VISIBILITY_PRESET hidden
35 VISIBILITY_INLINES_HIDDEN ON
36)
Corentin Le Molgatf7a05842018-01-29 15:13:23 +010037add_library(protobuf::libprotoc ALIAS libprotoc)