25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

100 lines
3.9 KiB

  1. If ( __PEDANTIC_INCLUDED )
  2. Return ( )
  3. EndIf ( )
  4. set ( __PEDANTIC_INCLUDED TRUE )
  5. Include (CheckCCompilerFlag)
  6. Include (CheckCXXCompilerFlag)
  7. Macro (__PEDANTIC_INVERT_WNO_FLAG VAR_IN VAR_OUT)
  8. If (${VAR_IN} MATCHES "-Wno")
  9. String (REPLACE "-Wno-" "-W" ${VAR_OUT} ${VAR_IN})
  10. Else ()
  11. Set (${VAR_OUT} ${VAR_IN})
  12. EndIf ()
  13. EndMacro ()
  14. Macro (__PEDANTIC_MAKE_UNIQUE_NAME PREFIX FLAG OUTPUT)
  15. String (REGEX REPLACE "[^0-9a-zA-Z]" "_" TMP_NAME ${FLAG})
  16. String (SUBSTRING ${TMP_NAME} 1 -1 TMP_NAME)
  17. String (TOUPPER ${TMP_NAME} TMP_NAME)
  18. Set (TMP_NAME "${PREFIX}_${TMP_NAME}")
  19. Set (${OUTPUT} ${TMP_NAME})
  20. EndMacro ()
  21. Macro (__PEDANTIC_CHECK_AND_ADD_C_FLAG FLAG)
  22. __PEDANTIC_MAKE_UNIQUE_NAME("HAVE_C_FLAG" ${FLAG} FLAG_NAME)
  23. __PEDANTIC_INVERT_WNO_FLAG(${FLAG} TEST_FLAG)
  24. Set (OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
  25. Set (CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${TEST_FLAG} -Werror")
  26. CHECK_CXX_COMPILER_FLAG(${TEST_FLAG} ${FLAG_NAME})
  27. Set (CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
  28. If (${FLAG_NAME})
  29. Set (PEDANTIC_C_FLAGS "${PEDANTIC_C_FLAGS} ${FLAG}")
  30. EndIf ( )
  31. EndMacro ()
  32. Macro (__PEDANTIC_CHECK_AND_ADD_CXX_FLAG FLAG)
  33. __PEDANTIC_MAKE_UNIQUE_NAME("HAVE_CXX_FLAG" ${FLAG} FLAG_NAME)
  34. __PEDANTIC_INVERT_WNO_FLAG(${FLAG} TEST_FLAG)
  35. Set (OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
  36. Set (CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${TEST_FLAG} -Werror")
  37. CHECK_CXX_COMPILER_FLAG(${TEST_FLAG} ${FLAG_NAME})
  38. Set (CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
  39. If (${FLAG_NAME})
  40. Set (PEDANTIC_CXX_FLAGS "${PEDANTIC_CXX_FLAGS} ${FLAG}")
  41. EndIf ( )
  42. EndMacro ( )
  43. Set (PEDANTIC_C_FLAGS "")
  44. Set (PEDANTIC_CXX_FLAGS "")
  45. Enable_Language ( C )
  46. Enable_Language ( CXX )
  47. __PEDANTIC_CHECK_AND_ADD_C_FLAG(-g)
  48. __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wall)
  49. __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wextra)
  50. __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wconversion)
  51. __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Werror)
  52. __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wno-unused-parameter)
  53. __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wbad-function-cast)
  54. __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wcast-align)
  55. __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wcast-qual)
  56. __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wconversion)
  57. __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wdouble-promotion)
  58. __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wfloat-equal)
  59. __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wnested-externs)
  60. __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wno-attributes)
  61. __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wno-builtin-macro-redefined)
  62. __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wno-vla)
  63. __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wno-pragmas)
  64. __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wno-unknown-pragmas)
  65. __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wold-style-definition)
  66. __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Woverlength-strings)
  67. __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wshadow)
  68. __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wwrite-strings)
  69. __PEDANTIC_CHECK_AND_ADD_C_FLAG(-Wdocumentation)
  70. __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-ftemplate-depth=2000)
  71. __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-g)
  72. __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wall)
  73. __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wextra)
  74. __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wconversion)
  75. __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Werror)
  76. __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wno-reorder)
  77. __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wno-unused-parameter)
  78. __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wcast-align)
  79. __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wcast-qual)
  80. __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wconversion)
  81. __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wdouble-promotion)
  82. __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wfloat-equal)
  83. __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wno-attributes)
  84. __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wno-builtin-macro-redefined)
  85. __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wno-vla)
  86. __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wno-pragmas)
  87. __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wno-unknown-pragmas)
  88. __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Woverlength-strings)
  89. __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wshadow)
  90. __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wwrite-strings)
  91. __PEDANTIC_CHECK_AND_ADD_CXX_FLAG(-Wdocumentation)