diff --git a/CMakeLists.txt b/CMakeLists.txt
index 49270209..c6c7dbbe 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,31 +1,18 @@
-cmake_minimum_required(VERSION 2.8.3)
-project(serial)
+cmake_minimum_required(VERSION 3.16)
-# Find catkin
-find_package(catkin REQUIRED)
+# General setup
+project(serial
+ VERSION 1.2.1
+ LANGUAGES CXX
+ DESCRIPTION "Cross-platform, Serial Port library written in C++"
+ HOMEPAGE_URL "http://wjwwood.io/serial/"
+)
if(APPLE)
find_library(IOKIT_LIBRARY IOKit)
find_library(FOUNDATION_LIBRARY Foundation)
endif()
-if(UNIX AND NOT APPLE)
- # If Linux, add rt and pthread
- set(rt_LIBRARIES rt)
- set(pthread_LIBRARIES 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
@@ -47,7 +34,23 @@ else()
endif()
## Add serial library
+set(serial_HEADERS
+ include/serial/serial.h
+ include/serial/v8stdint.h
+)
+# Build, link and install main library
+if(NOT DEFINED CMAKE_POSITION_INDEPENDENT_CODE)
+ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+endif()
add_library(${PROJECT_NAME} ${serial_SRCS})
+set_target_properties(${PROJECT_NAME} PROPERTIES
+ VERSION ${PROJECT_VERSION}
+ SOVERSION 1
+ PUBLIC_HEADER "${serial_HEADERS}"
+)
+
+target_include_directories(${PROJECT_NAME} PUBLIC include)
+
if(APPLE)
target_link_libraries(${PROJECT_NAME} ${FOUNDATION_LIBRARY} ${IOKIT_LIBRARY})
elseif(UNIX)
@@ -66,16 +69,27 @@ include_directories(include)
## Install executable
install(TARGETS ${PROJECT_NAME}
- ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
- LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
- RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION}
+ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib
+ RUNTIME DESTINATION bin
+ PUBLIC_HEADER DESTINATION include/${PROJECT_NAME}
)
## Install headers
install(FILES include/serial/serial.h include/serial/v8stdint.h
- DESTINATION ${CATKIN_GLOBAL_INCLUDE_DESTINATION}/serial)
+ DESTINATION include/serial)
+
+## Install CMake config
+install(FILES cmake/serialConfig.cmake
+ DESTINATION share/serial/cmake)
+
+
+## Install package.xml
+install(FILES package.xml
+ DESTINATION share/serial)
## Tests
-if(CATKIN_ENABLE_TESTING)
+include(CTest)
+if(BUILD_TESTING)
add_subdirectory(tests)
endif()
diff --git a/Makefile b/Makefile
index e1720722..0f49ddc7 100644
--- a/Makefile
+++ b/Makefile
@@ -56,7 +56,7 @@ test:
@mkdir -p build
cd build && cmake $(CMAKE_FLAGS) ..
ifneq ($(MAKE),)
- cd build && $(MAKE) run_tests
+ cd build && $(MAKE) all test
else
- cd build && make run_tests
+ cd build && make all test
endif
diff --git a/cmake/serialConfig.cmake b/cmake/serialConfig.cmake
new file mode 100644
index 00000000..e90bdf69
--- /dev/null
+++ b/cmake/serialConfig.cmake
@@ -0,0 +1,3 @@
+get_filename_component(SERIAL_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+set(SERIAL_INCLUDE_DIRS "${SERIAL_CMAKE_DIR}/../../../include")
+find_library(SERIAL_LIBRARIES serial PATHS ${SERIAL_CMAKE_DIR}/../../../lib/serial)
diff --git a/package.xml b/package.xml
index 959f9b87..a63b88ab 100644
--- a/package.xml
+++ b/package.xml
@@ -19,6 +19,13 @@
William Woodall
John Harrison
- catkin
+ cmake
+
+
+ gtest
+
+
+ cmake
+
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index ac9a4214..db3f7de0 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,12 +1,18 @@
if(UNIX)
- catkin_add_gtest(${PROJECT_NAME}-test unix_serial_tests.cc)
- target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME})
+ find_package(GTest REQUIRED)
+
+ add_executable(${PROJECT_NAME}-test unix_serial_tests.cc)
+ target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME} GTest::GTest)
if(NOT APPLE)
target_link_libraries(${PROJECT_NAME}-test util)
endif()
+ add_test("${PROJECT_NAME}-test-gtest" ${PROJECT_NAME}-test)
if(NOT APPLE) # these tests are unreliable on macOS
- catkin_add_gtest(${PROJECT_NAME}-test-timer unit/unix_timer_tests.cc)
- target_link_libraries(${PROJECT_NAME}-test-timer ${PROJECT_NAME})
+ add_executable(${PROJECT_NAME}-test-timer unit/unix_timer_tests.cc)
+ target_link_libraries(${PROJECT_NAME}-test-timer ${PROJECT_NAME} GTest::GTest)
+ add_test("${PROJECT_NAME}-test-timer-gtest" ${PROJECT_NAME}-test-timer)
endif()
+ # Boost is only required for tests/proof_of_concepts which are not enabled by default
+ # find_package(Boost REQUIRED)
endif()