aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
blob: 36d2e67223d673f73ddc3b5b624f2db32e77a820 (plain)
  1. project(cmark)
  2. cmake_minimum_required(VERSION 2.8)
  3. set(PROJECT_NAME "cmark")
  4. set(PROJECT_VERSION_MAJOR 0)
  5. set(PROJECT_VERSION_MINOR 0)
  6. set(PROJECT_VERSION_PATCH 1)
  7. set(PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH} )
  8. include (CheckIncludeFile)
  9. CHECK_INCLUDE_FILE (stdbool.h HAVE_STDBOOL_H)
  10. set(CMAKE_BUILD_TYPE Release)
  11. if(MSVC)
  12. # Force to always compile with W4
  13. if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
  14. string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
  15. else()
  16. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
  17. endif()
  18. elseif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
  19. # Update if necessary
  20. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -pedantic")
  21. endif()
  22. #option(${PROJECT_NAME}_WITH_DOCS "generate Documentation" OFF)
  23. #option(${PROJECT_NAME}_WITH_TESTS "enable testing" ON)
  24. option(CMAKE_SUPPRESS_REGENERATION "suppress rules to re-run cmake on changes (warning: no dependency checks!)?" OFF)
  25. if (MSVC)
  26. set(RE2C ${CMAKE_CURRENT_SOURCE_DIR}/re2c)
  27. else(MSVC)
  28. set(RE2C re2c)
  29. endif(MSVC)
  30. if (MSVC)
  31. option(PROJECT_LINK_MSVC_MT "link with /MT instead of /MD (use msvc runtime dlls versus static linked)" ON)
  32. # see http://msdn.microsoft.com/en-us/library/2kzt1wy3%28VS.71%29.aspx
  33. if (PROJECT_LINK_MSVC_MT)
  34. set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
  35. set(CMAKE_C_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
  36. set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
  37. set(CMAKE_C_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
  38. endif (PROJECT_LINK_MSVC_MT)
  39. set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /INCREMENTAL:NO")
  40. set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /W4")
  41. set(CMAKE_C_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /W4")
  42. set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS _CRT_SECURE_NO_WARNINGS UNICODE)
  43. set(CMAKE_FIND_LIBRARY_PREFIXES "")
  44. set(CMAKE_FIND_LIBRARY_SUFFIXES ".lib")
  45. set(CMAKE_STATIC_LIBRARY_PREFIX "lib")
  46. set(CMAKE_STATIC_LIBRARY_SUFFIX ".lib")
  47. set(CMAKE_SHARED_LIBRARY_PREFIX "") # lib
  48. set(CMAKE_SHARED_LIBRARY_SUFFIX ".dll") # .so
  49. set(CMAKE_IMPORT_LIBRARY_PREFIX "")
  50. set(CMAKE_IMPORT_LIBRARY_SUFFIX ".lib")
  51. set(CMAKE_EXECUTABLE_SUFFIX ".exe") # .exe
  52. set(CMAKE_LINK_LIBRARY_SUFFIX ".lib")
  53. set(CMAKE_DL_LIBS "")
  54. set(CMAKE_DEBUG_POSTFIX "d")
  55. add_definitions(-DUNICODE -D_UNICODE)
  56. else(MSVC)
  57. list(APPEND CMAKE_CXX_FLAGS "-Wall -Wunused-variable -Wno-long-long")
  58. #-pedantic
  59. list(APPEND CMAKE_C_FLAGS "-Wall -Wunused-variable -Wno-long-long")
  60. endif(MSVC)
  61. # create config.h
  62. # configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake
  63. # ${CMAKE_CURRENT_BINARY_DIR}/config.h)
  64. # set include directories
  65. get_filename_component(CONFIG_INCLUDE ${CMAKE_CURRENT_BINARY_DIR}/config.h PATH)
  66. include_directories(include ${CONFIG_INCLUDE})
  67. install(DIRECTORY include DESTINATION .
  68. COMPONENT devel
  69. FILES_MATCHING PATTERN "*.h"
  70. PATTERN .svn EXCLUDE
  71. )
  72. # install(FILES ${CMAKE_CURRENT_BINARY_DIR}/config.h
  73. # DESTINATION include/${PROJECT_NAME}
  74. # COMPONENT devel)
  75. add_subdirectory(src)
  76. add_subdirectory(man)
  77. include(InstallRequiredSystemLibraries)
  78. set(CPACK_GENERATOR TGZ ZIP)
  79. if(WIN32 AND NOT CYGWIN)
  80. set(CPACK_GENERATOR NSIS ${CPACK_GENERATOR})
  81. endif(WIN32 AND NOT CYGWIN)
  82. if(APPLE)
  83. set(CPACK_GENERATOR DragNDrop ${CPACK_GENERATOR})
  84. endif(APPLE)
  85. if (UNIX AND NOT APPLE AND NOT WIN32)
  86. set(CPACK_GENERATOR DEB ${CPACK_GENERATOR})
  87. endif (UNIX AND NOT APPLE AND NOT WIN32)
  88. set(CPACK_SOURCE_PACKAGE_FILE_NAME ${PROJECT_NAME}-src-${PROJECT_VERSION})
  89. set(CPACK_SOURCE_GENERATOR TGZ ZIP)
  90. set(CPACK_PACKAGE_CONTACT http://talk.commonmark.org/)
  91. set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJECT_NAME})
  92. set(CPACK_PACKAGE_VENDOR "${PROJECT_NAME} Development Team")
  93. set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
  94. set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
  95. set(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}")
  96. set(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}")
  97. set(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}")
  98. set(CPACK_SOURCE_IGNORE_FILES "/docs/html;/autom4te.cache;/build/;/win32/;/.svn/;~$;${CPACK_SOURCE_IGNORE_FILES}")
  99. if(WIN32 AND NOT UNIX)
  100. set(CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME}\\\\${PROJECT_VERSION}")
  101. # There is a bug in NSI that does not handle full unix paths properly. Make
  102. # sure there is at least one set of four (4) backlashes.
  103. # set(CPACK_PACKAGE_ICON "${CMake_SOURCE_DIR}/Utilities/Release\\\\InstallIcon.bmp")
  104. set(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\${PROJECT_NAME}.exe")
  105. set(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} ${PROJECT_NAME}")
  106. set(CPACK_NSIS_HELP_LINK "http://commonmark.org/")
  107. set(CPACK_NSIS_URL_INFO_ABOUT "http://commonmark.org/")
  108. set(CPACK_NSIS_CONTACT "http://talk.commonmark.org/")
  109. set(CPACK_NSIS_MODIFY_PATH ON)
  110. set(CPACK_NSIS_MENU_LINKS "doc/html/index.html;Documentation")
  111. else(WIN32 AND NOT UNIX)
  112. set(CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME}/${PROJECT_VERSION}")
  113. set(CPACK_STRIP_FILES "bin/${PROJECT_NAME}")
  114. set(CPACK_SOURCE_STRIP_FILES "")
  115. endif(WIN32 AND NOT UNIX)
  116. set(CPACK_PACKAGE_EXECUTABLES ${PROJECT_NAME};${PROJECT_NAME})
  117. include(CPack)