CMakeLists.txt 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. cmake_minimum_required(VERSION 3.30)
  2. project(SharedLibraryArchive C)
  3. set(CMAKE_AIX_SHARED_LIBRARY_ARCHIVE 1)
  4. add_library(sla SHARED sla.c)
  5. get_property(aix_sla TARGET sla PROPERTY AIX_SHARED_LIBRARY_ARCHIVE)
  6. if(NOT aix_sla)
  7. message(FATAL_ERROR "AIX_SHARED_LIBRARY_ARCHIVE not initialized on SHARED library")
  8. endif()
  9. add_custom_command(TARGET sla POST_BUILD VERBATIM
  10. COMMAND ${CMAKE_COMMAND} -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME} -Dsla=$<TARGET_FILE:sla> -Dname=sla -Dsoversion= -P${CMAKE_CURRENT_SOURCE_DIR}/sla-check.cmake
  11. )
  12. add_executable(UseSLA use_sla.c)
  13. get_property(aix_sla TARGET UseSLA PROPERTY AIX_SHARED_LIBRARY_ARCHIVE)
  14. if(aix_sla)
  15. message(FATAL_ERROR "AIX_SHARED_LIBRARY_ARCHIVE initialized on EXECUTABLE")
  16. endif()
  17. target_link_libraries(UseSLA PRIVATE sla)
  18. # Test for versioned names. Everything else should be tested and set above.
  19. add_library(sla_versioned SHARED sla.c)
  20. get_property(aix_sla_versioned TARGET sla_versioned PROPERTY AIX_SHARED_LIBRARY_ARCHIVE)
  21. if(NOT aix_sla_versioned)
  22. message(FATAL_ERROR "AIX_SHARED_LIBRARY_ARCHIVE not initialized on SHARED library")
  23. endif()
  24. set_target_properties(sla_versioned PROPERTIES OUTPUT_NAME "sla_versioned" VERSION 3 SOVERSION 2)
  25. add_custom_command(TARGET sla_versioned POST_BUILD VERBATIM
  26. COMMAND ${CMAKE_COMMAND} -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME} -Dsla=$<TARGET_FILE:sla_versioned> -Dname=sla_versioned -Dsoversion=2 -P${CMAKE_CURRENT_SOURCE_DIR}/sla-check.cmake
  27. )
  28. add_executable(UseSLA_versioned use_sla.c)
  29. get_property(aix_sla_versioned TARGET UseSLA_versioned PROPERTY AIX_SHARED_LIBRARY_ARCHIVE)
  30. if(aix_sla_versioned)
  31. message(FATAL_ERROR "AIX_SHARED_LIBRARY_ARCHIVE initialized on EXECUTABLE")
  32. endif()
  33. target_link_libraries(UseSLA_versioned PRIVATE sla_versioned)