CMakeLists.txt 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. cmake_minimum_required(VERSION 3.2)
  2. cmake_policy(SET CMP0063 NEW)
  3. project(Visibility)
  4. add_library(hidden1 SHARED hidden.c)
  5. set_property(TARGET hidden1 PROPERTY C_VISIBILITY_PRESET hidden)
  6. add_library(hidden_object OBJECT hidden.c)
  7. set_property(TARGET hidden_object PROPERTY C_VISIBILITY_PRESET hidden)
  8. set_property(TARGET hidden_object PROPERTY POSITION_INDEPENDENT_CODE ON)
  9. add_library(hidden_static STATIC hidden.c)
  10. set_property(TARGET hidden_static PROPERTY C_VISIBILITY_PRESET hidden)
  11. set_property(TARGET hidden_static PROPERTY POSITION_INDEPENDENT_CODE ON)
  12. add_library(hidden2 SHARED $<TARGET_OBJECTS:hidden_object> shared.c)
  13. add_library(hidden3 SHARED shared.c)
  14. target_link_libraries(hidden3 hidden_static)
  15. foreach(t
  16. hidden1
  17. hidden2
  18. hidden3
  19. )
  20. add_custom_command(TARGET ${t} POST_BUILD
  21. COMMAND ${CMAKE_COMMAND}
  22. -DCMAKE_NM=${CMAKE_NM}
  23. -DTEST_LIBRARY_PATH=$<TARGET_FILE:${t}>
  24. -P ${CMAKE_CURRENT_SOURCE_DIR}/verify.cmake
  25. )
  26. endforeach()
  27. add_library(inlines_hidden1 SHARED foo.cpp bar.c)
  28. set_property(TARGET inlines_hidden1 PROPERTY VISIBILITY_INLINES_HIDDEN ON)
  29. target_compile_options(inlines_hidden1 PRIVATE -Werror)
  30. add_library(inlines_hidden_object OBJECT foo.cpp bar.c)
  31. set_property(TARGET inlines_hidden_object PROPERTY VISIBILITY_INLINES_HIDDEN ON)
  32. set_property(TARGET inlines_hidden_object PROPERTY POSITION_INDEPENDENT_CODE ON)
  33. target_compile_options(inlines_hidden_object PRIVATE -Werror)
  34. add_library(inlines_hidden_static STATIC foo.cpp bar.c)
  35. set_property(TARGET inlines_hidden_static PROPERTY VISIBILITY_INLINES_HIDDEN ON)
  36. set_property(TARGET inlines_hidden_static PROPERTY POSITION_INDEPENDENT_CODE ON)
  37. target_compile_options(inlines_hidden_static PRIVATE -Werror)
  38. add_library(inlines_hidden2 SHARED $<TARGET_OBJECTS:inlines_hidden_object> shared.cpp)
  39. add_library(inlines_hidden3 SHARED shared.cpp)
  40. target_link_libraries(inlines_hidden3 inlines_hidden_static)
  41. foreach(t
  42. inlines_hidden1
  43. inlines_hidden2
  44. inlines_hidden3
  45. )
  46. add_custom_command(TARGET ${t} POST_BUILD
  47. COMMAND ${CMAKE_COMMAND}
  48. -DCMAKE_NM=${CMAKE_NM}
  49. -DTEST_LIBRARY_PATH=$<TARGET_FILE:${t}>
  50. -P ${CMAKE_CURRENT_SOURCE_DIR}/verify.cmake
  51. )
  52. endforeach()