X-Git-Url: http://developer.intra2net.com/git/?p=libftdi;a=blobdiff_plain;f=CMakeLists.txt;h=233d1da7049459fb2e79f6b96b93987af4ad5317;hp=14e02b27004fe4fb45b42f04035547d5a0d59702;hb=4af77d33ddfb96c32760ee9a662fa34c6678e792;hpb=8e527547a8df7264bbaba4644d93ac132473d321 diff --git a/CMakeLists.txt b/CMakeLists.txt index 14e02b2..233d1da 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,26 +1,33 @@ # Project -project(libftdi) -set(MAJOR_VERSION 0) -set(MINOR_VERSION 17) +project(libftdi1) +set(MAJOR_VERSION 1) +set(MINOR_VERSION 0) +set(PACKAGE libftdi1) set(VERSION_STRING ${MAJOR_VERSION}.${MINOR_VERSION}) +set(VERSION ${VERSION_STRING}) SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}") # CMake if("${CMAKE_BUILD_TYPE}" STREQUAL "") - set(CMAKE_BUILD_TYPE Debug) + set(CMAKE_BUILD_TYPE RelWithDebInfo) endif("${CMAKE_BUILD_TYPE}" STREQUAL "") set(CMAKE_COLOR_MAKEFILE ON) cmake_minimum_required(VERSION 2.6 FATAL_ERROR) +add_definitions(-Wall) + # Debug build message("-- Build type: ${CMAKE_BUILD_TYPE}") if(${CMAKE_BUILD_TYPE} STREQUAL Debug) add_definitions(-DDEBUG) endif(${CMAKE_BUILD_TYPE} STREQUAL Debug) -FIND_PACKAGE(USB REQUIRED) +FIND_PACKAGE(USB1 REQUIRED) INCLUDE_DIRECTORIES(${LIBUSB_INCLUDE_DIR}) +# Find Boost (optional package) +find_package(Boost) + # Set components set(CPACK_COMPONENTS_ALL sharedlibs staticlibs headers) set(CPACK_COMPONENT_SHAREDLIBS_DISPLAY_NAME "Shared libraries") @@ -30,7 +37,7 @@ set(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "C++ Headers") set(CPACK_COMPONENT_SHAREDLIBS_DESCRIPTION "Shared library for general use.") set(CPACK_COMPONENT_STATICLIBS_DESCRIPTION -"Static library, good if you want to embed libftdi in your application.") +"Static library, good if you want to embed libftdi1 in your application.") set(CPACK_COMPONENT_HEADERS_DESCRIPTION "C/C++ header files.") @@ -38,19 +45,27 @@ set(CPACK_COMPONENT_SHAREDLIBS_GROUP "Development") set(CPACK_COMPONENT_STATICLIBS_GROUP "Development") set(CPACK_COMPONENT_HEADERS_GROUP "Development") -# Create suffix to eventually install in lib64 -IF(CMAKE_SIZEOF_VOID_P EQUAL 4) - SET(LIB_SUFFIX "") - SET(PACK_ARCH "") - ELSE(CMAKE_SIZEOF_VOID_P EQUAL 4) - SET(LIB_SUFFIX 64) - SET(PACK_ARCH .x86_64) -endif(CMAKE_SIZEOF_VOID_P EQUAL 4) +# 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 ) + endif () +endif () + +if(NOT APPLE) + if(CMAKE_SIZEOF_VOID_P EQUAL 4) + SET(PACK_ARCH "") + else(CMAKE_SIZEOF_VOID_P EQUAL 8) + SET(PACK_ARCH .x86_64) + endif(CMAKE_SIZEOF_VOID_P EQUAL 4) +else(NOT APPLE) + SET(PACK_ARCH "") +endif(NOT APPLE) # Package information set(CPACK_PACKAGE_VERSION ${VERSION_STRING}) -set(CPACK_PACKAGE_CONTACT "Marek Vavrusa ") -set(CPACK_PACKAGE_DESCRIPTION "libftdi library.") +set(CPACK_PACKAGE_CONTACT "Intra2net AG ") +set(CPACK_PACKAGE_DESCRIPTION "libftdi1 library.") set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${CPACK_PACKAGE_DESCRIPTION} ) # Package settings @@ -66,67 +81,69 @@ if(${WIN32}) set(CPACK_CMAKE_GENERATOR "MinGW Makefiles") set(CPACK_PACKAGE_NAME "${PROJECT_NAME}") set(CPACK_PACKAGE_VENDOR "") - set(CPACK_PACKAGE_INSTALL_DIRECTORY "libftdi") + set(CPACK_PACKAGE_INSTALL_DIRECTORY "libftdi1") set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${VERSION_STRING}-win32") - set(CPACK_NSIS_DISPLAY_NAME "libftdi") + set(CPACK_NSIS_DISPLAY_NAME "libftdi1") set(CPACK_NSIS_MODIFY_PATH "ON") endif(${WIN32}) set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/LICENSE) set(CPACK_SOURCE_GENERATOR TGZ) -set(CPACK_SOURCE_IGNORE_FILES "\\\\.git") -set(CPACK_SOURCE_PACKAGE_FILE_NAME ${CPACK_PACKAGE_FILE_NAME}) +set(CPACK_SOURCE_IGNORE_FILES "\\\\.git;~$;build/") +set(CPACK_SOURCE_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}) # Subdirectories if(${UNIX}) set(CPACK_SET_DESTDIR "ON") endif(${UNIX}) -add_subdirectory(src) -add_subdirectory(ftdipp) -add_subdirectory(bindings) -add_subdirectory(examples) -add_subdirectory(packages) - +# "make dist" target +set(ARCHIVE_NAME ${CMAKE_PROJECT_NAME}-${VERSION_STRING}) +add_custom_target(dist + COMMAND git archive --prefix=${ARCHIVE_NAME}/ HEAD + | bzip2 > ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.bz2 + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) # Documentation -find_package(Doxygen) -if(DOXYGEN_FOUND) - # Set variables - set(PACKAGE libftdi) - set(VERSION ${VERSION_STRING}) - set(top_srcdir ${CMAKE_SOURCE_DIR}) +option(DOCUMENTATION "Generate API documentation with Doxygen" ON) + + +find_package(Doxygen) +if(DOCUMENTATION AND DOXYGEN_FOUND) # Find doxy config message(STATUS "Doxygen found.") - set(DOXY_DIR "${CMAKE_SOURCE_DIR}/doc") - set(DOXY_CONFIG "${DOXY_DIR}/Doxyfile.in") # Copy doxy.config.in - configure_file("${DOXY_CONFIG}" "${CMAKE_BINARY_DIR}/doxy.config") - - # Create doc directory - add_custom_command( - OUTPUT ${CMAKE_BINARY_DIR}/doc - COMMAND rm -rf ${CMAKE_BINARY_DIR}/doc - COMMAND mkdir ${CMAKE_BINARY_DIR}/doc - DEPENDS ftdi ftdipp - ) + set(top_srcdir ${CMAKE_SOURCE_DIR}) + configure_file(${CMAKE_SOURCE_DIR}/doc/Doxyfile.in ${CMAKE_BINARY_DIR}/Doxyfile ) + configure_file(${CMAKE_SOURCE_DIR}/doc/Doxyfile.xml.in ${CMAKE_BINARY_DIR}/Doxyfile.xml ) # Run doxygen add_custom_command( - OUTPUT ${CMAKE_BINARY_DIR}/doc/html/index.html - COMMAND ${DOXYGEN_EXECUTABLE} "${CMAKE_BINARY_DIR}/doxy.config" - DEPENDS "${CMAKE_BINARY_DIR}/doxy.config" "${CMAKE_BINARY_DIR}/doc" - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/doc + OUTPUT ${CMAKE_BINARY_DIR}/doc/html/index.html + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/doc + COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile + DEPENDS ${c_headers};${c_sources};${cpp_sources};${cpp_headers} ) add_custom_target(docs ALL DEPENDS ${CMAKE_BINARY_DIR}/doc/html/index.html) -endif(DOXYGEN_FOUND) + message(STATUS "Generating API documentation with Doxygen") +else(DOCUMENTATION AND DOXYGEN_FOUND) + message(STATUS "Not generating API documentation") +endif(DOCUMENTATION AND DOXYGEN_FOUND) + +add_subdirectory(src) +add_subdirectory(ftdipp) +add_subdirectory(bindings) +add_subdirectory(ftdi_eeprom) +add_subdirectory(examples) +add_subdirectory(packages) +add_subdirectory(test) # PkgConfig set(prefix ${CMAKE_INSTALL_PREFIX}) @@ -140,14 +157,33 @@ if(${WIN32}) set(libdir ${CMAKE_INSTALL_PREFIX}/bin) endif(${WIN32}) -configure_file(${CMAKE_SOURCE_DIR}/libftdi.pc.in ${CMAKE_BINARY_DIR}/libftdi.pc @ONLY) -configure_file(${CMAKE_SOURCE_DIR}/libftdipp.pc.in ${CMAKE_BINARY_DIR}/libftdipp.pc @ONLY) -install(FILES ${CMAKE_BINARY_DIR}/libftdi.pc ${CMAKE_BINARY_DIR}/libftdipp.pc +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}) - configure_file(${CMAKE_SOURCE_DIR}/libftdi-config.in ${CMAKE_BINARY_DIR}/libftdi-config @ONLY) - install(PROGRAMS ${CMAKE_BINARY_DIR}/libftdi-config DESTINATION bin) -endif(${UNIX}) +if ( UNIX ) + configure_file ( libftdi1-config.in ${CMAKE_CURRENT_BINARY_DIR}/libftdi1-config @ONLY ) + install ( PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libftdi1-config + DESTINATION bin ) + + 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}/lib/cmake/libftdi/UseLibFTDI.cmake ) + configure_file ( LibFTDIConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/LibFTDIConfig.cmake @ONLY ) + install ( FILES ${CMAKE_CURRENT_BINARY_DIR}/LibFTDIConfig.cmake UseLibFTDI.cmake + DESTINATION lib/cmake/libftdi + ) +endif () include(CPack)