CMakeLists.txt 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. # Top Level CMake file for libcody.
  2. cmake_minimum_required(VERSION 3.4.3)
  3. if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
  4. message(STATUS "No build type selected, default to MinSizeRel")
  5. set(CMAKE_BUILD_TYPE MinSizeRel)
  6. set(LIBCODY_ENABLE_ASSERTIONS 1)
  7. endif()
  8. string(TOUPPER "${CMAKE_BUILD_TYPE}" uppercase_CMAKE_BUILD_TYPE)
  9. set(cmake_3_2_USES_TERMINAL USES_TERMINAL)
  10. if( CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR AND NOT MSVC_IDE)
  11. message(FATAL_ERROR "In-source builds are not allowed. ")
  12. endif()
  13. # message(STATUS "SRC ${CMAKE_SOURCE_DIR} CSRC : ${CMAKE_CURRENT_SOURCE_DIR} ")
  14. # Add path for custom modules
  15. set(CMAKE_MODULE_PATH
  16. ${CMAKE_MODULE_PATH}
  17. "${CMAKE_CURRENT_SOURCE_DIR}/cmake"
  18. "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
  19. # If we are building stand-alone, set up the names and versions.
  20. if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR
  21. OR LIBCODY_STANDALONE_BUILD)
  22. project(libcody CXX)
  23. set(PACKAGE_NAME codylib)
  24. set(LIBCODY_VERSION_MAJOR 0)
  25. set(LIBCODY_VERSION_MINOR 0)
  26. set(LIBCODY_VERSION_PATCH 1)
  27. set(LIBCODY_VERSION_SUFFIX git)
  28. set(LIBCODY_VERSION "${LIBCODY_VERSION_MAJOR}.${LIBCODY_VERSION_MINOR}.${LIBCODY_VERSION_PATCH}")
  29. set(PACKAGE_VERSION "${LIBCODY_VERSION}-${LIBCODY_VERSION_SUFFIX}")
  30. set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
  31. set(PACKAGE_URL "https://github.com/urnathan/libcody")
  32. set(PACKAGE_BUGREPORT "https://github.com/urnathan/libcody/issues")
  33. set (GIT_REV "git" "-C" "${CMAKE_CURRENT_SOURCE_DIR}" "rev-parse" "--short=12" "HEAD")
  34. execute_process(
  35. COMMAND ${GIT_REV}
  36. RESULT_VARIABLE HAD_ERROR
  37. OUTPUT_VARIABLE CODY_REVISION
  38. )
  39. if (NOT HAD_ERROR)
  40. string(REGEX REPLACE "\n$" "" CODY_REVISION "${CODY_REVISION}")
  41. set (GIT_CHANGES "git" "-C" "${CMAKE_CURRENT_SOURCE_DIR}" "diff-index" "--quiet" "HEAD" "--")
  42. execute_process(
  43. COMMAND ${GIT_CHANGES}
  44. RESULT_VARIABLE MOD_ERROR
  45. OUTPUT_VARIABLE MOD_OUTPUT
  46. )
  47. if (MOD_ERROR)
  48. set (CODY_REVISION "${CODY_REVISION}-modified")
  49. endif ()
  50. else()
  51. set(CODY_REVISION, "unknown")
  52. endif ()
  53. set(LIBCODY_STANDALONE YES)
  54. else()
  55. set(LIBCODY_STANDALONE NO)
  56. endif()
  57. # We are using C++11
  58. set (CMAKE_CXX_STANDARD 11)
  59. message(STATUS "git revision ${CODY_REVISION} ")
  60. option(CODY_CHECKING "Enable checking" ON)
  61. # Address github issue #10
  62. option(CODY_WITHEXCEPTIONS "Enable exceptions" OFF)
  63. if (LIBCODY_STANDALONE)
  64. include(CTest)
  65. endif()
  66. include(libcody-config-ix)
  67. add_definitions(
  68. -DPACKAGE_URL="${PACKAGE_URL}"
  69. -DBUGURL="${PACKAGE_BUGREPORT}"
  70. -DSRCDIR="${CMAKE_CURRENT_SOURCE_DIR}"
  71. -DPACKAGE_NAME="${PACKAGE_NAME}"
  72. -DPACKAGE_STRING="${PACKAGE_STRING}"
  73. -DPACKAGE_VERSION="${LIBCODY_VERSION}"
  74. -DREVISION="${CODY_REVISION}"
  75. )
  76. if (CODY_CHECKING)
  77. add_definitions(-DNMS_CHECKING=1)
  78. else()
  79. add_definitions(-DNMS_CHECKING=0)
  80. endif()
  81. set(LIBCODY_SOURCES
  82. buffer.cc
  83. client.cc
  84. fatal.cc
  85. netclient.cc
  86. netserver.cc
  87. resolver.cc
  88. packet.cc
  89. server.cc)
  90. if(LIBCODY_STANDALONE)
  91. add_library(cody STATIC ${LIBCODY_SOURCES})
  92. else()
  93. message(STATUS "Configured for in-tree build of libcody as LLVMcody")
  94. add_llvm_component_library(LLVMcody ${LIBCODY_SOURCES})
  95. endif()
  96. if (LIBCODY_STANDALONE)
  97. set_target_properties(cody PROPERTIES PUBLIC_HEADER "cody.hh")
  98. install(TARGETS cody
  99. LIBRARY DESTINATION lib
  100. PUBLIC_HEADER DESTINATION include
  101. )
  102. endif()