From 998266bf16a3f88480382070b4af670d5998a1c5 Mon Sep 17 00:00:00 2001 From: Emmanuel Blot Date: Sat, 19 Jun 2010 22:59:54 +0200 Subject: [PATCH] Fix up build on Mac OS X: * Fix up Boost library management * Fix up Python bindings * Discard attempt to build C++ examples when Boost is not available --- CMakeLists.txt | 24 +++++++--- bindings/CMakeLists.txt | 5 +- examples/CMakeLists.txt | 15 ++++--- ftdipp/CMakeLists.txt | 114 +++++++++++++++++++++------------------------- 4 files changed, 80 insertions(+), 78 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d082932..8a87178 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,6 +26,9 @@ endif(${CMAKE_BUILD_TYPE} STREQUAL Debug) 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") @@ -43,14 +46,19 @@ 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 8) - SET(LIB_SUFFIX 64) - SET(PACK_ARCH .x86_64) -endif(CMAKE_SIZEOF_VOID_P EQUAL 4) +if(NOT APPLE) + # 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 8) + SET(LIB_SUFFIX 64) + SET(PACK_ARCH .x86_64) + endif(CMAKE_SIZEOF_VOID_P EQUAL 4) +else(NOT APPLE) + SET(LIB_SUFFIX "") + SET(PACK_ARCH "") +endif(NOT APPLE) # Package information set(CPACK_PACKAGE_VERSION ${VERSION_STRING}) diff --git a/bindings/CMakeLists.txt b/bindings/CMakeLists.txt index 48f535c..5333035 100644 --- a/bindings/CMakeLists.txt +++ b/bindings/CMakeLists.txt @@ -7,9 +7,10 @@ option(PYTHON_BINDINGS "Build python bindings via swig" ON) if(PYTHON_BINDINGS AND SWIG_FOUND AND PYTHONLIBS_FOUND) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../src) INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH}) - + LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../src) + SWIG_ADD_MODULE(ftdi python ftdi.i) - SWIG_LINK_LIBRARIES(ftdi ${PYTHON_LIBRARIES}) + SWIG_LINK_LIBRARIES(ftdi ftdi ${PYTHON_LIBRARIES}) GET_FILENAME_COMPONENT(PYTHON_LIB_INSTALL ${PYTHON_LIBRARY} PATH) GET_FILENAME_COMPONENT(SITEPACKAGE ${PYTHON_LIB_INSTALL}/../site-packages ABSOLUTE) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 7b702c2..af7f57a 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -35,14 +35,17 @@ if (EXAMPLES) # libftdi++ examples if(FTDI_BUILD_CPP) - message(STATUS "Building libftdi++ examples.") - include_directories(${CMAKE_SOURCE_DIR}/ftdipp) + if(Boost_FOUND) + message(STATUS "Building libftdi++ examples.") + include_directories(${CMAKE_SOURCE_DIR}/ftdipp + ${Boost_INCLUDE_DIRS}) - # Targest - add_executable(find_all_pp find_all_pp.cpp) + # Target + add_executable(find_all_pp find_all_pp.cpp) - # Linkage - target_link_libraries(find_all_pp ftdipp) + # Linkage + target_link_libraries(find_all_pp ftdipp) + endif(Boost_FOUND) endif(FTDI_BUILD_CPP) else(EXAMPLES) message(STATUS "Not building example programs.") diff --git a/ftdipp/CMakeLists.txt b/ftdipp/CMakeLists.txt index 8423b2e..43057ce 100644 --- a/ftdipp/CMakeLists.txt +++ b/ftdipp/CMakeLists.txt @@ -5,80 +5,71 @@ option(FTDIPP "Build C++ binding library libftdi++" ON) if (FTDIPP) - # Includes - include_directories( ${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_SOURCE_DIR}/../src - ) - - # Targets - set(cpp_sources ftdi.cpp) - set(cpp_headers ftdi.hpp) - - # Find Boost - find_package(Boost) if(Boost_FOUND) - set(FTDI_BUILD_CPP True PARENT_SCOPE) - message(STATUS "Building libftdi++") - - # Targets - add_library(ftdipp SHARED ${cpp_sources}) - - math(EXPR VERSION_FIXUP "${MAJOR_VERSION} + 1") # Compatiblity with previous releases - set_target_properties(ftdipp PROPERTIES VERSION ${VERSION_FIXUP}.${MINOR_VERSION}.0 SOVERSION 1) - - # Static library - add_library(ftdipp-static STATIC ${cpp_sources}) - set_target_properties(ftdipp-static PROPERTIES OUTPUT_NAME "ftdipp") - - # Prevent clobbering each other during the build - set_target_properties(ftdipp PROPERTIES CLEAN_DIRECT_OUTPUT 1) - set_target_properties(ftdipp-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) - - # Dependencies - target_link_libraries(ftdipp ftdi ${LIBUSB_LIBRARIES} ${BOOST_LIBRARIES}) - # Install - if(${UNIX}) + # Includes + include_directories(${Boost_INCLUDE_DIRS} + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/../src) - install( TARGETS ftdipp - LIBRARY DESTINATION lib${LIB_SUFFIX} - COMPONENT sharedlibs - ) + # Targets + set(cpp_sources ftdi.cpp) + set(cpp_headers ftdi.hpp) - install( TARGETS ftdipp-static - ARCHIVE DESTINATION lib${LIB_SUFFIX} - COMPONENT staticlibs - ) + set(FTDI_BUILD_CPP True PARENT_SCOPE) + message(STATUS "Building libftdi++") - install( FILES ${cpp_headers} - DESTINATION include/${PROJECT_NAME} - COMPONENT headers - ) + # Shared library + add_library(ftdipp SHARED ${cpp_sources}) - endif(${UNIX}) + math(EXPR VERSION_FIXUP "${MAJOR_VERSION} + 1") # Compatiblity with previous releases + set_target_properties(ftdipp PROPERTIES VERSION ${VERSION_FIXUP}.${MINOR_VERSION}.0 SOVERSION 1) - if(${WIN32}) + # Static library + add_library(ftdipp-static STATIC ${cpp_sources}) + set_target_properties(ftdipp-static PROPERTIES OUTPUT_NAME "ftdipp") - install( TARGETS ftdipp - DESTINATION bin - COMPONENT sharedlibs - ) + # Prevent clobbering each other during the build + set_target_properties(ftdipp PROPERTIES CLEAN_DIRECT_OUTPUT 1) + set_target_properties(ftdipp-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) - install( TARGETS ftdipp-static - DESTINATION bin - COMPONENT staticlibs - ) + # Dependencies + target_link_libraries(ftdipp ftdi ${LIBUSB_LIBRARIES} ${BOOST_LIBRARIES}) - install( FILES ${cpp_headers} - DESTINATION include/${PROJECT_NAME} - COMPONENT headers - ) + # Install + if(${UNIX}) + install( TARGETS ftdipp + LIBRARY DESTINATION lib${LIB_SUFFIX} + COMPONENT sharedlibs + ) + install( TARGETS ftdipp-static + ARCHIVE DESTINATION lib${LIB_SUFFIX} + COMPONENT staticlibs + ) + install( FILES ${cpp_headers} + DESTINATION include/${PROJECT_NAME} + COMPONENT headers + ) + endif(${UNIX}) - endif(${WIN32}) + if(${WIN32}) + install( TARGETS ftdipp + DESTINATION bin + COMPONENT sharedlibs + ) + install( TARGETS ftdipp-static + DESTINATION bin + COMPONENT staticlibs + ) + install( FILES ${cpp_headers} + DESTINATION include/${PROJECT_NAME} + COMPONENT headers + ) + endif(${WIN32}) else(Boost_FOUND) - message(STATUS "Boost not found, won't build libftdi++") + message(STATUS "Boost not found, won't build libftdi++") endif(Boost_FOUND) else(FTDIPP) @@ -86,4 +77,3 @@ else(FTDIPP) message(STATUS "Not building libftdi++") endif(FTDIPP) - -- 1.7.1