drone-test/CMakeLists.txt

126 lines
3.8 KiB
CMake

# -------------------------------
# SPDX-License-Identifier: ISC
#
# Copyright © 2020 Daniel Wolf <<nephatrine@gmail.com>>
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
# -------------------------------
cmake_minimum_required(VERSION 3.9)
project(HelloTest LANGUAGES CXX)
# =============================
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_BINARY_DIR}")
file(DOWNLOAD "https://code.nephatrine.net/nephatrine/nxbuild/raw/branch/master/tools/NXClient.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/NXClient.cmake")
include(NXClient)
include(NXBuild)
include(FeatureSummary)
include(FindPkgConfig)
# =============================
# Source Files
nx_add_target(
HELLO_LIBS Hello LIBRARY
SOURCES "src/HelloLib/HelloLib.cpp" "include/HelloLib/HelloLib.hpp"
GENERATE PUBLIC "include/HelloLib/HelloExports.hpp"
INCLUDES PUBLIC include
WORKSPACE Hello
ABI 1.0.0 SameMajorVersion)
list(GET HELLO_LIBS 0 HELLO_LIB)
nx_add_target(
HELLO_APILIBS HelloAPI MODAPI
SOURCES INTERFACE "include/HelloAPI/HelloAPI.hpp"
GENERATE INTERFACE "include/HelloAPI/HelloExports.hpp" "include/HelloAPI/HelloVersion.hpp"
INCLUDES INTERFACE include
GROUP HelloTest
API 1.0.0 SameMajorVersion)
list(GET HELLO_APILIBS 0 HELLO_API)
nx_add_target(
HELLO_PLUGINS HelloPlugin MODULE
SOURCES "src/HelloPlugin/HelloPlugin.cpp"
DEPENDS ${HELLO_LIB} ${HELLO_API}
DEFINE_SYMBOL PROVIDES_HELLOAPI
STATIC_DEFINE HARDLINK_HELLOAPI
GROUP plugin)
list(GET HELLO_PLUGINS 0 HELLO_PLUGIN)
get_target_property(sPluginType "${HELLO_PLUGIN}" TYPE)
if(NOT sPluginType STREQUAL "MODULE_LIBRARY")
set(HELLO_STATIC "${HELLO_PLUGIN}")
elseif(NOT HELLO_PLUGINS STREQUAL HELLO_PLUGIN)
list(GET HELLO_PLUGINS 1 HELLO_STATIC)
endif()
if(NOT DEFINED HELLO_STATIC OR NOT HELLO_PLUGIN STREQUAL HELLO_STATIC)
nx_add_target(
HELLO_APPS Hello APPLICATION
SOURCES "src/Hello.main.cpp"
DEPENDS ${HELLO_LIB} ${HELLO_API} ${CMAKE_DL_LIBS}
GROUP HelloTest)
endif()
if(DEFINED HELLO_STATIC)
nx_add_target(
HELLO_APPS HelloStatic APPLICATION
SOURCES "src/Hello.main.cpp"
DEPENDS ${HELLO_LIB} ${HELLO_STATIC}
GROUP HelloTest)
endif()
# =============================
# Maintain Formatting Standards
foreach(sLibrary ${HELLO_LIBS})
nx_add_test(
HELLO_TESTS test-${sLibrary}
SOURCES "tests/HelloLib.cpp"
DEPENDS ${sLibrary})
endforeach()
foreach(sLibrary ${HELLO_PLUGINS})
if(sLibrary STREQUAL HELLO_PLUGIN AND (NOT DEFINED HELLO_STATIC OR NOT sLibrary STREQUAL HELLO_STATIC))
nx_add_test(
HELLO_TESTS test-${sLibrary}
SOURCES "tests/HelloPlugin.cpp"
DEPENDS ${HELLO_API} ${CMAKE_DL_LIBS})
else()
nx_add_test(
HELLO_TESTS test-${sLibrary}
SOURCES "tests/HelloPlugin.cpp"
DEPENDS ${HELLO_STATIC})
endif()
endforeach()
# =============================
# Maintain Formatting Standards
nx_clang_format()
nx_cmake_format()
# =============================
# Install & Package
nx_install()
nx_package(CONTACT "Daniel Wolf <nephatrine@gmail.com>" RPM LICENSE "ISC")
# =============================
_endproject()