Skip to content

Commit

Permalink
Reformat cmake
Browse files Browse the repository at this point in the history
  • Loading branch information
Alexis Lopez Zubieta committed Mar 7, 2019
1 parent 87417d6 commit b7627ef
Show file tree
Hide file tree
Showing 23 changed files with 212 additions and 259 deletions.
11 changes: 5 additions & 6 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,11 @@ addons:
- gcovr
- lcov

install:
- git clone https://github.com/azubieta/python-codacy-coverage.git
- pushd python-codacy-coverage; sudo python setup.py install; popd;
script:
- cmake . -DCMAKE_BUILD_TYPE=Debug -DXDG_UTILS_TESTS=On -DXDG_UTILS_CODE_COVERAGE=On
- make
- ctest -V
- make code_coverage_report
- make ctest_coverage -j${nproc}

after_success:
- git clone https://github.com/azubieta/python-codacy-coverage.git --depth 1
- pushd python-codacy-coverage; sudo python setup.py install; popd;
- python-codacy-coverage -vr code_coverage_report.xml -l cpp
44 changes: 14 additions & 30 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,44 +1,28 @@
cmake_minimum_required(VERSION 3.0)
project(
XdgUtils
VERSION 0.1.1
DESCRIPTION "Freedesktop standards C++ implementation"
LANGUAGES CXX
)
project(XdgUtils)
set(PROJECT_VERSION 0.1.1)
set(PROJECT_DESCRIPTION "Freedesktop standards C++ implementation")
set(PROJECT_HOMEPAGE_URL https://github.com/azubieta/xdg-utils-cxx)

## Configuration options
option(XDG_UTILS_TESTS "Build tests" OFF)
option(XDG_UTILS_CODE_COVERAGE "Build Code Coverage report" OFF)

## Modules
option(XDG_UTILS_DESKTOP_ENTRY "Build Desktop Entry" ON)
option(XDG_UTILS_BASE_DIR "Build Base Directory" ON)

# Instalation paths
set(XDG_UTILS_BIN_DIR bin CACHE PATH "Binaries install directory")
set(XDG_UTILS_LIB_DIR lib/XdgUtils CACHE PATH "Libraries install directory")
set(XDG_UTILS_HEADER_DIR include CACHE PATH "Public Headers install directory")
set(XDG_UTILS_CMAKE_DIR lib/cmake/XdgUtils CACHE PATH "Cmake configs install directory")

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/cmake)

## Global variables

# Request C++-11
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# Sources
if(XDG_UTILS_CODE_COVERAGE)
message("Configuring project for code coverage mesurement")
include(CodeCoverage)
append_coverage_compiler_flags()
endif()
# Set GNU Install Dirs variables
include(GNUInstallDirs)

add_subdirectory(src)
# Prepare code coverage
include(cmake/code_coverge_config.cmake)

include(ConfigurePackage)
# Sources
add_subdirectory(src)

# Tests
if(XDG_UTILS_TESTS)
enable_testing()
add_subdirectory(tests)
endif()
enable_testing()
add_subdirectory(tests)
24 changes: 0 additions & 24 deletions azure-pipelines.yml

This file was deleted.

17 changes: 0 additions & 17 deletions cmake/ConfigurePackage.cmake

This file was deleted.

10 changes: 0 additions & 10 deletions cmake/XdgUtilsConfig.cmake.in

This file was deleted.

File renamed without changes.
4 changes: 4 additions & 0 deletions cmake/code_coverge_config.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
if(XDG_UTILS_CODE_COVERAGE)
include(${CMAKE_CURRENT_LIST_DIR}/code_coverage_utils.cmake)
append_coverage_compiler_flags()
endif()
22 changes: 22 additions & 0 deletions cmake/generate_cmake_package.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
include(CMakePackageConfigHelpers)

configure_package_config_file(
"${PROJECT_SOURCE_DIR}/package/cmake/XdgUtilsConfig.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/XdgUtilsConfig.cmake"
INSTALL_DESTINATION ${PROJECT_INSTALL_CMAKEDIR}
PATH_VARS PROJECT_INSTALL_LIBDIR PROJECT_INSTALL_INCLUDEDIR
)

write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/XdgUtilsConfigVersion.cmake"
VERSION ${PROJECT_VERSION}
COMPATIBILITY AnyNewerVersion
)

install(
FILES
"${CMAKE_CURRENT_BINARY_DIR}/XdgUtilsConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/XdgUtilsConfigVersion.cmake"
DESTINATION ${PROJECT_INSTALL_CMAKEDIR}
COMPONENT ${PROJECT_COMPONENT_DEVEL}
)

58 changes: 58 additions & 0 deletions cmake/module_utils.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
function(add_xdgutils_module name srcs)
message("-- Creating module target: ${name}")
add_library(${name} STATIC ${srcs})

message("-- Creating module target alias: ${PROJECT_NAME}::${name}")
add_library(${PROJECT_NAME}::${name} ALIAS ${name})

# Configure target properties
target_include_directories(
${name}
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
PUBLIC $<BUILD_INTERFACE:${PROJECT_INCLUDEDIR}>
PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)

set_target_properties(
${name} PROPERTIES
PREFIX "lib${PROJECT_NAME}"
PUBLIC INTERFACE_LINK_DIRECTORIES $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
PUBLIC INTERFACE_LINK_DIRECTORIES $<INSTALL_INTERFACE:${PROJECT_INSTALL_LIBDIR}>
)
endfunction()

##
# Install module resources
##
SET(PROJECT_INSTALL_LIBS "" CACHE INTERNAL "Libs binaries")
function(install_xdgutils_module name)
# Install binaries
install(
TARGETS ${name}
EXPORT ${name}
LIBRARY DESTINATION ${PROJECT_INSTALL_LIBDIR} COMPONENT ${name}
ARCHIVE DESTINATION ${PROJECT_INSTALL_LIBDIR} COMPONENT ${name}
)

# Install library headers
install(
DIRECTORY ${PROJECT_INCLUDEDIR}/${PROJECT_NAME}/${name}
DESTINATION ${PROJECT_INSTALL_INCLUDEDIR}
COMPONENT ${name}
)

# Build cmake target config files
export(EXPORT ${name} NAMESPACE ${PROJECT_NAME}::)

# Install cmake target config files
install(
EXPORT ${name}
FILE "${PROJECT_NAME}${name}.cmake"
NAMESPACE ${PROJECT_NAME}::
DESTINATION ${PROJECT_INSTALL_CMAKEDIR}
COMPONENT ${name}
)

# Register library
SET(PROJECT_INSTALL_LIBS ${PROJECT_INSTALL_LIBS} "${PROJECT_NAME}${name}" CACHE INTERNAL "Libs binaries")
endfunction()
25 changes: 25 additions & 0 deletions package/cmake/XdgUtilsConfig.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
set(@PROJECT_NAME@_VERSION @PROJECT_VERSION@)

@PACKAGE_INIT@

set_and_check(XDGUTILS_LIBDIR @PACKAGE_PROJECT_INSTALL_LIBDIR@)
set_and_check(XDGUTILS_INCLUDE_DIRECTORIES @PACKAGE_PROJECT_INSTALL_INCLUDEDIR@)

set(XDGUTILS_LINK_LIBRARIES @PROJECT_INSTALL_LIBS@)

## Try to find the required components
foreach(comp ${@PROJECT_NAME@_FIND_COMPONENTS})
set(COMPONENT_TARGETS_FILE "${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@${comp}.cmake")
if(EXISTS "${COMPONENT_TARGETS_FILE}")
set(@PROJECT_NAME@_${comp}_FOUND TRUE)
include("${COMPONENT_TARGETS_FILE}")

message(STATUS "@PROJECT_NAME@::${comp} found")
else()
if(@PROJECT_NAME@_FIND_REQUIRED_${comp})
message(FATAL_ERROR "@PROJECT_NAME@::${comp} not found !")
endif()
endif()
endforeach()

check_required_components(@PROJECT_NAME@)
46 changes: 2 additions & 44 deletions src/BaseDir/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,44 +1,2 @@
project(BaseDir)

add_library(
${PROJECT_NAME} STATIC
BaseDir.cpp
)

set(PUBLIC_HEADERS_DIR "${XdgUtils_SOURCE_DIR}/include")

target_include_directories(
${PROJECT_NAME}
PRIVATE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>

PUBLIC $<BUILD_INTERFACE:${PUBLIC_HEADERS_DIR}>
PUBLIC $<INSTALL_INTERFACE:${XDG_UTILS_HEADER_DIR}> # <prefix>/include/XdgUtils
)

add_library(XdgUtils::BaseDir ALIAS ${PROJECT_NAME})

# Install library headers
install(
DIRECTORY ${PUBLIC_HEADERS_DIR}/XdgUtils/BaseDir
DESTINATION ${XDG_UTILS_HEADER_DIR}/XdgUtils
COMPONENT BaseDir-Dev
)

# Install library files
install(
TARGETS ${PROJECT_NAME}
EXPORT BaseDir
ARCHIVE DESTINATION ${XDG_UTILS_LIB_DIR} COMPONENT BaseDir
PUBLIC_HEADER DESTINATION ${XDG_UTILS_HEADER_DIR}/XdgUtils/BaseDir COMPONENT BaseDir-Dev
)

# Install cmake config files
install(
EXPORT BaseDir
NAMESPACE XdgUtils::
DESTINATION ${XDG_UTILS_CMAKE_DIR}
COMPONENT BaseDir-Dev
)

# Expose the target to be used without installation
export(EXPORT BaseDir NAMESPACE XdgUtils::)
add_xdgutils_module(BaseDir BaseDir.cpp)
install_xdgutils_module(BaseDir)
23 changes: 17 additions & 6 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,18 @@
if(XDG_UTILS_DESKTOP_ENTRY)
add_subdirectory(DesktopEntry)
endif()
# Build variables
set(PROJECT_INCLUDEDIR ${PROJECT_SOURCE_DIR}/include)

if(XDG_UTILS_BASE_DIR)
add_subdirectory(BaseDir)
endif()
# Install variables
set(PROJECT_INSTALL_INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR}/XdgUtils)
set(PROJECT_INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR}/XdgUtils)
set(PROJECT_INSTALL_CMAKEDIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})

set(PROJECT_COMPONENT ${PROJECT_NAME})
set(PROJECT_COMPONENT_DEVEL ${PROJECT_NAME})

# Modules
include(${PROJECT_SOURCE_DIR}/cmake/module_utils.cmake)

add_subdirectory(DesktopEntry)
add_subdirectory(BaseDir)

include(${PROJECT_SOURCE_DIR}/cmake/generate_cmake_package.cmake)
11 changes: 4 additions & 7 deletions src/DesktopEntry/AST/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
add_library(
XdgUtilsDesktopEntryAST OBJECT OBJECT
AST.cpp
Group.cpp
Entry.cpp
Comment.cpp
Node.cpp)
set(srcs AST.cpp Group.cpp Entry.cpp Comment.cpp Node.cpp)

add_library(XdgUtilsDesktopEntryAST OBJECT ${srcs})
target_include_directories(XdgUtilsDesktopEntryAST PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
49 changes: 7 additions & 42 deletions src/DesktopEntry/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,55 +1,20 @@
project(DesktopEntry)
set(DesktopEntry_SOURCES_DIR ${CMAKE_CURRENT_SOURCE_DIR})

add_subdirectory(AST)
add_subdirectory(Reader)

add_library(
${PROJECT_NAME} STATIC
set(
srcs

DesktopEntry.cpp
DesktopEntryKeyPath.cpp
DesktopEntryKeyValue.cpp
DesktopEntryExecValue.cpp
DesktopEntryStringsValue.cpp

$<TARGET_OBJECTS:XdgUtilsDesktopEntryAST>
$<TARGET_OBJECTS:XdgUtilsDesktopEntryReader>
"$<TARGET_OBJECTS:XdgUtilsDesktopEntryAST>"
"$<TARGET_OBJECTS:XdgUtilsDesktopEntryReader>"
)

set(PUBLIC_HEADERS_DIR "${XdgUtils_SOURCE_DIR}/include")

target_include_directories(
${PROJECT_NAME}
PRIVATE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>

PUBLIC $<BUILD_INTERFACE:${PUBLIC_HEADERS_DIR}>
PUBLIC $<INSTALL_INTERFACE:${XDG_UTILS_HEADER_DIR}> # <prefix>/include/XdgUtils
)

add_library(XdgUtils::DesktopEntry ALIAS ${PROJECT_NAME})

# Install library headers
install(
DIRECTORY ${PUBLIC_HEADERS_DIR}/XdgUtils/DesktopEntry
DESTINATION ${XDG_UTILS_HEADER_DIR}/XdgUtils
COMPONENT BaseDir-Dev
)

# Install library files
install(
TARGETS ${PROJECT_NAME}
EXPORT DesktopEntry
ARCHIVE DESTINATION ${XDG_UTILS_LIB_DIR} COMPONENT DesktopEntry
PUBLIC_HEADER DESTINATION ${XDG_UTILS_HEADER_DIR}/XdgUtils/DesktopEntry COMPONENT DesktopEntry-Dev
)

# Install cmake config files
install(
EXPORT DesktopEntry
NAMESPACE XdgUtils::
DESTINATION ${XDG_UTILS_CMAKE_DIR}
COMPONENT DesktopEntry-Dev
)

# Expose the target to be used without installation
export(EXPORT DesktopEntry NAMESPACE XdgUtils::)
add_xdgutils_module(DesktopEntry "${srcs}")
install_xdgutils_module(DesktopEntry)
Loading

0 comments on commit b7627ef

Please sign in to comment.