X-Git-Url: http://developer.intra2net.com/git/?p=libftdi;a=blobdiff_plain;f=CMakeLists.txt;h=58f664a819c3d6d3318874518d526ac6e59a781c;hp=1a09e9e1ac6ffffc4c372c6182a61a7557851d9d;hb=11a50ae5b80b3e03694a19e84513345d0794e563;hpb=c729b243a67274535c1278c6c55a09a5b07acbe1 diff --git a/CMakeLists.txt b/CMakeLists.txt index 1a09e9e..58f664a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,11 +1,11 @@ # Project -project(libftdi1) +project(libftdi1 C) set(MAJOR_VERSION 1) -set(MINOR_VERSION 0) +set(MINOR_VERSION 5) set(PACKAGE libftdi1) set(VERSION_STRING ${MAJOR_VERSION}.${MINOR_VERSION}) set(VERSION ${VERSION_STRING}) -SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}") +set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) # CMake if("${CMAKE_BUILD_TYPE}" STREQUAL "") @@ -16,6 +16,8 @@ cmake_minimum_required(VERSION 2.6 FATAL_ERROR) add_definitions(-Wall) +include(CMakeOptions.txt) + # Debug build message("-- Build type: ${CMAKE_BUILD_TYPE}") if(${CMAKE_BUILD_TYPE} STREQUAL Debug) @@ -26,8 +28,10 @@ endif(${CMAKE_BUILD_TYPE} STREQUAL Debug) find_package ( USB1 REQUIRED ) include_directories ( ${LIBUSB_INCLUDE_DIR} ) -# Find Boost (optional package) -find_package(Boost) +# Find Boost +if (FTDIPP OR BUILD_TESTS) + find_package( Boost REQUIRED ) +endif() # Set components set(CPACK_COMPONENTS_ALL sharedlibs staticlibs headers) @@ -46,10 +50,15 @@ set(CPACK_COMPONENT_SHAREDLIBS_GROUP "Development") set(CPACK_COMPONENT_STATICLIBS_GROUP "Development") set(CPACK_COMPONENT_HEADERS_GROUP "Development") -# automatically set lib suffix -if ( UNIX AND NOT APPLE AND NOT CMAKE_CROSSCOMPILING AND NOT EXISTS "/etc/debian_version" ) - if ( CMAKE_SIZEOF_VOID_P EQUAL 8 AND NOT LIB_SUFFIX ) - set ( LIB_SUFFIX 64 ) +# guess LIB_SUFFIX, don't take debian multiarch into account +if ( NOT DEFINED LIB_SUFFIX ) + if( CMAKE_SYSTEM_NAME MATCHES "Linux" + AND NOT CMAKE_CROSSCOMPILING + AND NOT EXISTS "/etc/debian_version" + AND NOT EXISTS "/etc/arch-release" ) + if ( "${CMAKE_SIZEOF_VOID_P}" EQUAL "8" ) + set ( LIB_SUFFIX 64 ) + endif () endif () endif () @@ -106,16 +115,8 @@ add_custom_target(dist | bzip2 > ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.bz2 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) - -# Documentation -option ( DOCUMENTATION "Generate API documentation with Doxygen" ON ) - - -find_package ( Doxygen ) -if ( DOCUMENTATION AND DOXYGEN_FOUND ) - - # Find doxy config - message(STATUS "Doxygen found.") +if ( DOCUMENTATION ) + find_package ( Doxygen REQUIRED) # Copy doxy.config.in set(top_srcdir ${CMAKE_SOURCE_DIR}) @@ -131,19 +132,27 @@ if ( DOCUMENTATION AND DOXYGEN_FOUND ) ) add_custom_target(docs ALL DEPENDS ${CMAKE_BINARY_DIR}/doc/html/index.html) - - message(STATUS "Generating API documentation with Doxygen") -else(DOCUMENTATION AND DOXYGEN_FOUND) - message(STATUS "Not generating API documentation") -endif(DOCUMENTATION AND DOXYGEN_FOUND) +endif () add_subdirectory(src) -add_subdirectory(ftdipp) -add_subdirectory(bindings) -add_subdirectory(ftdi_eeprom) -add_subdirectory(examples) +if ( FTDIPP ) + project(libftdi1 C CXX) + add_subdirectory(ftdipp) +endif () +if ( PYTHON_BINDINGS ) +add_subdirectory(python) +endif () +if ( FTDI_EEPROM ) + add_subdirectory(ftdi_eeprom) +endif () +if ( EXAMPLES ) + add_subdirectory(examples) +endif () add_subdirectory(packages) -add_subdirectory(test) +if ( BUILD_TESTS ) + project(libftdi1 C CXX) + add_subdirectory(test) +endif () # PkgConfig set(prefix ${CMAKE_INSTALL_PREFIX}) @@ -157,39 +166,86 @@ if(${WIN32}) set(libdir ${CMAKE_INSTALL_PREFIX}/bin) endif(${WIN32}) -configure_file(${CMAKE_SOURCE_DIR}/libftdi1.spec.in ${CMAKE_BINARY_DIR}/libftdi1.spec @ONLY) configure_file(${CMAKE_SOURCE_DIR}/libftdi1.pc.in ${CMAKE_BINARY_DIR}/libftdi1.pc @ONLY) configure_file(${CMAKE_SOURCE_DIR}/libftdipp1.pc.in ${CMAKE_BINARY_DIR}/libftdipp1.pc @ONLY) install(FILES ${CMAKE_BINARY_DIR}/libftdi1.pc ${CMAKE_BINARY_DIR}/libftdipp1.pc DESTINATION lib${LIB_SUFFIX}/pkgconfig) -if ( UNIX ) +if (UNIX OR MINGW) configure_file ( libftdi1-config.in ${CMAKE_CURRENT_BINARY_DIR}/libftdi1-config @ONLY ) install ( PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libftdi1-config DESTINATION bin ) +endif () - # config script install path - if ( NOT DEFINED LIBFTDI_CMAKE_CONFIG_DIR ) - set ( LIBFTDI_CMAKE_CONFIG_DIR lib${LIB_SUFFIX}/cmake/libftdi1 ) - endif () - - get_target_property( _LIBFTDI_LIBRARY_LOCATION ftdi1 LOCATION ) - get_filename_component ( _LIBFTDI_LIBRARY_NAME ${_LIBFTDI_LIBRARY_LOCATION} NAME ) - set ( LIBFTDI_INCLUDE_DIR ${includedir} ) - set ( LIBFTDI_INCLUDE_DIRS ${LIBFTDI_INCLUDE_DIR} ) - set ( LIBFTDI_LIBRARY ${libdir}/${_LIBFTDI_LIBRARY_NAME} ) - set ( LIBFTDI_LIBRARIES ${LIBFTDI_LIBRARY} ) - list ( APPEND LIBFTDI_LIBRARIES ${LIBUSB_LIBRARIES} ) - set ( LIBFTDI_ROOT_DIR ${prefix} ) - set ( LIBFTDI_VERSION_STRING ${VERSION_STRING} ) - set ( LIBFTDI_VERSION_MAJOR ${MAJOR_VERSION} ) - set ( LIBFTDI_VERSION_MINOR ${MINOR_VERSION} ) - - set ( LIBFTDI_USE_FILE ${CMAKE_INSTALL_PREFIX}/${LIBFTDI_CMAKE_CONFIG_DIR}/UseLibFTDI1.cmake ) - configure_file ( LibFTDI1Config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/LibFTDI1Config.cmake @ONLY ) - install ( FILES ${CMAKE_CURRENT_BINARY_DIR}/LibFTDI1Config.cmake UseLibFTDI1.cmake - DESTINATION ${LIBFTDI_CMAKE_CONFIG_DIR} - ) +# config script install path +if ( NOT DEFINED LIBFTDI_CMAKE_CONFIG_DIR ) + set ( LIBFTDI_CMAKE_CONFIG_DIR lib${LIB_SUFFIX}/cmake/libftdi1 ) +endif () + +set ( LIBFTDI_INCLUDE_DIR ${includedir} ) +set ( LIBFTDI_INCLUDE_DIRS ${LIBFTDI_INCLUDE_DIR} ) +set ( LIBFTDI_LIBRARY ftdi1 ) +set ( LIBFTDI_LIBRARIES ${LIBFTDI_LIBRARY} ) +list ( APPEND LIBFTDI_LIBRARIES ${LIBUSB_LIBRARIES} ) +set ( LIBFTDI_STATIC_LIBRARY ftdi1.a ) +set ( LIBFTDI_STATIC_LIBRARIES ${LIBFTDI_STATIC_LIBRARY} ) +list ( APPEND LIBFTDI_STATIC_LIBRARIES ${LIBUSB_LIBRARIES} ) +if ( FTDIPP ) + set ( LIBFTDIPP_LIBRARY ftdipp1 ) + set ( LIBFTDIPP_LIBRARIES ${LIBFTDIPP_LIBRARY} ) + list ( APPEND LIBFTDIPP_LIBRARIES ${LIBUSB_LIBRARIES} ) +endif () +set ( LIBFTDI_LIBRARY_DIRS ${libdir} ) +set ( LIBFTDI_ROOT_DIR ${prefix} ) +set ( LIBFTDI_VERSION_STRING ${VERSION_STRING} ) +set ( LIBFTDI_VERSION_MAJOR ${MAJOR_VERSION} ) +set ( LIBFTDI_VERSION_MINOR ${MINOR_VERSION} ) + +set ( LIBFTDI_USE_FILE ${CMAKE_INSTALL_PREFIX}/${LIBFTDI_CMAKE_CONFIG_DIR}/UseLibFTDI1.cmake ) + +if(CMAKE_VERSION VERSION_LESS 2.8.8) + configure_file ( cmake/LibFTDI1Config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/LibFTDI1Config.cmake @ONLY ) + configure_file ( cmake/LibFTDI1ConfigVersion.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/LibFTDI1ConfigVersion.cmake @ONLY ) +else () + include(CMakePackageConfigHelpers) + + configure_package_config_file ( + cmake/LibFTDI1Config.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/LibFTDI1Config.cmake + INSTALL_DESTINATION ${LIBFTDI_CMAKE_CONFIG_DIR} + PATH_VARS + LIBFTDI_USE_FILE + LIBFTDI_ROOT_DIR + LIBFTDI_INCLUDE_DIR + LIBFTDI_INCLUDE_DIRS + LIBFTDI_LIBRARY_DIRS + NO_CHECK_REQUIRED_COMPONENTS_MACRO + ) + write_basic_package_version_file ( + LibFTDI1ConfigVersion.cmake + VERSION ${LIBFTDI_VERSION_STRING} + COMPATIBILITY AnyNewerVersion + ) endif () + +install ( FILES + ${CMAKE_CURRENT_BINARY_DIR}/LibFTDI1Config.cmake + ${CMAKE_CURRENT_BINARY_DIR}/LibFTDI1ConfigVersion.cmake + cmake/UseLibFTDI1.cmake + + DESTINATION ${LIBFTDI_CMAKE_CONFIG_DIR} + ) + include(CPack) + +message (STATUS "Summary of build options: + + Build static libs: ${STATICLIBS} + Build C++ bindings: ${FTDIPP} + Build Python bindings: ${PYTHON_BINDINGS} + Build ftdi_eeprom: ${FTDI_EEPROM} + Build examples: ${EXAMPLES} + Build tests: ${BUILD_TESTS} + Build API documentation: ${DOCUMENTATION} +")