|
@@ -0,0 +1,66 @@
|
|
|
|
+project(ubxproto C)
|
|
|
|
+cmake_minimum_required (VERSION 2.8)
|
|
|
|
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
|
|
|
+
|
|
|
|
+set(UBXPROTO_VERSION 0.14.0)
|
|
|
|
+set(INSTALL_LIB_DIR ${INSTALL_LIB_DIR} CACHE PATH "Installation directory for libraries")
|
|
|
|
+set(INSTALL_INCLUDE_DIR "${INSTALL_INCLUDE_DIR}/ubxproto")
|
|
|
|
+
|
|
|
|
+#Define include paths
|
|
|
|
+include_directories(SYSTEM ${CMAKE_CURRENT_SOURCE_DIR})
|
|
|
|
+
|
|
|
|
+#Set sources
|
|
|
|
+set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/ubx.c)
|
|
|
|
+
|
|
|
|
+#Compile object files for both shared and static libraries
|
|
|
|
+add_library(ubxprotoobjects OBJECT ${SOURCES})
|
|
|
|
+
|
|
|
|
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
|
|
|
|
+
|
|
|
|
+set(PUBLIC_HEADER ${CMAKE_CURRENT_SOURCE_DIR}/ubxaid.h
|
|
|
|
+ ${CMAKE_CURRENT_SOURCE_DIR}/ubxcfg.h
|
|
|
|
+ ${CMAKE_CURRENT_SOURCE_DIR}/ubx.h
|
|
|
|
+ ${CMAKE_CURRENT_SOURCE_DIR}/ubxlog.h
|
|
|
|
+ ${CMAKE_CURRENT_SOURCE_DIR}/ubxmessage.h
|
|
|
|
+ ${CMAKE_CURRENT_SOURCE_DIR}/ubxmon.h
|
|
|
|
+ ${CMAKE_CURRENT_SOURCE_DIR}/ubxrxm.h
|
|
|
|
+ ${CMAKE_CURRENT_SOURCE_DIR}/ubxutils.h)
|
|
|
|
+
|
|
|
|
+#Static library target
|
|
|
|
+add_library(ubxprotostatic STATIC $<TARGET_OBJECTS:ubxprotoobjects>)
|
|
|
|
+set_target_properties(ubxprotostatic PROPERTIES OUTPUT_NAME ubxproto)
|
|
|
|
+set_target_properties(ubxprotostatic PROPERTIES LINKER_LANGUAGE C)
|
|
|
|
+set_target_properties(ubxprotostatic PROPERTIES PUBLIC_HEADER "${PUBLIC_HEADER}")
|
|
|
|
+set(PROJECT_TARGETS ubxprotostatic)
|
|
|
|
+
|
|
|
|
+#Shared library target
|
|
|
|
+add_library(ubxprotoshared SHARED $<TARGET_OBJECTS:ubxprotoobjects>)
|
|
|
|
+set_target_properties(ubxprotoshared PROPERTIES LINKER_LANGUAGE C)
|
|
|
|
+set_target_properties(ubxprotoshared PROPERTIES OUTPUT_NAME ubxproto)
|
|
|
|
+set_target_properties(ubxprotoshared PROPERTIES SOVERSION ${UBXPROTO_VERSION})
|
|
|
|
+set(PROJECT_TARGETS ${PROJECT_TARGETS} ubxprotoshared)
|
|
|
|
+
|
|
|
|
+set(PROJECT_LIBS ubxproto)
|
|
|
|
+
|
|
|
|
+find_package(Doxygen)
|
|
|
|
+if(DOXYGEN_FOUND)
|
|
|
|
+ set(DOXYGEN_INPUT ${CMAKE_SOURCE_DIR})
|
|
|
|
+ set(DOXYGEN_OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/doc")
|
|
|
|
+ add_custom_target(doc COMMAND ${DOXYGEN_EXECUTABLE} ubxproto.doxyconf
|
|
|
|
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
|
|
+ COMMENT "Generating doxygen documenation")
|
|
|
|
+else(DOXYGEN_FOUND)
|
|
|
|
+ message(STATUS "WARNING: Doxygen not found - Reference manual will not be created")
|
|
|
|
+endif(DOXYGEN_FOUND)
|
|
|
|
+
|
|
|
|
+install(TARGETS ${PROJECT_TARGETS}
|
|
|
|
+ EXPORT ${PROJECT_NAME}Targets
|
|
|
|
+ ARCHIVE DESTINATION "${SYSROOT}/${PREFIX}/${INSTALL_LIB_DIR}" COMPONENT staticlib
|
|
|
|
+ LIBRARY DESTINATION "${SYSROOT}/${PREFIX}/${INSTALL_LIB_DIR}" COMPONENT sharedlib
|
|
|
|
+ PUBLIC_HEADER DESTINATION "${SYSROOT}/${INSTALL_INCLUDE_DIR}"
|
|
|
|
+ COMPONENT dev
|
|
|
|
+ )
|
|
|
|
+install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/doc" DESTINATION "${SYSROOT}/${PREFIX}/${INSTALL_DOC_DIR}/${PROJECT_NAME}")
|
|
|
|
+
|
|
|
|
+#Generate cmake find library addtion
|
|
|
|
+include(CMakeGen)
|