#******************************************************************** # _ _ _ # _ __ | |_ _ | | __ _ | |__ ___ # | '__|| __|(_)| | / _` || '_ \ / __| # | | | |_ _ | || (_| || |_) |\__ \ # |_| \__|(_)|_| \__,_||_.__/ |___/ # # www.rt-labs.com # Copyright 2017 rt-labs AB, Sweden. # # This software is licensed under the terms of the BSD 3-clause # license. See the file LICENSE distributed with this software for # full license information. #*******************************************************************/ cmake_minimum_required (VERSION 3.14) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/tools") project (OSAL VERSION 0.1.0) include(GetGitRevision) # Default settings if this is the main project if (CMAKE_PROJECT_NAME STREQUAL OSAL) include(CTest) # Default to release build with debug info if (NOT CMAKE_BUILD_TYPE) set (CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE) endif (NOT CMAKE_BUILD_TYPE) # Default to installing in build directory if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX ${OSAL_BINARY_DIR}/install CACHE PATH "Default install path" FORCE) endif() message(STATUS "Current build type is: ${CMAKE_BUILD_TYPE}") message(STATUS "Current install path is: ${CMAKE_INSTALL_PREFIX}") message(STATUS "Building for ${CMAKE_SYSTEM_NAME}") endif() # Always use standard .o suffix set(CMAKE_C_OUTPUT_EXTENSION_REPLACE 1) set(CMAKE_CXX_OUTPUT_EXTENSION_REPLACE 1) # Generate version numbers configure_file ( version.h.in ${OSAL_BINARY_DIR}/src/version.h ) #------------------------------------------------------------------------ # Путь к папке с библиотеками set(INSTALL_PATH ${CMAKE_SOURCE_DIR}/../../libs) # Путь куда будут копиороваться собранная библиотека set(INSTALL_PATH_LIB ${INSTALL_PATH}/lib) if(SITARA) message("-- Building for cortex-a15 (Sitara)") set(SITARA_DEPOT ${CMAKE_SOURCE_DIR}/../../sitara_depot) set(INSTALL_PATH_LIB ${INSTALL_PATH_LIB}/arm_a15) include(${SITARA_DEPOT}/compile/sitara_compile_flags.cmake) else() set(INSTALL_PATH_LIB ${INSTALL_PATH_LIB}/x86_64) message("-- Building for x86") endif() # Путь куда будут копироваться h-файлы set(INSTALL_PATH_INC ${INSTALL_PATH}/include) #------------------------------------------------------------------------ # Add platform-dependent targets early, so they can be configured by # platform # Имя библиотеки set(LIB_NAME osal) # Для отладочной версии в конце добавляем d: osald if (CMAKE_BUILD_TYPE STREQUAL Debug) set(LIB_NAME ${LIB_NAME}d) endif() add_library(${LIB_NAME} "") # Use position independent code if platform supports shared libraries get_property(SUPPORTS_SHARED GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS) if (SUPPORTS_SHARED) set_property(TARGET ${LIB_NAME} PROPERTY POSITION_INDEPENDENT_CODE ON) endif() #if (CMAKE_PROJECT_NAME STREQUAL OSAL AND BUILD_TESTING) # add_executable(osal_test "") #endif() # Platform configuration include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/${CMAKE_SYSTEM_NAME}.cmake) set_target_properties (${LIB_NAME} PROPERTIES C_STANDARD 99 ) target_compile_features(${LIB_NAME} PUBLIC c_std_99) target_include_directories(${LIB_NAME} PUBLIC $ $ PRIVATE src ${OSAL_BINARY_DIR}/src ) install( TARGETS ${LIB_NAME} EXPORT OsalTargets DESTINATION ${INSTALL_PATH_LIB} ) install( EXPORT OsalTargets FILE OsalTargets.cmake DESTINATION cmake ) include(CMakePackageConfigHelpers) configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/OsalConfig.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/OsalConfig.cmake" INSTALL_DESTINATION cmake NO_SET_AND_CHECK_MACRO NO_CHECK_REQUIRED_COMPONENTS_MACRO ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/OsalConfig.cmake DESTINATION cmake ) install(FILES include/osal.h include/osal_log.h DESTINATION ${INSTALL_PATH_INC} ) #if (CMAKE_PROJECT_NAME STREQUAL OSAL AND BUILD_TESTING) # add_subdirectory (test) # include(AddGoogleTest) # add_gtest(osal_test) #endif() # Doxygen configuration cmake_policy(SET CMP0057 NEW) find_package(Doxygen) if (CMAKE_PROJECT_NAME STREQUAL OSAL AND DOXYGEN_FOUND) set(DOXYGEN_OPTIMIZE_OUTPUT_FOR_C YES) set(DOXYGEN_TYPEDEF_HIDES_STRUCT YES) set(DOXYGEN_EXTRACT_STATIC YES) set(DOXYGEN_STRIP_CODE_COMMENTS NO) set(DOXYGEN_MACRO_EXPANSION YES) set(DOXYGEN_EXPAND_ONLY_PREDEF YES) set(DOXYGEN_PREDEFINED OSAL_EXPORT) set(DOXYGEN_EXPAND_AS_DEFINED OSAL_EXPORT) set(DOXYGEN_COLLABORATION_GRAPH NO) set(DOXYGEN_INCLUDE_GRAPH NO) set(DOXYGEN_INCLUDED_BY_GRAPH NO) set(DOXYGEN_RECURSIVE NO) set(DOXYGEN_USE_MDFILE_AS_MAINPAGE README.md) doxygen_add_docs(docs README.md include src ) endif()