From e220a32713dfcc6bb7dbe7d371e0f0c30ff8fd6d Mon Sep 17 00:00:00 2001 From: Dinesh Bolkensteyn Date: Tue, 12 Jul 2016 09:25:24 +0200 Subject: [PATCH 01/11] CMake: Serial should be a StaticLib --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a72acb8..4256769 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,7 +45,7 @@ else() endif() ## Add serial library -add_library(${PROJECT_NAME} ${serial_SRCS}) +add_library(${PROJECT_NAME} STATIC ${serial_SRCS}) if(APPLE) target_link_libraries(${PROJECT_NAME} ${FOUNDATION_LIBRARY} ${IOKIT_LIBRARY}) elseif(UNIX) From 36c4e9d1705e5365af0b73f82f820455d6795c81 Mon Sep 17 00:00:00 2001 From: Dinesh Bolkensteyn Date: Tue, 12 Jul 2016 18:41:18 +0200 Subject: [PATCH 02/11] Remove Catkin dependency --- CMakeLists.txt | 49 ++++++++++++++++++++-------------------- cmake/serialConfig.cmake | 14 ++++++++++++ package.xml | 24 -------------------- 3 files changed, 38 insertions(+), 49 deletions(-) create mode 100644 cmake/serialConfig.cmake delete mode 100644 package.xml diff --git a/CMakeLists.txt b/CMakeLists.txt index 4256769..6dd7f18 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,29 +1,11 @@ cmake_minimum_required(VERSION 2.8.3) project(serial) -# Find catkin -find_package(catkin REQUIRED) - if(APPLE) find_library(IOKIT_LIBRARY IOKit) find_library(FOUNDATION_LIBRARY Foundation) endif() -if(UNIX AND NOT APPLE) - # If Linux, add rt and pthread - catkin_package( - LIBRARIES ${PROJECT_NAME} - INCLUDE_DIRS include - DEPENDS rt pthread - ) -else() - # Otherwise normal call - catkin_package( - LIBRARIES ${PROJECT_NAME} - INCLUDE_DIRS include - ) -endif() - ## Sources set(serial_SRCS src/serial.cc @@ -54,7 +36,7 @@ else() target_link_libraries(${PROJECT_NAME} setupapi) endif() -## Uncomment for example +## Add example project add_executable(serial_example examples/serial_example.cc) add_dependencies(serial_example ${PROJECT_NAME}) target_link_libraries(serial_example ${PROJECT_NAME}) @@ -62,17 +44,34 @@ target_link_libraries(serial_example ${PROJECT_NAME}) ## Include headers include_directories(include) +## Install +set(INSTALL_LIB_DIR lib) +set(INSTALL_INCLUDE_DIR include) +set(INSTALL_CMAKE_DIR share/serial/cmake) + ## Install executable install(TARGETS ${PROJECT_NAME} - ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} - LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} + DESTINATION ${INSTALL_LIB_DIR} + EXPORT ${PROJECT_NAME}-targets ) ## Install headers install(FILES include/serial/serial.h include/serial/v8stdint.h - DESTINATION ${CATKIN_GLOBAL_INCLUDE_DESTINATION}/serial) + DESTINATION ${INSTALL_INCLUDE_DIR}/serial) + +## Install CMake files +install(EXPORT ${PROJECT_NAME}-targets DESTINATION ${INSTALL_CMAKE_DIR}) + +include(CMakePackageConfigHelpers) +write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Version.cmake + VERSION 1.2.1 + COMPATIBILITY AnyNewerVersion) + +install(FILES ${CMAKE_SOURCE_DIR}/cmake/${PROJECT_NAME}Config.cmake ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Version.cmake + DESTINATION ${INSTALL_CMAKE_DIR}) ## Tests -if(CATKIN_ENABLE_TESTING) - add_subdirectory(tests) -endif() +# FIXME +#if(CATKIN_ENABLE_TESTING) +# add_subdirectory(tests) +#endif() diff --git a/cmake/serialConfig.cmake b/cmake/serialConfig.cmake new file mode 100644 index 0000000..88a03b9 --- /dev/null +++ b/cmake/serialConfig.cmake @@ -0,0 +1,14 @@ +# Usage: +# +# find_package(serial REQUIRED) +# include_directories(${serial_INCLUDE_DIRS}) +# target_link_libraries( serial) + +if(serial_CONFIG_INCLUDED) + return() +endif() +set(serial_CONFIG_INCLUDED TRUE) + +get_filename_component(SELF_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) +include(${SELF_DIR}/serial-targets.cmake) +get_filename_component(serial_INCLUDE_DIRS "${SELF_DIR}/../../../include" ABSOLUTE) diff --git a/package.xml b/package.xml deleted file mode 100644 index 70c2bb9..0000000 --- a/package.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - serial - 1.2.1 - - Serial is a cross-platform, simple to use library for using serial ports on computers. This library provides a C++, object oriented interface for interacting with RS-232 like devices on Linux and Windows. - - - William Woodall - - MIT - - http://wjwwood.github.com/serial/ - https://github.com/wjwwood/serial - https://github.com/wjwwood/serial/issues - - William Woodall - John Harrison - - catkin - - boost - - From be625f13991aa31b760209631e82c3288b16fcfb Mon Sep 17 00:00:00 2001 From: Dinesh Bolkensteyn Date: Tue, 12 Jul 2016 19:15:52 +0200 Subject: [PATCH 03/11] CMake: Increase min version to 2.8.8 for CMakePackageConfigHelpers --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6dd7f18..71ab4c2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.8.3) +cmake_minimum_required(VERSION 2.8.8) project(serial) if(APPLE) From be3267b7cfe0b548b8b02cd66d895d548fcbd65a Mon Sep 17 00:00:00 2001 From: Dinesh Bolkensteyn Date: Tue, 12 Jul 2016 19:28:06 +0200 Subject: [PATCH 04/11] Travis: Install CMake 3.x --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index bc145be..179cd88 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,6 +6,9 @@ compiler: - gcc - clang install: + - sudo add-apt-repository ppa:george-edison55/cmake-3.x + - sudo apt-get update + - sudo apt-get upgrade - make install_deps - source setup.bash script: From d764d136fa5985af99453f7c2d0fd0994fc80ba3 Mon Sep 17 00:00:00 2001 From: Dinesh Bolkensteyn Date: Tue, 12 Jul 2016 19:47:54 +0200 Subject: [PATCH 05/11] Travis: Say yes to add-apt-repository --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 179cd88..5812bba 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,7 @@ compiler: - gcc - clang install: - - sudo add-apt-repository ppa:george-edison55/cmake-3.x + - sudo add-apt-repository --yes ppa:george-edison55/cmake-3.x - sudo apt-get update - sudo apt-get upgrade - make install_deps From e685261f5bb340f0903cddd3541d9873a3bc1697 Mon Sep 17 00:00:00 2001 From: Dinesh Bolkensteyn Date: Tue, 12 Jul 2016 19:59:45 +0200 Subject: [PATCH 06/11] Travis: Say yes to apt-get as well... --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5812bba..a20ab21 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,8 +7,8 @@ compiler: - clang install: - sudo add-apt-repository --yes ppa:george-edison55/cmake-3.x - - sudo apt-get update - - sudo apt-get upgrade + - sudo apt-get update --yes + - sudo apt-get upgrade --yes - make install_deps - source setup.bash script: From b94e7dd1359a7d6d3cd03e4e019b472f923233bf Mon Sep 17 00:00:00 2001 From: Dinesh Bolkensteyn Date: Tue, 12 Jul 2016 20:48:57 +0200 Subject: [PATCH 07/11] Travis: Install CMake differently and support OS X --- .travis.yml | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index a20ab21..acb6555 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,9 +6,18 @@ compiler: - gcc - clang install: - - sudo add-apt-repository --yes ppa:george-edison55/cmake-3.x - - sudo apt-get update --yes - - sudo apt-get upgrade --yes + ############################################################################ + # Install a recent CMake (unless already installed on OS X) + # See http://stackoverflow.com/questions/33196136/travis-ci-update-cmake-using-the-packages-cache + ############################################################################ + - | + if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then + CMAKE_URL="http://www.cmake.org/files/v3.5/cmake-3.5.2-Linux-x86_64.tar.gz" + mkdir cmake && travis_retry wget --no-check-certificate --quiet -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C cmake + export PATH=${DEPS_DIR}/cmake/bin:${PATH} + else + if ! brew ls --version cmake &>/dev/null; then brew install cmake; fi + fi - make install_deps - source setup.bash script: From 189db8deef988d66146be4a35a6211800e30aced Mon Sep 17 00:00:00 2001 From: Dinesh Bolkensteyn Date: Mon, 18 Jul 2016 11:12:04 +0200 Subject: [PATCH 08/11] CMake: Keep compat only with same major version & remove CMakePackageConfigHelpers dependency --- CMakeLists.txt | 9 ++------- cmake/serialVersion.cmake | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+), 7 deletions(-) create mode 100644 cmake/serialVersion.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 71ab4c2..700444c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.8.8) +cmake_minimum_required(VERSION 2.8.3) project(serial) if(APPLE) @@ -62,12 +62,7 @@ install(FILES include/serial/serial.h include/serial/v8stdint.h ## Install CMake files install(EXPORT ${PROJECT_NAME}-targets DESTINATION ${INSTALL_CMAKE_DIR}) -include(CMakePackageConfigHelpers) -write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Version.cmake - VERSION 1.2.1 - COMPATIBILITY AnyNewerVersion) - -install(FILES ${CMAKE_SOURCE_DIR}/cmake/${PROJECT_NAME}Config.cmake ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Version.cmake +install(FILES ${CMAKE_SOURCE_DIR}/cmake/${PROJECT_NAME}Config.cmake ${CMAKE_SOURCE_DIR}/cmake/${PROJECT_NAME}Version.cmake DESTINATION ${INSTALL_CMAKE_DIR}) ## Tests diff --git a/cmake/serialVersion.cmake b/cmake/serialVersion.cmake new file mode 100644 index 0000000..cf8dbb5 --- /dev/null +++ b/cmake/serialVersion.cmake @@ -0,0 +1,21 @@ +set(PACKAGE_VERSION "1.2.1") + +if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + if(PACKAGE_VERSION MATCHES "^([0-9]+)\\.") + set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}") + else() + set(CVF_VERSION_MAJOR PACKAGE_VERSION) + endif() + + if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR) + set(PACKAGE_VERSION_COMPATIBLE TRUE) + else() + set(PACKAGE_VERSION_COMPATIBLE FALSE) + endif() + + if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) + endif() +endif() From 514accad7aeec6e95aa82a71416afc06e75c0b67 Mon Sep 17 00:00:00 2001 From: Dinesh Bolkensteyn Date: Mon, 18 Jul 2016 11:27:21 +0200 Subject: [PATCH 09/11] Travis: Disable tests temporarly --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index acb6555..a58eaac 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,4 +21,4 @@ install: - make install_deps - source setup.bash script: - - make && make test + - make From d6245ab474a69a83a6047ff543cd7ce72371a48d Mon Sep 17 00:00:00 2001 From: Dinesh Bolkensteyn Date: Mon, 18 Jul 2016 11:36:35 +0200 Subject: [PATCH 10/11] Travis: Don't install newer CMake version --- .travis.yml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/.travis.yml b/.travis.yml index a58eaac..8f89db6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,18 +6,6 @@ compiler: - gcc - clang install: - ############################################################################ - # Install a recent CMake (unless already installed on OS X) - # See http://stackoverflow.com/questions/33196136/travis-ci-update-cmake-using-the-packages-cache - ############################################################################ - - | - if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then - CMAKE_URL="http://www.cmake.org/files/v3.5/cmake-3.5.2-Linux-x86_64.tar.gz" - mkdir cmake && travis_retry wget --no-check-certificate --quiet -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C cmake - export PATH=${DEPS_DIR}/cmake/bin:${PATH} - else - if ! brew ls --version cmake &>/dev/null; then brew install cmake; fi - fi - make install_deps - source setup.bash script: From db7855ce6f1cb05b79bd44a8075245568da9f85e Mon Sep 17 00:00:00 2001 From: Dinesh Bolkensteyn Date: Mon, 18 Jul 2016 11:46:51 +0200 Subject: [PATCH 11/11] CMake: Fix typo in *Version.cmake filename --- CMakeLists.txt | 2 +- cmake/{serialVersion.cmake => serialConfigVersion.cmake} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename cmake/{serialVersion.cmake => serialConfigVersion.cmake} (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 700444c..c499567 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -62,7 +62,7 @@ install(FILES include/serial/serial.h include/serial/v8stdint.h ## Install CMake files install(EXPORT ${PROJECT_NAME}-targets DESTINATION ${INSTALL_CMAKE_DIR}) -install(FILES ${CMAKE_SOURCE_DIR}/cmake/${PROJECT_NAME}Config.cmake ${CMAKE_SOURCE_DIR}/cmake/${PROJECT_NAME}Version.cmake +install(FILES ${CMAKE_SOURCE_DIR}/cmake/${PROJECT_NAME}Config.cmake ${CMAKE_SOURCE_DIR}/cmake/${PROJECT_NAME}ConfigVersion.cmake DESTINATION ${INSTALL_CMAKE_DIR}) ## Tests diff --git a/cmake/serialVersion.cmake b/cmake/serialConfigVersion.cmake similarity index 100% rename from cmake/serialVersion.cmake rename to cmake/serialConfigVersion.cmake