GetCompileFlags.cmake 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. function(get_compile_flags _compile_flags)
  2. # Create template akin to CMAKE_C_COMPILE_OBJECT.
  3. set(compile_flags "<CMAKE_C_COMPILER> <CFLAGS> <BUILD_TYPE_CFLAGS> <DEFINITIONS> <INCLUDES>")
  4. # Get C compiler.
  5. string(REPLACE
  6. "<CMAKE_C_COMPILER>"
  7. "${CMAKE_C_COMPILER}"
  8. compile_flags
  9. "${compile_flags}")
  10. # Get flags set by add_definition().
  11. get_directory_property(definitions
  12. DIRECTORY "src/nvim"
  13. DEFINITIONS)
  14. string(REPLACE
  15. "<DEFINITIONS>"
  16. "${definitions}"
  17. compile_flags
  18. "${compile_flags}")
  19. # Get general C flags.
  20. string(REPLACE
  21. "<CFLAGS>"
  22. "${CMAKE_C_FLAGS}"
  23. compile_flags
  24. "${compile_flags}")
  25. # Get C flags specific to build type.
  26. string(TOUPPER "${CMAKE_BUILD_TYPE}" build_type)
  27. string(REPLACE
  28. "<BUILD_TYPE_CFLAGS>"
  29. "${CMAKE_C_FLAGS_${build_type}}"
  30. compile_flags
  31. "${compile_flags}")
  32. # Get include directories.
  33. get_directory_property(include_directories_list
  34. DIRECTORY "src/nvim"
  35. INCLUDE_DIRECTORIES)
  36. list(REMOVE_DUPLICATES include_directories_list)
  37. foreach(include_directory ${include_directories_list})
  38. set(include_directories "${include_directories} -I${include_directory}")
  39. endforeach()
  40. string(REPLACE
  41. "<INCLUDES>"
  42. "${include_directories}"
  43. compile_flags
  44. "${compile_flags}")
  45. # Clean duplicate whitespace.
  46. string(REPLACE
  47. " "
  48. " "
  49. compile_flags
  50. "${compile_flags}")
  51. set(${_compile_flags} "${compile_flags}" PARENT_SCOPE)
  52. endfunction()