LINKER_expansion3.cmake 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. enable_language(C)
  2. cmake_policy(SET CMP0181 ${CMP0181})
  3. # ensure command line is always displayed and do not use any response file
  4. set(CMAKE_VERBOSE_MAKEFILE TRUE)
  5. if (CMAKE_GENERATOR MATCHES "Borland|NMake")
  6. string(REPLACE "${CMAKE_START_TEMP_FILE}" "" CMAKE_C_LINK_EXECUTABLE "${CMAKE_C_LINK_EXECUTABLE}")
  7. string(REPLACE "${CMAKE_END_TEMP_FILE}" "" CMAKE_C_LINK_EXECUTABLE "${CMAKE_C_LINK_EXECUTABLE}")
  8. string(REPLACE "${CMAKE_START_TEMP_FILE}" "" CMAKE_C_CREATE_SHARED_LIBRARY "${CMAKE_C_CREATE_SHARED_LIBRARY}")
  9. string(REPLACE "${CMAKE_END_TEMP_FILE}" "" CMAKE_C_CREATE_SHARED_LIBRARY "${CMAKE_C_CREATE_SHARED_LIBRARY}")
  10. string(REPLACE "${CMAKE_START_TEMP_FILE}" "" CMAKE_C_CREATE_SHARED_MODULE "${CMAKE_C_CREATE_SHARED_MODULE}")
  11. string(REPLACE "${CMAKE_END_TEMP_FILE}" "" CMAKE_C_CREATE_SHARED_MODULE "${CMAKE_C_CREATE_SHARED_MODULE}")
  12. endif()
  13. set(CMAKE_C_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} LINKER:-foo,bar")
  14. add_executable(c_exe_create_link_flags main.c)
  15. set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS} LINKER:-foo,bar")
  16. add_library(c_shared_create_link_flags SHARED LinkOptionsLib.c)
  17. set(CMAKE_SHARED_MODULE_CREATE_C_FLAGS "${CMAKE_SHARED_MODULE_CREATE_C_FLAGS} LINKER:-foo,bar")
  18. add_library(c_module_create_link_flags MODULE LinkOptionsLib.c)
  19. # generate reference for LINKER flag
  20. if (CMP0181 STREQUAL "NEW")
  21. if (CMAKE_C_LINKER_WRAPPER_FLAG)
  22. set(linker_flag ${CMAKE_C_LINKER_WRAPPER_FLAG})
  23. list(GET linker_flag -1 linker_space)
  24. if (linker_space STREQUAL " ")
  25. list(REMOVE_AT linker_flag -1)
  26. else()
  27. set(linker_space)
  28. endif()
  29. list (JOIN linker_flag " " linker_flag)
  30. if (CMAKE_C_LINKER_WRAPPER_FLAG_SEP)
  31. set(linker_sep "${CMAKE_C_LINKER_WRAPPER_FLAG_SEP}")
  32. string (APPEND linker_flag "${linker_space}" "-foo${linker_sep}bar")
  33. else()
  34. set(linker_prefix "${linker_flag}${linker_space}")
  35. set (linker_flag "${linker_prefix}-foo ${linker_prefix}bar")
  36. endif()
  37. else()
  38. set(linker_flag "-foo bar")
  39. endif()
  40. file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/LINKER.txt" "${linker_flag}")
  41. endif()