CMakeLists.txt 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. project(pcitool)
  2. set(PCILIB_VERSION "0.2.4")
  3. set(PCILIB_ABI_VERSION "2")
  4. cmake_minimum_required(VERSION 2.6)
  5. #set(PKG_CONFIG_USE_CMAKE_PREFIX_PATH true)
  6. #set(CMAKE_PREFIX_PATH ${CMAKE_SYSTEM_PREFIX_PATH})
  7. set(DISABLE_PCITOOL FALSE CACHE BOOL "Build only the library")
  8. #list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
  9. if(NOT DEFINED BIN_INSTALL_DIR)
  10. set(BIN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/bin")
  11. endif(NOT DEFINED BIN_INSTALL_DIR)
  12. if(NOT DEFINED LIB_INSTALL_DIR)
  13. set(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib")
  14. endif(NOT DEFINED LIB_INSTALL_DIR)
  15. if(NOT DEFINED INCLUDE_INSTALL_DIR)
  16. set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include")
  17. endif(NOT DEFINED INCLUDE_INSTALL_DIR)
  18. if(NOT DEFINED DATA_INSTALL_DIR)
  19. set(DATA_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share")
  20. endif(NOT DEFINED DATA_INSTALL_DIR)
  21. if(NOT DEFINED LOCALE_INSTALL_DIR)
  22. set(LOCALE_INSTALL_DIR "${DATA_INSTALL_DIR}/locale")
  23. endif(NOT DEFINED LOCALE_INSTALL_DIR)
  24. SET(ENV{PKG_CONFIG_PATH} "${LIB_INSTALL_DIR}/pkgconfig:$ENV{PKG_CONFIG_PATH}")
  25. find_package(PkgConfig REQUIRED)
  26. find_package(Threads REQUIRED)
  27. find_package(PythonLibs REQUIRED)
  28. set(EXTRA_SYSTEM_LIBS -lrt)
  29. check_include_files(stdatomic.h HAVE_STDATOMIC_H)
  30. find_path(UTHASH_INCLUDE_DIRS uthash.h PATH_SUFFIXES uthash)
  31. if (UTHASH_INCLUDE_DIRS)
  32. message ("uthash is found at ${UTHASH_INCLUDE_DIRS}")
  33. else (UTHASH_INCLUDE_DIRS)
  34. message (FATAL_ERROR "uthash is not found...")
  35. endif (UTHASH_INCLUDE_DIRS)
  36. pkg_check_modules(LIBXML2 libxml-2.0 REQUIRED)
  37. #Check in sibling directory
  38. if (NOT DISABLE_PCITOOL)
  39. pkg_check_modules(FASTWRITER fastwriter REQUIRED)
  40. endif (NOT DISABLE_PCITOOL)
  41. add_definitions("-fPIC --std=c99 -Wall -O2 -gdwarf-2 -g3 -fno-omit-frame-pointer")
  42. #add_definitions("-fPIC --std=c99 -Wall -O2")
  43. include(cmake/version.cmake)
  44. VERSION_TO_VARS(${PCILIB_VERSION} PCILIB_VERSION_MAJOR PCILIB_VERSION_MINOR PCILIB_VERSION_MICRO)
  45. set(TARNAME "pcitool")
  46. set(PACKAGE_VERSION ${PCILIB_VERSION})
  47. set(PACKAGE_NAME "${TARNAME}")
  48. set(PACKAGE_TARNAME "${TARNAME}")
  49. set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
  50. set(PACKAGE_BUGREPORT "http://ufo.kit.edu/ufo/newticket")
  51. set(PCILIB_PLUGIN_DIR "${LIB_INSTALL_DIR}/pcilib" CACHE PATH "Directory to install plugins")
  52. set(PCILIB_DATA_DIR "${DATA_INSTALL_DIR}/pcilib" CACHE PATH "Directory to install data files")
  53. set(PCILIB_MODEL_DIR "${PCILIB_DATA_DIR}/models" CACHE PATH "Directory to install XML models")
  54. set(PCILIB_DOC_DIR "${CMAKE_CURRENT_BINARY_DIR}/docs/" CACHE PATH "Directory to install documentation")
  55. set(PCILIB_DEBUG_DIR "." CACHE PATH "Directory to write debug information")
  56. add_subdirectory(dma)
  57. add_subdirectory(protocols)
  58. add_subdirectory(views)
  59. add_subdirectory(pcilib)
  60. add_subdirectory(pcitool)
  61. add_subdirectory(apps)
  62. add_subdirectory(xml)
  63. set_target_properties(pcilib PROPERTIES
  64. VERSION ${PCILIB_VERSION}
  65. SOVERSION ${PCILIB_ABI_VERSION}
  66. )
  67. configure_file(${CMAKE_CURRENT_SOURCE_DIR}/misc/pcitool.pc.in ${CMAKE_CURRENT_BINARY_DIR}/misc/pcitool.pc)
  68. configure_file(${CMAKE_CURRENT_SOURCE_DIR}/pcilib/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/pcilib/config.h)
  69. configure_file(${CMAKE_CURRENT_SOURCE_DIR}/pcilib/version.h.in ${CMAKE_CURRENT_BINARY_DIR}/pcilib/version.h)
  70. configure_file(${CMAKE_CURRENT_SOURCE_DIR}/docs/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/docs/Doxyfile)
  71. install(FILES
  72. ${CMAKE_CURRENT_BINARY_DIR}/misc/pcitool.pc
  73. DESTINATION ${LIB_INSTALL_DIR}/pkgconfig
  74. )
  75. message("-- Configured pcitool ${PCILIB_VERSION_MAJOR}.${PCILIB_VERSION_MINOR}.${PCILIB_VERSION_MICRO} with public ABI ${PCILIB_ABI_VERSION}")