initial commit
continuous-integration/drone/push Build is failing
Details
continuous-integration/drone/push Build is failing
Details
This commit is contained in:
parent
b0979bbdb7
commit
18b24dfb77
|
@ -57,6 +57,7 @@ IncludeCategories:
|
|||
Priority: 1
|
||||
IncludeIsMainRegex: '$'
|
||||
IndentCaseLabels: true
|
||||
IndentPPDirectives: AfterHash
|
||||
IndentWidth: 4
|
||||
IndentWrappedFunctionNames: false
|
||||
JavaScriptQuotes: Leave
|
||||
|
|
224
.cmake-format
224
.cmake-format
|
@ -3,7 +3,7 @@
|
|||
# General Formatting Options
|
||||
# --------------------------
|
||||
# How wide to allow formatted cmake files
|
||||
line_width = 200
|
||||
line_width = 140
|
||||
|
||||
# How many spaces to tab for indent
|
||||
tab_size = 4
|
||||
|
@ -54,15 +54,227 @@ keyword_case = 'unchanged'
|
|||
|
||||
# Specify structure for custom cmake functions
|
||||
additional_commands = {
|
||||
"foo": {
|
||||
"nx_add_files": {
|
||||
"flags": [
|
||||
"BAR",
|
||||
"BAZ"
|
||||
"APPLICATION",
|
||||
"APPLICATION_DEBUG",
|
||||
"CMAKE",
|
||||
"CONFIGURATION",
|
||||
"DAEMON",
|
||||
"DAEMON_DEBUG",
|
||||
"DEVBIN",
|
||||
"DEVDOC",
|
||||
"DEVRES",
|
||||
"DOCUMENTATION",
|
||||
"EXECUTABLE",
|
||||
"EXECUTABLE_DEBUG",
|
||||
"EXPORT",
|
||||
"HEADERS",
|
||||
"LIBDEPS",
|
||||
"MODRES",
|
||||
"MODULE",
|
||||
"MODULE_DEBUG",
|
||||
"RESOURCES",
|
||||
"SHARED",
|
||||
"SHARED_DEBUG",
|
||||
"SOURCES",
|
||||
"STATIC"
|
||||
],
|
||||
"kwargs": {
|
||||
"HEADERS": "*",
|
||||
"DIRS": "*",
|
||||
"FILES": "*",
|
||||
"GROUP": "*",
|
||||
"GROUP_INSTALL": "*"
|
||||
}
|
||||
},
|
||||
"nx_add_target": {
|
||||
"flags": [
|
||||
"APPLICATION",
|
||||
"DAEMON",
|
||||
"EXECUTABLE",
|
||||
"HEADERS",
|
||||
"LIBRARY",
|
||||
"MODAPI",
|
||||
"MODULE",
|
||||
"OBJECTS",
|
||||
"SHARED",
|
||||
"STATIC",
|
||||
"TEST"
|
||||
],
|
||||
"kwargs": {
|
||||
"ABI": "*",
|
||||
"API": "*",
|
||||
"CFLAGS": "*",
|
||||
"CXXFLAGS": "*",
|
||||
"DEFINES": "*",
|
||||
"DEFINE_SYMBOL": "*",
|
||||
"DEPENDS": "*",
|
||||
"FEATURES": "*",
|
||||
"GENERATE": "*",
|
||||
"GENERATE_EXPORT": "*",
|
||||
"GENERATE_VERSION": "*",
|
||||
"GROUP": "*",
|
||||
"GROUP_EXPORT": "*",
|
||||
"GROUP_INSTALL": "*",
|
||||
"INCLUDES": "*",
|
||||
"ISSUES": "*",
|
||||
"LDFLAGS": "*",
|
||||
"LIBTOOL": "*",
|
||||
"OUTPUT_NAME": "*",
|
||||
"SOURCES": "*",
|
||||
"DEPENDS": "*"
|
||||
"STATIC_DEFINE": "*",
|
||||
"SUMMARY": "*",
|
||||
"VERSION": "*",
|
||||
"WEBSITE": "*",
|
||||
"WORKSPACE": "*"
|
||||
}
|
||||
},
|
||||
"nx_add_test": {
|
||||
"flags": [
|
||||
"EXECUTABLE",
|
||||
"TEST"
|
||||
],
|
||||
"kwargs": {
|
||||
"CFLAGS": "*",
|
||||
"COMMAND": "*",
|
||||
"CXXFLAGS": "*",
|
||||
"DEFINES": "*",
|
||||
"DEPENDS": "*",
|
||||
"ENVIRONMENT": "*",
|
||||
"FEATURES": "*",
|
||||
"INCLUDES": "*",
|
||||
"LDFLAGS": "*",
|
||||
"SOURCES": "*",
|
||||
"WORKING_DIRECTORY": "*"
|
||||
}
|
||||
},
|
||||
"nx_generate_export_header": {
|
||||
"flags": [
|
||||
"DEFINE_NO_DEPRECATED"
|
||||
],
|
||||
"kwargs": {
|
||||
"BASE_NAME": "*",
|
||||
"CUSTOM_CONTENT_FROM_VARIABLE": "*",
|
||||
"DEFINE_SYMBOL": "*",
|
||||
"DEPRECATED_MACRO_NAME": "*",
|
||||
"EXPORT_FILE_NAME": "*",
|
||||
"EXPORT_MACRO_NAME": "*",
|
||||
"EXPORT_MACRO_CNAME": "*",
|
||||
"INCLUDE_GUARD_NAME": "*",
|
||||
"NO_DEPRECATED_MACRO_NAME": "*",
|
||||
"NO_EXPORT_MACRO_NAME": "*",
|
||||
"PREFIX_NAME": "*",
|
||||
"STATIC_DEFINE": "*"
|
||||
}
|
||||
},
|
||||
"nx_generate_vcs_header": {
|
||||
"kwargs": {
|
||||
"BASE_NAME": "*",
|
||||
"CUSTOM_CONTENT_FROM_VARIABLE": "*",
|
||||
"GIT_FILE_NAME": "*",
|
||||
"GIT_MACRO_NAME": "*",
|
||||
"INCLUDE_GUARD_NAME": "*",
|
||||
"PREFIX_NAME": "*"
|
||||
}
|
||||
},
|
||||
"nx_generate_version_header": {
|
||||
"kwargs": {
|
||||
"BASE_NAME": "*",
|
||||
"CUSTOM_CONTENT_FROM_VARIABLE": "*",
|
||||
"INCLUDE_GUARD_NAME": "*",
|
||||
"PREFIX_NAME": "*",
|
||||
"VERSION_FILE_NAME": "*",
|
||||
"VERSION_MACRO_NAME": "*"
|
||||
}
|
||||
},
|
||||
"nx_package": {
|
||||
"kwargs": {
|
||||
"CONTACT": "*",
|
||||
"DESCRIPTION_FILE": "*",
|
||||
"VENDOR": "*",
|
||||
"DEBIAN": "*",
|
||||
"RPM": "*"
|
||||
}
|
||||
},
|
||||
"nx_project_details": {
|
||||
"flags": [
|
||||
"LOCAL"
|
||||
],
|
||||
"kwargs": {
|
||||
"ABI": "*",
|
||||
"API": "*",
|
||||
"ISSUES": "*",
|
||||
"LIBTOOL": "*",
|
||||
"NAME": "*",
|
||||
"PACKAGE": "*",
|
||||
"SUMMARY": "*",
|
||||
"VERSION": "*",
|
||||
"WEBSITE": "*",
|
||||
"WORKSPACE": "*"
|
||||
}
|
||||
},
|
||||
"nx_target_compile_definitions": {
|
||||
"kwargs": {
|
||||
"INTERFACE": "*",
|
||||
"PRIVATE": "*",
|
||||
"PUBLIC": "*",
|
||||
"TARGET": "*"
|
||||
}
|
||||
},
|
||||
"nx_target_compile_features": {
|
||||
"kwargs": {
|
||||
"INTERFACE": "*",
|
||||
"PRIVATE": "*",
|
||||
"PUBLIC": "*",
|
||||
"TARGET": "*"
|
||||
}
|
||||
},
|
||||
"nx_target_compile_options": {
|
||||
"kwargs": {
|
||||
"INTERFACE": "*",
|
||||
"PRIVATE": "*",
|
||||
"PUBLIC": "*",
|
||||
"TARGET": "*"
|
||||
}
|
||||
},
|
||||
"nx_target_headers": {
|
||||
"kwargs": {
|
||||
"INTERFACE": "*",
|
||||
"PRIVATE": "*",
|
||||
"PUBLIC": "*",
|
||||
"TARGET": "*"
|
||||
}
|
||||
},
|
||||
"nx_target_include_directories": {
|
||||
"kwargs": {
|
||||
"INTERFACE": "*",
|
||||
"PRIVATE": "*",
|
||||
"PUBLIC": "*",
|
||||
"TARGET": "*"
|
||||
}
|
||||
},
|
||||
"nx_target_link_libraries": {
|
||||
"kwargs": {
|
||||
"INTERFACE": "*",
|
||||
"PRIVATE": "*",
|
||||
"PUBLIC": "*",
|
||||
"TARGET": "*"
|
||||
}
|
||||
},
|
||||
"nx_target_link_options": {
|
||||
"kwargs": {
|
||||
"INTERFACE": "*",
|
||||
"PRIVATE": "*",
|
||||
"PUBLIC": "*",
|
||||
"TARGET": "*"
|
||||
}
|
||||
},
|
||||
"nx_target_sources": {
|
||||
"kwargs": {
|
||||
"INTERFACE": "*",
|
||||
"PRIVATE": "*",
|
||||
"PUBLIC": "*",
|
||||
"TARGET": "*"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
96
.drone.yml
96
.drone.yml
|
@ -1,58 +1,70 @@
|
|||
---
|
||||
kind: pipeline
|
||||
type: exec
|
||||
name: openindiana
|
||||
type: docker
|
||||
name: default
|
||||
|
||||
platform:
|
||||
os: solaris
|
||||
os: linux
|
||||
arch: amd64
|
||||
|
||||
steps:
|
||||
- name: build-x86_64
|
||||
- name: build-linux
|
||||
image: nephatrine/nxbuilder:linux
|
||||
volumes:
|
||||
- name: packages
|
||||
path: /tmp/packages
|
||||
commands:
|
||||
- mkdir build-x86_64 && cd build-x86_64
|
||||
- CFLAGS="-m64" CXXFLAGS="-m64" cmake -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
|
||||
- mkdir build-linux && cd build-linux
|
||||
- CC=gcc CXX=g++ cmake -GNinja ..
|
||||
- cmake --build . --parallel
|
||||
- cmake --build . --parallel --target test
|
||||
- cmake --build . --parallel --target install
|
||||
- cmake --build . --parallel --target package
|
||||
- cmake -DNX_PACKAGE_AS_LATEST=1 ..
|
||||
- cmake --build . --parallel --target package
|
||||
- find /tmp/packages/Linux/ -type f -mmin -720 -name 'HelloTest*' | xargs --no-run-if-empty rm
|
||||
- find /tmp/packages/Linux/ -type f -mmin -720 -name 'libHello*' | xargs --no-run-if-empty rm
|
||||
- find /tmp/packages/Linux/ -type f -mtime +360 -name 'HelloTest*' | xargs --no-run-if-empty rm
|
||||
- find /tmp/packages/Linux/ -type f -mtime +360 -name 'libHello*' | xargs --no-run-if-empty rm
|
||||
- cp Linux/* /tmp/packages/Linux/
|
||||
- name: build-windows
|
||||
image: nephatrine/nxbuilder:mingw
|
||||
volumes:
|
||||
- name: packages
|
||||
path: /tmp/packages
|
||||
commands:
|
||||
- mkdir build-windows && cd build-windows
|
||||
- cmake -GNinja -DCMAKE_TOOLCHAIN_FILE=/usr/x86_64-w64-mingw32/toolchain.cmake ..
|
||||
- cmake --build . --parallel
|
||||
- cmake --build . --parallel --target install
|
||||
- cd ../test
|
||||
- mkdir build-x86_64 && cd build-x86_64
|
||||
- CFLAGS="-m64" CXXFLAGS="-m64" cmake -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
|
||||
- cmake --build . --parallel
|
||||
- cmake --build . --parallel --target package
|
||||
- name: build-i386
|
||||
- cmake -DNX_PACKAGE_AS_LATEST=1 ..
|
||||
- cmake --build . --parallel --target package
|
||||
- find /tmp/packages/Windows/ -type f -mmin -720 -name 'HelloTest*' | xargs --no-run-if-empty rm
|
||||
- find /tmp/packages/Windows/ -type f -mmin -720 -name 'libHello*' | xargs --no-run-if-empty rm
|
||||
- find /tmp/packages/Windows/ -type f -mtime +360 -name 'HelloTest*' | xargs --no-run-if-empty rm
|
||||
- find /tmp/packages/Windows/ -type f -mtime +360 -name 'libHello*' | xargs --no-run-if-empty rm
|
||||
- cp Windows/* /tmp/packages/Windows/
|
||||
- name: build-haiku
|
||||
image: nephatrine/nxbuilder:beos
|
||||
volumes:
|
||||
- name: packages
|
||||
path: /tmp/packages
|
||||
commands:
|
||||
- mkdir build-i386 && cd build-i386
|
||||
- CFLAGS="-m32" CXXFLAGS="-m32" cmake -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
|
||||
- mkdir build-beos && cd build-beos
|
||||
- cmake -GNinja -DCMAKE_TOOLCHAIN_FILE=/opt/haiku/cross-tools-x86_64/toolchain.cmake ..
|
||||
- cmake --build . --parallel
|
||||
- cmake --build . --parallel --target install
|
||||
- cd ../test
|
||||
- mkdir build-i386 && cd build-i386
|
||||
- CFLAGS="-m32" CXXFLAGS="-m32" cmake -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
|
||||
- cmake --build . --parallel
|
||||
- cmake --build . --parallel --target package
|
||||
depends_on:
|
||||
- build-x86_64
|
||||
- cmake -DNX_PACKAGE_AS_LATEST=1 ..
|
||||
- cmake --build . --parallel --target package
|
||||
- find /tmp/packages/Haiku/ -type f -mmin -720 -name 'HelloTest*' | xargs --no-run-if-empty rm
|
||||
- find /tmp/packages/Haiku/ -type f -mmin -720 -name 'libHello*' | xargs --no-run-if-empty rm
|
||||
- find /tmp/packages/Haiku/ -type f -mtime +360 -name 'HelloTest*' | xargs --no-run-if-empty rm
|
||||
- find /tmp/packages/Haiku/ -type f -mtime +360 -name 'libHello*' | xargs --no-run-if-empty rm
|
||||
- cp Haiku/* /tmp/packages/Haiku/
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
name: after
|
||||
|
||||
steps:
|
||||
- name: notify
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
avatar_url: https://files.nephatrine.net/Images/Buttons/Drone.png
|
||||
message: "Automated build of **{{repo.name}}:{{commit.branch}}** has returned [{{build.status}}]({{build.link}})."
|
||||
username: DroneCI
|
||||
webhook_id:
|
||||
from_secret: webhook-id
|
||||
webhook_token:
|
||||
from_secret: webhook-token
|
||||
|
||||
depends_on:
|
||||
- openindiana
|
||||
|
||||
trigger:
|
||||
status:
|
||||
- success
|
||||
- failure
|
||||
volumes:
|
||||
- name: packages
|
||||
host:
|
||||
path: /mnt/user/public/Packages
|
||||
|
|
13
CHANGELOG.md
13
CHANGELOG.md
|
@ -1,13 +0,0 @@
|
|||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [Unreleased]
|
||||
### Added
|
||||
- Utilities for creating documentation, more package formats, and test cases.
|
||||
|
||||
## [0.1.0] - 2020-03-22
|
||||
### Added
|
||||
- Initial Commit
|
135
CMakeLists.txt
135
CMakeLists.txt
|
@ -1,7 +1,7 @@
|
|||
# -------------------------------
|
||||
# SPDX-License-Identifier: ISC
|
||||
#
|
||||
# Copyright © 2019 Daniel Wolf <<nephatrine@gmail.com>>
|
||||
# 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
|
||||
|
@ -17,50 +17,109 @@
|
|||
# -------------------------------
|
||||
|
||||
cmake_minimum_required(VERSION 3.9)
|
||||
project(
|
||||
NXBuild
|
||||
VERSION "0.1.0"
|
||||
DESCRIPTION "CMake Helper Functions"
|
||||
LANGUAGES NONE)
|
||||
project(HelloTest LANGUAGES CXX)
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
||||
# =============================
|
||||
|
||||
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)
|
||||
|
||||
set(NXBUILD_PATH_INTERNAL "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
||||
set(NXBUILD_PATH_DATADIR "${CMAKE_CURRENT_SOURCE_DIR}/data")
|
||||
set(NXBUILD_PATH_HELPER "${CMAKE_CURRENT_SOURCE_DIR}/tools")
|
||||
include(FeatureSummary)
|
||||
include(FindPkgConfig)
|
||||
|
||||
file(RELATIVE_PATH NXBUILD_PATH_DATADIR_REL "/${NX_INSTALL_PATH_CMAKE}" "/${NX_INSTALL_PATH_DEVRES}")
|
||||
file(RELATIVE_PATH NXBUILD_PATH_HELPER_REL "/${NX_INSTALL_PATH_CMAKE}" "/${NX_INSTALL_PATH_DEVBIN}")
|
||||
configure_file("${NXBUILD_PATH_INTERNAL}/NXPaths.cmake.configure" "${CMAKE_CURRENT_BINARY_DIR}/NXPaths.cmake"
|
||||
@ONLY)
|
||||
# =============================
|
||||
# Source Files
|
||||
|
||||
nx_add_files(CMAKE
|
||||
"${NXBUILD_PATH_INTERNAL}/GitWatch.cmake"
|
||||
"${NXBUILD_PATH_INTERNAL}/NXBuild.cmake"
|
||||
"${NXBUILD_PATH_INTERNAL}/NXCheck.cmake"
|
||||
"${NXBUILD_PATH_INTERNAL}/NXClient.cmake"
|
||||
"${NXBUILD_PATH_INTERNAL}/NXFormat.cmake"
|
||||
"${NXBUILD_PATH_INTERNAL}/NXGenerate.cmake"
|
||||
"${NXBUILD_PATH_INTERNAL}/NXInstall.cmake"
|
||||
"${NXBUILD_PATH_INTERNAL}/NXPackage.cmake"
|
||||
"${NXBUILD_PATH_INTERNAL}/NXTarget.cmake"
|
||||
"${NXBUILD_PATH_INTERNAL}/NXTest.cmake"
|
||||
"${NXBUILD_PATH_INTERNAL}/SourceCopy.cmake"
|
||||
"${NXBUILD_PATH_INTERNAL}/cmake_uninstall.cmake.configure"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/NXPaths.cmake")
|
||||
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_files(DEVRES
|
||||
"${NXBUILD_PATH_DATADIR}/GenerateExportHeader.h.configure"
|
||||
"${NXBUILD_PATH_DATADIR}/GenerateVCSHeader.h.configure"
|
||||
"${NXBUILD_PATH_DATADIR}/GenerateVersionHeader.h.configure")
|
||||
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_cmake_format("${NXBUILD_PATH_INTERNAL}/NXPaths.cmake.configure")
|
||||
nx_install()
|
||||
nx_package()
|
||||
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)
|
||||
|
||||
foreach(sVar ${_NX_PROPOGATE_GLOBAL})
|
||||
if(DEFINED ${sVar})
|
||||
message(STATUS "${sVar}: ${${sVar}}")
|
||||
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()
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
= NXBuild
|
||||
|
||||
[![Build Status](https://ci.nephatrine.net/api/badges/nephatrine/nxbuild/status.svg?ref=refs/heads/master)](https://ci.nephatrine.net/nephatrine/nxbuild)
|
||||
|
||||
This is a set of CMake helper modules collecting frequently-used functions in one place.
|
||||
|
||||
This is intended purely for my own internal use and needs so I'm not sure anyone else will find anything here useful.
|
|
@ -1,141 +0,0 @@
|
|||
|
||||
# --------------------------
|
||||
# General Formatting Options
|
||||
# --------------------------
|
||||
# How wide to allow formatted cmake files
|
||||
line_width = 120
|
||||
|
||||
# How many spaces to tab for indent
|
||||
tab_size = 4
|
||||
|
||||
# If an argument group contains more than this many sub-groups (parg or kwarg
|
||||
# groups), then force it to a vertical layout.
|
||||
max_subgroups_hwrap = 2
|
||||
|
||||
# If a positinal argument group contains more than this many arguments, then
|
||||
# force it to a vertical layout.
|
||||
max_pargs_hwrap = 6
|
||||
|
||||
# If true, separate flow control names from their parentheses with a space
|
||||
separate_ctrl_name_with_space = False
|
||||
|
||||
# If true, separate function names from parentheses with a space
|
||||
separate_fn_name_with_space = False
|
||||
|
||||
# If a statement is wrapped to more than one line, than dangle the closing
|
||||
# parenthesis on it's own line.
|
||||
dangle_parens = False
|
||||
|
||||
# If the trailing parenthesis must be 'dangled' on it's on line, then align it
|
||||
# to this reference: `prefix`: the start of the statement, `prefix-indent`: the
|
||||
# start of the statement, plus one indentation level, `child`: align to the
|
||||
# column of the arguments
|
||||
dangle_align = 'prefix'
|
||||
|
||||
min_prefix_chars = 4
|
||||
|
||||
# If the statement spelling length (including space and parenthesis is larger
|
||||
# than the tab width by more than this amoung, then force reject un-nested
|
||||
# layouts.
|
||||
max_prefix_chars = 10
|
||||
|
||||
# If a candidate layout is wrapped horizontally but it exceeds this many lines,
|
||||
# then reject the layout.
|
||||
max_lines_hwrap = 2
|
||||
|
||||
# What style line endings to use in the output.
|
||||
line_ending = 'unix'
|
||||
|
||||
# Format command names consistently as 'lower' or 'upper' case
|
||||
command_case = 'canonical'
|
||||
|
||||
# Format keywords consistently as 'lower' or 'upper' case
|
||||
keyword_case = 'unchanged'
|
||||
|
||||
# Specify structure for custom cmake functions
|
||||
additional_commands = {
|
||||
"foo": {
|
||||
"flags": [
|
||||
"BAR",
|
||||
"BAZ"
|
||||
],
|
||||
"kwargs": {
|
||||
"HEADERS": "*",
|
||||
"SOURCES": "*",
|
||||
"DEPENDS": "*"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# A list of command names which should always be wrapped
|
||||
always_wrap = []
|
||||
|
||||
# If true, the argument lists which are known to be sortable will be sorted
|
||||
# lexicographicall
|
||||
enable_sort = True
|
||||
|
||||
# If true, the parsers may infer whether or not an argument list is sortable
|
||||
# (without annotation).
|
||||
autosort = False
|
||||
|
||||
# If a comment line starts with at least this many consecutive hash characters,
|
||||
# then don't lstrip() them off. This allows for lazy hash rulers where the first
|
||||
# hash char is not separated by space
|
||||
hashruler_min_length = 10
|
||||
|
||||
# A dictionary containing any per-command configuration overrides. Currently
|
||||
# only `command_case` is supported.
|
||||
per_command = {}
|
||||
|
||||
# A dictionary mapping layout nodes to a list of wrap decisions. See the
|
||||
# documentation for more information.
|
||||
layout_passes = {}
|
||||
|
||||
|
||||
# --------------------------
|
||||
# Comment Formatting Options
|
||||
# --------------------------
|
||||
# What character to use for bulleted lists
|
||||
bullet_char = '*'
|
||||
|
||||
# What character to use as punctuation after numerals in an enumerated list
|
||||
enum_char = '.'
|
||||
|
||||
# enable comment markup parsing and reflow
|
||||
enable_markup = False
|
||||
|
||||
# If comment markup is enabled, don't reflow the first comment block in each
|
||||
# listfile. Use this to preserve formatting of your copyright/license
|
||||
# statements.
|
||||
first_comment_is_literal = True
|
||||
|
||||
# If comment markup is enabled, don't reflow any comment block which matches
|
||||
# this (regex) pattern. Default is `None` (disabled).
|
||||
literal_comment_pattern = None
|
||||
|
||||
# Regular expression to match preformat fences in comments
|
||||
# default=r'^\s*([`~]{3}[`~]*)(.*)$'
|
||||
fence_pattern = '^\\s*([`~]{3}[`~]*)(.*)$'
|
||||
|
||||
# Regular expression to match rulers in comments
|
||||
# default=r'^\s*[^\w\s]{3}.*[^\w\s]{3}$'
|
||||
ruler_pattern = '^\\s*[^\\w\\s]{3}.*[^\\w\\s]{3}$'
|
||||
|
||||
# If true, then insert a space between the first hash char and remaining hash
|
||||
# chars in a hash ruler, and normalize it's length to fill the column
|
||||
canonicalize_hashrulers = True
|
||||
|
||||
|
||||
# ---------------------------------
|
||||
# Miscellaneous Options
|
||||
# ---------------------------------
|
||||
# If true, emit the unicode byte-order mark (BOM) at the start of the file
|
||||
emit_byteorder_mark = False
|
||||
|
||||
# Specify the encoding of the input file. Defaults to utf-8.
|
||||
input_encoding = 'utf-8'
|
||||
|
||||
# Specify the encoding of the output file. Defaults to utf-8. Note that cmake
|
||||
# only claims to support utf-8 so be careful when using anything else
|
||||
output_encoding = 'utf-8'
|
||||
|
|
@ -1,70 +0,0 @@
|
|||
# -------------------------------
|
||||
# SPDX-License-Identifier: ISC
|
||||
#
|
||||
# Copyright © 2019 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.
|
||||
# -------------------------------
|
||||
|
||||
get_filename_component(_sFindName "${CMAKE_CURRENT_LIST_FILE}" NAME)
|
||||
string(REPLACE "Find" "" _sFindName "${_sFindName}")
|
||||
string(REPLACE ".cmake" "" _sFindName "${_sFindName}")
|
||||
|
||||
# --------------
|
||||
# Registry Paths
|
||||
# --------------
|
||||
|
||||
set(_listRegistryPaths
|
||||
"[<ROOT>\\Dia]")
|
||||
|
||||
_nxb_find_paths()
|
||||
|
||||
# ------------
|
||||
# Find Modules
|
||||
# ------------
|
||||
|
||||
find_program(${_sFindName}_EXECUTABLE
|
||||
NAMES "dia"
|
||||
PATHS "${${_sFindName}_PATH}" ${_listRegistryPaths} ${_sFindPathsBin}
|
||||
PATH_SUFFIXES "Dia/bin" "bin")
|
||||
|
||||
if(${_sFindName}_EXECUTABLE)
|
||||
if(NOT DEFINED ${_sFindName}_PATH)
|
||||
get_filename_component(${_sFindName}_PATH "${${_sFindName}_EXECUTABLE}" DIRECTORY)
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_EXECUTABLE}" --version
|
||||
OUTPUT_VARIABLE ${_sFindName}_VERSION
|
||||
ERROR_VARIABLE ${_sFindName}_VERSION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_STRIP_TRAILING_WHITESPACE)
|
||||
string(REGEX MATCH "[0-9]+[\.][0-9\.]+" ${_sFindName}_VERSION "${${_sFindName}_VERSION}")
|
||||
endif()
|
||||
|
||||
_nxb_handle_single()
|
||||
|
||||
# ---------------
|
||||
# Feature Summary
|
||||
# ---------------
|
||||
|
||||
include(FeatureSummary)
|
||||
set_package_properties(${_sFindName} PROPERTIES
|
||||
DESCRIPTION "Diagram Editor"
|
||||
URL "http://dia-installer.de/")
|
||||
|
||||
# -----------------------
|
||||
# CleanUp
|
||||
# -----------------------
|
||||
|
||||
unset(_sFindName)
|
|
@ -1,104 +0,0 @@
|
|||
# -------------------------------
|
||||
# SPDX-License-Identifier: ISC
|
||||
#
|
||||
# Copyright © 2019 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.
|
||||
# -------------------------------
|
||||
|
||||
get_filename_component(_sFindName "${CMAKE_CURRENT_LIST_FILE}" NAME)
|
||||
string(REPLACE "Find" "" _sFindName "${_sFindName}")
|
||||
string(REPLACE ".cmake" "" _sFindName "${_sFindName}")
|
||||
|
||||
# ----------------
|
||||
# Parse Components
|
||||
# ----------------
|
||||
|
||||
set(_listComponentsVersion
|
||||
"doxygen")
|
||||
set(_listComponentsExecutable
|
||||
${_listComponentsVersion}
|
||||
"doxyindexer"
|
||||
"doxysearch.cgi"
|
||||
"doxywizard")
|
||||
|
||||
set(_listComponentsKnown
|
||||
${_listComponentsExecutable})
|
||||
set(_listComponentsDefault
|
||||
${_listComponentsVersion})
|
||||
set(_listComponentsRequired
|
||||
"doxygen")
|
||||
|
||||
_nxb_parse_components(ON)
|
||||
|
||||
# ------------
|
||||
# Find Modules
|
||||
# ------------
|
||||
|
||||
foreach(_sComponent ${_listComponentsRequested})
|
||||
if("${_sComponent}" IN_LIST _listComponentsExecutable)
|
||||
find_program(${_sFindName}_${_sComponent}_EXECUTABLE
|
||||
NAMES "${_sComponent}"
|
||||
PATHS "${${_sFindName}_PATH}" ${_sFindPathsBin}
|
||||
PATH_SUFFIXES "doxygen/bin" "bin")
|
||||
|
||||
if(${_sFindName}_${_sComponent}_EXECUTABLE)
|
||||
if(NOT DEFINED ${_sFindName}_PATH)
|
||||
get_filename_component(${_sFindName}_PATH "${${_sFindName}_${_sComponent}_EXECUTABLE}" DIRECTORY)
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_${_sComponent}_EXECUTABLE}" --version
|
||||
OUTPUT_VARIABLE ${_sFindName}_${_sComponent}_VERSION
|
||||
ERROR_VARIABLE ${_sFindName}_${_sComponent}_VERSION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_STRIP_TRAILING_WHITESPACE)
|
||||
string(REGEX MATCH "[0-9]+[\.][0-9\.]+" ${_sFindName}_${_sComponent}_VERSION "${${_sFindName}_${_sComponent}_VERSION}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
_nxb_handle_components()
|
||||
endforeach()
|
||||
|
||||
_nxb_handle_module()
|
||||
|
||||
# ---------------
|
||||
# Feature Summary
|
||||
# ---------------
|
||||
|
||||
include(FeatureSummary)
|
||||
set_package_properties(${_sFindName} PROPERTIES
|
||||
DESCRIPTION "Source Code Documentation Generator"
|
||||
URL "http://www.doxygen.nl/")
|
||||
|
||||
# -----------------------
|
||||
# Backwards-Compatibility
|
||||
# -----------------------
|
||||
|
||||
set(DOXYGEN_FOUND "${${_sFindName}_doxygen_FOUND}")
|
||||
set(DOXYGEN_VERSION "${${_sFindName}_doxygen_VERSION}")
|
||||
set(DOXYGEN_EXECUTABLE "${${_sFindName}_doxygen_EXECUTABLE}")
|
||||
|
||||
# -----------------------
|
||||
# CleanUp
|
||||
# -----------------------
|
||||
|
||||
unset(_sFindName)
|
||||
unset(_listComponentsExecutable)
|
||||
unset(_listComponentsLibrary)
|
||||
unset(_listComponentsVersion)
|
||||
unset(_listComponentsKnown)
|
||||
unset(_listComponentsRequested)
|
||||
unset(_listComponentsDefault)
|
||||
unset(_listComponentsRequired)
|
||||
unset(_listComponentsLookup)
|
|
@ -1,101 +0,0 @@
|
|||
# -------------------------------
|
||||
# SPDX-License-Identifier: ISC
|
||||
#
|
||||
# Copyright © 2019 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.
|
||||
# -------------------------------
|
||||
|
||||
get_filename_component(_sFindName "${CMAKE_CURRENT_LIST_FILE}" NAME)
|
||||
string(REPLACE "Find" "" _sFindName "${_sFindName}")
|
||||
string(REPLACE ".cmake" "" _sFindName "${_sFindName}")
|
||||
string(MAKE_C_IDENTIFIER "${_sFindName}" _sFindEnv)
|
||||
string(TOUPPER "${_sFindEnv}" _sFindEnv)
|
||||
|
||||
# ----------------
|
||||
# Parse Components
|
||||
# ----------------
|
||||
|
||||
set(_listComponentsVersion
|
||||
"global"
|
||||
"gozilla"
|
||||
"gtags-cscope"
|
||||
"gtags"
|
||||
"htags")
|
||||
set(_listComponentsExecutable
|
||||
${_listComponentsVersion}
|
||||
"globash"
|
||||
"htags-server")
|
||||
|
||||
set(_listComponentsKnown
|
||||
${_listComponentsExecutable})
|
||||
set(_listComponentsDefault
|
||||
${_listComponentsVersion})
|
||||
set(_listComponentsRequired
|
||||
"global")
|
||||
|
||||
_nxb_parse_components(ON)
|
||||
|
||||
# ------------
|
||||
# Find Modules
|
||||
# ------------
|
||||
|
||||
foreach(_sComponent ${_listComponentsRequested})
|
||||
if("${_sComponent}" IN_LIST _listComponentsExecutable)
|
||||
find_program(${_sFindName}_${_sComponent}_EXECUTABLE
|
||||
NAMES "${_sComponent}"
|
||||
PATHS "${${_sFindName}_PATH}" ${_sFindPathsBin}
|
||||
PATH_SUFFIXES "bin")
|
||||
|
||||
if(${_sFindName}_${_sComponent}_EXECUTABLE)
|
||||
if(NOT DEFINED ${_sFindName}_PATH)
|
||||
get_filename_component(${_sFindName}_PATH "${${_sFindName}_${_sComponent}_EXECUTABLE}" DIRECTORY)
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_${_sComponent}_EXECUTABLE}" --version
|
||||
OUTPUT_VARIABLE ${_sFindName}_${_sComponent}_VERSION
|
||||
ERROR_VARIABLE ${_sFindName}_${_sComponent}_VERSION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_STRIP_TRAILING_WHITESPACE)
|
||||
string(REGEX MATCH "[0-9]+[\.][0-9\.]+" ${_sFindName}_${_sComponent}_VERSION "${${_sFindName}_${_sComponent}_VERSION}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
_nxb_handle_components()
|
||||
endforeach()
|
||||
|
||||
_nxb_handle_module()
|
||||
|
||||
# ---------------
|
||||
# Feature Summary
|
||||
# ---------------
|
||||
|
||||
include(FeatureSummary)
|
||||
set_package_properties(${_sFindName} PROPERTIES
|
||||
DESCRIPTION "Source Code Tagging System"
|
||||
URL "https://www.gnu.org/software/global/")
|
||||
|
||||
# -----------------------
|
||||
# CleanUp
|
||||
# -----------------------
|
||||
|
||||
unset(_sFindName)
|
||||
unset(_listComponentsExecutable)
|
||||
unset(_listComponentsLibrary)
|
||||
unset(_listComponentsVersion)
|
||||
unset(_listComponentsKnown)
|
||||
unset(_listComponentsRequested)
|
||||
unset(_listComponentsDefault)
|
||||
unset(_listComponentsRequired)
|
||||
unset(_listComponentsLookup)
|
|
@ -1,219 +0,0 @@
|
|||
# -------------------------------
|
||||
# SPDX-License-Identifier: ISC
|
||||
#
|
||||
# Copyright © 2019 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.
|
||||
# -------------------------------
|
||||
|
||||
get_filename_component(_sFindName "${CMAKE_CURRENT_LIST_FILE}" NAME)
|
||||
string(REPLACE "Find" "" _sFindName "${_sFindName}")
|
||||
string(REPLACE ".cmake" "" _sFindName "${_sFindName}")
|
||||
|
||||
# ----------------
|
||||
# Parse Components
|
||||
# ----------------
|
||||
|
||||
set(_listComponentsVersion
|
||||
"circo"
|
||||
"dot"
|
||||
"fdp"
|
||||
"gvpr"
|
||||
"neato"
|
||||
"osage"
|
||||
"patchwork"
|
||||
"sfdp"
|
||||
"twopi")
|
||||
set(_listComponentsExecutable
|
||||
${_listComponentsVersion}
|
||||
"acyclic"
|
||||
"bcomps"
|
||||
"ccomps"
|
||||
"dijkstra"
|
||||
"dotty"
|
||||
"gc"
|
||||
"gml2gv"
|
||||
"graphml2gv"
|
||||
"gv2gml"
|
||||
"gv2gxl"
|
||||
"gvcolor"
|
||||
"gvedit"
|
||||
"gvgen"
|
||||
"gvmap"
|
||||
"gvpack"
|
||||
"gxl2gv"
|
||||
"lefty"
|
||||
"lneato"
|
||||
"mingle"
|
||||
"mm2gv"
|
||||
"nop"
|
||||
"prune"
|
||||
"sccmap"
|
||||
"smyrna"
|
||||
"tred"
|
||||
"unflatten")
|
||||
set(_listComponentsLibrary
|
||||
"libcdt"
|
||||
"libcgraph"
|
||||
"libgraph"
|
||||
"libgvc"
|
||||
"libpathplan"
|
||||
"libxdot")
|
||||
|
||||
set(_listComponentsKnown
|
||||
${_listComponentsExecutable}
|
||||
${_listComponentsLibrary})
|
||||
set(_listComponentsDefault
|
||||
${_listComponentsVersion})
|
||||
set(_listComponentsRequired
|
||||
"dot")
|
||||
|
||||
_nxb_parse_components(ON)
|
||||
|
||||
# ------------
|
||||
# Find Modules
|
||||
# ------------
|
||||
|
||||
foreach(_sComponent ${_listComponentsRequested})
|
||||
if("${_sComponent}" IN_LIST _listComponentsExecutable)
|
||||
if(DEFINED ${_sFindName}_FIND_VERSION AND NOT ${_sFindName}_FIND_VERSION STREQUAL "")
|
||||
find_program(${_sFindName}_${_sComponent}_EXECUTABLE
|
||||
NAMES "${_sComponent}"
|
||||
PATHS "${${_sFindName}_PATH}" ${_sFindPathsBin}
|
||||
PATH_SUFFIXES "Graphviz${${_sFindName}_FIND_VERSION_MAJOR}.${${_sFindName}_FIND_VERSION_MINOR}/bin" "Graphviz/bin" "bin")
|
||||
else()
|
||||
find_program(${_sFindName}_${_sComponent}_EXECUTABLE
|
||||
NAMES "${_sComponent}"
|
||||
PATHS "${${_sFindName}_PATH}" ${_sFindPathsBin}
|
||||
PATH_SUFFIXES "Graphviz/bin" "Graphviz2.41/bin" "Graphviz2.40/bin" "Graphviz2.39/bin" "Graphviz2.38/bin" "bin")
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_${_sComponent}_EXECUTABLE)
|
||||
if(NOT DEFINED ${_sFindName}_PATH)
|
||||
get_filename_component(${_sFindName}_PATH "${${_sFindName}_${_sComponent}_EXECUTABLE}" DIRECTORY)
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_${_sComponent}_EXECUTABLE}" -V
|
||||
OUTPUT_VARIABLE ${_sFindName}_${_sComponent}_VERSION
|
||||
ERROR_VARIABLE ${_sFindName}_${_sComponent}_VERSION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_STRIP_TRAILING_WHITESPACE)
|
||||
string(REGEX MATCH "[0-9]+[\.][0-9\.]+" ${_sFindName}_${_sComponent}_VERSION "${${_sFindName}_${_sComponent}_VERSION}")
|
||||
|
||||
if(NOT DEFINED ${_sFindName}_LIBPATH AND NOT DEFINED ${_sFindName}_INCPATH)
|
||||
if(EXISTS "${${_sFindName}_PATH}/../lib/release/lib")
|
||||
set(${_sFindName}_LIBPATH "${${_sFindName}_PATH}/../lib/${NXBUILD_COMPILER_TRIPLET}")
|
||||
elseif(EXISTS "${${_sFindName}_PATH}/../lib/release/lib")
|
||||
set(${_sFindName}_LIBPATH "${${_sFindName}_PATH}/../lib/${NXBUILD_COMPILER_TRIPLET}")
|
||||
else()
|
||||
set(${_sFindName}_LIBPATH "${${_sFindName}_PATH}/../lib")
|
||||
endif()
|
||||
|
||||
set(${_sFindName}_INCPATH "${${_sFindName}_PATH}/../include/graphviz")
|
||||
|
||||
foreach(_sModPath
|
||||
"${_sFindName}_INCPATH"
|
||||
"${_sFindName}_LIBPATH")
|
||||
if(NOT ${_sModPath} STREQUAL "")
|
||||
list(REMOVE_DUPLICATES ${_sModPath})
|
||||
else()
|
||||
unset(${_sModPath})
|
||||
endif()
|
||||
|
||||
foreach(_sModPath2 ${${_sModPath}})
|
||||
file(TO_CMAKE_PATH "${_sModPath2}" _sModPath3)
|
||||
get_filename_component(_sModPath3 "${_sModPath3}" ABSOLUTE)
|
||||
|
||||
if(EXISTS "${_sModPath3}")
|
||||
list(REMOVE_ITEM ${_sModPath} "${_sModPath2}")
|
||||
list(APPEND ${_sModPath} "${_sModPath3}")
|
||||
|
||||
if(DEFINED NXBUILD_VERBOSE AND NXBUILD_VERBOSE)
|
||||
message(STATUS "Find${_sFindName}: '${_sModPath}' -> '${_sModPath3}'")
|
||||
endif()
|
||||
else()
|
||||
list(REMOVE_ITEM ${_sModPath} "${_sModPath2}")
|
||||
endif()
|
||||
endforeach()
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
find_library(${_sFindName}_${_sComponent}_LIBRARY
|
||||
NAMES "${_sComponent}gen" "${_sComponent}lib" "${_sComponent}"
|
||||
NO_DEFAULT_PATH
|
||||
PATHS "${${_sFindName}_LIBPATH}")
|
||||
|
||||
if(${_sFindName}_${_sComponent}_LIBRARY)
|
||||
find_path(${_sFindName}_${_sComponent}_INCLUDE_DIR
|
||||
NAMES "graphviz_version.h" "${_sComponent}.h"
|
||||
NO_DEFAULT_PATH
|
||||
PATHS "${${_sFindName}_INCPATH}")
|
||||
|
||||
if(NOT DEFINED ${_sFindName}_${_sComponent}_VERSION OR ${_sFindName}_${_sComponent}_VERSION STREQUAL "")
|
||||
if(${_sFindName}_${_sComponent}_INCLUDE_DIR AND EXISTS "${${_sFindName}_${_sComponent}_INCLUDE_DIR}/graphviz_version.h")
|
||||
file(READ "${${_sFindName}_${_sComponent}_INCLUDE_DIR}/graphviz_version.h" ${_sFindName}_${_sComponent}_VERSION)
|
||||
string(REGEX MATCHALL "VERSION[^;]+" ${_sFindName}_${_sComponent}_VERSION "${${_sFindName}_${_sComponent}_VERSION}")
|
||||
string(REGEX MATCH "[0-9]+[\.][0-9\.]+" ${_sFindName}_${_sComponent}_VERSION "${${_sFindName}_${_sComponent}_VERSION}")
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
unset(${_sFindName}_${_sComponent}_LIBRARY CACHE)
|
||||
endif()
|
||||
endif()
|
||||
elseif("${_sComponent}" IN_LIST _listComponentsLibrary)
|
||||
string(REPLACE "lib" "" _sComponentNoLib "${_sComponent}")
|
||||
|
||||
find_library(${_sFindName}_${_sComponent}_LIBRARY
|
||||
NAMES "${_sComponentNoLib}"
|
||||
NO_DEFAULT_PATH
|
||||
PATHS "${${_sFindName}_LIBPATH}")
|
||||
find_path(${_sFindName}_${_sComponent}_INCLUDE_DIR
|
||||
NAMES "${_sComponentNoLib}.h" "graphviz_version.h"
|
||||
NO_DEFAULT_PATH
|
||||
PATHS "${${_sFindName}_INCPATH}")
|
||||
|
||||
if(${_sFindName}_${_sComponent}_INCLUDE_DIR AND EXISTS "${${_sFindName}_${_sComponent}_INCLUDE_DIR}/graphviz_version.h")
|
||||
file(READ "${${_sFindName}_${_sComponent}_INCLUDE_DIR}/graphviz_version.h" ${_sFindName}_${_sComponent}_VERSION)
|
||||
string(REGEX MATCHALL "VERSION[^;]+" ${_sFindName}_${_sComponent}_VERSION "${${_sFindName}_${_sComponent}_VERSION}")
|
||||
string(REGEX MATCH "[0-9]+[\.][0-9\.]+" ${_sFindName}_${_sComponent}_VERSION "${${_sFindName}_${_sComponent}_VERSION}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
_nxb_handle_components()
|
||||
endforeach()
|
||||
|
||||
_nxb_handle_module()
|
||||
|
||||
# ---------------
|
||||
# Feature Summary
|
||||
# ---------------
|
||||
|
||||
include(FeatureSummary)
|
||||
set_package_properties(${_sFindName} PROPERTIES
|
||||
DESCRIPTION "Graph Visualization Software"
|
||||
URL "https://www.graphviz.org/")
|
||||
|
||||
# -----------------------
|
||||
# CleanUp
|
||||
# -----------------------
|
||||
|
||||
unset(_sFindName)
|
||||
unset(_listComponentsExecutable)
|
||||
unset(_listComponentsLibrary)
|
||||
unset(_listComponentsVersion)
|
||||
unset(_listComponentsKnown)
|
||||
unset(_listComponentsRequested)
|
||||
unset(_listComponentsDefault)
|
||||
unset(_listComponentsRequired)
|
||||
unset(_listComponentsLookup)
|
|
@ -1,110 +0,0 @@
|
|||
# -------------------------------
|
||||
# SPDX-License-Identifier: ISC
|
||||
#
|
||||
# Copyright © 2019 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.
|
||||
# -------------------------------
|
||||
|
||||
get_filename_component(_sFindName "${CMAKE_CURRENT_LIST_FILE}" NAME)
|
||||
string(REPLACE "Find" "" _sFindName "${_sFindName}")
|
||||
string(REPLACE ".cmake" "" _sFindName "${_sFindName}")
|
||||
|
||||
# --------------
|
||||
# Registry Paths
|
||||
# --------------
|
||||
|
||||
set(_listRegistryPaths
|
||||
"[<ROOT>\\Microsoft\\HTML Help Workshop;InstallDir]")
|
||||
|
||||
# ----------------
|
||||
# Parse Components
|
||||
# ----------------
|
||||
|
||||
set(_listComponentsExecutable
|
||||
"flash"
|
||||
"hhc"
|
||||
"hhw")
|
||||
set(_listComponentsLibrary
|
||||
"htmlhelp")
|
||||
|
||||
set(_listComponentsKnown
|
||||
${_listComponentsExecutable}
|
||||
${_listComponentsLibrary})
|
||||
set(_listComponentsDefault
|
||||
"htmlhelp")
|
||||
|
||||
_nxb_parse_components(ON)
|
||||
|
||||
# ------------
|
||||
# Find Modules
|
||||
# ------------
|
||||
|
||||
foreach(_sComponent ${_listComponentsRequested})
|
||||
if("${_sComponent}" IN_LIST _listComponentsExecutable)
|
||||
find_program(${_sFindName}_${_sComponent}_EXECUTABLE
|
||||
NAMES "${_sComponent}.exe"
|
||||
PATHS "${${_sFindName}_PATH}" ${_listRegistryPaths} ${_sFindPathsBin}
|
||||
PATH_SUFFIXES "HTML Help Workshop" "bin")
|
||||
|
||||
if(${_sFindName}_${_sComponent}_EXECUTABLE)
|
||||
if(NOT DEFINED ${_sFindName}_PATH)
|
||||
get_filename_component(${_sFindName}_PATH "${${_sFindName}_${_sComponent}_EXECUTABLE}" DIRECTORY)
|
||||
endif()
|
||||
endif()
|
||||
elseif("${_sComponent}" IN_LIST _listComponentsLibrary)
|
||||
find_path(${_sFindName}_${_sComponent}_INCLUDE_DIR
|
||||
NAMES "${_sComponent}.h"
|
||||
PATHS "${${_sFindName}_PATH}" ${_listRegistryPaths} ${_sFindPathsInc}
|
||||
PATH_SUFFIXES "HTML Help Workshop/include" "include")
|
||||
find_library(${_sFindName}_${_sComponent}_LIBRARY
|
||||
NAMES "${_sComponent}"
|
||||
PATHS "${${_sFindName}_PATH}" ${_listRegistryPaths} ${_sFindPathsLib}
|
||||
PATH_SUFFIXES "HTML Help Workshop/lib" "lib")
|
||||
endif()
|
||||
|
||||
_nxb_handle_components()
|
||||
endforeach()
|
||||
|
||||
_nxb_handle_module()
|
||||
|
||||
# ---------------
|
||||
# Feature Summary
|
||||
# ---------------
|
||||
|
||||
include(FeatureSummary)
|
||||
set_package_properties(${_sFindName} PROPERTIES
|
||||
DESCRIPTION "HTML Help Workshop"
|
||||
URL "https://www.microsoft.com/en-us/download/details.aspx?id=21138")
|
||||
|
||||
# -----------------------
|
||||
# Backwards-Compatibility
|
||||
# -----------------------
|
||||
|
||||
set(HTML_HELP_COMPILER "${${_sFindName}_hhc_EXECUTABLE}")
|
||||
set(HTML_HELP_INCLUDE_PATH "${${_sFindName}_htmlhelp_INCLUDE_DIR}")
|
||||
set(HTML_HELP_LIBRARY "${${_sFindName}_htmlhelp_LIBRARY}")
|
||||
|
||||
# -----------------------
|
||||
# CleanUp
|
||||
# -----------------------
|
||||
|
||||
unset(_sFindName)
|
||||
unset(_listComponentsExecutable)
|
||||
unset(_listComponentsLibrary)
|
||||
unset(_listComponentsVersion)
|
||||
unset(_listComponentsKnown)
|
||||
unset(_listComponentsRequested)
|
||||
unset(_listComponentsDefault)
|
||||
unset(_listComponentsRequired)
|
||||
unset(_listComponentsLookup)
|
|
@ -1,657 +0,0 @@
|
|||
# -------------------------------
|
||||
# SPDX-License-Identifier: ISC
|
||||
#
|
||||
# Copyright © 2019 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.
|
||||
# -------------------------------
|
||||
|
||||
get_filename_component(_sFindName "${CMAKE_CURRENT_LIST_FILE}" NAME)
|
||||
string(REPLACE "Find" "" _sFindName "${_sFindName}")
|
||||
string(REPLACE ".cmake" "" _sFindName "${_sFindName}")
|
||||
|
||||
# --------------
|
||||
# Registry Paths
|
||||
# --------------
|
||||
|
||||
set(_listRegistryPaths
|
||||
"[<ROOT>\\MiK\\MiKTeX\\CurrentVersion\\MiKTeX;Install Root]")
|
||||
|
||||
# ----------------
|
||||
# Parse Components
|
||||
# ----------------
|
||||
|
||||
set(_listComponentsVersion
|
||||
"a5toa4"
|
||||
"afm2tfm"
|
||||
"amstex"
|
||||
"arctrl"
|
||||
"asy"
|
||||
"axohelp"
|
||||
"bagpipe"
|
||||
"bagpipex"
|
||||
"bg5latex"
|
||||
"bg5pdflatex"
|
||||
"bg5platex"
|
||||
"bg5pluslatex"
|
||||
"bg5pluspdflatex"
|
||||
"bg5ppdflatex"
|
||||
"biber"
|
||||
"bibhtml"
|
||||
"bibtex"
|
||||
"bibtex8"
|
||||
"bibtexu"
|
||||
"biokey2html1"
|
||||
"biokey2html2"
|
||||
"bplain"
|
||||
"cef5latex"
|
||||
"cef5pdflatex"
|
||||
"ceflatex"
|
||||
"cefpdflatex"
|
||||
"cefslatex"
|
||||
"cefspdflatex"
|
||||
"checkcites"
|
||||
"chktex"
|
||||
"cjk-gs-integrate"
|
||||
"cjklatex"
|
||||
"cluttex"
|
||||
"cslatex"
|
||||
"csplain"
|
||||
"dosepsbin"
|
||||
"dvicopy"
|
||||
"dvilollipop"
|
||||
"dvilualatex"
|
||||
"dvilualollipop"
|
||||
"dviluatex"
|
||||
"dvipdfm"
|
||||
"dvipdfmx"
|
||||
"dvipng"
|
||||
"dvips"
|
||||
"dvisvgm"
|
||||
"dvitomp"
|
||||
"dvitype"
|
||||
"epspdf"
|
||||
"epstopdf"
|
||||
"etex"
|
||||
"etexdef"
|
||||
"fc-cache"
|
||||
"fc-cat"
|
||||
"fc-conflist"
|
||||
"fc-list"
|
||||
"fc-match"
|
||||
"fc-pattern"
|
||||
"fc-query"
|
||||
"fc-scan"
|
||||
"fc-validate"
|
||||
"findtexmf"
|
||||
"gbklatex"
|
||||
"gbkpdflatex"
|
||||
"gftodvi"
|
||||
"gregorio"
|
||||
"gsf2pk"
|
||||
"hbf2gf"
|
||||
"inimf"
|
||||
"initex"
|
||||
"initexmf"
|
||||
"isi2bibtex"
|
||||
"jadetex"
|
||||
"jfmutil"
|
||||
"kpsewhich"
|
||||
"lambda"
|
||||
"latex"
|
||||
"latex-papersize"
|
||||
"latexdef"
|
||||
"latexmk"
|
||||
"latexpand"
|
||||
"lollipop"
|
||||
"lpgs"
|
||||
"lpr2"
|
||||
"ltximg"
|
||||
"lualatex"
|
||||
"lualatexdef"
|
||||
"lualollipop"
|
||||
"luatex"
|
||||
"luatexdef"
|
||||
"lwarpmk"
|
||||
"make4ht"
|
||||
"makebase"
|
||||
"makedtx"
|
||||
"makefmt"
|
||||
"makeglossaries"
|
||||
"makepk"
|
||||
"maketfm"
|
||||
"mex"
|
||||
"mf"
|
||||
"mfirstuc"
|
||||
"mgs"
|
||||
"mkfntmap"
|
||||
"mkjobtexmf"
|
||||
"mktexlsr"
|
||||
"mllatex"
|
||||
"mltex"
|
||||
"mpm"
|
||||
"mpost"
|
||||
"mptopdf"
|
||||
"mthelp"
|
||||
"mtprint"
|
||||
"musixtex"
|
||||
"omega"
|
||||
"orderrefs"
|
||||
"pdfatfi"
|
||||
"pdfclose"
|
||||
"pdfcrop"
|
||||
"pdfcslatex"
|
||||
"pdfcsplain"
|
||||
"pdfdde"
|
||||
"pdfetex"
|
||||
"pdfjadetex"
|
||||
"pdflatex"
|
||||
"pdflatexdef"
|
||||
"pdflatexpicscale"
|
||||
"pdfmex"
|
||||
"pdfopen"
|
||||
"pdftex"
|
||||
"pdftexdef"
|
||||
"pdfxmltex"
|
||||
"perltex"
|
||||
"pfarrei"
|
||||
"pkfix"
|
||||
"pkfix-helper"
|
||||
"psjoin"
|
||||
"pst2pdf"
|
||||
"scor2prt"
|
||||
"sjislatex"
|
||||
"sjispdflatex"
|
||||
"songidx"
|
||||
"splitindex"
|
||||
"svn-multi"
|
||||
"tangle"
|
||||
"tdsutil"
|
||||
"tex"
|
||||
"tex4ebook"
|
||||
"texcount"
|
||||
"texdef"
|
||||
"texdoc"
|
||||
"texfot"
|
||||
"texhash"
|
||||
"texify"
|
||||
"texlinks"
|
||||
"texlua"
|
||||
"texworks"
|
||||
"thumbpdf"
|
||||
"ttf2pk"
|
||||
"ttf2tfm"
|
||||
"updmap"
|
||||
"utf8mex"
|
||||
"virmf"
|
||||
"virtex"
|
||||
"vpe"
|
||||
"xdvipdfmx"
|
||||
"xelatex"
|
||||
"xelatexdef"
|
||||
"xetex"
|
||||
"xetexdef"
|
||||
"xmltex")
|
||||
set(_listComponentsExecutable
|
||||
${_listComponentsVersion}
|
||||
"OOopict"
|
||||
"a2ping"
|
||||
"afm2afm"
|
||||
"arara"
|
||||
"arlatex"
|
||||
"authorindex"
|
||||
"autoinst"
|
||||
"autosp"
|
||||
"bg5conv"
|
||||
"bib2gls"
|
||||
"bib2xhtml"
|
||||
"bibdoiadd"
|
||||
"bibsort"
|
||||
"bibzbladd"
|
||||
"biokey2html"
|
||||
"biokey2html3"
|
||||
"birm"
|
||||
"bmeditor"
|
||||
"bundledoc"
|
||||
"cef5conv"
|
||||
"cefconv"
|
||||
"cefsconv"
|
||||
"convertgls2bib"
|
||||
"creatdtx"
|
||||
"csvtools"
|
||||
"ctanbib"
|
||||
"ctangle"
|
||||
"ctanify"
|
||||
"ctan-o-mat"
|
||||
"ctanupload"
|
||||
"cweave"
|
||||
"dad-to-utf8"
|
||||
"depythontex"
|
||||
"devnag"
|
||||
"dumphint"
|
||||
"dviasm"
|
||||
"dviinfox"
|
||||
"dvipdft"
|
||||
"ebb"
|
||||
"eps2eps"
|
||||
"epsffit"
|
||||
"exceltex"
|
||||
"extconv"
|
||||
"extractbb"
|
||||
"extractres"
|
||||
"feynmf"
|
||||
"fig4latex"
|
||||
"findhyph"
|
||||
"font2c"
|
||||
"fribidixetex"
|
||||
"fullref"
|
||||
"getmapdl"
|
||||
"gfi-run"
|
||||
"gftopk"
|
||||
"gftype"
|
||||
"gsbj"
|
||||
"gsdj"
|
||||
"gsdj500"
|
||||
"gslj"
|
||||
"gslp"
|
||||
"gsnd"
|
||||
"gsndt"
|
||||
"gssetgs"
|
||||
"gst"
|
||||
"gstt"
|
||||
"ht"
|
||||
"htcontext"
|
||||
"htcopy"
|
||||
"htlatex"
|
||||
"htmex"
|
||||
"htmove"
|
||||
"httex"
|
||||
"httexi"
|
||||
"htxelatex"
|
||||
"htxetex"
|
||||
"ibyhyph"
|
||||
"jamo-normalize"
|
||||
"ketcindy"
|
||||
"komkindex"
|
||||
"l3build"
|
||||
"lacheck"
|
||||
"latex-git-log"
|
||||
"latex2man"
|
||||
"latex2nemeth"
|
||||
"latexdiff"
|
||||
"latexdiff-fast"
|
||||
"latexdiff-so"
|
||||
"latexdiff-vc"
|
||||
"latexindent"
|
||||
"latexrevise"
|
||||
"lp386"
|
||||
"lp386r2"
|
||||
"ltx2crossrefxml"
|
||||
"luamesh"
|
||||
"luaotfload-tool"
|
||||
"m-tx"
|
||||
"makeindex"
|
||||
"makejmlrbook"
|
||||
"mathspic"
|
||||
"mathspic113"
|
||||
"merge-tex"
|
||||
"mf2pt1"
|
||||
"mft"
|
||||
"mgetmref"
|
||||
"mk4ht"
|
||||
"mkcharacters"
|
||||
"mkglyphlist"
|
||||
"mkluatexfontdb"
|
||||
"mkocp"
|
||||
"mkt1font"
|
||||
"musixflx"
|
||||
"odvicopy"
|
||||
"ofm2opl"
|
||||
"opl2ofm"
|
||||
"ot2kpx"
|
||||
"otp2ocp"
|
||||
"outocp"
|
||||
"ovf2ovp"
|
||||
"ovp2ovf"
|
||||
"pdf2dsc"
|
||||
"pdf2ps"
|
||||
"pdfdetach"
|
||||
"pdffonts"
|
||||
"pdfimages"
|
||||
"pdfinfo"
|
||||
"pdfopt"
|
||||
"pdfseparate"
|
||||
"pdftocairo"
|
||||
"pdftohtml"
|
||||
"pdftoppm"
|
||||
"pdftops"
|
||||
"pdftosrc"
|
||||
"pdftotext"
|
||||
"pdfunite"
|
||||
"pedigree"
|
||||
"pf2afm"
|
||||
"pfbtopfa"
|
||||
"pftogsf"
|
||||
"pgfplots"
|
||||
"pk2bm"
|
||||
"pltotf"
|
||||
"pmxab"
|
||||
"pn2pdf"
|
||||
"pooltype"
|
||||
"prepmx"
|
||||
"ps2ascii"
|
||||
"ps2epsi"
|
||||
"ps2pdf"
|
||||
"ps2pdf12"
|
||||
"ps2pdf13"
|
||||
"ps2pdf14"
|
||||
"ps2pdfxx"
|
||||
"ps2pk"
|
||||
"ps2ps"
|
||||
"ps2ps2"
|
||||
"ps4pdf"
|
||||
"psbook"
|
||||
"psnup"
|
||||
"psresize"
|
||||
"psselect"
|
||||
"pstops"
|
||||
"pypostproc"
|
||||
"pypreproc"
|
||||
"pythontex"
|
||||
"rcsinfo"
|
||||
"rebar"
|
||||
"rubikrotation"
|
||||
"sjisconv"
|
||||
"srcredact"
|
||||
"sty2dtx"
|
||||
"t4ht"
|
||||
"tex4ht"
|
||||
"texdiff"
|
||||
"texdirflatten"
|
||||
"texindy"
|
||||
"texluac"
|
||||
"texosquery"
|
||||
"texosquery-jre5"
|
||||
"texosquery-jre8"
|
||||
"tftopl"
|
||||
"ttf2afm"
|
||||
"ttf2kotexfont"
|
||||
"urlbst"
|
||||
"utf8-to-dad"
|
||||
"vftovp"
|
||||
"vpl2ovp"
|
||||
"vpl2vpl"
|
||||
"vptovf"
|
||||
"weave"
|
||||
"webquiz"
|
||||
"wmakebat"
|
||||
"xbb"
|
||||
"xdv2pdf_mergemarks"
|
||||
"xindex"
|
||||
"xindy"
|
||||
"yap")
|
||||
|
||||
set(_listComponentsKnown
|
||||
${_listComponentsExecutable})
|
||||
set(_listComponentsDefault
|
||||
"latex"
|
||||
"pdflatex"
|
||||
"xelatex"
|
||||
"lualatex"
|
||||
"bibtex"
|
||||
"biber"
|
||||
"makeindex"
|
||||
"xindy")
|
||||
set(_listComponentsRequired
|
||||
"latex")
|
||||
set(_listComponentsLookup
|
||||
"kpsewhich")
|
||||
|
||||
_nxb_parse_components(OFF)
|
||||
|
||||
# ------------
|
||||
# Find Modules
|
||||
# ------------
|
||||
|
||||
foreach(_sComponent ${_listComponentsRequested})
|
||||
if("${_sComponent}" IN_LIST _listComponentsExecutable)
|
||||
find_program(${_sFindName}_${_sComponent}_EXECUTABLE
|
||||
NAMES "${_sComponent}" "miktex-${_sComponent}"
|
||||
PATHS "${${_sFindName}_PATH}" ${_listRegistryPaths} ${_sFindPathsBin}
|
||||
PATH_SUFFIXES
|
||||
"texlive/2018/bin/win32" "texlive/2017/bin/win32" "texlive/2016/bin/win32"
|
||||
"MiKTeX 2.9/miktex/bin/x64" "MiKTeX 2.9/miktex/bin/win32"
|
||||
"miktex/bin/x64" "miktex/bin/win32" "texmfs/install/miktex/bin"
|
||||
"bin")
|
||||
|
||||
if(${_sFindName}_${_sComponent}_EXECUTABLE)
|
||||
if(NOT DEFINED ${_sFindName}_PATH)
|
||||
get_filename_component(${_sFindName}_PATH "${${_sFindName}_${_sComponent}_EXECUTABLE}" DIRECTORY)
|
||||
endif()
|
||||
|
||||
if("${_sComponent}" IN_LIST _listComponentsVersion)
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_${_sComponent}_EXECUTABLE}" --version
|
||||
OUTPUT_VARIABLE ${_sFindName}_${_sComponent}_VERSION
|
||||
ERROR_VARIABLE ${_sFindName}_${_sComponent}_VERSION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_STRIP_TRAILING_WHITESPACE)
|
||||
string(REGEX MATCH "[0-9]+[\.][0-9\.]+" ${_sFindName}_${_sComponent}_VERSION "${${_sFindName}_${_sComponent}_VERSION}")
|
||||
endif()
|
||||
|
||||
if(_sComponent STREQUAL "kpsewhich")
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_${_sComponent}_EXECUTABLE}" -var-value=TEXMFMAIN
|
||||
OUTPUT_VARIABLE ${_sFindName}_MODPATH_MAIN
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_${_sComponent}_EXECUTABLE}" -var-value=TEXMFDIST
|
||||
OUTPUT_VARIABLE ${_sFindName}_MODPATH_DIST
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_${_sComponent}_EXECUTABLE}" -var-value=TEXMFDEBIAN
|
||||
OUTPUT_VARIABLE ${_sFindName}_MODPATH_DEBIAN
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_${_sComponent}_EXECUTABLE}" -var-value=TEXMFLOCAL
|
||||
OUTPUT_VARIABLE ${_sFindName}_MODPATH_LOCAL
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_${_sComponent}_EXECUTABLE}" -var-value=TEXMFHOME
|
||||
OUTPUT_VARIABLE ${_sFindName}_MODPATH_HOME
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
|
||||
if(${_sFindName}_MODPATH_MAIN STREQUAL "")
|
||||
if(EXISTS "${${_sFindName}_PATH}/../share/texlive/texmf-dist")
|
||||
set(${_sFindName}_MODPATH_MAIN "${${_sFindName}_PATH}/../share/texlive/texmf-dist")
|
||||
elseif(EXISTS "${${_sFindName}_PATH}/../share/texmf-dist")
|
||||
set(${_sFindName}_MODPATH_MAIN "${${_sFindName}_PATH}/../share/texmf-dist")
|
||||
elseif(EXISTS "${${_sFindName}_PATH}/../../texmf-dist")
|
||||
set(${_sFindName}_MODPATH_MAIN "${${_sFindName}_PATH}/../../texmf-dist")
|
||||
elseif(EXISTS "${${_sFindName}_PATH}/../../tex")
|
||||
set(${_sFindName}_MODPATH_MAIN "${${_sFindName}_PATH}/../..")
|
||||
elseif(EXISTS "${${_sFindName}_PATH}/../../../tex")
|
||||
set(${_sFindName}_MODPATH_MAIN "${${_sFindName}_PATH}/../../..")
|
||||
else()
|
||||
set(${_sFindName}_MODPATH_MAIN "${${_sFindName}_PATH}/../share/texmf-dist")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODPATH_DIST STREQUAL "")
|
||||
set(${_sFindName}_MODPATH_DIST "${${_sFindName}_MODPATH_MAIN}")
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODPATH_DEBIAN STREQUAL "")
|
||||
set(${_sFindName}_MODPATH_DEBIAN "${${_sFindName}_PATH}/../share/texmf")
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODPATH_LOCAL STREQUAL "")
|
||||
if(EXISTS "${${_sFindName}_PATH}/../local/share/texmf")
|
||||
set(${_sFindName}_MODPATH_LOCAL "${${_sFindName}_PATH}/../local/share/texmf")
|
||||
elseif(EXISTS "${${_sFindName}_PATH}/../share/texmf-local")
|
||||
set(${_sFindName}_MODPATH_LOCAL "${${_sFindName}_PATH}/../share/texmf-local")
|
||||
elseif(EXISTS "${${_sFindName}_PATH}/../../../texmf-local")
|
||||
set(${_sFindName}_MODPATH_LOCAL "${${_sFindName}_PATH}/../../../texmf-local")
|
||||
else()
|
||||
set(${_sFindName}_MODPATH_LOCAL "${${_sFindName}_PATH}/../share/texmf-local")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODPATH_HOME STREQUAL "")
|
||||
if(NOT "x$ENV{USERPROFILE}" STREQUAL "x" AND "x$ENV{HOME}" STREQUAL "x")
|
||||
set(${_sFindName}_MODPATH_HOME "$ENV{USERPROFILE}/texmf")
|
||||
else()
|
||||
set(${_sFindName}_MODPATH_HOME "$ENV{HOME}/texmf")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
foreach(_sModPath
|
||||
"${_sFindName}_MODPATH_MAIN"
|
||||
"${_sFindName}_MODPATH_DIST"
|
||||
"${_sFindName}_MODPATH_DEBIAN"
|
||||
"${_sFindName}_MODPATH_LOCAL"
|
||||
"${_sFindName}_MODPATH_HOME")
|
||||
if(NOT ${_sModPath} STREQUAL "")
|
||||
file(TO_CMAKE_PATH "${${_sModPath}}" ${_sModPath})
|
||||
get_filename_component(${_sModPath} "${${_sModPath}}" ABSOLUTE)
|
||||
|
||||
if(NOT EXISTS "${${_sModPath}}")
|
||||
unset(${_sModPath})
|
||||
endif()
|
||||
else()
|
||||
unset(${_sModPath})
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
string(REPLACE "::" "_" _sComponentSane "${_sComponent}")
|
||||
string(REPLACE "::" "/" _sComponentPath "${_sComponent}")
|
||||
get_filename_component(_sComponentFile "${_sComponentPath}" NAME)
|
||||
get_filename_component(_sComponentPath "${_sComponentPath}" DIRECTORY)
|
||||
|
||||
if(_sComponentPath STREQUAL "")
|
||||
set(_sComponentPath "${_sComponentFile}")
|
||||
endif()
|
||||
|
||||
unset(_listSuffixTeX)
|
||||
|
||||
if("lualatex" IN_LIST _listComponentsRequested)
|
||||
list(APPEND _listSuffixTeX "lualatex/${_sComponentPath}")
|
||||
endif()
|
||||
|
||||
if("xelatex" IN_LIST _listComponentsRequested)
|
||||
list(APPEND _listSuffixTeX "xelatex/${_sComponentPath}")
|
||||
endif()
|
||||
|
||||
if(_listComponentsRequested MATCHES "latex")
|
||||
list(APPEND _listSuffixTeX "latex/${_sComponentPath}")
|
||||
endif()
|
||||
|
||||
if("context" IN_LIST _listComponentsRequested)
|
||||
list(APPEND _listSuffixTeX "context/${_sComponentPath}")
|
||||
endif()
|
||||
|
||||
if("luatex" IN_LIST _listComponentsRequested OR "lualatex" IN_LIST _listComponentsRequested)
|
||||
list(APPEND _listSuffixTeX "luatex/${_sComponentPath}")
|
||||
endif()
|
||||
|
||||
if("xetex" IN_LIST _listComponentsRequested OR "xelatex" IN_LIST _listComponentsRequested)
|
||||
list(APPEND _listSuffixTeX "xetex/${_sComponentPath}")
|
||||
endif()
|
||||
|
||||
if(NOT _listComponentsRequested MATCHES "latex")
|
||||
list(APPEND _listSuffixTeX "plain/${_sComponentPath}")
|
||||
endif()
|
||||
|
||||
list(APPEND _listSuffixTeX "generic/${_sComponentPath}")
|
||||
|
||||
find_path(${_sFindName}_${_sComponentSane}_MODULE_DIR
|
||||
NAMES "${_sComponentFile}.sty"
|
||||
NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
|
||||
PATHS
|
||||
"${${_sFindName}_MODPATH_HOME}/tex"
|
||||
"${${_sFindName}_MODPATH_LOCAL}/tex"
|
||||
"${${_sFindName}_MODPATH_DEBIAN}/tex"
|
||||
"${${_sFindName}_MODPATH_DIST}/tex"
|
||||
"${${_sFindName}_MODPATH_MAIN}/tex"
|
||||
PATH_SUFFIXES ${_listSuffixTeX})
|
||||
|
||||
if(${_sFindName}_${_sComponentSane}_MODULE_DIR)
|
||||
set(${_sFindName}_${_sComponentSane}_MODULE "${${_sFindName}_${_sComponentSane}_MODULE_DIR}/${_sComponentFile}.sty")
|
||||
file(READ "${${_sFindName}_${_sComponentSane}_MODULE}" ${_sFindName}_${_sComponentSane}_VERSION)
|
||||
string(REGEX MATCHALL "VERSION[^;]+" ${_sFindName}_${_sComponentSane}_VERSION "${${_sFindName}_${_sComponentSane}_VERSION}")
|
||||
string(REGEX MATCH "[0-9]+[\.][0-9\.]+" ${_sFindName}_${_sComponentSane}_VERSION "${${_sFindName}_${_sComponentSane}_VERSION}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
_nxb_handle_components()
|
||||
endforeach()
|
||||
|
||||
_nxb_handle_module()
|
||||
|
||||
# ---------------
|
||||
# Feature Summary
|
||||
# ---------------
|
||||
|
||||
include(FeatureSummary)
|
||||
set_package_properties(${_sFindName} PROPERTIES
|
||||
DESCRIPTION "High-Quality Typesetting System"
|
||||
URL "https://www.latex-project.org/")
|
||||
|
||||
# -----------------------
|
||||
# Backwards-Compatibility
|
||||
# -----------------------
|
||||
|
||||
set(LATEX_FOUND ${LaTeX_FOUND})
|
||||
set(LATEX_PDFLATEX_FOUND ${LaTeX_pdflatex_FOUND})
|
||||
set(LATEX_XELATEX_FOUND ${LaTeX_xelatex_FOUND})
|
||||
set(LATEX_LUALATEX_FOUND ${LaTeX_lualatex_FOUND})
|
||||
set(LATEX_BIBTEX_FOUND ${LaTeX_bibtex_FOUND})
|
||||
set(LATEX_BIBER_FOUND ${LaTeX_biber_FOUND})
|
||||
set(LATEX_MAKEINDEX_FOUND ${LaTeX_makeindex_FOUND})
|
||||
set(LATEX_XINDY_FOUND ${LaTeX_xindy_FOUND})
|
||||
set(LATEX_DVIPS_FOUND ${LaTeX_dvips_FOUND})
|
||||
set(LATEX_DVIPDF_FOUND ${LaTeX_dvipdf_FOUND})
|
||||
set(LATEX_PS2PDF_FOUND ${LaTeX_ps2pdf_FOUND})
|
||||
set(LATEX_PDFTOPS_FOUND ${LaTeX_pdftops_FOUND})
|
||||
set(LATEX_LATEX2HTML_FOUND ${LaTeX_latex2html_FOUND})
|
||||
set(LATEX_HTLATEX_FOUND ${LaTeX_htlatex_FOUND})
|
||||
set(LATEX_COMPILER ${LaTeX_latex_EXECUTABLE})
|
||||
set(PDFLATEX_COMPILER ${LaTeX_pdflatex_EXECUTABLE})
|
||||
set(XELATEX_COMPILER ${LaTeX_xelatex_EXECUTABLE})
|
||||
set(LUALATEX_COMPILER ${LaTeX_lualatex_EXECUTABLE})
|
||||
set(BIBTEX_COMPILER ${LaTeX_bibtex_EXECUTABLE})
|
||||
set(BIBER_COMPILER ${LaTeX_biber_EXECUTABLE})
|
||||
set(MAKEINDEX_COMPILER ${LaTeX_makeindex_EXECUTABLE})
|
||||
set(XINDY_COMPILER ${LaTeX_xindy_EXECUTABLE})
|
||||
set(DVIPS_CONVERTER ${LaTeX_dvips_EXECUTABLE})
|
||||
set(DVIPDF_CONVERTER ${LaTeX_dvipdf_EXECUTABLE})
|
||||
set(PS2PDF_CONVERTER ${LaTeX_ps2pdf_EXECUTABLE})
|
||||
set(PDFTOPS_CONVERTER ${LaTeX_pdftops_EXECUTABLE})
|
||||
set(LATEX2HTML_CONVERTER ${LaTeX_latex2html_EXECUTABLE})
|
||||
set(HTLATEX_COMPILER ${LaTeX_htlatex_EXECUTABLE})
|
||||
|
||||
# -----------------------
|
||||
# CleanUp
|
||||
# -----------------------
|
||||
|
||||
unset(_sFindName)
|
||||
unset(_listComponentsExecutable)
|
||||
unset(_listComponentsLibrary)
|
||||
unset(_listComponentsVersion)
|
||||
unset(_listComponentsKnown)
|
||||
unset(_listComponentsRequested)
|
||||
unset(_listComponentsDefault)
|
||||
unset(_listComponentsRequired)
|
||||
unset(_listComponentsLookup)
|
|
@ -1,70 +0,0 @@
|
|||
# -------------------------------
|
||||
# SPDX-License-Identifier: ISC
|
||||
#
|
||||
# Copyright © 2019 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.
|
||||
# -------------------------------
|
||||
|
||||
get_filename_component(_sFindName "${CMAKE_CURRENT_LIST_FILE}" NAME)
|
||||
string(REPLACE "Find" "" _sFindName "${_sFindName}")
|
||||
string(REPLACE ".cmake" "" _sFindName "${_sFindName}")
|
||||
|
||||
# --------------
|
||||
# Registry Paths
|
||||
# --------------
|
||||
|
||||
set(_listRegistryPaths
|
||||
"[<ROOT>\\Mscgen;Install_Dir]")
|
||||
|
||||
_nxb_find_paths()
|
||||
|
||||
# ------------
|
||||
# Find Modules
|
||||
# ------------
|
||||
|
||||
find_program(${_sFindName}_EXECUTABLE
|
||||
NAMES "mscgen"
|
||||
PATHS "${${_sFindName}_PATH}" ${_listRegistryPaths} ${_sFindPathsBin}
|
||||
PATH_SUFFIXES "Mscgen" "bin")
|
||||
|
||||
if(${_sFindName}_EXECUTABLE)
|
||||
if(NOT DEFINED ${_sFindName}_PATH)
|
||||
get_filename_component(${_sFindName}_PATH "${${_sFindName}_EXECUTABLE}" DIRECTORY)
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_EXECUTABLE}" --version
|
||||
OUTPUT_VARIABLE ${_sFindName}_VERSION
|
||||
ERROR_VARIABLE ${_sFindName}_VERSION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_STRIP_TRAILING_WHITESPACE)
|
||||
string(REGEX MATCH "[0-9]+[\.][0-9\.]+" ${_sFindName}_VERSION "${${_sFindName}_VERSION}")
|
||||
endif()
|
||||
|
||||
_nxb_handle_single()
|
||||
|
||||
# ---------------
|
||||
# Feature Summary
|
||||
# ---------------
|
||||
|
||||
include(FeatureSummary)
|
||||
set_package_properties(${_sFindName} PROPERTIES
|
||||
DESCRIPTION "Message Sequence Chart Generator"
|
||||
URL "http://www.mcternan.me.uk/mscgen/")
|
||||
|
||||
# -----------------------
|
||||
# CleanUp
|
||||
# -----------------------
|
||||
|
||||
unset(_sFindName)
|
|
@ -1,584 +0,0 @@
|
|||
# -------------------------------
|
||||
# SPDX-License-Identifier: ISC
|
||||
#
|
||||
# Copyright © 2019 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.
|
||||
# -------------------------------
|
||||
|
||||
get_filename_component(_sFindName "${CMAKE_CURRENT_LIST_FILE}" NAME)
|
||||
string(REPLACE "Find" "" _sFindName "${_sFindName}")
|
||||
string(REPLACE ".cmake" "" _sFindName "${_sFindName}")
|
||||
|
||||
# --------------
|
||||
# Registry Paths
|
||||
# --------------
|
||||
|
||||
set(_listRegistryPaths
|
||||
"[<ROOT>\\Perl]")
|
||||
|
||||
# ----------------
|
||||
# Parse Components
|
||||
# ----------------
|
||||
|
||||
set(_listComponentsVersion
|
||||
"corelist"
|
||||
"cpan"
|
||||
"enc2xs"
|
||||
"encguess"
|
||||
"factor"
|
||||
"h2xs"
|
||||
"libnetcfg"
|
||||
"perl"
|
||||
"perlbug"
|
||||
"perlivp"
|
||||
"perlthanks"
|
||||
"prove"
|
||||
"shasum"
|
||||
"splain"
|
||||
"wperl"
|
||||
"zipdetails")
|
||||
set(_listComponentsExecutable
|
||||
${_listComponentsVersion}
|
||||
"exetype"
|
||||
"h2ph"
|
||||
"instmodsh"
|
||||
"json_pp"
|
||||
"lwp-download"
|
||||
"lwp-dump"
|
||||
"lwp-mirror"
|
||||
"lwp-request"
|
||||
"perldoc"
|
||||
"perlglob"
|
||||
"piconv"
|
||||
"pl2bat"
|
||||
"pl2pm"
|
||||
"pod2html"
|
||||
"pod2man"
|
||||
"pod2text"
|
||||
"pod2usage"
|
||||
"podchecker"
|
||||
"podselect"
|
||||
"ptar"
|
||||
"ptardiff"
|
||||
"ptargrep"
|
||||
"runperl"
|
||||
"search"
|
||||
"xsubpp")
|
||||
set(_listComponentsLibrary
|
||||
"libperl")
|
||||
|
||||
set(_listComponentsKnown
|
||||
${_listComponentsExecutable}
|
||||
${_listComponentsLibrary})
|
||||
set(_listComponentsDefault
|
||||
"perl"
|
||||
"libperl")
|
||||
set(_listComponentsRequired
|
||||
"perl")
|
||||
|
||||
_nxb_parse_components(OFF)
|
||||
|
||||
# ------------
|
||||
# Find Modules
|
||||
# ------------
|
||||
|
||||
foreach(_sComponent ${_listComponentsRequested})
|
||||
if("${_sComponent}" IN_LIST _listComponentsExecutable)
|
||||
unset(_listExtraNames)
|
||||
|
||||
if(_sComponent STREQUAL "perl" AND DEFINED ${_sFindName}_FIND_VERSION AND NOT ${_sFindName}_FIND_VERSION STREQUAL "")
|
||||
set(_listExtraNames
|
||||
"${_sComponent}${${_sFindName}_FIND_VERSION}"
|
||||
"${_sComponent}${${_sFindName}_FIND_VERSION_MAJOR}.${${_sFindName}_FIND_VERSION_MINOR}"
|
||||
"${_sComponent}${${_sFindName}_FIND_VERSION_MAJOR}")
|
||||
endif()
|
||||
|
||||
find_program(${_sFindName}_${_sComponent}_EXECUTABLE
|
||||
NAMES ${_listExtraNames} "${_sComponent}.bat" "${_sComponent}" "${_sComponent}.pl"
|
||||
PATHS "${${_sFindName}_PATH}" ${_listRegistryPaths} ${_sFindPathsBin}
|
||||
PATH_SUFFIXES
|
||||
"Perl${NXB_TARGET_MACHINE_BITS}/bin" "Perl/bin" "Strawberry/perl/bin"
|
||||
"bin/site_perl" "bin/vendor_perl" "bin/core_perl"
|
||||
"bin")
|
||||
|
||||
if(${_sFindName}_${_sComponent}_EXECUTABLE)
|
||||
if(NOT DEFINED ${_sFindName}_PATH)
|
||||
get_filename_component(${_sFindName}_PATH "${${_sFindName}_${_sComponent}_EXECUTABLE}" DIRECTORY)
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND file "${${_sFindName}_${_sComponent}_EXECUTABLE}"
|
||||
OUTPUT_VARIABLE ${_sFindName}_${_sComponent}_TYPE
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
unset(_sUseCommand)
|
||||
|
||||
if(${_sFindName}_${_sComponent}_TYPE MATCHES "Perl")
|
||||
file(READ "${${_sFindName}_${_sComponent}_EXECUTABLE}" ${_sFindName}_${_sComponent}_VERSION)
|
||||
string(REGEX MATCHALL "VERSION[^;]+" ${_sFindName}_${_sComponent}_VERSION "${${_sFindName}_${_sComponent}_VERSION}")
|
||||
string(REGEX MATCH "[0-9]+[\.][0-9\.]+" ${_sFindName}_${_sComponent}_VERSION "${${_sFindName}_${_sComponent}_VERSION}")
|
||||
set(_sUseCommand "${${_sFindName}_perl_EXECUTABLE}")
|
||||
endif()
|
||||
|
||||
if("${_sComponent}" IN_LIST _listComponentsVersion)
|
||||
if(NOT DEFINED ${_sFindName}_${_sComponent}_VERSION OR ${_sFindName}_${_sComponent}_VERSION STREQUAL "")
|
||||
execute_process(
|
||||
COMMAND ${_sUseCommand} "${${_sFindName}_${_sComponent}_EXECUTABLE}" --version
|
||||
OUTPUT_VARIABLE ${_sFindName}_${_sComponent}_VERSION
|
||||
ERROR_VARIABLE ${_sFindName}_${_sComponent}_VERSION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_STRIP_TRAILING_WHITESPACE)
|
||||
string(REGEX MATCH "[0-9]+[\.][0-9\.]+" ${_sFindName}_${_sComponent}_VERSION "${${_sFindName}_${_sComponent}_VERSION}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(_sComponent STREQUAL "perl")
|
||||
if(${_sFindName}_${_sComponent}_VERSION STREQUAL "")
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_${_sComponent}_EXECUTABLE}" -V:version
|
||||
OUTPUT_VARIABLE ${_sFindName}_${_sComponent}_VERSION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
string(REGEX REPLACE "version='([^']*)'.*" "\\1" ${_sFindName}_${_sComponent}_VERSION "${${_sFindName}_${_sComponent}_VERSION}")
|
||||
endif()
|
||||
|
||||
if(NOT ${_sFindName}_${_sComponent}_VERSION STREQUAL "")
|
||||
string(REPLACE "." ";" ${_sFindName}_${_sComponent}_VERSION "${${_sFindName}_${_sComponent}_VERSION}")
|
||||
list(GET ${_sFindName}_${_sComponent}_VERSION 0 ${_sFindName}_${_sComponent}_VERSION_MAJOR)
|
||||
list(GET ${_sFindName}_${_sComponent}_VERSION 1 ${_sFindName}_${_sComponent}_VERSION_MINOR)
|
||||
list(GET ${_sFindName}_${_sComponent}_VERSION 2 ${_sFindName}_${_sComponent}_VERSION_PATCH)
|
||||
string(REPLACE ";" "." ${_sFindName}_${_sComponent}_VERSION "${${_sFindName}_${_sComponent}_VERSION}")
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_${_sComponent}_EXECUTABLE}" -V:archname
|
||||
OUTPUT_VARIABLE ${_sFindName}_ARCHITECTURE_FULL
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
string(REGEX REPLACE "archname='([^']*)'.*" "\\1" ${_sFindName}_ARCHITECTURE_FULL "${${_sFindName}_ARCHITECTURE_FULL}")
|
||||
string(REPLACE "-multi" "" ${_sFindName}_ARCHITECTURE_SHORT "${${_sFindName}_ARCHITECTURE_FULL}")
|
||||
string(REPLACE "-thread" "" ${_sFindName}_ARCHITECTURE_SHORT "${${_sFindName}_ARCHITECTURE_SHORT}")
|
||||
|
||||
if(DEFINED ${_sFindName}_ARCHITECTURE_FULL AND ${_sFindName}_ARCHITECTURE_FULL MATCHES "-msys-" AND NOT NXB_TARGET_PLATFORM_MSYS)
|
||||
string(REPLACE "/usr/" ";" _sMsysPrefix "${${_sFindName}_${_sComponent}_EXECUTABLE}")
|
||||
list(GET _sMsysPrefix 0 _sMsysPrefix)
|
||||
else()
|
||||
unset(_sMsysPrefix)
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_${_sComponent}_EXECUTABLE}" -V:archlib
|
||||
OUTPUT_VARIABLE ${_sFindName}_MODARCH_CORE
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_${_sComponent}_EXECUTABLE}" -V:privlib
|
||||
OUTPUT_VARIABLE ${_sFindName}_MODPATH_CORE
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_${_sComponent}_EXECUTABLE}" -V:installarchlib
|
||||
OUTPUT_VARIABLE ${_sFindName}_MODARCH_UPDATE
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_${_sComponent}_EXECUTABLE}" -V:installprivlib
|
||||
OUTPUT_VARIABLE ${_sFindName}_MODPATH_UPDATE
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_${_sComponent}_EXECUTABLE}" -V:installvendorarch
|
||||
OUTPUT_VARIABLE ${_sFindName}_MODARCH_VENDOR
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_${_sComponent}_EXECUTABLE}" -V:installvendorlib
|
||||
OUTPUT_VARIABLE ${_sFindName}_MODPATH_VENDOR
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_${_sComponent}_EXECUTABLE}" -V:installsitearch
|
||||
OUTPUT_VARIABLE ${_sFindName}_MODARCH_SITE
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_${_sComponent}_EXECUTABLE}" -V:installsitelib
|
||||
OUTPUT_VARIABLE ${_sFindName}_MODPATH_SITE
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
|
||||
string(REGEX REPLACE "archlib='([^']*)'.*" "${_sMsysPrefix}\\1" ${_sFindName}_MODARCH_CORE "${${_sFindName}_MODARCH_CORE}")
|
||||
string(REGEX REPLACE "privlib='([^']*)'.*" "${_sMsysPrefix}\\1" ${_sFindName}_MODPATH_CORE "${${_sFindName}_MODPATH_CORE}")
|
||||
string(REGEX REPLACE "installarchlib='([^']*)'.*" "${_sMsysPrefix}\\1" ${_sFindName}_MODARCH_UPDATE "${${_sFindName}_MODARCH_UPDATE}")
|
||||
string(REGEX REPLACE "installprivlib='([^']*)'.*" "${_sMsysPrefix}\\1" ${_sFindName}_MODPATH_UPDATE "${${_sFindName}_MODPATH_UPDATE}")
|
||||
string(REGEX REPLACE "installvendorarch='([^']*)'.*" "${_sMsysPrefix}\\1" ${_sFindName}_MODARCH_VENDOR "${${_sFindName}_MODARCH_VENDOR}")
|
||||
string(REGEX REPLACE "installvendorlib='([^']*)'.*" "${_sMsysPrefix}\\1" ${_sFindName}_MODPATH_VENDOR "${${_sFindName}_MODPATH_VENDOR}")
|
||||
string(REGEX REPLACE "installsitearch='([^']*)'.*" "${_sMsysPrefix}\\1" ${_sFindName}_MODARCH_SITE "${${_sFindName}_MODARCH_SITE}")
|
||||
string(REGEX REPLACE "installsitelib='([^']*)'.*" "${_sMsysPrefix}\\1" ${_sFindName}_MODPATH_SITE "${${_sFindName}_MODPATH_SITE}")
|
||||
|
||||
foreach(_sTryPerl "perl" "perl${${_sFindName}_${_sComponent}_VERSION_MAJOR}")
|
||||
foreach(_sTryVersion "${_sFindName}_${_sComponent}_VERSION" "${${_sFindName}_${_sComponent}_VERSION_MAJOR}.${${_sFindName}_${_sComponent}_VERSION_MINOR}")
|
||||
foreach(_sTryArch "${${_sFindName}_ARCHITECTURE_FULL}" "${${_sFindName}_ARCHITECTURE_SHORT}")
|
||||
if(${_sFindName}_MODARCH_CORE STREQUAL "")
|
||||
if(EXISTS "${${_sFindName}_PATH}/../lib/${_sTryArch}/${_sTryPerl}/${_sTryVersion}")
|
||||
set(${_sFindName}_MODARCH_CORE "${${_sFindName}_PATH}/../lib/${_sTryArch}/${_sTryPerl}/${_sTryVersion}")
|
||||
|
||||
if(${_sFindName}_MODPATH_CORE STREQUAL "")
|
||||
if(EXISTS "${${_sFindName}_PATH}/../share/${_sTryPerl}/${_sTryVersion}")
|
||||
set(${_sFindName}_MODPATH_CORE "${${_sFindName}_PATH}/../share/${_sTryPerl}/${_sTryVersion}")
|
||||
elseif(EXISTS "${${_sFindName}_PATH}/../share/${_sTryPerl}")
|
||||
set(${_sFindName}_MODPATH_CORE "${${_sFindName}_PATH}/../share/${_sTryPerl}")
|
||||
endif()
|
||||
endif()
|
||||
elseif(EXISTS "${${_sFindName}_PATH}/../lib/${_sTryPerl}/${_sTryVersion}/${_sTryArch}")
|
||||
set(${_sFindName}_MODARCH_CORE "${${_sFindName}_PATH}/../lib/${_sTryPerl}/${_sTryVersion}/${_sTryArch}")
|
||||
|
||||
if(${_sFindName}_MODPATH_CORE STREQUAL "")
|
||||
set(${_sFindName}_MODPATH_CORE "${${_sFindName}_PATH}/../lib/${_sTryPerl}/${_sTryVersion}")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODARCH_VENDOR STREQUAL "")
|
||||
if(EXISTS "${${_sFindName}_PATH}/../lib/${_sTryArch}/${_sTryPerl}/${_sTryVersion}" AND NOT ${_sFindName}_MODARCH_CORE STREQUAL "${${_sFindName}_PATH}/../lib/${_sTryArch}/${_sTryPerl}/${_sTryVersion}")
|
||||
set(${_sFindName}_MODARCH_VENDOR "${${_sFindName}_PATH}/../lib/${_sTryArch}/${_sTryPerl}/${_sTryVersion}")
|
||||
|
||||
if(${_sFindName}_MODPATH_VENDOR STREQUAL "")
|
||||
if(EXISTS "${${_sFindName}_PATH}/../share/${_sTryPerl}/${_sTryVersion}")
|
||||
set(${_sFindName}_MODPATH_VENDOR "${${_sFindName}_PATH}/../share/${_sTryPerl}/${_sTryVersion}")
|
||||
elseif(EXISTS "${${_sFindName}_PATH}/../share/${_sTryPerl}")
|
||||
set(${_sFindName}_MODPATH_VENDOR "${${_sFindName}_PATH}/../share/${_sTryPerl}")
|
||||
endif()
|
||||
endif()
|
||||
elseif(EXISTS "${${_sFindName}_PATH}/../lib/${_sTryPerl}/vendor_perl/${_sTryVersion}/${_sTryArch}")
|
||||
set(${_sFindName}_MODARCH_VENDOR "${${_sFindName}_PATH}/../lib/${_sTryPerl}/vendor_perl/${_sTryVersion}/${_sTryArch}")
|
||||
|
||||
if(${_sFindName}_MODPATH_VENDOR STREQUAL "")
|
||||
set(${_sFindName}_MODPATH_VENDOR "${${_sFindName}_PATH}/../lib/${_sTryPerl}/vendor_perl/${_sTryVersion}")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODARCH_SITE STREQUAL "")
|
||||
if(EXISTS "${${_sFindName}_PATH}/../local/lib/${_sTryArch}/${_sTryPerl}/${_sTryVersion}")
|
||||
set(${_sFindName}_MODARCH_SITE "${${_sFindName}_PATH}/../local/lib/${_sTryArch}/${_sTryPerl}/${_sTryVersion}")
|
||||
|
||||
if(${_sFindName}_MODPATH_SITE STREQUAL "")
|
||||
if(EXISTS "${${_sFindName}_PATH}/../local/share/${_sTryPerl}/${_sTryVersion}")
|
||||
set(${_sFindName}_MODPATH_SITE "${${_sFindName}_PATH}/../local/share/${_sTryPerl}/${_sTryVersion}")
|
||||
elseif(EXISTS "${${_sFindName}_PATH}/../local/share/${_sTryPerl}")
|
||||
set(${_sFindName}_MODPATH_SITE "${${_sFindName}_PATH}/../local/share/${_sTryPerl}")
|
||||
endif()
|
||||
endif()
|
||||
elseif(EXISTS "${${_sFindName}_PATH}/../lib/${_sTryPerl}/site_perl/${_sTryVersion}/${_sTryArch}")
|
||||
set(${_sFindName}_MODARCH_SITE "${${_sFindName}_PATH}/../lib/${_sTryPerl}/site_perl/${_sTryVersion}/${_sTryArch}")
|
||||
|
||||
if(${_sFindName}_MODPATH_SITE STREQUAL "")
|
||||
set(${_sFindName}_MODPATH_SITE "${${_sFindName}_PATH}/../lib/${_sTryPerl}/site_perl/${_sTryVersion}")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(${_sFindName}_MODARCH_CORE STREQUAL "")
|
||||
if(EXISTS "${${_sFindName}_PATH}/../lib/${_sTryPerl}/${_sTryVersion}/mach")
|
||||
set(${_sFindName}_MODARCH_CORE "${${_sFindName}_PATH}/../lib/${_sTryPerl}/${_sTryVersion}/mach")
|
||||
|
||||
if(${_sFindName}_MODPATH_CORE STREQUAL "")
|
||||
set(${_sFindName}_MODPATH_CORE "${${_sFindName}_PATH}/../lib/${_sTryPerl}/${_sTryVersion}")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODARCH_VENDOR STREQUAL "")
|
||||
if(EXISTS "${${_sFindName}_PATH}/../lib/${_sTryPerl}/vendor_perl/${_sTryVersion}/mach")
|
||||
set(${_sFindName}_MODARCH_VENDOR "${${_sFindName}_PATH}/../lib/${_sTryPerl}/vendor_perl/${_sTryVersion}/mach")
|
||||
|
||||
if(${_sFindName}_MODPATH_VENDOR STREQUAL "")
|
||||
set(${_sFindName}_MODPATH_VENDOR "${${_sFindName}_PATH}/../lib/${_sTryPerl}/vendor_perl/${_sTryVersion}")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODARCH_SITE STREQUAL "")
|
||||
if(EXISTS "${${_sFindName}_PATH}/../lib/${_sTryPerl}/site_perl/${_sTryVersion}/mach")
|
||||
set(${_sFindName}_MODARCH_SITE "${${_sFindName}_PATH}/../lib/${_sTryPerl}/site_perl/${_sTryVersion}/mach")
|
||||
|
||||
if(${_sFindName}_MODPATH_SITE STREQUAL "")
|
||||
set(${_sFindName}_MODPATH_SITE "${${_sFindName}_PATH}/../lib/${_sTryPerl}/site_perl/${_sTryVersion}")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(${_sFindName}_MODARCH_CORE STREQUAL "")
|
||||
if(EXISTS "${${_sFindName}_PATH}/../lib/${_sTryPerl}/core_perl")
|
||||
set(${_sFindName}_MODARCH_CORE "${${_sFindName}_PATH}/../lib/${_sTryPerl}/core_perl")
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODPATH_CORE STREQUAL "")
|
||||
if(EXISTS "${${_sFindName}_PATH}/../share/${_sTryPerl}/core_perl")
|
||||
set(${_sFindName}_MODPATH_CORE "${${_sFindName}_PATH}/../share/${_sTryPerl}/core_perl")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODARCH_VENDOR STREQUAL "")
|
||||
if(EXISTS "${${_sFindName}_PATH}/../lib/${_sTryPerl}/vendor_perl")
|
||||
set(${_sFindName}_MODARCH_VENDOR "${${_sFindName}_PATH}/../lib/${_sTryPerl}/vendor_perl")
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODPATH_VENDOR STREQUAL "")
|
||||
if(EXISTS "${${_sFindName}_PATH}/../share/${_sTryPerl}/vendor_perl")
|
||||
set(${_sFindName}_MODPATH_VENDOR "${${_sFindName}_PATH}/../share/${_sTryPerl}/vendor_perl")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODARCH_SITE STREQUAL "")
|
||||
if(EXISTS "${${_sFindName}_PATH}/../lib/${_sTryPerl}/site_perl")
|
||||
set(${_sFindName}_MODARCH_SITE "${${_sFindName}_PATH}/../lib/${_sTryPerl}/site_perl")
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODPATH_SITE STREQUAL "")
|
||||
if(EXISTS "${${_sFindName}_PATH}/../share/${_sTryPerl}/site_perl")
|
||||
set(${_sFindName}_MODPATH_SITE "${${_sFindName}_PATH}/../share/${_sTryPerl}/site_perl")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(${_sFindName}_MODARCH_CORE STREQUAL "")
|
||||
set(${_sFindName}_MODARCH_CORE "${${_sFindName}_PATH}/../lib")
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODPATH_CORE STREQUAL "")
|
||||
string(REPLACE "/lib" "/share" ${_sFindName}_MODPATH_CORE "${${_sFindName}_MODARCH_CORE}")
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODARCH_UPDATE STREQUAL "")
|
||||
set(${_sFindName}_MODARCH_UPDATE "${${_sFindName}_MODARCH_CORE}")
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODPATH_UPDATE STREQUAL "")
|
||||
set(${_sFindName}_MODPATH_UPDATE "${${_sFindName}_MODPATH_CORE}")
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODARCH_VENDOR STREQUAL "")
|
||||
set(${_sFindName}_MODARCH_VENDOR "${${_sFindName}_PATH}/../vendor/lib")
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODPATH_VENDOR STREQUAL "")
|
||||
string(REPLACE "/lib" "/share" ${_sFindName}_MODPATH_VENDOR "${${_sFindName}_MODARCH_VENDOR}")
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODARCH_SITE STREQUAL "")
|
||||
set(${_sFindName}_MODARCH_SITE "${${_sFindName}_PATH}/../site/lib")
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODPATH_SITE STREQUAL "")
|
||||
string(REPLACE "/lib" "/share" ${_sFindName}_MODPATH_SITE "${${_sFindName}_MODARCH_SITE}")
|
||||
endif()
|
||||
|
||||
foreach(_sModPath
|
||||
"${_sFindName}_MODARCH_CORE"
|
||||
"${_sFindName}_MODPATH_CORE"
|
||||
"${_sFindName}_MODARCH_UPDATE"
|
||||
"${_sFindName}_MODPATH_UPDATE"
|
||||
"${_sFindName}_MODARCH_VENDOR"
|
||||
"${_sFindName}_MODPATH_VENDOR"
|
||||
"${_sFindName}_MODARCH_SITE"
|
||||
"${_sFindName}_MODPATH_SITE")
|
||||
if(NOT ${_sModPath} STREQUAL "")
|
||||
file(TO_CMAKE_PATH "${${_sModPath}}" ${_sModPath})
|
||||
get_filename_component(${_sModPath} "${${_sModPath}}" ABSOLUTE)
|
||||
|
||||
if(NOT EXISTS "${${_sModPath}}")
|
||||
unset(${_sModPath})
|
||||
endif()
|
||||
else()
|
||||
unset(${_sModPath})
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
endif()
|
||||
elseif("${_sComponent}" IN_LIST _listComponentsLibrary)
|
||||
string(REPLACE "lib" "" _sComponentNoLib "${_sComponent}")
|
||||
|
||||
if(${_sFindName}_perl_EXECUTABLE)
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_perl_EXECUTABLE}" -V:${_sComponent}
|
||||
OUTPUT_VARIABLE ${_sFindName}_${_sComponent}_CANDIDATE
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
string(REGEX REPLACE "${_sComponent}='([^']*)'.*" "\\1" ${_sFindName}_${_sComponent}_CANDIDATE "${${_sFindName}_${_sComponent}_CANDIDATE}")
|
||||
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_perl_EXECUTABLE}" -MExtUtils::Embed -e ccopts
|
||||
OUTPUT_VARIABLE ${_sFindName}_${_sComponent}_CFLAGS
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_perl_EXECUTABLE}" -MExtUtils::Embed -e cppopts
|
||||
OUTPUT_VARIABLE ${_sFindName}_${_sComponent}_CXXFLAGS
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_perl_EXECUTABLE}" -MExtUtils::Embed -e ldopts
|
||||
OUTPUT_VARIABLE ${_sFindName}_${_sComponent}_LDFLAGS
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
|
||||
if(${_sFindName}_${_sComponent}_CFLAGS STREQUAL "")
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_perl_EXECUTABLE}" -V:ccflags
|
||||
OUTPUT_VARIABLE ${_sFindName}_${_sComponent}_CFLAGS
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
string(REGEX REPLACE "ccflags='([^']*)'.*" "\\1" ${_sFindName}_${_sComponent}_CFLAGS "${${_sFindName}_${_sComponent}_CFLAGS}")
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_${_sComponent}_CXXFLAGS STREQUAL "")
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_perl_EXECUTABLE}" -V:cppflags
|
||||
OUTPUT_VARIABLE ${_sFindName}_${_sComponent}_CXXFLAGS
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
string(REGEX REPLACE "cppflags='([^']*)'.*" "\\1" ${_sFindName}_${_sComponent}_CXXFLAGS "${${_sFindName}_${_sComponent}_CXXFLAGS}")
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_${_sComponent}_LDFLAGS STREQUAL "")
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_perl_EXECUTABLE}" -V:ldflags
|
||||
OUTPUT_VARIABLE ${_sFindName}_${_sComponent}_LDFLAGS
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
string(REGEX REPLACE "ldflags='([^']*)'.*" "\\1" ${_sFindName}_${_sComponent}_LDFLAGS "${${_sFindName}_${_sComponent}_LDFLAGS}")
|
||||
endif()
|
||||
|
||||
string(REGEX MATCHALL "-I[^ ]+" ${_sFindName}_INCPATH "${${_sFindName}_${_sComponent}_CFLAGS}")
|
||||
string(REPLACE "-I" "" ${_sFindName}_INCPATH "${${_sFindName}_INCPATH}")
|
||||
|
||||
string(REGEX MATCHALL "-L[^ ]+" ${_sFindName}_LIBPATH "${${_sFindName}_${_sComponent}_LDFLAGS}")
|
||||
string(REPLACE "-L" "" ${_sFindName}_LIBPATH "${${_sFindName}_LIBPATH}")
|
||||
endif()
|
||||
|
||||
foreach(_sModPath
|
||||
"${_sFindName}_INCPATH"
|
||||
"${_sFindName}_LIBPATH")
|
||||
if(NOT ${_sModPath} STREQUAL "")
|
||||
list(REMOVE_DUPLICATES ${_sModPath})
|
||||
else()
|
||||
unset(${_sModPath})
|
||||
endif()
|
||||
|
||||
foreach(_sModPath2 ${${_sModPath}})
|
||||
file(TO_CMAKE_PATH "${_sModPath2}" _sModPath3)
|
||||
get_filename_component(_sModPath3 "${_sModPath3}" ABSOLUTE)
|
||||
|
||||
if(EXISTS "${_sModPath3}")
|
||||
list(REMOVE_ITEM ${_sModPath} "${_sModPath2}")
|
||||
list(APPEND ${_sModPath} "${_sModPath3}")
|
||||
else()
|
||||
list(REMOVE_ITEM ${_sModPath} "${_sModPath2}")
|
||||
endif()
|
||||
endforeach()
|
||||
endforeach()
|
||||
|
||||
if(NOT DEFINED ${_sFindName}_${_sComponent}_CANDIDATE OR ${_sFindName}_${_sComponent}_CANDIDATE STREQUAL "")
|
||||
set(${_sFindName}_${_sComponent}_CANDIDATE
|
||||
"${_sComponentNoLib}${${_sFindName}_VERSION}"
|
||||
"${_sComponentNoLib}${${_sFindName}_VERSION_MAJOR}.${${_sFindName}_VERSION_MINOR}"
|
||||
"${_sComponentNoLib}${${_sFindName}_VERSION_MAJOR}_${${_sFindName}_VERSION_MINOR}"
|
||||
"${_sComponentNoLib}${${_sFindName}_VERSION_MAJOR}"
|
||||
"${_sComponentNoLib}")
|
||||
elseif(DEFINED ${_sFindName}_ARCHITECTURE_FULL AND ${_sFindName}_ARCHITECTURE_FULL MATCHES "-msys-")
|
||||
list(APPEND ${_sFindName}_${_sComponent}_CANDIDATE "${_sComponentNoLib}")
|
||||
endif()
|
||||
|
||||
find_library(${_sFindName}_${_sComponent}_LIBRARY
|
||||
NAMES ${${_sFindName}_${_sComponent}_CANDIDATE}
|
||||
NO_DEFAULT_PATH
|
||||
PATHS
|
||||
${${_sFindName}_LIBPATH}
|
||||
"${${_sFindName}_MODARCH_UPDATE}"
|
||||
"${${_sFindName}_MODARCH_CORE}"
|
||||
PATH_SUFFIXES "CORE")
|
||||
find_path(${_sFindName}_${_sComponent}_INCLUDE_DIR
|
||||
NAMES "${_sComponentNoLib}.h"
|
||||
NO_DEFAULT_PATH
|
||||
PATHS
|
||||
${${_sFindName}_INCPATH}
|
||||
"${${_sFindName}_MODARCH_UPDATE}"
|
||||
"${${_sFindName}_MODARCH_CORE}"
|
||||
PATH_SUFFIXES "CORE")
|
||||
else()
|
||||
string(REPLACE "::" "_" _sComponentSane "${_sComponent}")
|
||||
string(REPLACE "::" "/" _sComponentPath "${_sComponent}.pm")
|
||||
get_filename_component(_sComponentFile "${_sComponentPath}" NAME)
|
||||
get_filename_component(_sComponentPath "${_sComponentPath}" DIRECTORY)
|
||||
|
||||
find_path(${_sFindName}_${_sComponentSane}_MODULE_DIR
|
||||
NAMES "${_sComponentFile}"
|
||||
NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
|
||||
PATHS
|
||||
"${_sMsysPrefix}${${_sFindName}_MODARCH_SITE}"
|
||||
"${_sMsysPrefix}${${_sFindName}_MODPATH_SITE}"
|
||||
"${_sMsysPrefix}${${_sFindName}_MODARCH_VENDOR}"
|
||||
"${_sMsysPrefix}${${_sFindName}_MODPATH_VENDOR}"
|
||||
"${_sMsysPrefix}${${_sFindName}_MODARCH_UPDATE}"
|
||||
"${_sMsysPrefix}${${_sFindName}_MODPATH_UPDATE}"
|
||||
"${_sMsysPrefix}${${_sFindName}_MODARCH_CORE}"
|
||||
"${_sMsysPrefix}${${_sFindName}_MODPATH_CORE}"
|
||||
PATH_SUFFIXES "${_sComponentPath}")
|
||||
|
||||
if(${_sFindName}_${_sComponentSane}_MODULE_DIR)
|
||||
set(${_sFindName}_${_sComponentSane}_MODULE "${${_sFindName}_${_sComponentSane}_MODULE_DIR}/${_sComponentFile}")
|
||||
file(READ "${${_sFindName}_${_sComponentSane}_MODULE}" ${_sFindName}_${_sComponentSane}_VERSION)
|
||||
string(REGEX MATCHALL "VERSION[^;]+" ${_sFindName}_${_sComponentSane}_VERSION "${${_sFindName}_${_sComponentSane}_VERSION}")
|
||||
string(REGEX MATCH "[0-9]+[\.][0-9\.]+" ${_sFindName}_${_sComponentSane}_VERSION "${${_sFindName}_${_sComponentSane}_VERSION}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
_nxb_handle_components()
|
||||
endforeach()
|
||||
|
||||
_nxb_handle_module()
|
||||
|
||||
# ---------------
|
||||
# Feature Summary
|
||||
# ---------------
|
||||
|
||||
include(FeatureSummary)
|
||||
set_package_properties(${_sFindName} PROPERTIES
|
||||
DESCRIPTION "Perl Programming Language"
|
||||
URL "https://www.perl.org/")
|
||||
|
||||
# -----------------------
|
||||
# Backwards-Compatibility
|
||||
# -----------------------
|
||||
|
||||
set(PERL_SITEARCH "${${_sFindName}_MODARCH_SITE}")
|
||||
set(PERL_SITELIB "${${_sFindName}_MODPATH_SITE}")
|
||||
set(PERL_VENDORARCH "${${_sFindName}_MODARCH_VENDOR}")
|
||||
set(PERL_VENDORLIB "${${_sFindName}_MODPATH_VENDOR}")
|
||||
set(PERL_ARCHLIB "${${_sFindName}_MODARCH_CORE}")
|
||||
set(PERL_PRIVLIB "${${_sFindName}_MODPATH_CORE}")
|
||||
set(PERL_UPDATE_ARCHLIB "${${_sFindName}_MODARCH_UPDATE}")
|
||||
set(PERL_UPDATE_PRIVLIB "${${_sFindName}_MODPATH_UPDATE}")
|
||||
|
||||
set(PERL_EXECUTABLE "${${_sFindName}_perl_EXECUTABLE}")
|
||||
set(PERL_FOUND "${${_sFindName}_perl_FOUND}")
|
||||
set(PERL_VERSION_STRING "${${_sFindName}_perl_VERSION}")
|
||||
|
||||
set(PERLLIBS_FOUND "${${_sFindName}_libperl_FOUND}")
|
||||
set(PERL_INCLUDE_PATH "${${_sFindName}_libperl_INCLUDE_DIR}")
|
||||
set(PERL_LIBRARY "${${_sFindName}_libperl_LIBRARY}")
|
||||
set(PERL_EXTRA_C_FLAGS "${${_sFindName}_libperl_CXXFLAGS}")
|
||||
|
||||
# -----------------------
|
||||
# CleanUp
|
||||
# -----------------------
|
||||
|
||||
unset(_sFindName)
|
||||
unset(_listComponentsExecutable)
|
||||
unset(_listComponentsLibrary)
|
||||
unset(_listComponentsVersion)
|
||||
unset(_listComponentsKnown)
|
||||
unset(_listComponentsRequested)
|
||||
unset(_listComponentsDefault)
|
||||
unset(_listComponentsRequired)
|
||||
unset(_listComponentsLookup)
|
|
@ -1,581 +0,0 @@
|
|||
# -------------------------------
|
||||
# SPDX-License-Identifier: ISC
|
||||
#
|
||||
# Copyright © 2019 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.
|
||||
# -------------------------------
|
||||
|
||||
get_filename_component(_sFindName "${CMAKE_CURRENT_LIST_FILE}" NAME)
|
||||
string(REPLACE "Find" "" _sFindName "${_sFindName}")
|
||||
string(REPLACE ".cmake" "" _sFindName "${_sFindName}")
|
||||
|
||||
# --------------
|
||||
# Registry Paths
|
||||
# --------------
|
||||
|
||||
if(${_sFindName}_FIND_VERSION_MAJOR EQUAL 0)
|
||||
set(_pyMajors "3" "2")
|
||||
else()
|
||||
set(_pyMajors "${${_sFindName}_FIND_VERSION_MAJOR}")
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_FIND_VERSION_MINOR EQUAL 0)
|
||||
set(_pyMinors3 "8" "7" "6" "5" "4" "3" "2" "1" "0")
|
||||
set(_pyMinors2 "7" "6" "5" "4" "3" "2" "1" "0")
|
||||
set(_pyMinors1 "6" "5" "4")
|
||||
else()
|
||||
set(_pyMinors3 "${${_sFindName}_FIND_VERSION_MINOR}")
|
||||
set(_pyMinors2 "${${_sFindName}_FIND_VERSION_MINOR}")
|
||||
set(_pyMinors1 "${${_sFindName}_FIND_VERSION_MINOR}")
|
||||
endif()
|
||||
|
||||
unset(_listFindSuffixes)
|
||||
unset(_listNameSuffixes)
|
||||
unset(_listRegistryPaths)
|
||||
|
||||
foreach(_pyMajor ${_pyMajors})
|
||||
foreach(_pyMinor ${_pyMinors${_pyMajor}})
|
||||
list(APPEND _listRegistryPaths
|
||||
"[<ROOT>\\Python\\PythonCore\\${_pyMajor}.${_pyMinor}-${NXB_TARGET_MACHINE_BITS}\\InstallPath]"
|
||||
"[<ROOT>\\Python\\PythonCore\\${_pyMajor}.${_pyMinor}\\InstallPath]"
|
||||
"[<ROOT>\\Python\\ContinuumAnalytics\\Anaconda${_pyMajor}${_pyMinor}-${NXB_TARGET_MACHINE_BITS}\\InstallPath]"
|
||||
"[<ROOT>\\Python\\ContinuumAnalytics\\Anaconda${_pyMajor}${_pyMinor}\\InstallPath]")
|
||||
list(APPEND _listFindSuffixes
|
||||
"Python/Python${_pyMajor}${_pyMinor}m"
|
||||
"Python/Python${_pyMajor}${_pyMinor}"
|
||||
"Python${_pyMajor}${_pyMinor}m"
|
||||
"Python${_pyMajor}${_pyMinor}")
|
||||
list(APPEND _listNameSuffixes
|
||||
"${_pyMajor}.${_pyMinor}m"
|
||||
"${_pyMajor}.${_pyMinor}")
|
||||
endforeach()
|
||||
|
||||
list(APPEND _listFindSuffixes
|
||||
"Anaconda${_pyMajor}")
|
||||
list(APPEND _listNameSuffixes
|
||||
"${_pyMajor}")
|
||||
endforeach()
|
||||
|
||||
list(APPEND _listFindSuffixes
|
||||
"Enthought/Canopy${NXB_TARGET_MACHINE_BITS}/edm/envs/User"
|
||||
"Canopy${NXB_TARGET_MACHINE_BITS}/edm/envs/User"
|
||||
"Enthought/Canopy/edm/envs/User"
|
||||
"Canopy/edm/envs/User")
|
||||
list(APPEND _listRegistryPaths
|
||||
"[<ROOT>\\Enthought\\Canopy${NXB_TARGET_MACHINE_BITS};InstalledPath]"
|
||||
"[<ROOT>\\Python\\canopy.enthought.com\\User\\InstallPath]"
|
||||
"[<ROOT>\\Enthought\\Canopy;InstalledPath]")
|
||||
|
||||
foreach(_pyMajor ${_pyMajors})
|
||||
foreach(_pyMinor ${_pyMinors${_pyMajor}})
|
||||
list(APPEND _listRegistryPaths
|
||||
"[<ROOT>\\IronPython\\${_pyMajor}.${_pyMinor}\\InstallPath]")
|
||||
list(APPEND _listFindSuffixes
|
||||
"IronPython ${_pyMajor}.${_pyMinor}")
|
||||
endforeach()
|
||||
endforeach()
|
||||
|
||||
# ----------------
|
||||
# Parse Components
|
||||
# ----------------
|
||||
|
||||
set(_listComponentsExecutable
|
||||
"python-config"
|
||||
"python"
|
||||
"pythonc"
|
||||
"pythonw"
|
||||
"ipy"
|
||||
"ipyw"
|
||||
"ipyc")
|
||||
set(_listComponentsLibrary
|
||||
"libpython")
|
||||
|
||||
set(_listComponentsKnown
|
||||
${_listComponentsExecutable}
|
||||
${_listComponentsLibrary})
|
||||
set(_listComponentsDefault
|
||||
"python"
|
||||
"libpython")
|
||||
set(_listComponentsRequired
|
||||
"python")
|
||||
|
||||
_nxb_parse_components(OFF)
|
||||
|
||||
# ------------
|
||||
# Find Modules
|
||||
# ------------
|
||||
|
||||
foreach(_sComponent ${_listComponentsRequested})
|
||||
if("${_sComponent}" IN_LIST _listComponentsExecutable)
|
||||
unset(_listExtraNames)
|
||||
|
||||
if("ipy" IN_LIST _listComponentsRequested)
|
||||
if(_sComponent STREQUAL "python")
|
||||
set(_listExtraNames "ipy${NXB_TARGET_MACHINE_BITS}" "ipy")
|
||||
elseif(_sComponent MATCHES "python")
|
||||
string(REPLACE "python" "ipy" _listExtraNames "${_sComponent}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(DEFINED ${_sFindName}_VERSION AND NOT ${_sFindName}_VERSION STREQUAL "")
|
||||
if(_sComponent STREQUAL "python" OR _sComponent STREQUAL "pip")
|
||||
list(APPEND _listExtraNames
|
||||
"${_sComponent}${${_sFindName}_VERSION}"
|
||||
"${_sComponent}${${_sFindName}_VERSION_MAJOR}.${${_sFindName}_VERSION_MINOR}"
|
||||
"${_sComponent}${${_sFindName}_VERSION_MAJOR}")
|
||||
elseif(_sComponent STREQUAL "python-config")
|
||||
list(APPEND _listExtraNames
|
||||
"python${${_sFindName}_VERSION}-config"
|
||||
"python${${_sFindName}_VERSION_MAJOR}.${${_sFindName}_VERSION_MINOR}-config"
|
||||
"python${${_sFindName}_VERSION_MAJOR}-config")
|
||||
endif()
|
||||
elseif(DEFINED _listNameSuffixes)
|
||||
if(_sComponent STREQUAL "python" OR _sComponent STREQUAL "pip")
|
||||
foreach(_sNameSuffix ${_listNameSuffixes})
|
||||
list(APPEND _listExtraNames "${_sComponent}${_sNameSuffix}")
|
||||
endforeach()
|
||||
elseif(_sComponent STREQUAL "python-config")
|
||||
foreach(_sNameSuffix ${_listNameSuffixes})
|
||||
list(APPEND _listExtraNames "python${_sNameSuffix}-config")
|
||||
endforeach()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
find_program(${_sFindName}_${_sComponent}_EXECUTABLE
|
||||
NAMES ${_listExtraNames} "${_sComponent}"
|
||||
PATHS "${${_sFindName}_PATH}" ${_listRegistryPaths} ${_sFindPathsBin}
|
||||
PATH_SUFFIXES ${_listFindSuffixes} "Scripts" "bin")
|
||||
|
||||
if(${_sFindName}_${_sComponent}_EXECUTABLE)
|
||||
if(NOT DEFINED ${_sFindName}_PATH)
|
||||
get_filename_component(${_sFindName}_PATH "${${_sFindName}_${_sComponent}_EXECUTABLE}" DIRECTORY)
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_${_sComponent}_EXECUTABLE}" --version
|
||||
OUTPUT_VARIABLE ${_sFindName}_${_sComponent}_VERSION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
string(REGEX MATCH "[0-9]+[\.][0-9\.]+" ${_sFindName}_${_sComponent}_VERSION "${${_sFindName}_${_sComponent}_VERSION}")
|
||||
|
||||
if(_sComponent STREQUAL "python")
|
||||
if(${_sFindName}_${_sComponent}_VERSION STREQUAL "")
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_${_sComponent}_EXECUTABLE}" -c "import sys;print(sys.version)"
|
||||
OUTPUT_VARIABLE ${_sFindName}_${_sComponent}_VERSION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
string(REGEX MATCH "[0-9]+[\.][0-9\.]+" ${_sFindName}_${_sComponent}_VERSION "${${_sFindName}_${_sComponent}_VERSION}")
|
||||
endif()
|
||||
|
||||
if(NOT ${_sFindName}_${_sComponent}_VERSION STREQUAL "")
|
||||
string(REPLACE "." ";" ${_sFindName}_${_sComponent}_VERSION "${${_sFindName}_${_sComponent}_VERSION}")
|
||||
list(GET ${_sFindName}_${_sComponent}_VERSION 0 ${_sFindName}_${_sComponent}_VERSION_MAJOR)
|
||||
list(GET ${_sFindName}_${_sComponent}_VERSION 1 ${_sFindName}_${_sComponent}_VERSION_MINOR)
|
||||
list(GET ${_sFindName}_${_sComponent}_VERSION 2 ${_sFindName}_${_sComponent}_VERSION_PATCH)
|
||||
string(REPLACE ";" "." ${_sFindName}_${_sComponent}_VERSION "${${_sFindName}_${_sComponent}_VERSION}")
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_${_sComponent}_EXECUTABLE}" -c "from distutils.sysconfig import get_python_lib;print(get_python_lib(False,True))"
|
||||
OUTPUT_VARIABLE ${_sFindName}_MODPATH_CORE
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_${_sComponent}_EXECUTABLE}" -c "from distutils.sysconfig import get_python_lib;print(get_python_lib(True,True))"
|
||||
OUTPUT_VARIABLE ${_sFindName}_MODARCH_CORE
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_${_sComponent}_EXECUTABLE}" -c "from distutils.sysconfig import get_python_lib;print(get_python_lib(False,False))"
|
||||
OUTPUT_VARIABLE ${_sFindName}_MODPATH_SITE
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_${_sComponent}_EXECUTABLE}" -c "from distutils.sysconfig import get_python_lib;print(get_python_lib(True,False))"
|
||||
OUTPUT_VARIABLE ${_sFindName}_MODARCH_SITE
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
set(${_sFindName}_MODARCH_VENDOR "")
|
||||
set(${_sFindName}_MODPATH_VENDOR "")
|
||||
|
||||
foreach(_sTryVersion "${_sFindName}_${_sComponent}_VERSION" "${${_sFindName}_${_sComponent}_VERSION_MAJOR}.${${_sFindName}_${_sComponent}_VERSION_MINOR}" "${${_sFindName}_${_sComponent}_VERSION_MAJOR}")
|
||||
if(${_sFindName}_MODARCH_CORE STREQUAL "")
|
||||
if(EXISTS "${${_sFindName}_PATH}/../lib/${_sComponent}${_sTryVersion}")
|
||||
set(${_sFindName}_MODARCH_CORE "${${_sFindName}_PATH}/../lib/${_sComponent}${_sTryVersion}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODPATH_CORE STREQUAL "")
|
||||
if(EXISTS "${${_sFindName}_PATH}/../lib/${_sComponent}${_sTryVersion}")
|
||||
set(${_sFindName}_MODPATH_CORE "${${_sFindName}_PATH}/../lib/${_sComponent}${_sTryVersion}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODARCH_SITE STREQUAL "")
|
||||
if(EXISTS "${${_sFindName}_PATH}/../lib/${_sComponent}${_sTryVersion}/site-packages")
|
||||
set(${_sFindName}_MODARCH_SITE "${${_sFindName}_PATH}/../lib/${_sComponent}${_sTryVersion}/site-packages")
|
||||
elseif(EXISTS "${${_sFindName}_PATH}/../lib/${_sComponent}${_sTryVersion}/dist-packages")
|
||||
set(${_sFindName}_MODARCH_SITE "${${_sFindName}_PATH}/../lib/${_sComponent}${_sTryVersion}/dist-packages")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODPATH_SITE STREQUAL "")
|
||||
if(EXISTS "${${_sFindName}_PATH}/../lib/${_sComponent}${_sTryVersion}/site-packages")
|
||||
set(${_sFindName}_MODPATH_SITE "${${_sFindName}_PATH}/../lib/${_sComponent}${_sTryVersion}/site-packages")
|
||||
elseif(EXISTS "${${_sFindName}_PATH}/../lib/${_sComponent}${_sTryVersion}/dist-packages")
|
||||
set(${_sFindName}_MODPATH_SITE "${${_sFindName}_PATH}/../lib/${_sComponent}${_sTryVersion}/dist-packages")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODARCH_VENDOR STREQUAL "")
|
||||
if(EXISTS "${${_sFindName}_PATH}/../lib/${_sComponent}${_sTryVersion}/vendor-packages")
|
||||
set(${_sFindName}_MODARCH_VENDOR "${${_sFindName}_PATH}/../lib/${_sComponent}${_sTryVersion}/vendor-packages")
|
||||
elseif(EXISTS "${${_sFindName}_PATH}/../local/lib/${_sComponent}${_sTryVersion}/dist-packages")
|
||||
set(${_sFindName}_MODARCH_VENDOR "${${_sFindName}_PATH}/../local/lib/${_sComponent}${_sTryVersion}/dist-packages")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODPATH_VENDOR STREQUAL "")
|
||||
if(EXISTS "${${_sFindName}_PATH}/../lib/${_sComponent}${_sTryVersion}/vendor-packages")
|
||||
set(${_sFindName}_MODPATH_VENDOR "${${_sFindName}_PATH}/../lib/${_sComponent}${_sTryVersion}/vendor-packages")
|
||||
elseif(EXISTS "${${_sFindName}_PATH}/../local/lib/${_sComponent}${_sTryVersion}/dist-packages")
|
||||
set(${_sFindName}_MODPATH_VENDOR "${${_sFindName}_PATH}/../local/lib/${_sComponent}${_sTryVersion}/dist-packages")
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(${_sFindName}_MODARCH_CORE STREQUAL "")
|
||||
set(${_sFindName}_MODARCH_CORE "${${_sFindName}_PATH}/Lib")
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODPATH_CORE STREQUAL "")
|
||||
set(${_sFindName}_MODPATH_CORE "${${_sFindName}_MODARCH_CORE}")
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODARCH_SITE STREQUAL "")
|
||||
set(${_sFindName}_MODARCH_SITE "${${_sFindName}_MODARCH_CORE}/site-packages")
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODPATH_SITE STREQUAL "")
|
||||
set(${_sFindName}_MODPATH_SITE "${${_sFindName}_MODPATH_CORE}/site-packages")
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODARCH_VENDOR STREQUAL "")
|
||||
set(${_sFindName}_MODARCH_VENDOR "${${_sFindName}_MODARCH_CORE}/vendor-packages")
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODPATH_VENDOR STREQUAL "")
|
||||
set(${_sFindName}_MODPATH_VENDOR "${${_sFindName}_MODPATH_CORE}/vendor-packages")
|
||||
endif()
|
||||
|
||||
foreach(_sModPath
|
||||
"${_sFindName}_MODARCH_CORE"
|
||||
"${_sFindName}_MODPATH_CORE"
|
||||
"${_sFindName}_MODARCH_VENDOR"
|
||||
"${_sFindName}_MODPATH_VENDOR"
|
||||
"${_sFindName}_MODARCH_SITE"
|
||||
"${_sFindName}_MODPATH_SITE")
|
||||
if(NOT ${_sModPath} STREQUAL "")
|
||||
file(TO_CMAKE_PATH "${${_sModPath}}" ${_sModPath})
|
||||
get_filename_component(${_sModPath} "${${_sModPath}}" ABSOLUTE)
|
||||
|
||||
if(NOT EXISTS "${${_sModPath}}")
|
||||
unset(${_sModPath})
|
||||
endif()
|
||||
else()
|
||||
unset(${_sModPath})
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
endif()
|
||||
elseif("${_sComponent}" IN_LIST _listComponentsLibrary)
|
||||
string(REPLACE "lib" "" _sComponentNoLib "${_sComponent}")
|
||||
|
||||
if(NOT DEFINED ${_sFindName}_python-config_FOUND)
|
||||
find_program(${_sFindName}_python-config_EXECUTABLE
|
||||
NAMES "python${${_sFindName}_VERSION}-config" "python${${_sFindName}_VERSION_MAJOR}.${${_sFindName}_VERSION_MINOR}-config" "python${${_sFindName}_VERSION_MAJOR}-config" "python-config"
|
||||
PATHS "${${_sFindName}_PATH}" ${_listRegistryPaths} ${_sFindPathsBin}
|
||||
PATH_SUFFIXES ${_listFindSuffixes} "Scripts" "bin")
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_python-config_EXECUTABLE)
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_python-config_EXECUTABLE}" --cflags
|
||||
OUTPUT_VARIABLE ${_sFindName}_${_sComponent}_CFLAGS
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_python-config_EXECUTABLE}" --ldflags
|
||||
OUTPUT_VARIABLE ${_sFindName}_${_sComponent}_LDFLAGS
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_python-config_EXECUTABLE}" --libs
|
||||
OUTPUT_VARIABLE ${_sFindName}_${_sComponent}_CANDIDATE
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
string(REGEX MATCH "python[^ ]+" ${_sFindName}_${_sComponent}_CANDIDATE "${${_sFindName}_${_sComponent}_CANDIDATE}")
|
||||
|
||||
string(REGEX MATCHALL "-I[^ ]+" ${_sFindName}_INCPATH "${${_sFindName}_${_sComponent}_CFLAGS}")
|
||||
string(REPLACE "-I" "" ${_sFindName}_INCPATH "${${_sFindName}_INCPATH}")
|
||||
|
||||
string(REGEX MATCHALL "-L[^ ]+" ${_sFindName}_LIBPATH "${${_sFindName}_${_sComponent}_LDFLAGS}")
|
||||
string(REPLACE "-L" "" ${_sFindName}_LIBPATH "${${_sFindName}_LIBPATH}")
|
||||
endif()
|
||||
|
||||
foreach(_sTryVersion "${${_sFindName}_VERSION_MAJOR}.${${_sFindName}_VERSION_MINOR}m" "${${_sFindName}_VERSION_MAJOR}.${${_sFindName}_VERSION_MINOR}")
|
||||
if(${_sFindName}_INCPATH STREQUAL "")
|
||||
if(EXISTS "${${_sFindName}_PATH}/../include/python${_sTryVersion}")
|
||||
set(${_sFindName}_INCPATH "${${_sFindName}_PATH}/../include/python${_sTryVersion}")
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(${_sFindName}_INCPATH STREQUAL "")
|
||||
set(${_sFindName}_INCPATH "${${_sFindName}_PATH}/include")
|
||||
endif()
|
||||
|
||||
# foreach(_sTryVersion "${${_sFindName}_VERSION_MAJOR}.${${_sFindName}_VERSION_MINOR}m" "${${_sFindName}_VERSION_MAJOR}.${${_sFindName}_VERSION_MINOR}")
|
||||
# if(${_sFindName}_LIBPATH STREQUAL "")
|
||||
# if(EXISTS "${${_sFindName}_PATH}/../lib/python${_sTryVersion}/config-${NXBUILD_COMPILER_TRIPLET}")
|
||||
# set(${_sFindName}_LIBPATH "${${_sFindName}_PATH}/../lib/python${_sTryVersion}/config-${NXBUILD_COMPILER_TRIPLET}")
|
||||
# endif()
|
||||
# endif()
|
||||
# endforeach()
|
||||
|
||||
if(${_sFindName}_LIBPATH STREQUAL "")
|
||||
if(EXISTS "${${_sFindName}_PATH}/libs")
|
||||
set(${_sFindName}_LIBPATH "${${_sFindName}_PATH}/libs")
|
||||
else()
|
||||
set(${_sFindName}_LIBPATH "${${_sFindName}_PATH}/../lib")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
foreach(_sModPath
|
||||
"${_sFindName}_INCPATH"
|
||||
"${_sFindName}_LIBPATH")
|
||||
if(NOT ${_sModPath} STREQUAL "")
|
||||
list(REMOVE_DUPLICATES ${_sModPath})
|
||||
else()
|
||||
unset(${_sModPath})
|
||||
endif()
|
||||
|
||||
foreach(_sModPath2 ${${_sModPath}})
|
||||
file(TO_CMAKE_PATH "${_sModPath2}" _sModPath3)
|
||||
get_filename_component(_sModPath3 "${_sModPath3}" ABSOLUTE)
|
||||
|
||||
if(EXISTS "${_sModPath3}")
|
||||
list(REMOVE_ITEM ${_sModPath} "${_sModPath2}")
|
||||
list(APPEND ${_sModPath} "${_sModPath3}")
|
||||
else()
|
||||
list(REMOVE_ITEM ${_sModPath} "${_sModPath2}")
|
||||
endif()
|
||||
endforeach()
|
||||
endforeach()
|
||||
|
||||
if(NOT DEFINED ${_sFindName}_${_sComponent}_CANDIDATE OR ${_sFindName}_${_sComponent}_CANDIDATE STREQUAL "")
|
||||
set(${_sFindName}_${_sComponent}_CANDIDATE
|
||||
"${_sComponentNoLib}${${_sFindName}_VERSION}"
|
||||
"${_sComponentNoLib}${${_sFindName}_VERSION_MAJOR}.${${_sFindName}_VERSION_MINOR}"
|
||||
"${_sComponentNoLib}${${_sFindName}_VERSION_MAJOR}${${_sFindName}_VERSION_MINOR}"
|
||||
"${_sComponentNoLib}${${_sFindName}_VERSION_MAJOR}"
|
||||
"${_sComponentNoLib}")
|
||||
endif()
|
||||
|
||||
string(SUBSTRING "${_sComponentNoLib}" 0 1 _sComponentCap)
|
||||
string(TOUPPER "${_sComponentCap}" _sComponentCap)
|
||||
string(REGEX REPLACE "^.(.*)" "${_sComponentCap}\\1" _sComponentCap "${_sComponentNoLib}")
|
||||
|
||||
find_library(${_sFindName}_${_sComponent}_LIBRARY
|
||||
NAMES ${${_sFindName}_${_sComponent}_CANDIDATE}
|
||||
NO_DEFAULT_PATH
|
||||
PATHS ${${_sFindName}_LIBPATH})
|
||||
find_path(${_sFindName}_${_sComponent}_INCLUDE_DIR
|
||||
NAMES "${_sComponentCap}.h" "${_sComponentNoLib}.h"
|
||||
NO_DEFAULT_PATH
|
||||
PATHS ${${_sFindName}_INCPATH})
|
||||
else()
|
||||
unset(_listExtraNames)
|
||||
|
||||
if(DEFINED ${_sFindName}_FIND_VERSION AND NOT ${_sFindName}_FIND_VERSION STREQUAL "")
|
||||
set(_listExtraNames
|
||||
"${_sComponent}${${_sFindName}_FIND_VERSION}"
|
||||
"${_sComponent}${${_sFindName}_FIND_VERSION_MAJOR}.${${_sFindName}_FIND_VERSION_MINOR}"
|
||||
"${_sComponent}${${_sFindName}_FIND_VERSION_MAJOR}")
|
||||
endif()
|
||||
|
||||
find_program(${_sFindName}_${_sComponent}_EXECUTABLE
|
||||
NAMES ${_listExtraNames} "${_sComponent}"
|
||||
PATHS "${${_sFindName}_PATH}" ${_listRegistryPaths} ${_sFindPathsBin}
|
||||
PATH_SUFFIXES ${_listFindSuffixes} "Scripts" "bin")
|
||||
|
||||
if(${_sFindName}_${_sComponent}_EXECUTABLE)
|
||||
if(NOT DEFINED ${_sFindName}_PATH)
|
||||
get_filename_component(${_sFindName}_PATH "${${_sFindName}_${_sComponent}_EXECUTABLE}" DIRECTORY)
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_${_sComponent}_EXECUTABLE}" --version
|
||||
OUTPUT_VARIABLE ${_sFindName}_${_sComponent}_VERSION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
string(REGEX MATCH "[0-9]+[\.][0-9\.]+" ${_sFindName}_${_sComponent}_VERSION "${${_sFindName}_${_sComponent}_VERSION}")
|
||||
else()
|
||||
unset(${_sFindName}_${_sComponent}_EXECUTABLE CACHE)
|
||||
endif()
|
||||
|
||||
find_path(${_sFindName}_${_sComponent}_MODULE_DIR
|
||||
NAMES "__init__.py"
|
||||
NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
|
||||
PATHS
|
||||
"${${_sFindName}_MODARCH_SITE}/${_sComponent}"
|
||||
"${${_sFindName}_MODPATH_SITE}/${_sComponent}"
|
||||
"${${_sFindName}_MODARCH_VENDOR}/${_sComponent}"
|
||||
"${${_sFindName}_MODPATH_VENDOR}/${_sComponent}"
|
||||
"${${_sFindName}_MODARCH_CORE}/${_sComponent}"
|
||||
"${${_sFindName}_MODPATH_CORE}/${_sComponent}")
|
||||
|
||||
if(${_sFindName}_${_sComponent}_MODULE_DIR)
|
||||
set(${_sFindName}_${_sComponent}_MODULE "${${_sFindName}_${_sComponent}_MODULE_DIR}/__init__.py")
|
||||
file(READ "${${_sFindName}_${_sComponent}_MODULE}" ${_sFindName}_${_sComponent}_VERSION)
|
||||
string(REGEX MATCHALL "__version__[^\n]+" ${_sFindName}_${_sComponent}_VERSION "${${_sFindName}_${_sComponent}_VERSION}")
|
||||
string(REGEX MATCH "[0-9]+[\.][0-9\.]+" ${_sFindName}_${_sComponent}_VERSION "${${_sFindName}_${_sComponent}_VERSION}")
|
||||
|
||||
if(${_sFindName}_python_EXECUTABLE)
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_python_EXECUTABLE}" -c "import ${_sComponent};print(${_sComponent}.get_include())"
|
||||
OUTPUT_VARIABLE ${_sFindName}_${_sComponent}_INCLUDE_DIR
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_${_sComponent}_INCLUDE_DIR STREQUAL "")
|
||||
if(EXISTS "${${_sFindName}_${_sComponent}_MODULE_DIR}/core/include")
|
||||
set(${_sFindName}_${_sComponent}_INCLUDE_DIR "${${_sFindName}_${_sComponent}_MODULE_DIR}/core/include")
|
||||
else()
|
||||
set(${_sFindName}_${_sComponent}_INCLUDE_DIR "${${_sFindName}_${_sComponent}_MODULE_DIR}/include")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT ${_sFindName}_${_sComponent}_INCLUDE_DIR STREQUAL "")
|
||||
file(TO_CMAKE_PATH "${${_sFindName}_${_sComponent}_INCLUDE_DIR}" ${_sFindName}_${_sComponent}_INCLUDE_DIR)
|
||||
get_filename_component(${_sFindName}_${_sComponent}_INCLUDE_DIR "${${_sFindName}_${_sComponent}_INCLUDE_DIR}" ABSOLUTE)
|
||||
endif()
|
||||
|
||||
if(NOT EXISTS "${${_sFindName}_${_sComponent}_INCLUDE_DIR}")
|
||||
unset(${_sFindName}_${_sComponent}_INCLUDE_DIR)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
_nxb_handle_components()
|
||||
endforeach()
|
||||
|
||||
_nxb_handle_module()
|
||||
|
||||
# ---------------
|
||||
# Feature Summary
|
||||
# ---------------
|
||||
|
||||
include(FeatureSummary)
|
||||
set_package_properties(${_sFindName} PROPERTIES
|
||||
DESCRIPTION "Python Programming Language"
|
||||
URL "https://www.python.org/")
|
||||
|
||||
# -----------------------
|
||||
# Backwards-Compatibility
|
||||
# -----------------------
|
||||
|
||||
set(PYTHONINTERP_FOUND "${${_sFindName}_python_FOUND}")
|
||||
set(PYTHON_EXECUTABLE "${${_sFindName}_python_EXECUTABLE}")
|
||||
set(PYTHON_VERSION_STRING "${${_sFindName}_python_VERSION}")
|
||||
set(PYTHON_VERSION_MAJOR "${${_sFindName}_python_VERSION_MAJOR}")
|
||||
set(PYTHON_VERSION_MINOR "${${_sFindName}_python_VERSION_MINOR}")
|
||||
set(PYTHON_VERSION_PATCH "${${_sFindName}_python_VERSION_PATCH}")
|
||||
|
||||
set(PYTHONLIBS_FOUND "${${_sFindName}_libpython_FOUND}")
|
||||
set(PYTHON_LIBRARIES "${${_sFindName}_libpython_LIBRARY}")
|
||||
set(PYTHON_INCLUDE_PATH "${${_sFindName}_libpython_INCLUDE_DIR}")
|
||||
set(PYTHON_INCLUDE_DIRS "${${_sFindName}_libpython_INCLUDE_DIR}")
|
||||
set(PYTHONLIBS_VERSION_STRING "${${_sFindName}_python_VERSION}")
|
||||
|
||||
set(Python_Interpreter_FOUND "${${_sFindName}_python_FOUND}")
|
||||
set(Python_EXECUTABLE "${${_sFindName}_python_EXECUTABLE}")
|
||||
set(Python_STDLIB "${${_sFindName}_MODPATH_CORE}")
|
||||
set(Python_STDARCH "${${_sFindName}_MODARCH_CORE}")
|
||||
set(Python_SITELIB "${${_sFindName}_MODPATH_SITE}")
|
||||
set(Python_SITEARCH "${${_sFindName}_MODARCH_SITE}")
|
||||
set(Python_Compiler_FOUND "${${_sFindName}_pythonc_FOUND}")
|
||||
set(Python_COMPILER "${${_sFindName}_pythonc_EXECUTABLE}")
|
||||
set(Python_Development_FOUND "${${_sFindName}_libpython_FOUND}")
|
||||
set(Python_NumPy_FOUND "${${_sFindName}_numpy_FOUND}")
|
||||
set(Python_NumPy_INCLUDE_DIRS "${${_sFindName}_numpy_INCLUDE_DIRS}")
|
||||
set(Python_NumPy_VERSION "${${_sFindName}_numpy_VERSION}")
|
||||
|
||||
if(DEFINED ${_sFindName}_VERSION_MAJOR)
|
||||
if(${_sFindName}_VERSION_MAJOR EQUAL 2)
|
||||
set(Python2_FOUND "${${_sFindName}_FOUND}")
|
||||
set(Python2_Interpreter_FOUND "${${_sFindName}_python_FOUND}")
|
||||
set(Python2_EXECUTABLE "${${_sFindName}_python_EXECUTABLE}")
|
||||
set(Python2_STDLIB "${${_sFindName}_MODPATH_CORE}")
|
||||
set(Python2_STDARCH "${${_sFindName}_MODARCH_CORE}")
|
||||
set(Python2_SITELIB "${${_sFindName}_MODPATH_SITE}")
|
||||
set(Python2_SITEARCH "${${_sFindName}_MODARCH_SITE}")
|
||||
set(Python2_Compiler_FOUND "${${_sFindName}_pythonc_FOUND}")
|
||||
set(Python2_COMPILER "${${_sFindName}_pythonc_EXECUTABLE}")
|
||||
set(Python2_Development_FOUND "${${_sFindName}_libpython_FOUND}")
|
||||
set(Python2_INCLUDE_DIRS "${${_sFindName}_INCLUDE_DIRS}")
|
||||
set(Python2_LIBRARIES "${${_sFindName}_LIBRARIES}")
|
||||
set(Python2_LIBRARY_DIRS "${${_sFindName}_LIBRARY_DIRS}")
|
||||
set(Python2_VERSION "${${_sFindName}_VERSION}")
|
||||
set(Python2_VERSION_MAJOR "${${_sFindName}_VERSION_MAJOR}")
|
||||
set(Python2_VERSION_MINOR "${${_sFindName}_VERSION_MINOR}")
|
||||
set(Python2_VERSION_PATCH "${${_sFindName}_VERSION_PATCH}")
|
||||
else()
|
||||
set(Python2_FOUND OFF)
|
||||
set(Python2_Interpreter_FOUND OFF)
|
||||
set(Python2_Compiler_FOUND OFF)
|
||||
set(Python2_Development_FOUND OFF)
|
||||
set(Python2_NumPy_FOUND OFF)
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_VERSION_MAJOR EQUAL 3)
|
||||
set(Python3_FOUND "${${_sFindName}_FOUND}")
|
||||
set(Python3_Interpreter_FOUND "${${_sFindName}_python_FOUND}")
|
||||
set(Python3_EXECUTABLE "${${_sFindName}_python_EXECUTABLE}")
|
||||
set(Python3_STDLIB "${${_sFindName}_MODPATH_CORE}")
|
||||
set(Python3_STDARCH "${${_sFindName}_MODARCH_CORE}")
|
||||
set(Python3_SITELIB "${${_sFindName}_MODPATH_SITE}")
|
||||
set(Python3_SITEARCH "${${_sFindName}_MODARCH_SITE}")
|
||||
set(Python3_Compiler_FOUND "${${_sFindName}_pythonc_FOUND}")
|
||||
set(Python3_COMPILER "${${_sFindName}_pythonc_EXECUTABLE}")
|
||||
set(Python3_Development_FOUND "${${_sFindName}_libpython_FOUND}")
|
||||
set(Python3_INCLUDE_DIRS "${${_sFindName}_INCLUDE_DIRS}")
|
||||
set(Python3_LIBRARIES "${${_sFindName}_LIBRARIES}")
|
||||
set(Python3_LIBRARY_DIRS "${${_sFindName}_LIBRARY_DIRS}")
|
||||
set(Python3_VERSION "${${_sFindName}_VERSION}")
|
||||
set(Python3_VERSION_MAJOR "${${_sFindName}_VERSION_MAJOR}")
|
||||
set(Python3_VERSION_MINOR "${${_sFindName}_VERSION_MINOR}")
|
||||
set(Python3_VERSION_PATCH "${${_sFindName}_VERSION_PATCH}")
|
||||
else()
|
||||
set(Python3_FOUND OFF)
|
||||
set(Python3_Interpreter_FOUND OFF)
|
||||
set(Python3_Compiler_FOUND OFF)
|
||||
set(Python3_Development_FOUND OFF)
|
||||
set(Python3_NumPy_FOUND OFF)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# -----------------------
|
||||
# CleanUp
|
||||
# -----------------------
|
||||
|
||||
unset(_sFindName)
|
||||
unset(_listComponentsExecutable)
|
||||
unset(_listComponentsLibrary)
|
||||
unset(_listComponentsKnown)
|
||||
unset(_listComponentsRequested)
|
||||
unset(_listComponentsDefault)
|
||||
unset(_listComponentsRequired)
|
||||
unset(_listComponentsLookup)
|
|
@ -1,111 +0,0 @@
|
|||
# -------------------------------
|
||||
# SPDX-License-Identifier: ISC
|
||||
#
|
||||
# Copyright © 2019 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.
|
||||
# -------------------------------
|
||||
|
||||
get_filename_component(_sFindName "${CMAKE_CURRENT_LIST_FILE}" NAME)
|
||||
string(REPLACE "Find" "" _sFindName "${_sFindName}")
|
||||
string(REPLACE ".cmake" "" _sFindName "${_sFindName}")
|
||||
|
||||
# ----------------
|
||||
# Parse Components
|
||||
# ----------------
|
||||
|
||||
set(_listComponentsExecutable
|
||||
"dox2html5.py"
|
||||
"doxygen.py"
|
||||
"python.py")
|
||||
|
||||
set(_listComponentsKnown
|
||||
${_listComponentsExecutable}
|
||||
"plugins"
|
||||
"theme")
|
||||
set(_listComponentsDefault
|
||||
"plugins"
|
||||
"theme")
|
||||
|
||||
_nxb_parse_components(ON)
|
||||
|
||||
# ------------
|
||||
# Find Modules
|
||||
# ------------
|
||||
|
||||
foreach(_sComponent ${_listComponentsRequested})
|
||||
if("${_sComponent}" IN_LIST _listComponentsExecutable)
|
||||
find_program(${_sFindName}_${_sComponent}_EXECUTABLE
|
||||
NAMES "${_sComponent}"
|
||||
PATHS "${${_sFindName}_PATH}" ${_sFindPathsBin} "${CMAKE_CURRENT_SOURCE_DIR}/.."
|
||||
PATH_SUFFIXES "${_sFindName}/bin" "${_sFindName}/doxygen" "${_sFindName}/documentation" "bin" "doxygen" "documentation")
|
||||
|
||||
if(${_sFindName}_${_sComponent}_EXECUTABLE)
|
||||
if(NOT DEFINED ${_sFindName}_PATH)
|
||||
get_filename_component(${_sFindName}_PATH "${${_sFindName}_${_sComponent}_EXECUTABLE}" DIRECTORY)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
find_path(${_sFindName}_${_sComponent}_MODULE_DIR
|
||||
NAMES "__init__.py"
|
||||
NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
|
||||
PATHS "${${_sFindName}_PATH}")
|
||||
|
||||
if(${_sFindName}_${_sComponent}_MODULE_DIR)
|
||||
set(${_sFindName}_${_sComponent}_MODULE "${${_sFindName}_${_sComponent}_MODULE_DIR}/__init__.py")
|
||||
endif()
|
||||
elseif(_sComponent STREQUAL "plugin")
|
||||
find_path(${_sFindName}_${_sComponent}_MODULE_DIR
|
||||
NAMES "m/__init__.py"
|
||||
PATHS "${${_sFindName}_PATH}" ${_sFindPathsLib} "${CMAKE_CURRENT_SOURCE_DIR}/.."
|
||||
PATH_SUFFIXES "${_sFindName}/${_sComponent}" "${_sComponent}")
|
||||
|
||||
if(${_sFindName}_${_sComponent}_MODULE_DIR)
|
||||
if(EXISTS "${${_sFindName}_${_sComponent}_MODULE_DIR}/m/__init__.py")
|
||||
set(${_sFindName}_${_sComponent}_MODULE "${${_sFindName}_${_sComponent}_MODULE_DIR}/m/__init__.py")
|
||||
endif()
|
||||
endif()
|
||||
elseif(_sComponent STREQUAL "theme")
|
||||
find_path(${_sFindName}_${_sComponent}_MODULE_DIR
|
||||
NAMES "static/m-layout.css"
|
||||
PATHS "${${_sFindName}_PATH}" ${_sFindPathsLib} "${CMAKE_CURRENT_SOURCE_DIR}/.."
|
||||
PATH_SUFFIXES "${_sFindName}/pelican-${_sComponent}" "${_sFindName}/${_sComponent}" "pelican-${_sComponent}" "${_sComponent}")
|
||||
endif()
|
||||
|
||||
_nxb_handle_components()
|
||||
endforeach()
|
||||
|
||||
_nxb_handle_module()
|
||||
|
||||
# ---------------
|
||||
# Feature Summary
|
||||
# ---------------
|
||||
|
||||
include(FeatureSummary)
|
||||
set_package_properties(${_sFindName} PROPERTIES
|
||||
DESCRIPTION "No-Nonsense CSS Framework & Theme"
|
||||
URL "https://mcss.mosra.cz/")
|
||||
|
||||
# -----------------------
|
||||
# CleanUp
|
||||
# -----------------------
|
||||
|
||||
unset(_sFindName)
|
||||
unset(_listComponentsExecutable)
|
||||
unset(_listComponentsLibrary)
|
||||
unset(_listComponentsVersion)
|
||||
unset(_listComponentsKnown)
|
||||
unset(_listComponentsRequested)
|
||||
unset(_listComponentsDefault)
|
||||
unset(_listComponentsRequired)
|
||||
unset(_listComponentsLookup)
|
|
@ -1,205 +0,0 @@
|
|||
# -------------------------------
|
||||
# SPDX-License-Identifier: ISC
|
||||
#
|
||||
# Copyright © 2019 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.
|
||||
# -------------------------------
|
||||
|
||||
get_filename_component(_sFindName "${CMAKE_CURRENT_LIST_FILE}" NAME)
|
||||
string(REPLACE "Find" "" _sFindName "${_sFindName}")
|
||||
string(REPLACE ".cmake" "" _sFindName "${_sFindName}")
|
||||
|
||||
# --------------
|
||||
# Registry Paths
|
||||
# --------------
|
||||
|
||||
set(_listRegistryPaths
|
||||
"[<ROOT>\\Node.js;InstallPath]")
|
||||
|
||||
# ----------------
|
||||
# Parse Components
|
||||
# ----------------
|
||||
|
||||
set(_listComponentsExecutable
|
||||
"node"
|
||||
"npm"
|
||||
"npx")
|
||||
|
||||
set(_listComponentsKnown
|
||||
${_listComponentsExecutable})
|
||||
set(_listComponentsDefault
|
||||
"node")
|
||||
set(_listComponentsRequired
|
||||
"node")
|
||||
set(_listComponentsLookup
|
||||
"npm")
|
||||
|
||||
_nxb_parse_components(OFF)
|
||||
|
||||
# ------------
|
||||
# Find Modules
|
||||
# ------------
|
||||
|
||||
foreach(_sComponent ${_listComponentsRequested})
|
||||
if("${_sComponent}" IN_LIST _listComponentsExecutable)
|
||||
find_program(${_sFindName}_${_sComponent}_EXECUTABLE
|
||||
NAMES "${_sComponent}.cmd" ${_sComponent}
|
||||
PATHS "${${_sFindName}_PATH}" ${_listRegistryPaths} ${_sFindPathsBin}
|
||||
PATH_SUFFIXES "nodejs" "bin")
|
||||
|
||||
if(${_sFindName}_${_sComponent}_EXECUTABLE)
|
||||
if(NOT DEFINED ${_sFindName}_PATH)
|
||||
get_filename_component(${_sFindName}_PATH "${${_sFindName}_${_sComponent}_EXECUTABLE}" DIRECTORY)
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND file "${${_sFindName}_${_sComponent}_EXECUTABLE}"
|
||||
OUTPUT_VARIABLE ${_sFindName}_${_sComponent}_TYPE
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
|
||||
execute_process(
|
||||
COMMAND ${sUseMe} "${${_sFindName}_${_sComponent}_EXECUTABLE}" --version
|
||||
OUTPUT_VARIABLE ${_sFindName}_${_sComponent}_VERSION
|
||||
ERROR_VARIABLE ${_sFindName}_${_sComponent}_VERSION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_STRIP_TRAILING_WHITESPACE)
|
||||
string(REGEX MATCH "[0-9]+[\.][0-9\.]+" ${_sFindName}_${_sComponent}_VERSION "${${_sFindName}_${_sComponent}_VERSION}")
|
||||
|
||||
if(_sComponent STREQUAL "npm")
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_${_sComponent}_EXECUTABLE}" root -g
|
||||
OUTPUT_VARIABLE ${_sFindName}_MODPATH_GLOBAL
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_${_sComponent}_EXECUTABLE}" root
|
||||
OUTPUT_VARIABLE ${_sFindName}_MODPATH_USER
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
|
||||
if(${_sFindName}_MODPATH_GLOBAL STREQUAL "")
|
||||
if(EXISTS "${${_sFindName}_PATH}/../local/lib/node_modules")
|
||||
set(${_sFindName}_MODPATH_GLOBAL "${${_sFindName}_PATH}/../local/lib/node_modules")
|
||||
elseif(EXISTS "${${_sFindName}_PATH}/../lib/node_modules")
|
||||
set(${_sFindName}_MODPATH_GLOBAL "${${_sFindName}_PATH}/../lib/node_modules")
|
||||
elseif(EXISTS "$ENV{APPDATA}/npm/node_modules")
|
||||
set(${_sFindName}_MODPATH_GLOBAL "$ENV{APPDATA}/npm/node_modules")
|
||||
|
||||
if(${_sFindName}_MODPATH_USER STREQUAL "")
|
||||
set(${_sFindName}_MODPATH_USER "$ENV{USERPROFILE}/node_modules")
|
||||
endif()
|
||||
else()
|
||||
set(${_sFindName}_MODPATH_GLOBAL "${${_sFindName}_PATH}/../lib/node_modules")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_MODPATH_USER STREQUAL "")
|
||||
set(${_sFindName}_MODPATH_USER "$ENV{HOME}/node_modules")
|
||||
endif()
|
||||
|
||||
foreach(_sModPath
|
||||
"${_sFindName}_MODPATH_GLOBAL"
|
||||
"${_sFindName}_MODPATH_USER")
|
||||
if(NOT ${_sModPath} STREQUAL "")
|
||||
file(TO_CMAKE_PATH "${${_sModPath}}" ${_sModPath})
|
||||
get_filename_component(${_sModPath} "${${_sModPath}}" ABSOLUTE)
|
||||
|
||||
if(NOT EXISTS "${${_sModPath}}")
|
||||
unset(${_sModPath})
|
||||
endif()
|
||||
else()
|
||||
unset(${_sModPath})
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
find_path(${_sFindName}_${_sComponent}_MODULE_DIR
|
||||
NAMES "package.json"
|
||||
NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
|
||||
PATHS
|
||||
"${${_sFindName}_MODPATH_GLOBAL}/${_sComponent}"
|
||||
"${${_sFindName}_PATH}/node_modules/${_sComponent}"
|
||||
"${${_sFindName}_PATH}/../share/${_sComponent}")
|
||||
|
||||
if(${_sFindName}_${_sComponent}_MODULE_DIR)
|
||||
set(${_sFindName}_${_sComponent}_MODULE "${${_sFindName}_${_sComponent}_MODULE_DIR}/package.json")
|
||||
|
||||
if(${_sFindName}_${_sComponent}_VERSION STREQUAL "")
|
||||
file(READ "${${_sFindName}_${_sComponent}_MODULE}" ${_sFindName}_${_sComponent}_VERSION)
|
||||
string(REGEX MATCH "\"version\": \"[0-9\.]+\"" ${_sFindName}_${_sComponent}_VERSION "${${_sFindName}_${_sComponent}_VERSION}")
|
||||
string(REGEX MATCH "[0-9]+[\.][0-9\.]+" ${_sFindName}_${_sComponent}_VERSION "${${_sFindName}_${_sComponent}_VERSION}")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
find_path(${_sFindName}_${_sComponent}_MODULE_DIR
|
||||
NAMES "package.json"
|
||||
NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
|
||||
PATHS
|
||||
"${${_sFindName}_MODPATH_USER}/${_sComponent}"
|
||||
"${${_sFindName}_MODPATH_GLOBAL}/${_sComponent}")
|
||||
|
||||
if(${_sFindName}_${_sComponent}_MODULE_DIR)
|
||||
set(${_sFindName}_${_sComponent}_MODULE "${${_sFindName}_${_sComponent}_MODULE_DIR}/package.json")
|
||||
|
||||
if(EXISTS "${${_sFindName}_${_sComponent}_MODULE_DIR}/bin")
|
||||
find_program(${_sFindName}_${_sComponent}_EXECUTABLE
|
||||
NAMES ${_sComponent}
|
||||
PATHS
|
||||
"${${_sFindName}_${_sComponent}_MODULE_DIR}/../.."
|
||||
"${${_sFindName}_${_sComponent}_MODULE_DIR}/../.bin"
|
||||
"${${_sFindName}_PATH}")
|
||||
|
||||
if(${_sFindName}_${_sComponent}_EXECUTABLE)
|
||||
execute_process(
|
||||
COMMAND "${${_sFindName}_${_sComponent}_EXECUTABLE}" --version
|
||||
OUTPUT_VARIABLE ${_sFindName}_${_sComponent}_VERSION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
string(REGEX MATCH "[0-9]+[\.][0-9\.]+" ${_sFindName}_${_sComponent}_VERSION "${${_sFindName}_${_sComponent}_VERSION}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(${_sFindName}_${_sComponent}_VERSION STREQUAL "")
|
||||
file(READ "${${_sFindName}_${_sComponent}_MODULE}" ${_sFindName}_${_sComponent}_VERSION)
|
||||
string(REGEX MATCH "\"version\": \"[0-9\.]+\"" ${_sFindName}_${_sComponent}_VERSION "${${_sFindName}_${_sComponent}_VERSION}")
|
||||
string(REGEX MATCH "[0-9]+[\.][0-9\.]+" ${_sFindName}_${_sComponent}_VERSION "${${_sFindName}_${_sComponent}_VERSION}")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
_nxb_handle_components()
|
||||
endforeach()
|
||||
|
||||
_nxb_handle_module()
|
||||
|
||||
# ---------------
|
||||
# Feature Summary
|
||||
# ---------------
|
||||
|
||||
include(FeatureSummary)
|
||||
set_package_properties(${_sFindName} PROPERTIES
|
||||
DESCRIPTION "JavaScript Runtime & Package Manager"
|
||||
URL "https://nodejs.org/en/")
|
||||
|
||||
# -----------------------
|
||||
# CleanUp
|
||||
# -----------------------
|
||||
|
||||
unset(_sFindName)
|
||||
unset(_listComponentsExecutable)
|
||||
unset(_listComponentsLibrary)
|
||||
unset(_listComponentsVersion)
|
||||
unset(_listComponentsKnown)
|
||||
unset(_listComponentsRequested)
|
||||
unset(_listComponentsDefault)
|
||||
unset(_listComponentsRequired)
|
||||
unset(_listComponentsLookup)
|
|
@ -1,140 +0,0 @@
|
|||
# -------------------------------
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
# Copyright © 2020 Andrew Hardin
|
||||
# Copyright © 2020 Daniel Wolf <<nephatrine@gmail.com>>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the “Software”), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
# -------------------------------
|
||||
|
||||
# -------------------------------
|
||||
# Adapted from Andrew Hardin's cmake-git-version-tracking script.
|
||||
# https://github.com/andrew-hardin/cmake-git-version-tracking
|
||||
# -------------------------------
|
||||
|
||||
if(NOT DEFINED GIT_EXECUTABLE)
|
||||
find_program(GIT_EXECUTABLE NAMES git)
|
||||
endif()
|
||||
|
||||
set(NX_GITWATCH_FILE "${CMAKE_CURRENT_LIST_FILE}")
|
||||
set(NX_GITWATCH_VARS "GIT_RETRIEVED_STATE" "GIT_BRANCH_NAME" "GIT_COMMIT_HASH" "GIT_IS_DIRTY")
|
||||
|
||||
macro(_nx_git_command)
|
||||
set(nGitResult 255)
|
||||
set(sGitOutput "")
|
||||
|
||||
if(GIT_EXECUTABLE)
|
||||
execute_process(
|
||||
COMMAND "${GIT_EXECUTABLE}" ${ARGV}
|
||||
WORKING_DIRECTORY "${sWorkingDirectory}"
|
||||
RESULT_VARIABLE nGitResult
|
||||
OUTPUT_VARIABLE sGitOutput
|
||||
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
endif()
|
||||
|
||||
if(NOT nGitResult EQUAL 0)
|
||||
set(ENV{GIT_RETRIEVED_STATE} "false")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
function(nx_git_update sWorkingDirectory)
|
||||
set(ENV{GIT_RETRIEVED_STATE} "true")
|
||||
|
||||
_nx_git_command(rev-parse --abbrev-ref HEAD)
|
||||
if(NOT nGitResult EQUAL 0 OR sGitOutput STREQUAL "")
|
||||
set(ENV{GIT_BRANCH_NAME} "unknown")
|
||||
else()
|
||||
set(ENV{GIT_BRANCH_NAME} "${sGitOutput}")
|
||||
endif()
|
||||
|
||||
_nx_git_command(log -1 --format=%h)
|
||||
if(NOT nGitResult EQUAL 0 OR sGitOutput STREQUAL "")
|
||||
set(ENV{GIT_COMMIT_HASH} "unknown")
|
||||
else()
|
||||
set(ENV{GIT_COMMIT_HASH} "${sGitOutput}")
|
||||
endif()
|
||||
|
||||
_nx_git_command(status --porcelain -uno)
|
||||
if(NOT nGitResult EQUAL 0 OR sGitOutput STREQUAL "")
|
||||
set(ENV{GIT_IS_DIRTY} "false")
|
||||
else()
|
||||
set(ENV{GIT_IS_DIRTY} "true")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(nx_git_watcher)
|
||||
if(NOT DEFINED _NX_GIT_INTERNAL)
|
||||
return()
|
||||
endif()
|
||||
|
||||
nx_git_update("${NX_GIT_SOURCE_DIR}")
|
||||
|
||||
if(EXISTS "${NX_GIT_FILE_INPUT}")
|
||||
file(READ "${NX_GIT_FILE_INPUT}" sGitInput)
|
||||
string(SHA256 sGitState "${sGitInput}")
|
||||
endif()
|
||||
|
||||
foreach(vGitWatch ${NX_GITWATCH_VARS})
|
||||
string(SHA256 sGitState "${sGitState}$ENV{${vGitWatch}}")
|
||||
endforeach()
|
||||
|
||||
set(bGitChanged ON)
|
||||
if(EXISTS "${NX_GIT_FILE_STATE}")
|
||||
file(READ "${NX_GIT_FILE_STATE}" sGitPrevious)
|
||||
if(sGitPrevious STREQUAL "${sGitState}")
|
||||
set(bGitChanged OFF)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(bGitChanged)
|
||||
file(WRITE "${NX_GIT_FILE_STATE}" "${sGitState}")
|
||||
endif()
|
||||
|
||||
if(bGitChanged OR NOT EXISTS "${NX_GIT_FILE_OUTPUT}")
|
||||
foreach(vGitWatch ${NX_GITWATCH_VARS})
|
||||
set(NX_${vGitWatch} $ENV{${vGitWatch}})
|
||||
endforeach()
|
||||
configure_file("${NX_GIT_FILE_INPUT}" "${NX_GIT_FILE_OUTPUT}")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(nx_git_check)
|
||||
nx_git_update("${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
foreach(vGitWatch ${NX_GITWATCH_VARS})
|
||||
set(NX_${vGitWatch}
|
||||
$ENV{${vGitWatch}}
|
||||
PARENT_SCOPE)
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
function(nx_git_configure sGitInput sGitOutput)
|
||||
get_filename_component(sGitTarget "${sGitInput}" NAME)
|
||||
string(MAKE_C_IDENTIFIER "${sGitTarget}" sGitTarget)
|
||||
add_custom_target(
|
||||
${sGitTarget} ALL BYPRODUCTS "${sGitOutput}" "${CMAKE_CURRENT_BINARY_DIR}/git.state"
|
||||
COMMENT "[GitWatcher] Retrieving Git State"
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -D_NX_GIT_INTERNAL=ON -DGIT_EXECUTABLE=${GIT_EXECUTABLE}
|
||||
-DNX_GIT_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}" -DNX_GIT_FILE_INPUT=${sGitInput}
|
||||
-DNX_GIT_FILE_OUTPUT="${sGitOutput}" -DNX_GIT_FILE_STATE="${CMAKE_CURRENT_BINARY_DIR}/git.state" -P
|
||||
"${NX_GITWATCH_FILE}")
|
||||
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${sGitInput}")
|
||||
endfunction()
|
||||
|
||||
nx_git_watcher()
|
|
@ -1,31 +0,0 @@
|
|||
# -------------------------------
|
||||
# SPDX-License-Identifier: ISC
|
||||
#
|
||||
# Copyright © 2019 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.
|
||||
# -------------------------------
|
||||
|
||||
include(NXClient)
|
||||
|
||||
_nx_include_guard()
|
||||
|
||||
cmake_policy(PUSH)
|
||||
cmake_policy(VERSION 3.9)
|
||||
|
||||
include(NXFormat)
|
||||
include(NXInstall)
|
||||
include(NXPackage)
|
||||
include(NXTest)
|
||||
|
||||
cmake_policy(POP)
|
|
@ -1,552 +0,0 @@
|
|||
# -------------------------------
|
||||
# SPDX-License-Identifier: ISC
|
||||
#
|
||||
# Copyright © 2019 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.
|
||||
# -------------------------------
|
||||
|
||||
include(NXClient)
|
||||
|
||||
_nx_include_guard()
|
||||
|
||||
if(NX_PROJECT_LANGUAGE_C)
|
||||
include(CheckCCompilerFlag)
|
||||
include(CheckCSourceCompiles)
|
||||
include(CheckCSourceRuns)
|
||||
endif()
|
||||
|
||||
if(NX_PROJECT_LANGUAGE_CXX)
|
||||
include(CheckCXXCompilerFlag)
|
||||
include(CheckCXXSourceCompiles)
|
||||
include(CheckCXXSourceRuns)
|
||||
endif()
|
||||
|
||||
function(nx_check_compiler_flag sFlag vResult)
|
||||
_nx_function_init()
|
||||
list(APPEND _NX_PROPOGATE_LOCAL ${vResult})
|
||||
|
||||
if(NX_PROJECT_LANGUAGE_CXX)
|
||||
check_cxx_compiler_flag("${sFlag}" ${vResult})
|
||||
elseif(NX_PROJECT_LANGUAGE_C)
|
||||
check_c_compiler_flag("${sFlag}" ${vResult})
|
||||
else()
|
||||
set(${vResult} OFF)
|
||||
endif()
|
||||
|
||||
_nx_function_prop()
|
||||
endfunction()
|
||||
|
||||
function(nx_check_linker_flag sFlag vResult)
|
||||
_nx_function_init()
|
||||
list(APPEND _NX_PROPOGATE_LOCAL ${vResult})
|
||||
|
||||
if("x${CMAKE_TRY_COMPILE_TARGET_TYPE}" STREQUAL "xSTATIC_LIBRARY")
|
||||
set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} ${sFlag}")
|
||||
else()
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${sFlag}")
|
||||
endif()
|
||||
nx_check_compiler_flag("" ${vResult})
|
||||
|
||||
_nx_function_prop()
|
||||
endfunction()
|
||||
|
||||
function(nx_check_source_compiles sCode vResult)
|
||||
_nx_function_init()
|
||||
list(APPEND _NX_PROPOGATE_LOCAL ${vResult})
|
||||
|
||||
if(NX_PROJECT_LANGUAGE_CXX)
|
||||
check_cxx_source_compiles("${sCode}" ${vResult} ${ARGN})
|
||||
elseif(NX_PROJECT_LANGUAGE_C)
|
||||
check_c_source_compiles("${sCode}" ${vResult} ${ARGN})
|
||||
endif()
|
||||
|
||||
_nx_function_prop()
|
||||
endfunction()
|
||||
|
||||
function(nx_check_source_runs sCode vResult)
|
||||
_nx_function_init()
|
||||
list(APPEND _NX_PROPOGATE_LOCAL ${vResult})
|
||||
|
||||
if(NX_PROJECT_LANGUAGE_CXX)
|
||||
check_cxx_source_runs("${sCode}" ${vResult})
|
||||
elseif(NX_PROJECT_LANGUAGE_C)
|
||||
check_c_source_runs("${sCode}" ${vResult})
|
||||
endif()
|
||||
|
||||
_nx_function_prop()
|
||||
endfunction()
|
||||
|
||||
function(nx_parse_link_options lsFlags vResult)
|
||||
_nx_function_init()
|
||||
list(APPEND _NX_PROPOGATE_LOCAL "${vResult}")
|
||||
|
||||
unset(${vResult})
|
||||
unset(sLinkerFlag)
|
||||
unset(sLinkerSep)
|
||||
|
||||
if(NX_PROJECT_LANGUAGE_CXX AND DEFINED CMAKE_CXX_LINKER_WRAPPER_FLAG)
|
||||
string(REPLACE ";" " " sLinkerFlag "${CMAKE_CXX_LINKER_WRAPPER_FLAG}")
|
||||
if(DEFINED CMAKE_CXX_LINKER_WRAPPER_FLAG_SEP AND CMAKE_CXX_LINKER_WRAPPER_FLAG_SEP)
|
||||
set(sLinkerSep "${CMAKE_CXX_LINKER_WRAPPER_FLAG_SEP}")
|
||||
endif()
|
||||
elseif(NX_PROJECT_LANGUAGE_C AND DEFINED CMAKE_C_LINKER_WRAPPER_FLAG)
|
||||
string(REPLACE ";" " " sLinkerFlag "${CMAKE_C_LINKER_WRAPPER_FLAG}")
|
||||
if(DEFINED CMAKE_C_LINKER_WRAPPER_FLAG_SEP AND CMAKE_C_LINKER_WRAPPER_FLAG_SEP)
|
||||
set(sLinkerSep "${CMAKE_C_LINKER_WRAPPER_FLAG_SEP}")
|
||||
endif()
|
||||
elseif(NX_HOST_COMPILER_CLANG)
|
||||
set(sLinkerFlag "-Xlinker ")
|
||||
elseif(NX_HOST_COMPILER_GNU)
|
||||
set(sLinkerFlag "-Wl,")
|
||||
set(sLinkerSep ",")
|
||||
endif()
|
||||
if(DEFINED sLinkerFlag)
|
||||
string(REPLACE " " " " sLinkerFlag "${sLinkerFlag}")
|
||||
endif()
|
||||
|
||||
foreach(sFlag ${lsFlags})
|
||||
if(sFlag MATCHES "LINKER:")
|
||||
string(REPLACE "LINKER:" "" sFlag "${sFlag}")
|
||||
string(REPLACE "," ";" sFlag "${sFlag}")
|
||||
|
||||
if(DEFINED sLinkerSep)
|
||||
string(REPLACE ";" "${sLinkerSep}" sFlag "${sFlag}")
|
||||
list(APPEND ${vResult} "${sLinkerFlag}${sFlag}")
|
||||
else()
|
||||
foreach(sFlag2 ${sFlag})
|
||||
list(APPEND ${vResult} "${sLinkerFlag}${sFlag2}")
|
||||
endforeach()
|
||||
endif()
|
||||
else()
|
||||
list(APPEND ${vResult} "${sFlag}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
_nx_function_prop()
|
||||
endfunction()
|
||||
|
||||
macro(nxb_set_check_flags)
|
||||
if(DEFINED CMAKE_BUILD_TYPE AND NOT CMAKE_BUILD_TYPE STREQUAL "")
|
||||
set(CMAKE_TRY_COMPILE_CONFIGURATION "${CMAKE_BUILD_TYPE}")
|
||||
else()
|
||||
set(CMAKE_TRY_COMPILE_CONFIGURATION "RelWithDebInfo")
|
||||
endif()
|
||||
|
||||
string(REPLACE ";" " " CMAKE_C_FLAGS
|
||||
"${CMAKE_C_FLAGS} ${NXBUILD_COMPILER_DEFINITIONS_G} ${NXBUILD_COMPILER_FLAGS_C_G}")
|
||||
string(REPLACE ";" " " CMAKE_C_FLAGS_DEBUG
|
||||
"${CMAKE_C_FLAGS_DEBUG} ${NXBUILD_COMPILER_DEFINITIONS_0} ${NXBUILD_COMPILER_FLAGS_C_0}")
|
||||
string(REPLACE ";" " " CMAKE_C_FLAGS_MINSIZEREL
|
||||
"${CMAKE_C_FLAGS_MINSIZEREL} ${NXBUILD_COMPILER_DEFINITIONS_1} ${NXBUILD_COMPILER_FLAGS_C_1}")
|
||||
string(REPLACE ";" " " CMAKE_C_FLAGS_RELWITHDEBINFO
|
||||
"${CMAKE_C_FLAGS_RELWITHDEBINFO} ${NXBUILD_COMPILER_DEFINITIONS_2} ${NXBUILD_COMPILER_FLAGS_C_2}")
|
||||
string(REPLACE ";" " " CMAKE_C_FLAGS_RELEASE
|
||||
"${CMAKE_C_FLAGS_RELEASE} ${NXBUILD_COMPILER_DEFINITIONS_3} ${NXBUILD_COMPILER_FLAGS_C_3}")
|
||||
|
||||
string(REPLACE ";" " " CMAKE_CXX_FLAGS
|
||||
"${CMAKE_CXX_FLAGS} ${NXBUILD_COMPILER_DEFINITIONS_G} ${NXBUILD_COMPILER_FLAGS_CXX_G}")
|
||||
string(REPLACE ";" " " CMAKE_CXX_FLAGS_DEBUG
|
||||
"${CMAKE_CXX_FLAGS_DEBUG} ${NXBUILD_COMPILER_DEFINITIONS_0} ${NXBUILD_COMPILER_FLAGS_CXX_0}")
|
||||
string(REPLACE ";" " " CMAKE_CXX_FLAGS_MINSIZEREL
|
||||
"${CMAKE_CXX_FLAGS_MINSIZEREL} ${NXBUILD_COMPILER_DEFINITIONS_1} ${NXBUILD_COMPILER_FLAGS_CXX_1}")
|
||||
string(
|
||||
REPLACE ";" " " CMAKE_CXX_FLAGS_RELWITHDEBINFO
|
||||
"${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${NXBUILD_COMPILER_DEFINITIONS_2} ${NXBUILD_COMPILER_FLAGS_CXX_2}")
|
||||
string(REPLACE ";" " " CMAKE_CXX_FLAGS_RELEASE
|
||||
"${CMAKE_CXX_FLAGS_RELEASE} ${NXBUILD_COMPILER_DEFINITIONS_3} ${NXBUILD_COMPILER_FLAGS_CXX_3}")
|
||||
|
||||
string(REPLACE ";" " " CMAKE_EXE_LINKER_FLAGS
|
||||
"${CMAKE_EXE_LINKER_FLAGS} ${NXBUILD_LINKER_FLAGS_G} ${NXBUILD_LINKER_FLAGS_G_EXE}")
|
||||
string(REPLACE ";" " " CMAKE_EXE_LINKER_FLAGS_DEBUG
|
||||
"${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${NXBUILD_LINKER_FLAGS_0} ${NXBUILD_LINKER_FLAGS_0_EXE}")
|
||||
string(REPLACE ";" " " CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
|
||||
"${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL} ${NXBUILD_LINKER_FLAGS_1} ${NXBUILD_LINKER_FLAGS_1_EXE}")
|
||||
string(REPLACE ";" " " CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
|
||||
"${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} ${NXBUILD_LINKER_FLAGS_2} ${NXBUILD_LINKER_FLAGS_2_EXE}")
|
||||
string(REPLACE ";" " " CMAKE_EXE_LINKER_FLAGS_RELEASE
|
||||
"${CMAKE_EXE_LINKER_FLAGS_RELEASE} ${NXBUILD_LINKER_FLAGS_3} ${NXBUILD_LINKER_FLAGS_3_EXE}")
|
||||
|
||||
string(REPLACE ";" " " CMAKE_MODULE_LINKER_FLAGS
|
||||
"${CMAKE_MODULE_LINKER_FLAGS} ${NXBUILD_LINKER_FLAGS_G} ${NXBUILD_LINKER_FLAGS_G_MOD}")
|
||||
string(REPLACE ";" " " CMAKE_MODULE_LINKER_FLAGS_DEBUG
|
||||
"${CMAKE_MODULE_LINKER_FLAGS_DEBUG} ${NXBUILD_LINKER_FLAGS_0} ${NXBUILD_LINKER_FLAGS_0_MOD}")
|
||||
string(REPLACE ";" " " CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
|
||||
"${CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL} ${NXBUILD_LINKER_FLAGS_1} ${NXBUILD_LINKER_FLAGS_1_MOD}")
|
||||
string(
|
||||
REPLACE ";" " " CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
|
||||
"${CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO} ${NXBUILD_LINKER_FLAGS_2} ${NXBUILD_LINKER_FLAGS_2_MOD}")
|
||||
string(REPLACE ";" " " CMAKE_MODULE_LINKER_FLAGS_RELEASE
|
||||
"${CMAKE_MODULE_LINKER_FLAGS_RELEASE} ${NXBUILD_LINKER_FLAGS_3} ${NXBUILD_LINKER_FLAGS_3_MOD}")
|
||||
|
||||
string(REPLACE ";" " " CMAKE_SHARED_LINKER_FLAGS
|
||||
"${CMAKE_SHARED_LINKER_FLAGS} ${NXBUILD_LINKER_FLAGS_G} ${NXBUILD_LINKER_FLAGS_G_DLL}")
|
||||
string(REPLACE ";" " " CMAKE_SHARED_LINKER_FLAGS_DEBUG
|
||||
"${CMAKE_SHARED_LINKER_FLAGS_DEBUG} ${NXBUILD_LINKER_FLAGS_0} ${NXBUILD_LINKER_FLAGS_0_DLL}")
|
||||
string(REPLACE ";" " " CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
|
||||
"${CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL} ${NXBUILD_LINKER_FLAGS_1} ${NXBUILD_LINKER_FLAGS_1_DLL}")
|
||||
string(
|
||||
REPLACE ";" " " CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
|
||||
"${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO} ${NXBUILD_LINKER_FLAGS_2} ${NXBUILD_LINKER_FLAGS_2_DLL}")
|
||||
string(REPLACE ";" " " CMAKE_SHARED_LINKER_FLAGS_RELEASE
|
||||
"${CMAKE_SHARED_LINKER_FLAGS_RELEASE} ${NXBUILD_LINKER_FLAGS_3} ${NXBUILD_LINKER_FLAGS_3_DLL}")
|
||||
|
||||
string(REPLACE ";" " " CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} ${NXBUILD_LINKER_FLAGS_G_LIB}")
|
||||
string(REPLACE ";" " " CMAKE_STATIC_LINKER_FLAGS_DEBUG
|
||||
"${CMAKE_STATIC_LINKER_FLAGS_DEBUG} ${NXBUILD_LINKER_FLAGS_0_LIB}")
|
||||
string(REPLACE ";" " " CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
|
||||
"${CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL} ${NXBUILD_LINKER_FLAGS_1_LIB}")
|
||||
string(REPLACE ";" " " CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
|
||||
"${CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO} ${NXBUILD_LINKER_FLAGS_2_LIB}")
|
||||
string(REPLACE ";" " " CMAKE_STATIC_LINKER_FLAGS_RELEASE
|
||||
"${CMAKE_STATIC_LINKER_FLAGS_RELEASE} ${NXBUILD_LINKER_FLAGS_3_LIB}")
|
||||
endmacro()
|
||||
|
||||
function(nx_test_compiler_flags)
|
||||
_nx_function_init()
|
||||
|
||||
nxb_set_check_flags()
|
||||
|
||||
unset(vBOOLEAN_VARIABLE)
|
||||
unset(vC_VARIABLE)
|
||||
unset(vCXX_VARIABLE)
|
||||
unset(vRAW_VARIABLE)
|
||||
unset(vLIST_VARIABLE)
|
||||
|
||||
unset(lsGenExpressions)
|
||||
unset(lsCheckFlags)
|
||||
|
||||
set(bSetType OFF)
|
||||
|
||||
set(lsParseModes
|
||||
"BOOLEAN_VARIABLE"
|
||||
"CHECK"
|
||||
"GENEXPR"
|
||||
"LIST_VARIABLE"
|
||||
"C_VARIABLE"
|
||||
"CXX_VARIABLE"
|
||||
"RAW_VARIABLE")
|
||||
set(sParseMode "LIST_VARIABLE")
|
||||
|
||||
foreach(sArgument ${ARGN})
|
||||
if("${sArgument}" IN_LIST lsParseModes)
|
||||
set(sParseMode "${sArgument}")
|
||||
elseif(sParseMode STREQUAL "GENEXPR")
|
||||
list(APPEND lsGenExpressions "${sArgument}")
|
||||
foreach(sConfig "Release" "Debug" "RelWithDebInfo" "MinSizeRel")
|
||||
if(sGeneratorExpression MATCHES "${sConfig}")
|
||||
set(CMAKE_TRY_COMPILE_CONFIGURATION "${sConfig}")
|
||||
if(sConfig STREQUAL "${CMAKE_BUILD_TYPE}")
|
||||
unset(sGeneratorExpression)
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
elseif(sParseMode MATCHES "BOOLEAN_VARIABLE|LIST_VARIABLE|C_VARIABLE|CXX_VARIABLE|RAW_VARIABLE")
|
||||
if(DEFINED v${sParseMode})
|
||||
message(
|
||||
AUTHOR_WARNING "nx_test_compiler_flags: Too Many Args - Ignoring ${sParseMode} ('${sArgument}')")
|
||||
else()
|
||||
set(v${sParseMode} "${sArgument}")
|
||||
|
||||
if(sArgument MATCHES "_0$|_0_|_DEBUG$")
|
||||
set(CMAKE_TRY_COMPILE_CONFIGURATION "Debug")
|
||||
elseif(sArgument MATCHES "_1$|_1_|_MINSIZEREL$")
|
||||
set(CMAKE_TRY_COMPILE_CONFIGURATION "MinSizeRel")
|
||||
elseif(sArgument MATCHES "_2$|_2_|_RELWITHDEBINFO$")
|
||||
set(CMAKE_TRY_COMPILE_CONFIGURATION "RelWithDebInfo")
|
||||
elseif(sArgument MATCHES "_3$|_3_|_RELEASE$")
|
||||
set(CMAKE_TRY_COMPILE_CONFIGURATION "Release")
|
||||
endif()
|
||||
|
||||
if(NOT bSetType)
|
||||
if(sArgument MATCHES "_EXE$|_EXE_")
|
||||
set(bSetType ON)
|
||||
string(REPLACE ";" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${NXBUILD_COMPILER_FLAGS_C_G_EXE}")
|
||||
string(REPLACE ";" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${NXBUILD_COMPILER_FLAGS_CXX_G_EXE}")
|
||||
elseif(sArgument MATCHES "_MOD$|_MODULE_")
|
||||
set(bSetType ON)
|
||||
string(REPLACE ";" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${NXBUILD_COMPILER_FLAGS_C_G_MOD}")
|
||||
string(REPLACE ";" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${NXBUILD_COMPILER_FLAGS_CXX_G_MOD}")
|
||||
elseif(sArgument MATCHES "_DLL$|_SHARED_")
|
||||
set(bSetType ON)
|
||||
string(REPLACE ";" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${NXBUILD_COMPILER_FLAGS_C_G_DLL}")
|
||||
string(REPLACE ";" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${NXBUILD_COMPILER_FLAGS_CXX_G_DLL}")
|
||||
elseif(sArgument MATCHES "_LIB$|_STATIC_")
|
||||
set(bSetType ON)
|
||||
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
|
||||
string(REPLACE ";" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${NXBUILD_COMPILER_FLAGS_C_G_LIB}")
|
||||
string(REPLACE ";" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${NXBUILD_COMPILER_FLAGS_CXX_G_LIB}")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
set(sParseMode "CHECK")
|
||||
else()
|
||||
list(APPEND lsCheckFlags "${sArgument}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
set(bSkipChecks OFF)
|
||||
|
||||
if(DEFINED CMAKE_TRY_COMPILE_CONFIGURATION)
|
||||
if(NX_TARGET_CONFIGURATION_MULTI AND NOT "${CMAKE_TRY_COMPILE_CONFIGURATION}" IN_LIST CMAKE_CONFIGURATION_TYPES)
|
||||
set(bSkipChecks ON)
|
||||
elseif(NOT NX_TARGET_CONFIGURATION_MULTI AND NOT CMAKE_TRY_COMPILE_CONFIGURATION STREQUAL "${CMAKE_BUILD_TYPE}")
|
||||
set(bSkipChecks ON)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NX_PROJECT_LANGUAGE_C AND NX_PROJECT_LANGUAGE_CXX)
|
||||
if(DEFINED vCXX_VARIABLE AND NOT DEFINED vC_VARIABLE)
|
||||
if(CMAKE_VERSION GREATER_EQUAL 3.11 OR NOT NX_TARGET_CONFIGURATION_MULTI)
|
||||
list(APPEND lsGenExpressions "$<COMPILE_LANGUAGE:CXX>")
|
||||
else()
|
||||
message(WARNING "nx_test_compiler_flags: Ignored '<<COMPILE_LANGUAGE:CXX>' - Requires CMake 3.11+")
|
||||
set(bSkipChecks ON)
|
||||
endif()
|
||||
elseif(DEFINED vC_VARIABLE AND NOT DEFINED vCXX_VARIABLE)
|
||||
if(CMAKE_VERSION GREATER_EQUAL 3.11 OR NOT NX_TARGET_CONFIGURATION_MULTI)
|
||||
list(APPEND lsGenExpressions "$<COMPILE_LANGUAGE:C>")
|
||||
else()
|
||||
message(WARNING "nx_test_compiler_flags: Ignored '<<COMPILE_LANGUAGE:C>' - Requires CMake 3.11+")
|
||||
set(bSkipChecks ON)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT bSkipChecks)
|
||||
list(APPEND _NX_PROPOGATE_LOCAL ${vLIST_VARIABLE} ${vC_VARIABLE} ${vCXX_VARIABLE} ${vRAW_VARIABLE}
|
||||
${vBOOLEAN_VARIABLE})
|
||||
list(APPEND _NX_PROPOGATE_SORT ${vLIST_VARIABLE} ${vC_VARIABLE} ${vCXX_VARIABLE} ${vRAW_VARIABLE}
|
||||
${vBOOLEAN_VARIABLE})
|
||||
|
||||
unset(sGenExpression)
|
||||
if(DEFINED lsGenExpressions)
|
||||
list(LENGTH lsGenExpressions nGenExpressions)
|
||||
if(nGenExpressions GREATER 1)
|
||||
string(REPLACE ";" "," sGenExpression "$<AND:${lsGenExpressions}>")
|
||||
else()
|
||||
set(sGenExpression "${lsGenExpressions}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NX_PROJECT_LANGUAGE_C AND DEFINED vC_VARIABLE)
|
||||
foreach(sFlag ${lsCheckFlags})
|
||||
string(TOUPPER "HAS_CFLAG${sFlag}" vResult)
|
||||
string(MAKE_C_IDENTIFIER ${vResult} vResult)
|
||||
check_c_compiler_flag("${sFlag}" ${vResult})
|
||||
if(${vResult})
|
||||
if(DEFINED vLIST_VARIABLE)
|
||||
if(DEFINED sGenExpression)
|
||||
list(APPEND ${vLIST_VARIABLE} "$<${sGenExpression}:${sFlag}>")
|
||||
else()
|
||||
list(APPEND ${vLIST_VARIABLE} "${sFlag}")
|
||||
endif()
|
||||
endif()
|
||||
if(DEFINED vBOOLEAN_VARIABLE)
|
||||
set(${vBOOLEAN_VARIABLE} ON)
|
||||
endif()
|
||||
if(DEFINED vC_VARIABLE)
|
||||
list(APPEND ${vC_VARIABLE} "${sFlag}")
|
||||
endif()
|
||||
if(DEFINED vRAW_VARIABLE)
|
||||
list(APPEND ${vRAW_VARIABLE} "${sFlag}")
|
||||
endif()
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${sFlag}")
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
if(NX_PROJECT_LANGUAGE_CXX AND DEFINED vCXX_VARIABLE)
|
||||
foreach(sFlag ${lsCheckFlags})
|
||||
string(TOUPPER "HAS_CXXFLAG${sFlag}" vResult)
|
||||
string(MAKE_C_IDENTIFIER ${vResult} vResult)
|
||||
check_cxx_compiler_flag("${sFlag}" ${vResult})
|
||||
if(${vResult})
|
||||
if(DEFINED vLIST_VARIABLE)
|
||||
if(DEFINED sGenExpression)
|
||||
list(APPEND ${vLIST_VARIABLE} "$<${sGenExpression}:${sFlag}>")
|
||||
else()
|
||||
list(APPEND ${vLIST_VARIABLE} "${sFlag}")
|
||||
endif()
|
||||
endif()
|
||||
if(DEFINED vBOOLEAN_VARIABLE)
|
||||
set(${vBOOLEAN_VARIABLE} ON)
|
||||
endif()
|
||||
if(DEFINED vCXX_VARIABLE)
|
||||
list(APPEND ${vCXX_VARIABLE} "${sFlag}")
|
||||
endif()
|
||||
if(DEFINED vRAW_VARIABLE)
|
||||
list(APPEND ${vRAW_VARIABLE} "${sFlag}")
|
||||
endif()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${sFlag}")
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED vC_VARIABLE AND NOT DEFINED vCXX_VARIABLE)
|
||||
foreach(sFlag ${lsCheckFlags})
|
||||
string(TOUPPER "HAS_NXFLAG${sFlag}" vResult)
|
||||
string(MAKE_C_IDENTIFIER ${vResult} vResult)
|
||||
nx_check_compiler_flag("${sFlag}" ${vResult})
|
||||
if(${vResult})
|
||||
if(DEFINED vLIST_VARIABLE)
|
||||
if(DEFINED sGenExpression)
|
||||
list(APPEND ${vLIST_VARIABLE} "$<${sGenExpression}:${sFlag}>")
|
||||
else()
|
||||
list(APPEND ${vLIST_VARIABLE} "${sFlag}")
|
||||
endif()
|
||||
endif()
|
||||
if(DEFINED vBOOLEAN_VARIABLE)
|
||||
set(${vBOOLEAN_VARIABLE} ON)
|
||||
endif()
|
||||
if(DEFINED vRAW_VARIABLE)
|
||||
list(APPEND ${vRAW_VARIABLE} "${sFlag}")
|
||||
endif()
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${sFlag}")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${sFlag}")
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
_nx_function_prop()
|
||||
endfunction()
|
||||
|
||||
function(nx_test_linker_flags)
|
||||
_nx_function_init()
|
||||
|
||||
nxb_set_check_flags()
|
||||
|
||||
unset(vBOOLEAN_VARIABLE)
|
||||
unset(vRAW_VARIABLE)
|
||||
unset(vLIST_VARIABLE)
|
||||
|
||||
unset(lsGenExpressions)
|
||||
unset(lsCheckFlags)
|
||||
|
||||
set(bSetType OFF)
|
||||
|
||||
set(lsParseModes "BOOLEAN_VARIABLE" "CHECK" "GENEXPR" "LIST_VARIABLE" "RAW_VARIABLE")
|
||||
set(sParseMode "LIST_VARIABLE")
|
||||
|
||||
foreach(sArgument ${ARGN})
|
||||
if("${sArgument}" IN_LIST lsParseModes)
|
||||
set(sParseMode "${sArgument}")
|
||||
elseif(sParseMode STREQUAL "GENEXPR")
|
||||
list(APPEND lsGenExpressions "${sArgument}")
|
||||
foreach(sConfig "Release" "Debug" "RelWithDebInfo" "MinSizeRel")
|
||||
if(sGeneratorExpression MATCHES "${sConfig}")
|
||||
set(CMAKE_TRY_COMPILE_CONFIGURATION "${sConfig}")
|
||||
if(sConfig STREQUAL "${CMAKE_BUILD_TYPE}")
|
||||
unset(sGeneratorExpression)
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
elseif(sParseMode MATCHES "BOOLEAN_VARIABLE|LIST_VARIABLE|RAW_VARIABLE")
|
||||
if(DEFINED v${sParseMode})
|
||||
message(AUTHOR_WARNING "nx_test_linker_flags: Too Many Args - Ignoring ${sParseMode} ('${sArgument}')")
|
||||
else()
|
||||
set(v${sParseMode} "${sArgument}")
|
||||
|
||||
if(sArgument MATCHES "_0$|_0_|_DEBUG$")
|
||||
set(CMAKE_TRY_COMPILE_CONFIGURATION "Debug")
|
||||
elseif(sArgument MATCHES "_1$|_1_|_MINSIZEREL$")
|
||||
set(CMAKE_TRY_COMPILE_CONFIGURATION "MinSizeRel")
|
||||
elseif(sArgument MATCHES "_2$|_2_|_RELWITHDEBINFO$")
|
||||
set(CMAKE_TRY_COMPILE_CONFIGURATION "RelWithDebInfo")
|
||||
elseif(sArgument MATCHES "_3$|_3_|_RELEASE$")
|
||||
set(CMAKE_TRY_COMPILE_CONFIGURATION "Release")
|
||||
endif()
|
||||
|
||||
if(NOT bSetType)
|
||||
if(sArgument MATCHES "_EXE$|_EXE_")
|
||||
set(bSetType ON)
|
||||
string(REPLACE ";" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${NXBUILD_COMPILER_FLAGS_C_G_EXE}")
|
||||
string(REPLACE ";" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${NXBUILD_COMPILER_FLAGS_CXX_G_EXE}")
|
||||
elseif(sArgument MATCHES "_MOD$|_MODULE_")
|
||||
set(bSetType ON)
|
||||
string(REPLACE ";" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${NXBUILD_COMPILER_FLAGS_C_G_MOD}")
|
||||
string(REPLACE ";" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${NXBUILD_COMPILER_FLAGS_CXX_G_MOD}")
|
||||
elseif(sArgument MATCHES "_DLL$|_SHARED_")
|
||||
set(bSetType ON)
|
||||
string(REPLACE ";" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${NXBUILD_COMPILER_FLAGS_C_G_DLL}")
|
||||
string(REPLACE ";" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${NXBUILD_COMPILER_FLAGS_CXX_G_DLL}")
|
||||
elseif(sArgument MATCHES "_LIB$|_STATIC_")
|
||||
set(bSetType ON)
|
||||
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
|
||||
string(REPLACE ";" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${NXBUILD_COMPILER_FLAGS_C_G_LIB}")
|
||||
string(REPLACE ";" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${NXBUILD_COMPILER_FLAGS_CXX_G_LIB}")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
set(sParseMode "CHECK")
|
||||
else()
|
||||
list(APPEND lsCheckFlags "${sArgument}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
set(bSkipChecks OFF)
|
||||
|
||||
if(DEFINED CMAKE_TRY_COMPILE_CONFIGURATION)
|
||||
if(NX_TARGET_CONFIGURATION_MULTI AND NOT "${CMAKE_TRY_COMPILE_CONFIGURATION}" IN_LIST CMAKE_CONFIGURATION_TYPES)
|
||||
set(bSkipChecks ON)
|
||||
elseif(NOT NX_TARGET_CONFIGURATION_MULTI AND NOT CMAKE_TRY_COMPILE_CONFIGURATION STREQUAL "${CMAKE_BUILD_TYPE}")
|
||||
set(bSkipChecks ON)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT bSkipChecks)
|
||||
list(APPEND _NX_PROPOGATE_LOCAL ${vLIST_VARIABLE} ${vRAW_VARIABLE} ${vBOOLEAN_VARIABLE})
|
||||
list(APPEND _NX_PROPOGATE_SORT ${vLIST_VARIABLE} ${vRAW_VARIABLE} ${vBOOLEAN_VARIABLE})
|
||||
|
||||
unset(sGenExpression)
|
||||
if(DEFINED lsGenExpressions)
|
||||
list(LENGTH lsGenExpressions nGenExpressions)
|
||||
if(nGenExpressions GREATER 1)
|
||||
string(REPLACE ";" "," sGenExpression "$<AND:${lsGenExpressions}>")
|
||||
else()
|
||||
set(sGenExpression "${lsGenExpressions}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
foreach(sFlag ${lsCheckFlags})
|
||||
nx_parse_link_options("${sFlag}" sFlagParsed)
|
||||
string(TOUPPER "HAS_LDFLAG${sFlagParsed}" vResult)
|
||||
string(MAKE_C_IDENTIFIER "${vResult}" vResult)
|
||||
string(REPLACE " " "_" vResult "${vResult}")
|
||||
nx_check_linker_flag("${sFlagParsed}" ${vResult})
|
||||
if(${vResult})
|
||||
if(DEFINED vLIST_VARIABLE)
|
||||
if(DEFINED sGenExpression)
|
||||
list(APPEND ${vLIST_VARIABLE} "$<${sGenExpression}:${sFlag}>")
|
||||
else()
|
||||
list(APPEND ${vLIST_VARIABLE} "${sFlag}")
|
||||
endif()
|
||||
endif()
|
||||
if(DEFINED vBOOLEAN_VARIABLE)
|
||||
set(${vBOOLEAN_VARIABLE} ON)
|
||||
endif()
|
||||
if(DEFINED vRAW_VARIABLE)
|
||||
list(APPEND ${vRAW_VARIABLE} "${sFlagParsed}")
|
||||
endif()
|
||||
if("x${CMAKE_TRY_COMPILE_TARGET_TYPE}" STREQUAL "xSTATIC_LIBRARY")
|
||||
set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} ${sFlagParsed}")
|
||||
else()
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${sFlagParsed}")
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
_nx_function_prop()
|
||||
endfunction()
|
2624
cmake/NXClient.cmake
2624
cmake/NXClient.cmake
File diff suppressed because it is too large
Load Diff
|
@ -1,162 +0,0 @@
|
|||
# -------------------------------
|
||||
# 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.
|
||||
# -------------------------------
|
||||
|
||||
include(NXClient)
|
||||
|
||||
_nx_include_guard()
|
||||
|
||||
include(CMakeDependentOption)
|
||||
|
||||
function(nx_clang_format)
|
||||
if(NOT CMAKE_CURRENT_SOURCE_DIR STREQUAL "${CMAKE_SOURCE_DIR}")
|
||||
return()
|
||||
endif()
|
||||
|
||||
_nx_function_guard(nx_clang_format)
|
||||
_nx_function_init()
|
||||
|
||||
unset(sAll)
|
||||
unset(lsSourceFiles)
|
||||
foreach(sSourceFile ${ARGN})
|
||||
if(sSourceFile STREQUAL "ALL")
|
||||
set(sAll "ALL")
|
||||
else()
|
||||
list(APPEND lsSourceFiles "${sSourceFile}")
|
||||
endif()
|
||||
endforeach()
|
||||
foreach(sGroup ${NX_LIST_GROUPS})
|
||||
foreach(sSourceFile ${${sGroup}_FILES_SOURCE} ${${sGroup}_FILES_HEADERS} ${${sGroup}_FILES_PRIVATE})
|
||||
if(sSourceFile MATCHES ".c$|.cc$|.cpp$|.cxx$|.h$|.hh$|.hpp$|.hxx$|.in$")
|
||||
list(APPEND lsSourceFiles "${sSourceFile}")
|
||||
endif()
|
||||
endforeach()
|
||||
endforeach()
|
||||
if(DEFINED lsSourceFiles AND lsSourceFiles)
|
||||
list(REMOVE_DUPLICATES lsSourceFiles)
|
||||
endif()
|
||||
|
||||
find_program(CLANG_FORMAT_EXECUTABLE NAMES clang-format)
|
||||
|
||||
set(bFormatRules OFF)
|
||||
unset(sFormatRules)
|
||||
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.clang-format")
|
||||
set(sFormatRules "${CMAKE_CURRENT_SOURCE_DIR}/.clang-format")
|
||||
set(bFormatRules ON)
|
||||
elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../.clang-format")
|
||||
if("x${ARGN}" STREQUAL "x")
|
||||
set(sFormatRules "${CMAKE_CURRENT_SOURCE_DIR}/../.clang-format")
|
||||
set(bFormatRules ON)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
cmake_dependent_option(CREATE_TARGET_FORMAT_CLANG "Create C/C++ 'format' Target" ${bFormatRules} "CLANG_FORMAT_EXECUTABLE" OFF)
|
||||
|
||||
set(sFormatArgs "-fallback-style=none" "-style=file" "-i")
|
||||
set(sFormatTarget "format")
|
||||
if(TARGET ${sFormatTarget})
|
||||
set(sFormatTarget "format-clang")
|
||||
endif()
|
||||
if(CREATE_TARGET_FORMAT_CLANG AND DEFINED lsSourceFiles)
|
||||
list(REMOVE_DUPLICATES lsSourceFiles)
|
||||
if(DEFINED sFormatRules)
|
||||
file(COPY "${sFormatRules}" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
|
||||
endif()
|
||||
add_custom_target(
|
||||
${sFormatTarget} ${sAll}
|
||||
COMMAND "${CLANG_FORMAT_EXECUTABLE}" ${sFormatArgs} ${lsSourceFiles}
|
||||
DEPENDS ${lsSourceFiles} ${sFormatRules}
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
COMMENT "[clang-format] Formatting Source Files"
|
||||
VERBATIM)
|
||||
if(NOT sFormatTarget STREQUAL "format")
|
||||
add_dependencies(format ${sFormatTarget})
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(nx_cmake_format)
|
||||
if(NOT CMAKE_CURRENT_SOURCE_DIR STREQUAL "${CMAKE_SOURCE_DIR}")
|
||||
return()
|
||||
endif()
|
||||
|
||||
_nx_function_guard(nx_cmake_format)
|
||||
_nx_function_init()
|
||||
|
||||
unset(sAll)
|
||||
unset(lsSourceFiles)
|
||||
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt")
|
||||
list(APPEND lsSourceFiles "${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt")
|
||||
endif()
|
||||
foreach(sSourceFile ${ARGN})
|
||||
if(sSourceFile STREQUAL "ALL")
|
||||
set(sAll "ALL")
|
||||
else()
|
||||
list(APPEND lsSourceFiles "${sSourceFile}")
|
||||
endif()
|
||||
endforeach()
|
||||
foreach(sGroup ${NX_LIST_GROUPS})
|
||||
foreach(sSourceFile ${${sGroup}_FILES_CMAKE})
|
||||
if(sSourceFile MATCHES ".cmake$")
|
||||
list(APPEND lsSourceFiles "${sSourceFile}")
|
||||
endif()
|
||||
endforeach()
|
||||
endforeach()
|
||||
if(DEFINED lsSourceFiles AND lsSourceFiles)
|
||||
list(REMOVE_DUPLICATES lsSourceFiles)
|
||||
endif()
|
||||
|
||||
find_program(CMAKE_FORMAT_EXECUTABLE NAMES cmake-format)
|
||||
|
||||
set(bFormatRules OFF)
|
||||
unset(sFormatRules)
|
||||
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.cmake-format")
|
||||
set(sFormatRules "${CMAKE_CURRENT_SOURCE_DIR}/.cmake-format")
|
||||
set(bFormatRules ON)
|
||||
elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../.cmake-format")
|
||||
if("x${ARGN}" STREQUAL "x")
|
||||
set(sFormatRules "${CMAKE_CURRENT_SOURCE_DIR}/../.cmake-format")
|
||||
set(bFormatRules ON)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
cmake_dependent_option(CREATE_TARGET_FORMAT_CMAKE "Create CMake 'format' Target" ${bFormatRules}
|
||||
"CMAKE_FORMAT_EXECUTABLE" OFF)
|
||||
|
||||
set(sFormatArgs "-i")
|
||||
set(sFormatTarget "format")
|
||||
if(TARGET ${sFormatTarget})
|
||||
set(sFormatTarget "format-cmake")
|
||||
endif()
|
||||
if(CREATE_TARGET_FORMAT_CMAKE AND DEFINED lsSourceFiles)
|
||||
list(REMOVE_DUPLICATES lsSourceFiles)
|
||||
if(DEFINED sFormatRules)
|
||||
file(COPY "${sFormatRules}" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
|
||||
set(sFormatArgs "--config" "${sFormatRules}" ${sFormatArgs})
|
||||
endif()
|
||||
add_custom_target(
|
||||
${sFormatTarget} ${sAll}
|
||||
COMMAND "${CMAKE_FORMAT_EXECUTABLE}" ${sFormatArgs} ${lsSourceFiles}
|
||||
DEPENDS ${lsSourceFiles} ${sFormatRules}
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
COMMENT "[cmake-format] Formatting Source Files"
|
||||
VERBATIM)
|
||||
if(NOT sFormatTarget STREQUAL "format")
|
||||
add_dependencies(format ${sFormatTarget})
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
|
@ -1,294 +0,0 @@
|
|||
# -------------------------------
|
||||
# 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.
|
||||
# -------------------------------
|
||||
|
||||
include(NXClient)
|
||||
|
||||
_nx_include_guard()
|
||||
|
||||
function(nx_generate_export_header sBaseName)
|
||||
_nx_function_init()
|
||||
list(APPEND _NX_PROPOGATE_LOCAL "${sBaseName}_SHARED_DEFINE" "${sBaseName}_STATIC_DEFINE")
|
||||
|
||||
string(TOUPPER "${sBaseName}" sBaseName)
|
||||
string(MAKE_C_IDENTIFIER "${sBaseName}" sBaseName)
|
||||
|
||||
set(GEH_BASE_NAME ${sBaseName})
|
||||
set(GEH_DEFINE_NO_DEPRECATED 0)
|
||||
|
||||
unset(GEH_CUSTOM_CONTENT)
|
||||
unset(GEH_CUSTOM_CONTENT_FROM_VARIABLE)
|
||||
unset(GEH_DEPRECATED_MACRO_NAME)
|
||||
unset(GEH_EXPORT_FILE_NAME)
|
||||
unset(GEH_EXPORT_MACRO_NAME)
|
||||
unset(GEH_INCLUDE_GUARD_NAME)
|
||||
unset(GEH_NO_DEPRECATED_MACRO_NAME)
|
||||
unset(GEH_NO_EXPORT_MACRO_NAME)
|
||||
unset(GEH_PREFIX_NAME)
|
||||
unset(GEH_STATIC_DEFINE)
|
||||
unset(GEH_DEFINE_SYMBOL)
|
||||
|
||||
set(lsParseModes
|
||||
BASE_NAME
|
||||
EXPORT_MACRO_NAME
|
||||
EXPORT_FILE_NAME
|
||||
DEPRECATED_MACRO_NAME
|
||||
NO_EXPORT_MACRO_NAME
|
||||
INCLUDE_GUARD_NAME
|
||||
STATIC_DEFINE
|
||||
NO_DEPRECATED_MACRO_NAME
|
||||
PREFIX_NAME
|
||||
CUSTOM_CONTENT_FROM_VARIABLE
|
||||
DEFINE_SYMBOL)
|
||||
set(lsParseToggles DEFINE_NO_DEPRECATED)
|
||||
set(sParseMode "EXPORT_FILE_NAME")
|
||||
|
||||
foreach(sArgument ${ARGN})
|
||||
if("${sArgument}" IN_LIST lsParseModes)
|
||||
set(sParseMode "${sArgument}")
|
||||
elseif("${sArgument}" IN_LIST lsParseToggles)
|
||||
set(GEH_${sArgument} 1)
|
||||
else()
|
||||
set(GEH_${sParseMode} "${sArgument}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(NOT DEFINED GEH_EXPORT_FILE_NAME)
|
||||
string(TOLOWER "${GEH_BASE_NAME}_export.h" GEH_EXPORT_FILE_NAME)
|
||||
endif()
|
||||
if(NOT DEFINED GEH_INCLUDE_GUARD_NAME)
|
||||
get_filename_component(GEH_INCLUDE_GUARD_NAME "${GEH_EXPORT_FILE_NAME}" NAME)
|
||||
string(TOUPPER "${GEH_INCLUDE_GUARD_NAME}" GEH_INCLUDE_GUARD_NAME)
|
||||
string(MAKE_C_IDENTIFIER "${GEH_INCLUDE_GUARD_NAME}" GEH_INCLUDE_GUARD_NAME)
|
||||
set(GEH_INCLUDE_GUARD_NAME "${GEH_PREFIX_NAME}${GEH_INCLUDE_GUARD_NAME}")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED GEH_STATIC_DEFINE)
|
||||
if(DEFINED ${sBaseName}_STATIC_DEFINE)
|
||||
set(GEH_STATIC_DEFINE "${${sBaseName}_STATIC_DEFINE}")
|
||||
else()
|
||||
set(GEH_STATIC_DEFINE "${GEH_PREFIX_NAME}${GEH_BASE_NAME}_STATIC_DEFINE")
|
||||
endif()
|
||||
endif()
|
||||
if(NOT DEFINED ${sBaseName}_STATIC_DEFINE)
|
||||
set(${sBaseName}_STATIC_DEFINE "${GEH_STATIC_DEFINE}")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED GEH_DEFINE_SYMBOL)
|
||||
if(DEFINED ${sBaseName}_SHARED_DEFINE)
|
||||
set(GEH_DEFINE_SYMBOL "${${sBaseName}_SHARED_DEFINE}")
|
||||
else()
|
||||
set(GEH_DEFINE_SYMBOL "${GEH_PREFIX_NAME}${GEH_BASE_NAME}_EXPORTS")
|
||||
endif()
|
||||
endif()
|
||||
if(NOT DEFINED ${sBaseName}_SHARED_DEFINE)
|
||||
set(${sBaseName}_SHARED_DEFINE "${GEH_DEFINE_SYMBOL}")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED GEH_EXPORT_MACRO_NAME)
|
||||
set(GEH_EXPORT_MACRO_NAME "${GEH_PREFIX_NAME}${GEH_BASE_NAME}_EXPORT")
|
||||
endif()
|
||||
if(NOT DEFINED GEH_NO_EXPORT_MACRO_NAME)
|
||||
set(GEH_NO_EXPORT_MACRO_NAME "${GEH_PREFIX_NAME}${GEH_BASE_NAME}_NO_EXPORT")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED GEH_DEPRECATED_MACRO_NAME)
|
||||
set(GEH_DEPRECATED_MACRO_NAME "${GEH_PREFIX_NAME}${GEH_BASE_NAME}_DEPRECATED")
|
||||
endif()
|
||||
if(NOT DEFINED GEH_NO_DEPRECATED_MACRO_NAME)
|
||||
set(GEH_NO_DEPRECATED_MACRO_NAME "${GEH_PREFIX_NAME}${GEH_BASE_NAME}_NO_DEPRECATED")
|
||||
endif()
|
||||
|
||||
if(DEFINED GEH_CUSTOM_CONTENT_FROM_VARIABLE)
|
||||
if(DEFINED ${GEH_CUSTOM_CONTENT_FROM_VARIABLE})
|
||||
set(GEH_CUSTOM_CONTENT "${${GEH_CUSTOM_CONTENT_FROM_VARIABLE}}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
configure_file("${NXBUILD_PATH_DATADIR}/GenerateExportHeader.h.configure" "${GEH_EXPORT_FILE_NAME}")
|
||||
|
||||
_nx_function_prop()
|
||||
endfunction()
|
||||
|
||||
function(nx_generate_vcs_header sBaseName)
|
||||
_nx_function_init()
|
||||
|
||||
string(TOUPPER "${sBaseName}" sBaseName)
|
||||
string(MAKE_C_IDENTIFIER "${sBaseName}" sBaseName)
|
||||
|
||||
unset(VCS_BASE_NAME)
|
||||
unset(VCS_CUSTOM_CONTENT)
|
||||
unset(VCS_CUSTOM_CONTENT_FROM_VARIABLE)
|
||||
unset(VCS_INCLUDE_GUARD_NAME)
|
||||
unset(VCS_PREFIX_NAME)
|
||||
unset(VCS_ANY_FILE_NAME)
|
||||
unset(VCS_GIT_FILE_NAME)
|
||||
unset(VCS_GIT_MACRO_NAME)
|
||||
|
||||
set(lsParseModes BASE_NAME GIT_MACRO_NAME GIT_FILE_NAME INCLUDE_GUARD_NAME PREFIX_NAME CUSTOM_CONTENT_FROM_VARIABLE)
|
||||
set(sParseMode "VERSION_FILE_NAME")
|
||||
|
||||
foreach(sArgument ${ARGN})
|
||||
if("${sArgument}" IN_LIST lsParseModes)
|
||||
set(sParseMode "${sArgument}")
|
||||
else()
|
||||
set(VCS_${sParseMode} "${sArgument}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(NOT DEFINED VCS_BASE_NAME)
|
||||
set(VCS_BASE_NAME "${sBaseName}")
|
||||
endif()
|
||||
if(NOT DEFINED VCS_ANY_FILE_NAME)
|
||||
string(TOLOWER "${VCS_BASE_NAME}_vcs.h" VCS_ANY_FILE_NAME)
|
||||
endif()
|
||||
|
||||
if(DEFINED NX_GIT_WATCH_VARS AND NOT DEFINED VCS_GIT_FILE_NAME)
|
||||
string(TOLOWER "${VCS_BASE_NAME}_git.h" VCS_GIT_FILE_NAME)
|
||||
endif()
|
||||
if(NOT DEFINED VCS_GIT_MACRO_NAME)
|
||||
set(VCS_GIT_MACRO_NAME "${VCS_PREFIX_NAME}${VCS_BASE_NAME}_GIT")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED VCS_INCLUDE_GUARD_NAME)
|
||||
if(DEFINED VCS_GIT_FILE_NAME)
|
||||
get_filename_component(VCS_INCLUDE_GUARD_NAME "${VCS_GIT_FILE_NAME}" NAME)
|
||||
else()
|
||||
get_filename_component(VCS_INCLUDE_GUARD_NAME "${VCS_ANY_FILE_NAME}" NAME)
|
||||
endif()
|
||||
string(TOUPPER "${VCS_INCLUDE_GUARD_NAME}" VCS_INCLUDE_GUARD_NAME)
|
||||
string(MAKE_C_IDENTIFIER "${VCS_INCLUDE_GUARD_NAME}" VCS_INCLUDE_GUARD_NAME)
|
||||
set(VCS_INCLUDE_GUARD_NAME "${VCS_PREFIX_NAME}${VCS_INCLUDE_GUARD_NAME}")
|
||||
endif()
|
||||
|
||||
if(DEFINED VCS_CUSTOM_CONTENT_FROM_VARIABLE)
|
||||
if(DEFINED ${VCS_CUSTOM_CONTENT_FROM_VARIABLE})
|
||||
set(VCS_CUSTOM_CONTENT "${${VCS_CUSTOM_CONTENT_FROM_VARIABLE}}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(DEFINED NX_PROJECT_PACKAGING_VERSION)
|
||||
set(NX_PROJECT_VERSION_TAG ${NX_PROJECT_PACKAGING_VERSION} ${NX_PROJECT_VERSION_TAG})
|
||||
endif()
|
||||
if(DEFINED NX_PROJECT_VERSION_TAG)
|
||||
string(REPLACE ";" "." NX_PROJECT_VERSION_TAG "-${NX_PROJECT_VERSION_TAG}")
|
||||
endif()
|
||||
if(NOT DEFINED NX_PROJECT_VERSION_BUILD AND DEFINED VCS_GIT_FILE_NAME)
|
||||
list(APPEND NX_PROJECT_VERSION_BUILD "git" "\${NX_GIT_COMMIT_HASH}")
|
||||
endif()
|
||||
if(DEFINED NX_PROJECT_VERSION_BUILD)
|
||||
string(REPLACE ";" "." NX_PROJECT_VERSION_BUILD "+${NX_PROJECT_VERSION_BUILD}")
|
||||
endif()
|
||||
set(NX_PROJECT_VERSION_FULL "${NX_PROJECT_API_VERSION}${NX_PROJECT_VERSION_TAG}${NX_PROJECT_VERSION_BUILD}")
|
||||
|
||||
if(DEFINED VCS_GIT_FILE_NAME)
|
||||
if(NOT DEFINED NX_GIT_WATCH_VARS)
|
||||
include(GitWatch)
|
||||
endif()
|
||||
|
||||
get_filename_component(sIntermediate "${VCS_GIT_FILE_NAME}" NAME)
|
||||
configure_file("${NXBUILD_PATH_DATADIR}/GenerateVCSHeader.h.configure"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${sIntermediate}.configure" @ONLY)
|
||||
nx_git_configure("${CMAKE_CURRENT_BINARY_DIR}/${sIntermediate}.configure" "${VCS_GIT_FILE_NAME}")
|
||||
else()
|
||||
message(AUTHOR_WARNING "nx_generate_vcs_header: No VCS System Specified")
|
||||
endif()
|
||||
|
||||
_nx_function_prop()
|
||||
endfunction()
|
||||
|
||||
function(nx_generate_version_header sBaseName)
|
||||
_nx_function_init()
|
||||
|
||||
if(NOT DEFINED NX_PROJECT_API_MAJOR)
|
||||
set(NX_PROJECT_API_MAJOR 0)
|
||||
endif()
|
||||
if(NOT DEFINED NX_PROJECT_API_MINOR)
|
||||
set(NX_PROJECT_API_MINOR 0)
|
||||
endif()
|
||||
if(NOT DEFINED NX_PROJECT_API_PATCH)
|
||||
set(NX_PROJECT_API_PATCH 0)
|
||||
endif()
|
||||
|
||||
set(NX_PROJECT_API_HEX "${NX_PROJECT_API_MAJOR}*65536 + ${NX_PROJECT_API_MINOR}*256 + ${NX_PROJECT_API_PATCH}")
|
||||
|
||||
if(CMAKE_VERSION VERSION_LESS 3.13)
|
||||
math(EXPR NX_PROJECT_API_HEX "${NX_PROJECT_API_HEX}")
|
||||
else()
|
||||
math(EXPR NX_PROJECT_API_HEX "${NX_PROJECT_API_HEX}" OUTPUT_FORMAT HEXADECIMAL)
|
||||
endif()
|
||||
|
||||
set(NX_PROJECT_VERSION_TAG ${NX_PROJECT_PACKAGING_VERSION} ${NX_PROJECT_API_PRERELEASE} ${NX_PROJECT_VERSION_TAG})
|
||||
if(DEFINED NX_PROJECT_VERSION_TAG AND NX_PROJECT_VERSION_TAG)
|
||||
string(REPLACE ";" "." NX_PROJECT_VERSION_TAG "-${NX_PROJECT_VERSION_TAG}")
|
||||
endif()
|
||||
if(DEFINED NX_PROJECT_VERSION_BUILD AND NX_PROJECT_VERSION_BUILD)
|
||||
string(REPLACE ";" "." NX_PROJECT_VERSION_BUILD "+${NX_PROJECT_VERSION_BUILD}")
|
||||
endif()
|
||||
set(NX_PROJECT_VERSION_FULL "${NX_PROJECT_API_VERSION}${NX_PROJECT_VERSION_TAG}${NX_PROJECT_VERSION_BUILD}")
|
||||
|
||||
string(TOUPPER "${sBaseName}" sBaseName)
|
||||
string(MAKE_C_IDENTIFIER "${sBaseName}" sBaseName)
|
||||
|
||||
unset(GVH_BASE_NAME)
|
||||
unset(GVH_CUSTOM_CONTENT)
|
||||
unset(GVH_CUSTOM_CONTENT_FROM_VARIABLE)
|
||||
unset(GVH_INCLUDE_GUARD_NAME)
|
||||
unset(GVH_PREFIX_NAME)
|
||||
unset(GVH_VERSION_FILE_NAME)
|
||||
unset(GVH_VERSION_MACRO_NAME)
|
||||
|
||||
set(lsParseModes BASE_NAME VERSION_MACRO_NAME VERSION_FILE_NAME INCLUDE_GUARD_NAME PREFIX_NAME
|
||||
CUSTOM_CONTENT_FROM_VARIABLE)
|
||||
set(sParseMode "VERSION_FILE_NAME")
|
||||
|
||||
foreach(sArgument ${ARGN})
|
||||
if("${sArgument}" IN_LIST lsParseModes)
|
||||
set(sParseMode "${sArgument}")
|
||||
else()
|
||||
set(GVH_${sParseMode} "${sArgument}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(NOT DEFINED GVH_BASE_NAME)
|
||||
set(GVH_BASE_NAME "${sBaseName}")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED GVH_VERSION_FILE_NAME)
|
||||
string(TOLOWER "${GVH_BASE_NAME}_version.h" GVH_VERSION_FILE_NAME)
|
||||
endif()
|
||||
if(NOT DEFINED GVH_VERSION_MACRO_NAME)
|
||||
set(GVH_VERSION_MACRO_NAME "${GVH_PREFIX_NAME}${GVH_BASE_NAME}_VERSION")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED GVH_INCLUDE_GUARD_NAME)
|
||||
get_filename_component(GVH_INCLUDE_GUARD_NAME "${GVH_VERSION_FILE_NAME}" NAME)
|
||||
string(TOUPPER "${GVH_INCLUDE_GUARD_NAME}" GVH_INCLUDE_GUARD_NAME)
|
||||
string(MAKE_C_IDENTIFIER "${GVH_INCLUDE_GUARD_NAME}" GVH_INCLUDE_GUARD_NAME)
|
||||
set(GVH_INCLUDE_GUARD_NAME "${GVH_PREFIX_NAME}${GVH_INCLUDE_GUARD_NAME}")
|
||||
endif()
|
||||
|
||||
if(DEFINED GVH_CUSTOM_CONTENT_FROM_VARIABLE)
|
||||
if(DEFINED ${GVH_CUSTOM_CONTENT_FROM_VARIABLE})
|
||||
set(GVH_CUSTOM_CONTENT "${${GVH_CUSTOM_CONTENT_FROM_VARIABLE}}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
configure_file("${NXBUILD_PATH_DATADIR}/GenerateVersionHeader.h.configure" "${GVH_VERSION_FILE_NAME}")
|
||||
|
||||
_nx_function_prop()
|
||||
endfunction()
|
|
@ -1,557 +0,0 @@
|
|||
# -------------------------------
|
||||
# SPDX-License-Identifier: ISC
|
||||
#
|
||||
# Copyright © 2019 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.
|
||||
# -------------------------------
|
||||
|
||||
include(NXClient)
|
||||
|
||||
_nx_include_guard()
|
||||
|
||||
include(CMakePackageConfigHelpers)
|
||||
|
||||
if(NOT NX_INSTALL_SCHEME STREQUAL "GNU")
|
||||
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
||||
set(CMAKE_INSTALL_PREFIX
|
||||
"${NX_INSTALL_PATH_DRIVE}${NX_INSTALL_PATH_BASE}"
|
||||
CACHE PATH "" FORCE)
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED CMAKE_STAGING_PREFIX)
|
||||
if(DEFINED CMAKE_SYSROOT)
|
||||
set(CMAKE_STAGING_PREFIX
|
||||
"${CMAKE_SYSROOT}${NX_INSTALL_PATH_BASE}"
|
||||
CACHE PATH "" FORCE)
|
||||
elseif(NOT NX_TARGET_PLATFORM_NATIVE)
|
||||
set(CMAKE_STAGING_PREFIX
|
||||
"${NX_STAGING_PATH_DRIVE}${NX_STAGING_PATH_BASE}"
|
||||
CACHE PATH "" FORCE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED CMAKE_EXPORT_PACKAGE_REGISTRY AND (NOT DEFINED CMAKE_EXPORT_NO_PACKAGE_REGISTRY OR NOT CMAKE_EXPORT_NO_PACKAGE_REGISTRY))
|
||||
set(CMAKE_EXPORT_PACKAGE_REGISTRY ON)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
function(nx_install)
|
||||
if(NOT CMAKE_CURRENT_SOURCE_DIR STREQUAL "${CMAKE_SOURCE_DIR}")
|
||||
return()
|
||||
endif()
|
||||
|
||||
_nx_function_init()
|
||||
list(APPEND _NX_PROPOGATE_GLOBAL "NX_LIST_COMPONENTS")
|
||||
list(APPEND _NX_PROPOGATE_SORT "NX_LIST_COMPONENTS")
|
||||
|
||||
foreach(sGroup ${NX_LIST_GROUPS})
|
||||
list(APPEND _NX_PROPOGATE_GLOBAL "${sGroup}_COMPONENTS")
|
||||
list(APPEND _NX_PROPOGATE_SORT "${sGroup}_COMPONENTS")
|
||||
|
||||
unset(sExport)
|
||||
if(DEFINED ${sGroup}_TARGETS_EXPORT)
|
||||
set(sExport "EXPORT" "${${sGroup}_TARGETS_EXPORT}")
|
||||
endif()
|
||||
|
||||
string(MAKE_C_IDENTIFIER "${${sGroup}_NAME_PROJECT}-dev" sComponentDev)
|
||||
|
||||
set(sTargetType "APPLICATION")
|
||||
set(sComponentBase "app")
|
||||
string(MAKE_C_IDENTIFIER "${${sGroup}_NAME_PROJECT}-${sComponentBase}" sComponent)
|
||||
|
||||
if(DEFINED ${sGroup}_TARGETS_${sTargetType})
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
foreach(sTarget ${${sGroup}_TARGETS_${sTargetType}})
|
||||
if(CMAKE_VERSION VERSION_LESS 3.12)
|
||||
install(TARGETS "${sTarget}" ${sExport}
|
||||
RUNTIME DESTINATION "${${sGroup}_PATH_${sTargetType}}" COMPONENT "${sComponent}"
|
||||
LIBRARY DESTINATION "${${sGroup}_PATH_${sTargetType}}" COMPONENT "${sComponent}"
|
||||
ARCHIVE DESTINATION "${${sGroup}_PATH_STATIC}" COMPONENT "${sComponentDev}")
|
||||
else()
|
||||
install(TARGETS "${sTarget}" ${sExport}
|
||||
RUNTIME DESTINATION "${${sGroup}_PATH_${sTargetType}}" COMPONENT "${sComponent}"
|
||||
LIBRARY DESTINATION "${${sGroup}_PATH_${sTargetType}}" COMPONENT "${sComponent}" NAMELINK_COMPONENT "${sComponentDev}"
|
||||
ARCHIVE DESTINATION "${${sGroup}_PATH_STATIC}" COMPONENT "${sComponentDev}")
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
if(DEFINED ${sGroup}_FILES_${sTargetType})
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
install(
|
||||
FILES ${${sGroup}_FILES_${sTargetType}} COMPONENT "${sComponent}"
|
||||
DESTINATION "${${sGroup}_PATH_${sTargetType}}")
|
||||
endif()
|
||||
if(DEFINED ${sGroup}_DIRS_${sTargetType})
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
foreach(sTarget ${${sGroup}_DIRS_${sTargetType}})
|
||||
install(
|
||||
DIRECTORY "${sTarget}" COMPONENT "${sComponent}"
|
||||
DESTINATION "${${sGroup}_PATH_${sTargetType}}")
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
set(sTargetType "DAEMON")
|
||||
set(sComponentBase "srv")
|
||||
string(MAKE_C_IDENTIFIER "${${sGroup}_NAME_PROJECT}-${sComponentBase}" sComponent)
|
||||
|
||||
if(DEFINED ${sGroup}_TARGETS_${sTargetType})
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
foreach(sTarget ${${sGroup}_TARGETS_${sTargetType}})
|
||||
if(CMAKE_VERSION VERSION_LESS 3.12)
|
||||
install(TARGETS "${sTarget}" ${sExport}
|
||||
RUNTIME DESTINATION "${${sGroup}_PATH_${sTargetType}}" COMPONENT "${sComponent}"
|
||||
LIBRARY DESTINATION "${${sGroup}_PATH_${sTargetType}}" COMPONENT "${sComponent}"
|
||||
ARCHIVE DESTINATION "${${sGroup}_PATH_STATIC}" COMPONENT "${sComponentDev}")
|
||||
else()
|
||||
install(TARGETS "${sTarget}" ${sExport}
|
||||
RUNTIME DESTINATION "${${sGroup}_PATH_${sTargetType}}" COMPONENT "${sComponent}"
|
||||
LIBRARY DESTINATION "${${sGroup}_PATH_${sTargetType}}" COMPONENT "${sComponent}" NAMELINK_COMPONENT "${sComponentDev}"
|
||||
ARCHIVE DESTINATION "${${sGroup}_PATH_STATIC}" COMPONENT "${sComponentDev}")
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
if(DEFINED ${sGroup}_FILES_${sTargetType})
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
install(
|
||||
FILES ${${sGroup}_FILES_${sTargetType}} COMPONENT "${sComponent}"
|
||||
DESTINATION "${${sGroup}_PATH_${sTargetType}}")
|
||||
endif()
|
||||
if(DEFINED ${sGroup}_DIRS_${sTargetType})
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
foreach(sTarget ${${sGroup}_DIRS_${sTargetType}})
|
||||
install(
|
||||
DIRECTORY "${sTarget}" COMPONENT "${sComponent}"
|
||||
DESTINATION "${${sGroup}_PATH_${sTargetType}}")
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
set(sTargetType "EXECUTABLE")
|
||||
set(sComponentBase "bin")
|
||||
string(MAKE_C_IDENTIFIER "${${sGroup}_NAME_PROJECT}-${sComponentBase}" sComponent)
|
||||
|
||||
if(DEFINED ${sGroup}_TARGETS_${sTargetType})
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
foreach(sTarget ${${sGroup}_TARGETS_${sTargetType}})
|
||||
if(CMAKE_VERSION VERSION_LESS 3.12)
|
||||
install(TARGETS "${sTarget}" ${sExport}
|
||||
RUNTIME DESTINATION "${${sGroup}_PATH_${sTargetType}}" COMPONENT "${sComponent}"
|
||||
LIBRARY DESTINATION "${${sGroup}_PATH_${sTargetType}}" COMPONENT "${sComponent}"
|
||||
ARCHIVE DESTINATION "${${sGroup}_PATH_STATIC}" COMPONENT "${sComponentDev}")
|
||||
else()
|
||||
install(TARGETS "${sTarget}" ${sExport}
|
||||
RUNTIME DESTINATION "${${sGroup}_PATH_${sTargetType}}" COMPONENT "${sComponent}"
|
||||
LIBRARY DESTINATION "${${sGroup}_PATH_${sTargetType}}" COMPONENT "${sComponent}" NAMELINK_COMPONENT "${sComponentDev}"
|
||||
ARCHIVE DESTINATION "${${sGroup}_PATH_STATIC}" COMPONENT "${sComponentDev}")
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
if(DEFINED ${sGroup}_FILES_${sTargetType})
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
install(
|
||||
FILES ${${sGroup}_FILES_${sTargetType}} COMPONENT "${sComponent}"
|
||||
DESTINATION "${${sGroup}_PATH_${sTargetType}}")
|
||||
endif()
|
||||
if(DEFINED ${sGroup}_DIRS_${sTargetType})
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
foreach(sTarget ${${sGroup}_DIRS_${sTargetType}})
|
||||
install(
|
||||
DIRECTORY "${sTarget}" COMPONENT "${sComponent}"
|
||||
DESTINATION "${${sGroup}_PATH_${sTargetType}}")
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
set(sTargetType "MODULE")
|
||||
set(sComponentBase "mod")
|
||||
string(MAKE_C_IDENTIFIER "${${sGroup}_NAME_PROJECT}-${sComponentBase}" sComponent)
|
||||
|
||||
if(DEFINED ${sGroup}_TARGETS_${sTargetType})
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
foreach(sTarget ${${sGroup}_TARGETS_${sTargetType}})
|
||||
if(CMAKE_VERSION VERSION_LESS 3.12)
|
||||
install(TARGETS "${sTarget}" ${sExport}
|
||||
RUNTIME DESTINATION "${${sGroup}_PATH_${sTargetType}}" COMPONENT "${sComponent}"
|
||||
LIBRARY DESTINATION "${${sGroup}_PATH_${sTargetType}}" COMPONENT "${sComponent}"
|
||||
ARCHIVE DESTINATION "${${sGroup}_PATH_${sTargetType}}" COMPONENT "${sComponentDev}"
|
||||
OBJECTS DESTINATION "${${sGroup}_PATH_${sTargetType}}" COMPONENT "${sComponentDev}")
|
||||
else()
|
||||
install(TARGETS "${sTarget}" ${sExport}
|
||||
RUNTIME DESTINATION "${${sGroup}_PATH_${sTargetType}}" COMPONENT "${sComponent}"
|
||||
LIBRARY DESTINATION "${${sGroup}_PATH_${sTargetType}}" COMPONENT "${sComponent}" NAMELINK_COMPONENT "${sComponentDev}"
|
||||
ARCHIVE DESTINATION "${${sGroup}_PATH_${sTargetType}}" COMPONENT "${sComponentDev}"
|
||||
OBJECTS DESTINATION "${${sGroup}_PATH_${sTargetType}}" COMPONENT "${sComponentDev}")
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
if(DEFINED ${sGroup}_FILES_${sTargetType})
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
install(
|
||||
FILES ${${sGroup}_FILES_${sTargetType}} COMPONENT "${sComponent}"
|
||||
DESTINATION "${${sGroup}_PATH_${sTargetType}}")
|
||||
endif()
|
||||
if(DEFINED ${sGroup}_DIRS_${sTargetType})
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
foreach(sTarget ${${sGroup}_DIRS_${sTargetType}})
|
||||
install(
|
||||
DIRECTORY "${sTarget}" COMPONENT "${sComponent}"
|
||||
DESTINATION "${${sGroup}_PATH_${sTargetType}}")
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
set(sTargetType "SHARED")
|
||||
set(sComponentBase "lib")
|
||||
string(MAKE_C_IDENTIFIER "${${sGroup}_NAME_PROJECT}-${sComponentBase}" sComponent)
|
||||
|
||||
if(DEFINED ${sGroup}_TARGETS_${sTargetType})
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
foreach(sTarget ${${sGroup}_TARGETS_${sTargetType}})
|
||||
if(CMAKE_VERSION VERSION_LESS 3.12)
|
||||
install(TARGETS "${sTarget}" ${sExport}
|
||||
RUNTIME DESTINATION "${${sGroup}_PATH_${sTargetType}}" COMPONENT "${sComponent}"
|
||||
LIBRARY DESTINATION "${${sGroup}_PATH_${sTargetType}}" COMPONENT "${sComponent}"
|
||||
ARCHIVE DESTINATION "${${sGroup}_PATH_STATIC}" COMPONENT "${sComponentDev}")
|
||||
else()
|
||||
install(TARGETS "${sTarget}" ${sExport}
|
||||
RUNTIME DESTINATION "${${sGroup}_PATH_${sTargetType}}" COMPONENT "${sComponent}"
|
||||
LIBRARY DESTINATION "${${sGroup}_PATH_${sTargetType}}" COMPONENT "${sComponent}" NAMELINK_COMPONENT "${sComponentDev}"
|
||||
ARCHIVE DESTINATION "${${sGroup}_PATH_STATIC}" COMPONENT "${sComponentDev}")
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
if(DEFINED ${sGroup}_FILES_${sTargetType})
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
install(
|
||||
FILES ${${sGroup}_FILES_${sTargetType}} COMPONENT "${sComponent}"
|
||||
DESTINATION "${${sGroup}_PATH_${sTargetType}}")
|
||||
endif()
|
||||
if(DEFINED ${sGroup}_DIRS_${sTargetType})
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
foreach(sTarget ${${sGroup}_DIRS_${sTargetType}})
|
||||
install(
|
||||
DIRECTORY "${sTarget}" COMPONENT "${sComponent}"
|
||||
DESTINATION "${${sGroup}_PATH_${sTargetType}}")
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
set(sComponentBase "dbg")
|
||||
string(MAKE_C_IDENTIFIER "${${sGroup}_NAME_PROJECT}-${sComponentBase}" sComponent)
|
||||
|
||||
foreach(sTargetType "APPLICATION" "DAEMON" "EXECUTABLE" "MODULE" "SHARED")
|
||||
if(DEFINED ${sGroup}_FILES_${sTargetType}_DEBUG)
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
foreach(sTarget ${${sGroup}_FILES_${sTargetType}_DEBUG})
|
||||
set(sDestination "${${sGroup}_PATH_${sTargetType}_DEBUG}")
|
||||
if(sTarget MATCHES ".debug$")
|
||||
set(sDestination "${${sGroup}_PATH_${sTargetType}}/.debug")
|
||||
elseif(sTarget MATCHES ".pdb$")
|
||||
set(sDestination "${${sGroup}_PATH_${sTargetType}}")
|
||||
endif()
|
||||
install(
|
||||
FILES ${${sGroup}_FILES_${sTargetType}_DEBUG} COMPONENT "${sComponent}"
|
||||
DESTINATION "${sDestination}")
|
||||
endforeach()
|
||||
endif()
|
||||
if(DEFINED ${sGroup}_DIRS_${sTargetType}_DEBUG)
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
foreach(sTarget ${${sGroup}_DIRS_${sTargetType}_DEBUG})
|
||||
install(
|
||||
DIRECTORY "${sTarget}" COMPONENT "${sComponent}"
|
||||
DESTINATION "${${sGroup}_PATH_${sTargetType}_DEBUG}")
|
||||
endforeach()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
set(sTargetType "STATIC")
|
||||
set(sComponentBase "dev")
|
||||
string(MAKE_C_IDENTIFIER "${${sGroup}_NAME_PROJECT}-${sComponentBase}" sComponent)
|
||||
|
||||
if(DEFINED ${sGroup}_TARGETS_${sTargetType} AND DEFINED sExport)
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
foreach(sTarget ${${sGroup}_TARGETS_${sTargetType}})
|
||||
install(TARGETS "${sTarget}" COMPONENT "${sComponent}" ${sExport}
|
||||
ARCHIVE DESTINATION "${${sGroup}_PATH_${sTargetType}}"
|
||||
OBJECTS DESTINATION "${${sGroup}_PATH_${sTargetType}}")
|
||||
endforeach()
|
||||
endif()
|
||||
if(DEFINED ${sGroup}_FILES_${sTargetType})
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
install(
|
||||
FILES ${${sGroup}_FILES_${sTargetType}} COMPONENT "${sComponent}"
|
||||
DESTINATION "${${sGroup}_PATH_${sTargetType}}")
|
||||
endif()
|
||||
if(DEFINED ${sGroup}_DIRS_${sTargetType})
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
foreach(sTarget ${${sGroup}_DIRS_${sTargetType}})
|
||||
install(
|
||||
DIRECTORY "${sTarget}" COMPONENT "${sComponent}"
|
||||
DESTINATION "${${sGroup}_PATH_${sTargetType}}")
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
foreach(sTargetType "CMAKE" "DEVBIN" "DEVDOC" "DEVRES")
|
||||
if(DEFINED ${sGroup}_FILES_${sTargetType})
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
install(
|
||||
FILES ${${sGroup}_FILES_${sTargetType}} COMPONENT "${sComponent}"
|
||||
DESTINATION "${${sGroup}_PATH_${sTargetType}}")
|
||||
endif()
|
||||
if(DEFINED ${sGroup}_DIRS_${sTargetType})
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
foreach(sTarget ${${sGroup}_DIRS_${sTargetType}})
|
||||
install(
|
||||
DIRECTORY "${sTarget}" COMPONENT "${sComponent}"
|
||||
DESTINATION "${${sGroup}_PATH_${sTargetType}}")
|
||||
endforeach()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
foreach(sTargetType "HEADERS" "SOURCE")
|
||||
if(DEFINED ${sGroup}_FILES_${sTargetType} AND DEFINED sExport)
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
foreach(sTarget ${${sGroup}_FILES_${sTargetType}})
|
||||
set(bHandled OFF)
|
||||
foreach(sBaseDir ${${sGroup}_PUBLIC_${sTargetType}})
|
||||
file(RELATIVE_PATH sBaseRel "${sBaseDir}" "${sTarget}")
|
||||
string(SUBSTRING "${sBaseRel}" 0 2 sBaseTest)
|
||||
if(NOT sBaseTest STREQUAL "..")
|
||||
get_filename_component(sBaseRel "${sBaseRel}" DIRECTORY)
|
||||
install(
|
||||
FILES "${sTarget}" COMPONENT "${sComponent}"
|
||||
DESTINATION "${${sGroup}_PATH_${sTargetType}}/${sBaseRel}")
|
||||
set(bHandled ON)
|
||||
endif()
|
||||
endforeach()
|
||||
if(NOT bHandled)
|
||||
install(
|
||||
FILES "${sTarget}" COMPONENT "${sComponent}"
|
||||
DESTINATION "${${sGroup}_PATH_${sTargetType}}")
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
if(DEFINED ${sGroup}_DIRS_${sTargetType})
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
foreach(sTarget ${${sGroup}_DIRS_${sTargetType}})
|
||||
install(
|
||||
DIRECTORY "${sTarget}" COMPONENT "${sComponent}"
|
||||
DESTINATION "${${sGroup}_PATH_${sTargetType}}")
|
||||
endforeach()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
set(sTargetType "DOCUMENTATION")
|
||||
set(sComponentBase "doc")
|
||||
string(MAKE_C_IDENTIFIER "${${sGroup}_NAME_PROJECT}-${sComponentBase}" sComponent)
|
||||
|
||||
if(DEFINED ${sGroup}_FILES_${sTargetType})
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
install(
|
||||
FILES ${${sGroup}_FILES_${sTargetType}} COMPONENT "${sComponent}"
|
||||
DESTINATION "${${sGroup}_PATH_${sTargetType}}")
|
||||
endif()
|
||||
if(DEFINED ${sGroup}_DIRS_${sTargetType})
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
foreach(sTarget ${${sGroup}_DIRS_${sTargetType}})
|
||||
install(
|
||||
DIRECTORY "${sTarget}" COMPONENT "${sComponent}"
|
||||
DESTINATION "${${sGroup}_PATH_${sTargetType}}")
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
set(sComponentBase "dat")
|
||||
string(MAKE_C_IDENTIFIER "${${sGroup}_NAME_PROJECT}-${sComponentBase}" sComponent)
|
||||
|
||||
foreach(sTargetType "CONFIGURATION" "MODRES" "PACKAGE" "RESOURCES")
|
||||
if(DEFINED ${sGroup}_FILES_${sTargetType})
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
install(
|
||||
FILES ${${sGroup}_FILES_${sTargetType}} COMPONENT "${sComponent}"
|
||||
DESTINATION "${${sGroup}_PATH_${sTargetType}}")
|
||||
endif()
|
||||
if(DEFINED ${sGroup}_DIRS_${sTargetType})
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
foreach(sTarget ${${sGroup}_DIRS_${sTargetType}})
|
||||
install(
|
||||
DIRECTORY "${sTarget}" COMPONENT "${sComponent}"
|
||||
DESTINATION "${${sGroup}_PATH_${sTargetType}}")
|
||||
endforeach()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
set(sTargetType "EXPORT")
|
||||
set(sComponentBase "dev")
|
||||
string(MAKE_C_IDENTIFIER "${${sGroup}_NAME_PROJECT}-${sComponentBase}" sComponent)
|
||||
|
||||
if(NOT DEFINED ${sGroup}_TARGETS_BINARY)
|
||||
set(sTargetPath "NOARCH")
|
||||
unset(${sGroup}_CMAKE_INSTALL)
|
||||
else()
|
||||
set(sTargetPath "EXPORT")
|
||||
endif()
|
||||
|
||||
foreach(sTarget ${${sGroup}_TARGETS_${sTargetType}})
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
|
||||
unset(sExportArchitecture)
|
||||
if(NOT DEFINED ${sGroup}_TARGETS_BINARY AND CMAKE_VERSION VERSION_GREATER_EQUAL 3.14)
|
||||
set(sExportArchitecture "${ARCH_INDEPENDENT}")
|
||||
endif()
|
||||
|
||||
unset(sExportVersion)
|
||||
set(sExportCompatibility "AnyNewerVersion")
|
||||
if(DEFINED ${sGroup}_API_COMPATIBILITY)
|
||||
if("${${sGroup}_API_COMPATIBILITY}" STREQUAL "${${sGroup}_API_MAJOR}.${${sGroup}_API_MINOR}.${${sGroup}_API_PATCH}")
|
||||
set(sExportCompatibility "ExactVersion")
|
||||
elseif("${${sGroup}_API_COMPATIBILITY}" STREQUAL "${${sGroup}_API_MAJOR}.${${sGroup}_API_MINOR}")
|
||||
set(sExportCompatibility "SameMinorVersion")
|
||||
elseif("${${sGroup}_API_COMPATIBILITY}" STREQUAL "${${sGroup}_API_MAJOR}")
|
||||
set(sExportCompatibility "SameMajorVersion")
|
||||
endif()
|
||||
set(sExportVersion "-${${sGroup}_API_COMPATIBILITY}")
|
||||
endif()
|
||||
|
||||
if(DEFINED sExportVersion)
|
||||
write_basic_package_version_file(
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${sTarget}${${sGroup}_CMAKE_BUILD}ConfigVersion.cmake"
|
||||
VERSION "${${sGroup}_API_VERSION}" COMPATIBILITY "${sExportCompatibility}" ${sExportArchitecture})
|
||||
write_basic_package_version_file(
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${sTarget}${${sGroup}_CMAKE_INSTALL}ConfigVersion.cmake"
|
||||
VERSION "${${sGroup}_API_VERSION}" COMPATIBILITY "${sExportCompatibility}" ${sExportArchitecture})
|
||||
install(
|
||||
FILES "${CMAKE_CURRENT_BINARY_DIR}/${sTarget}${${sGroup}_CMAKE_INSTALL}ConfigVersion.cmake"
|
||||
DESTINATION "${${sGroup}_PATH_${sTargetPath}}/${sTarget}${${sGroup}_CMAKE_INSTALL}${sExportVersion}"
|
||||
COMPONENT "${sComponent}")
|
||||
endif()
|
||||
|
||||
export(
|
||||
EXPORT "${sTarget}" NAMESPACE "${${sGroup}_NAME_WORKSPACE}::"
|
||||
FILE "${sTarget}${${sGroup}_CMAKE_BUILD}Config.cmake")
|
||||
export(PACKAGE "${sTarget}${${sGroup}_CMAKE_BUILD}")
|
||||
|
||||
install(
|
||||
EXPORT "${sTarget}" NAMESPACE "${${sGroup}_NAME_WORKSPACE}::"
|
||||
FILE "${sTarget}${${sGroup}_CMAKE_INSTALL}Config.cmake" COMPONENT "${sComponent}"
|
||||
DESTINATION "${${sGroup}_PATH_${sTargetPath}}/${sTarget}${${sGroup}_CMAKE_INSTALL}${sExportVersion}")
|
||||
endforeach()
|
||||
if(DEFINED ${sGroup}_FILES_${sTargetType})
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
install(
|
||||
FILES ${${sGroup}_FILES_${sTargetType}} COMPONENT "${sComponent}"
|
||||
DESTINATION "${${sGroup}_PATH_${sTargetPath}}")
|
||||
endif()
|
||||
if(DEFINED ${sGroup}_DIRS_${sTargetType})
|
||||
list(APPEND ${sGroup}_COMPONENTS "${sComponentBase}")
|
||||
list(APPEND NX_LIST_COMPONENTS "${sComponent}")
|
||||
foreach(sTarget ${${sGroup}_DIRS_${sTargetType}})
|
||||
install(
|
||||
DIRECTORY "${sTarget}" COMPONENT "${sComponent}"
|
||||
DESTINATION "${${sGroup}_PATH_${sTargetPath}}")
|
||||
endforeach()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
foreach(sGroup ${NX_LIST_COMPONENT_GROUPS})
|
||||
if(DEFINED NX_COMPONENT_${sGroup}_SOURCE AND NX_COMPONENT_${sGroup}_SOURCE)
|
||||
set(sComponent "dev")
|
||||
if(DEFINED NX_COMPONENT_${sGroup}_NAME)
|
||||
set(sComponent "${NX_COMPONENT_${sGroup}_NAME}_${sComponent}")
|
||||
endif()
|
||||
list(APPEND NX_LIST_COMPONENT_NAMES "${sComponent}")
|
||||
list(APPEND NX_LIST_COMPONENT_LIBRARIES "${sComponent}")
|
||||
|
||||
foreach(sTarget ${NX_COMPONENT_${sGroup}_SOURCE})
|
||||
set(sDestination "#${sTarget}")
|
||||
set(bDone OFF)
|
||||
foreach(sStripPath ${NX_COMPONENT_${sGroup}_STRIP})
|
||||
if(NOT bDone AND sTarget MATCHES "^${sStripPath}/")
|
||||
string(REPLACE "#${sStripPath}/" "" sDestination "${sDestination}")
|
||||
set(bDone ON)
|
||||
endif()
|
||||
endforeach()
|
||||
string(REPLACE "#" "" sDestination "${sDestination}")
|
||||
get_filename_component(sPath2 "${${sGroup}_PATH_SOURCE}/${sDestination}" DIRECTORY)
|
||||
install(
|
||||
FILES "${CMAKE_CURRENT_SOURCE_DIR}/${sTarget}"
|
||||
DESTINATION "${sPath2}"
|
||||
COMPONENT "${sComponent}")
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
if(DEFINED NX_COMPONENT_${sGroup}_BUILD AND NX_COMPONENT_${sGroup}_BUILD)
|
||||
set(sComponent "dev")
|
||||
if(DEFINED NX_COMPONENT_${sGroup}_NAME)
|
||||
set(sComponent "${NX_COMPONENT_${sGroup}_NAME}_${sComponent}")
|
||||
endif()
|
||||
list(APPEND NX_LIST_COMPONENT_NAMES "${sComponent}")
|
||||
list(APPEND NX_LIST_COMPONENT_LIBRARIES "${sComponent}")
|
||||
|
||||
foreach(sTarget ${NX_COMPONENT_${sGroup}_BUILD})
|
||||
set(sDestination "${sTarget}")
|
||||
set(bDone OFF)
|
||||
foreach(sStripPath ${NX_COMPONENT_${sGroup}_STRIP} ${NX_COMPONENT_${sGroup}_STRIP2})
|
||||
if(NOT bDone AND sDestination MATCHES "^${sStripPath}/")
|
||||
string(REPLACE "#${sStripPath}/" "" sDestination "#${sDestination}")
|
||||
set(bDone ON)
|
||||
endif()
|
||||
endforeach()
|
||||
get_filename_component(sPath2 "${${sGroup}_PATH_SOURCE}/${sDestination}" DIRECTORY)
|
||||
install(
|
||||
FILES "${CMAKE_CURRENT_BINARY_DIR}/${sTarget}"
|
||||
DESTINATION "${sPath2}"
|
||||
COMPONENT "${sComponent}")
|
||||
endforeach()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(NOT TARGET uninstall AND CMAKE_CURRENT_BINARY_DIR STREQUAL "${CMAKE_BINARY_DIR}")
|
||||
if(EXISTS "${NXBUILD_PATH_INTERNAL}/cmake_uninstall.cmake.configure")
|
||||
configure_file("${NXBUILD_PATH_INTERNAL}/cmake_uninstall.cmake.configure"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" @ONLY)
|
||||
endif()
|
||||
if(EXISTS "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
|
||||
add_custom_target(uninstall COMMAND "${CMAKE_COMMAND}" -P
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
_nx_function_prop()
|
||||
endfunction()
|
File diff suppressed because it is too large
Load Diff
|
@ -1,21 +0,0 @@
|
|||
# -------------------------------
|
||||
# SPDX-License-Identifier: ISC
|
||||
#
|
||||
# Copyright © @_CURRENT_YEAR@ 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.
|
||||
# -------------------------------
|
||||
|
||||
set(NXBUILD_PATH_INTERNAL "${CMAKE_CURRENT_LIST_DIR}")
|
||||
set(NXBUILD_PATH_DATADIR "${NXBUILD_PATH_INTERNAL}/@NXBUILD_PATH_DATADIR_REL@")
|
||||
set(NXBUILD_PATH_HELPER "${NXBUILD_PATH_INTERNAL}/@NXBUILD_PATH_HELPER_REL@")
|
1801
cmake/NXTarget.cmake
1801
cmake/NXTarget.cmake
File diff suppressed because it is too large
Load Diff
|
@ -1,123 +0,0 @@
|
|||
# -------------------------------
|
||||
# SPDX-License-Identifier: ISC
|
||||
#
|
||||
# Copyright © 2019 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.
|
||||
# -------------------------------
|
||||
|
||||
include(NXTarget)
|
||||
|
||||
if(NOT DEFINED CMAKE_CROSSCOMPILING_EMULATOR AND NOT NX_TARGET_PLATFORM_NATIVE)
|
||||
if(NX_TARGET_PLATFORM_WINDOWS AND (NX_TARGET_ARCHITECTURE_AMD64 OR NX_TARGET_ARCHITECTURE_IA32))
|
||||
find_program(CMAKE_CROSSCOMPILING_EMULATOR NAMES "wine64" "wine")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED BUILD_TESTING)
|
||||
if(DEFINED CMAKE_CROSSCOMPILING_EMULATOR AND NOT CMAKE_CROSSCOMPILING_EMULATOR STREQUAL "")
|
||||
nx_check_source_runs("int main(int /*unused*/, char * /*unused*/ []) {return 0;}" BUILD_TESTING)
|
||||
elseif(NX_TARGET_ARCHITECTURE_NATIVE AND NX_TARGET_PLATFORM_NATIVE AND NOT DEFINED CMAKE_SYSROOT)
|
||||
set(BUILD_TESTING ON)
|
||||
else()
|
||||
set(BUILD_TESTING OFF)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
_nx_include_guard()
|
||||
|
||||
function(nx_add_test vTargetList sTargetName)
|
||||
option(BUILD_TESTS_${NX_PROJECT_NAME_IDENTIFIER} "Build '${NX_PROJECT_NAME}' Tests" ${BUILD_TESTING})
|
||||
if(NOT BUILD_TESTS_${NX_PROJECT_NAME_IDENTIFIER})
|
||||
return()
|
||||
endif()
|
||||
|
||||
_nx_function_init()
|
||||
list(APPEND _NX_PROPOGATE_LOCAL "${vTargetList}")
|
||||
|
||||
unset(sWorkingDir)
|
||||
unset(lsTestArgs)
|
||||
unset(lsCommandArgs)
|
||||
unset(lsEnviroArgs)
|
||||
|
||||
unset(lsTargetArgs)
|
||||
set(lsParseModes "DEFINES" "DEPENDS" "FEATURES" "INCLUDES" "SOURCES" "CFLAGS" "CXXFLAGS" "LDFLAGS")
|
||||
set(lsIgnoreModes "TEST" "DEFINE_SYMBOL" "GENERATE" "GENERATE_EXPORT" "GENERATE_VERSION" "GROUP" "GROUP_EXPORT" "GROUP_INSTALL" "STATIC_DEFINE" "SUMMARY" "WEBSITE" "ISSUES" "WORKSPACE" "ABI" "API" "LIBTOOL" "VERSION" "COMPATIBILITY" "PRERELEASE")
|
||||
|
||||
set(sParseMode "TEST")
|
||||
foreach(sArgument ${sTypeOptional} ${ARGN})
|
||||
if("${sArgument}" IN_LIST lsParseModes)
|
||||
set(sParseMode "${sArgument}")
|
||||
list(APPEND lsTargetArgs "${sArgument}")
|
||||
elseif("${sArgument}" IN_LIST lsIgnoreModes)
|
||||
set(sParseMode "${sArgument}")
|
||||
list(APPEND lsTargetArgs "${sArgument}")
|
||||
elseif(sArgument STREQUAL "COMMAND")
|
||||
set(sParseMode "${sArgument}")
|
||||
if(DEFINED lsCommandArgs)
|
||||
string(REPLACE ";" " " sCommandArgs "${lsCommandArgs}")
|
||||
list(APPEND lsTestArgs "${sCommandArgs}")
|
||||
unset(lsCommandArgs)
|
||||
endif()
|
||||
elseif(sArgument STREQUAL "ENVIRONMENT")
|
||||
set(sParseMode "${sArgument}")
|
||||
elseif(sArgument STREQUAL "WORKING_DIRECTORY")
|
||||
set(sParseMode "${sArgument}")
|
||||
elseif("${sArgument}" IN_LIST lsTestModes)
|
||||
set(sParseMode "${sArgument}")
|
||||
elseif(sParseMode STREQUAL "COMMAND")
|
||||
list(APPEND lsCommandArgs "${sArgument}")
|
||||
elseif(sParseMode STREQUAL "ENVIRONMENT")
|
||||
list(APPEND lsEnviroArgs "${sArgument}")
|
||||
elseif(sParseMode STREQUAL "WORKING_DIRECTORY")
|
||||
if(DEFINED sWorkingDir)
|
||||
message(AUTHOR_WARNING "nx_add_test: Too Many Args - Ignoring ${sParseMode} ('${sArgument}')")
|
||||
else()
|
||||
set(sWorkingDir "${sArgument}")
|
||||
endif()
|
||||
elseif("${sParseMode}" IN_LIST lsParseModes)
|
||||
list(APPEND lsTargetArgs "${sArgument}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(DEFINED lsCommandArgs)
|
||||
string(REPLACE ";" " " sCommandArgs "${lsCommandArgs}")
|
||||
list(APPEND lsTestArgs "${sCommandArgs}")
|
||||
unset(lsCommandArgs)
|
||||
endif()
|
||||
if(NOT DEFINED sWorkingDir)
|
||||
set(sWorkingDir "${CMAKE_CURRENT_BINARY_DIR}")
|
||||
endif()
|
||||
|
||||
unset(sTestName)
|
||||
nx_add_target(sTestName ${sTargetName} EXECUTABLE TEST ${lsTargetArgs})
|
||||
foreach(lsCommandArgs ${lsTestArgs})
|
||||
string(REPLACE " " ";" lsCommandArgs "${lsCommandArgs}")
|
||||
string(MAKE_C_IDENTIFIER "${lsCommandArgs}" sTestSuffix)
|
||||
add_test(NAME "${sTestName}-${sTestSuffix}" WORKING_DIRECTORY "${sWorkingDir}"
|
||||
COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:${sTestName}> ${lsCommandArgs})
|
||||
if(DEFINED lsEnviroArgs)
|
||||
set_tests_properties("${sTestName}-${sTestSuffix}" PROPERTIES ENVIRONMENT ${lsEnviroArgs})
|
||||
endif()
|
||||
endforeach()
|
||||
if(NOT DEFINED lsTestArgs)
|
||||
add_test(NAME "${sTestName}" WORKING_DIRECTORY "${sWorkingDir}"
|
||||
COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:${sTestName}>)
|
||||
if(DEFINED lsEnviroArgs)
|
||||
set_tests_properties("${sTestName}" PROPERTIES ENVIRONMENT ${lsEnviroArgs})
|
||||
endif()
|
||||
endif()
|
||||
list(APPEND ${vTargetList} ${sTestName})
|
||||
|
||||
_nx_function_prop()
|
||||
endfunction()
|
|
@ -1,44 +0,0 @@
|
|||
# -------------------------------
|
||||
# SPDX-License-Identifier: ISC
|
||||
#
|
||||
# Copyright © 2019 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.
|
||||
# -------------------------------
|
||||
|
||||
set(NX_SOURCECOPY_FILE "${CMAKE_CURRENT_LIST_FILE}")
|
||||
|
||||
function(nx_add_source_copy sTargetName sSourceOutput)
|
||||
add_custom_target(
|
||||
${sTargetName} BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/${sSourceOutput}"
|
||||
COMMENT "[SourceCopy] Mirroring Source Folder"
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -DNX_SOURCECOPY_INPUT="${CMAKE_CURRENT_SOURCE_DIR}/" -DNX_SOURCECOPY_OUTPUT="${CMAKE_CURRENT_BINARY_DIR}/${sSourceOutput}" -DNX_SOURCECOPY_IGNORE="${ARGN}" -P "${NX_SOURCECOPY_FILE}")
|
||||
endfunction()
|
||||
|
||||
if(DEFINED NX_SOURCECOPY_OUTPUT AND DEFINED NX_SOURCECOPY_INPUT)
|
||||
string(REPLACE "|" ";" CPACK_SOURCE_IGNORE_FILES "${NX_SOURCECOPY_IGNORE}")
|
||||
string(REPLACE "#" "$" CPACK_SOURCE_IGNORE_FILES "${CPACK_SOURCE_IGNORE_FILES}")
|
||||
|
||||
unset(sIgnorePatterns)
|
||||
foreach(sIgnorePattern ${CPACK_SOURCE_IGNORE_FILES})
|
||||
list(APPEND sIgnorePatterns REGEX ${sIgnorePattern} EXCLUDE)
|
||||
endforeach()
|
||||
|
||||
if(NOT EXISTS "${NX_SOURCECOPY_OUTPUT}")
|
||||
file(MAKE_DIRECTORY "${NX_SOURCECOPY_OUTPUT}")
|
||||
endif()
|
||||
message(STATUS "INSTALL ${NX_SOURCECOPY_INPUT} DESTINATION ${NX_SOURCECOPY_OUTPUT} ${sIgnorePatterns}")
|
||||
file(COPY ${NX_SOURCECOPY_INPUT} DESTINATION "${NX_SOURCECOPY_OUTPUT}"
|
||||
${sIgnorePatterns})
|
||||
endif()
|
|
@ -1,64 +0,0 @@
|
|||
# -------------------------------
|
||||
# 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.
|
||||
# -------------------------------
|
||||
|
||||
include(NXClient)
|
||||
|
||||
_nx_include_guard()
|
||||
|
||||
function(nx_source_group)
|
||||
_nx_function_guard(nx_source_group)
|
||||
_nx_function_init()
|
||||
|
||||
foreach(sGroup ${NX_LIST_COMPONENT_GROUPS})
|
||||
if(DEFINED NX_COMPONENT_${sGroup}_NAME)
|
||||
set(sGroupName "${NX_COMPONENT_${sGroup}_NAME}")
|
||||
else()
|
||||
set(sGroupName "${sGroup}")
|
||||
endif()
|
||||
|
||||
foreach(sFileName ${NX_LIST_${sGroup}_SOURCE})
|
||||
get_filename_component(sFileName "${sFileName}" ABSOLUTE)
|
||||
get_filename_component(sFilePath "${sFileName}" PATH)
|
||||
|
||||
unset(sGroupPath)
|
||||
|
||||
file(RELATIVE_PATH sFileRelative "${CMAKE_CURRENT_SOURCE_DIR}" "${sFilePath}")
|
||||
string(SUBSTRING "${sFileRelative}" 0 2 sTest)
|
||||
|
||||
if(sTest STREQUAL "..")
|
||||
file(RELATIVE_PATH sFileRelative "${CMAKE_CURRENT_BINARY_DIR}" "${sFilePath}")
|
||||
string(SUBSTRING "${sFileRelative}" 0 2 sTest)
|
||||
|
||||
if(NOT sTest STREQUAL "..")
|
||||
set(sGroupPath "${sGroupName}/${sFileRelative}")
|
||||
endif()
|
||||
else()
|
||||
set(sGroupPath "${sGroupName}/${sFileRelative}")
|
||||
endif()
|
||||
|
||||
if(DEFINED sGroupPath)
|
||||
if("${NX_HOST_PLATFORM_TAG}" IN_LIST NX_LIST_PLATFORM_WINDOWS)
|
||||
string(REPLACE "/" "\\" sGroupPath "${sGroupPath}")
|
||||
endif()
|
||||
source_group("${sGroupPath}" FILES "${sFileName}")
|
||||
endif()
|
||||
endforeach()
|
||||
endforeach()
|
||||
|
||||
_nx_function_prop()
|
||||
endfunction()
|
|
@ -1,42 +0,0 @@
|
|||
# -------------------------------
|
||||
# SPDX-License-Identifier: ISC
|
||||
#
|
||||
# Copyright © @_CURRENT_YEAR@ 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.
|
||||
# -------------------------------
|
||||
|
||||
# -------------------------------
|
||||
# Adapted from CMake Wiki FAQ: Can I Do 'make uninstall' With CMake?
|
||||
# https://gitlab.kitware.com/cmake/community/-/wikis/FAQ#can-i-do-make-uninstall-with-cmake
|
||||
# -------------------------------
|
||||
|
||||
if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
|
||||
message(FATAL_ERROR "cmake_uninstall: Cannot Locate Manifest ('@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt')")
|
||||
endif()
|
||||
|
||||
file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" sManifest)
|
||||
string(REGEX REPLACE "\n" ";" lsFiles "${sManifest}")
|
||||
|
||||
foreach(sFilename ${lsFiles})
|
||||
if(IS_SYMLINK "$ENV{DESTDIR}${sFilename}" OR EXISTS "$ENV{DESTDIR}${sFilename}")
|
||||
file(REMOVE ${sFilename})
|
||||
if(IS_SYMLINK "$ENV{DESTDIR}${sFilename}" OR EXISTS "$ENV{DESTDIR}${sFilename}")
|
||||
message(FATAL_ERROR "Failed To Remove: $ENV{DESTDIR}${sFilename}\n -- ${sOutput}")
|
||||
else()
|
||||
message(STATUS "Removing: $ENV{DESTDIR}${sFilename}")
|
||||
endif()
|
||||
else()
|
||||
message(STATUS "Missing: $ENV{DESTDIR}${sFilename}")
|
||||
endif()
|
||||
endforeach()
|
|
@ -1,71 +0,0 @@
|
|||
/*-------------------------------
|
||||
# SPDX-License-Identifier: ISC
|
||||
#
|
||||
# Copyright © @_CURRENT_YEAR@ 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.
|
||||
# -----------------------------*/
|
||||
|
||||
#ifndef @GEH_INCLUDE_GUARD_NAME@
|
||||
#define @GEH_INCLUDE_GUARD_NAME@
|
||||
|
||||
#ifdef @GEH_STATIC_DEFINE@
|
||||
# ifndef @GEH_EXPORT_MACRO_NAME@
|
||||
# define @GEH_EXPORT_MACRO_NAME@
|
||||
# endif
|
||||
# ifndef @GEH_NO_EXPORT_MACRO_NAME@
|
||||
# define @GEH_NO_EXPORT_MACRO_NAME@
|
||||
# endif
|
||||
#else
|
||||
# ifndef @GEH_EXPORT_MACRO_NAME@
|
||||
# ifdef _WIN32
|
||||
# ifdef @GEH_DEFINE_SYMBOL@
|
||||
/* We are building this library */
|
||||
# define @GEH_EXPORT_MACRO_NAME@ __declspec(dllexport)
|
||||
# else
|
||||
/* We are using this library */
|
||||
# define @GEH_EXPORT_MACRO_NAME@ __declspec(dllimport)
|
||||
# endif
|
||||
# else
|
||||
# define @GEH_EXPORT_MACRO_NAME@ __attribute__((visibility("default")))
|
||||
# endif
|
||||
# endif
|
||||
# ifndef @GEH_NO_EXPORT_MACRO_NAME@
|
||||
# ifdef _WIN32
|
||||
# define @GEH_NO_EXPORT_MACRO_NAME@
|
||||
# else
|
||||
# define @GEH_NO_EXPORT_MACRO_NAME@ __attribute__((visibility("hidden")))
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef @GEH_DEPRECATED_MACRO_NAME@
|
||||
# if defined(__cplusplus) && __cplusplus >= 201402L
|
||||
# define @GEH_DEPRECATED_MACRO_NAME@ [[deprecated]]
|
||||
# define @GEH_DEPRECATED_MACRO_NAME@_MSG(msg) [[deprecated(msg)]]
|
||||
# elif defined(_MSC_VER)
|
||||
# define @GEH_DEPRECATED_MACRO_NAME@ __declspec(deprecated)
|
||||
# define @GEH_DEPRECATED_MACRO_NAME@_MSG(msg) __declspec(deprecated(msg))
|
||||
# else
|
||||
# define @GEH_DEPRECATED_MACRO_NAME@ __attribute__((__deprecated__))
|
||||
# define @GEH_DEPRECATED_MACRO_NAME@_MSG(msg) __attribute__((__deprecated__(msg)))
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if @GEH_DEFINE_NO_DEPRECATED@ /* DEFINE_NO_DEPRECATED */
|
||||
# ifndef @GEH_NO_DEPRECATED_MACRO_NAME@
|
||||
# define GEH_NO_DEPRECATED_MACRO_NAME
|
||||
# endif
|
||||
#endif
|
||||
@GEH_CUSTOM_CONTENT@
|
||||
#endif
|
|
@ -1,30 +0,0 @@
|
|||
/*-------------------------------
|
||||
# SPDX-License-Identifier: ISC
|
||||
#
|
||||
# Copyright © @_CURRENT_YEAR@ 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.
|
||||
# -----------------------------*/
|
||||
|
||||
#ifndef @VCS_INCLUDE_GUARD_NAME@
|
||||
#define @VCS_INCLUDE_GUARD_NAME@
|
||||
|
||||
#@__placeholder__@cmakedefine NX_GIT_RETRIEVED_STATE
|
||||
|
||||
#ifdef GIT_RETRIEVED_STATE
|
||||
# define @VCS_GIT_MACRO_NAME@_BRANCH "${NX_GIT_BRANCH_NAME}"
|
||||
# define @VCS_GIT_MACRO_NAME@_COMMIT "${NX_GIT_COMMIT_HASH}"
|
||||
# define @VCS_GIT_MACRO_NAME@_DIRTY ${NX_GIT_IS_DIRTY}
|
||||
#endif
|
||||
@VCS_CUSTOM_CONTENT@
|
||||
#endif
|
|
@ -1,29 +0,0 @@
|
|||
/*-------------------------------
|
||||
# SPDX-License-Identifier: ISC
|
||||
#
|
||||
# Copyright © @_CURRENT_YEAR@ 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.
|
||||
# -----------------------------*/
|
||||
|
||||
#ifndef @GVH_INCLUDE_GUARD_NAME@
|
||||
#define @GVH_INCLUDE_GUARD_NAME@
|
||||
|
||||
#define @GVH_VERSION_MACRO_NAME@_FULL "@NX_PROJECT_VERSION_FULL@"
|
||||
#define @GVH_VERSION_MACRO_NAME@_STRING "@NX_PROJECT_API_VERSION@"
|
||||
#define @GVH_VERSION_MACRO_NAME@_MAJOR @NX_PROJECT_API_MAJOR@
|
||||
#define @GVH_VERSION_MACRO_NAME@_MINOR @NX_PROJECT_API_MINOR@
|
||||
#define @GVH_VERSION_MACRO_NAME@_PATCH @NX_PROJECT_API_PATCH@
|
||||
#define @GVH_VERSION_MACRO_NAME@ @NX_PROJECT_API_HEX@
|
||||
@GVH_CUSTOM_CONTENT@
|
||||
#endif
|
|
@ -1,42 +0,0 @@
|
|||
# NXClient
|
||||
|
||||
## Functions
|
||||
|
||||
### nx_check_compiler_flag
|
||||
|
||||
```
|
||||
nx_check_compiler_flag( <result_var> <flag> )
|
||||
```
|
||||
|
||||
### nx_check_linker_flag
|
||||
|
||||
```
|
||||
nx_check_linker_flag( <result_var> <flag> )
|
||||
```
|
||||
|
||||
### nx_check_source_compiles
|
||||
|
||||
```
|
||||
nx_check_source_compiles( <code> <result_var> )
|
||||
```
|
||||
|
||||
### nx_check_source_runs
|
||||
|
||||
```
|
||||
nx_check_source_runs( <code> <result_var> )
|
||||
```
|
||||
|
||||
### nx_test_compiler_flags
|
||||
|
||||
```
|
||||
nx_test_compiler_flags( [[LIST_VARIABLE] <result_var>] [RAW_VARIABLE <result_var>] [BOOLEAN_VARIABLE <result_var>]
|
||||
[C_VARIABLE <result_var>] [CXX_VARIABLE <result_var>] [[CHECK] <flags...>]
|
||||
[GENEXPR <generator-expression>] )
|
||||
```
|
||||
|
||||
### nx_test_linker_flags
|
||||
|
||||
```
|
||||
nx_test_linker_flags( [[LIST_VARIABLE] <result_var>] [RAW_VARIABLE <result_var>] [BOOLEAN_VARIABLE <result_var>]
|
||||
[[CHECK] <flags...>] [GENEXPR <generator-expression>] )
|
||||
```
|
|
@ -1,24 +0,0 @@
|
|||
# NXClient Module
|
||||
|
||||
## Functions
|
||||
|
||||
### nx_project_details
|
||||
|
||||
```
|
||||
nx_project_details( [[NAME] <project>] [WORKSPACE <workspace>]
|
||||
[SUMMARY <description>] [WEBSITE <url>] [ISSUES <url>]
|
||||
[[API] [[VERSION] <major>[.<minor>[.<patch>[.<tweak>]]]]
|
||||
[PRERELEASE (alpha[#]|beta[#]|rc[#]|unstable)]
|
||||
[COMPATIBILITY (AnyNewer|SameMajor|SameMinor|Exact)]
|
||||
[ABI [[VERSION] <major>[.<minor>[.<patch>]]]
|
||||
[COMPATIBILITY (AnyNewer|SameMajor|SameMinor|Exact)]
|
||||
[LIBTOOL [[VERSION] <current>[:<revision>[:<age>]]]]
|
||||
[PACKAGE [[VERSION] <version>]]] )
|
||||
```
|
||||
|
||||
### nx_find_package
|
||||
|
||||
```
|
||||
nx_find_package( <package> [<version>] [EXACT]
|
||||
[QUIET] [REQUIRED] [PREFER_BUILD] )
|
||||
```
|
|
@ -0,0 +1,8 @@
|
|||
#include <HelloAPI/HelloExports.hpp>
|
||||
#include <HelloAPI/HelloVersion.hpp>
|
||||
|
||||
#if defined( PROVIDES_HELLOAPI ) || defined( HARDLINK_HELLOAPI )
|
||||
HELLOAPI_CEXPORT void hello_from_plugin();
|
||||
#else
|
||||
extern "C" typedef void ( *hello_import_t )( void );
|
||||
#endif
|
|
@ -0,0 +1,3 @@
|
|||
#include <HelloLib/HelloExports.hpp>
|
||||
|
||||
HELLO_CEXPORT void hello_from_library();
|
|
@ -0,0 +1,47 @@
|
|||
#include "HelloAPI/HelloAPI.hpp"
|
||||
#include "HelloLib/HelloLib.hpp"
|
||||
|
||||
#include <iostream>
|
||||
#include <stdexcept>
|
||||
|
||||
#if defined( TARGET_PLATFORM_WINDOWS )
|
||||
# include <windows.h>
|
||||
#elif defined( TARGET_PLATFORM_TYPE_POSIX ) && !defined( PROVIDES_TESTAPI )
|
||||
# include <dlfcn.h>
|
||||
#endif
|
||||
|
||||
#if defined( _WIN32 ) && !defined( _CONSOLE )
|
||||
int main( int argc, char * argv[] );
|
||||
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, INT nCmdShow ) { return main( 0, nullptr ); }
|
||||
#endif
|
||||
|
||||
int main( int argc, char * argv[] )
|
||||
{
|
||||
#if defined( HARDLINK_HELLOAPI )
|
||||
std::cout << "STATIC LINK\n";
|
||||
hello_from_plugin();
|
||||
#else
|
||||
std::cout << "DYNAMIC LINK\n";
|
||||
hello_import_t hello_from_plugin = nullptr;
|
||||
|
||||
# ifdef TARGET_PLATFORM_WINDOWS
|
||||
{
|
||||
HMODULE plugin = LoadLibraryW( L"HelloPlugin.dll" );
|
||||
if( !plugin ) throw std::runtime_error( "Failed To Load 'HelloPlugin' Module" );
|
||||
hello_from_plugin = ( hello_import_t )( GetProcAddress( plugin, "hello_from_plugin" ) );
|
||||
}
|
||||
# elif defined( TARGET_PLATFORM_TYPE_POSIX )
|
||||
{
|
||||
void * plugin = dlopen( "HelloPlugin.so", RTLD_LAZY );
|
||||
if( !plugin ) throw std::runtime_error( "Failed To Load 'HelloPlugin' Module" );
|
||||
hello_from_plugin = ( hello_import_t )( dlsym( plugin, "hello_from_plugin" ) );
|
||||
}
|
||||
# endif
|
||||
|
||||
if( !hello_from_plugin ) throw std::runtime_error( "Failed To Load 'hello_from_plugin' Symbol" );
|
||||
hello_from_plugin();
|
||||
#endif
|
||||
|
||||
hello_from_library();
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
#include "HelloLib/HelloLib.hpp"
|
||||
|
||||
#include <iostream>
|
||||
|
||||
void hello_from_library() { std::cout << "Hello from library!\n"; }
|
|
@ -0,0 +1,10 @@
|
|||
#include "HelloAPI/HelloAPI.hpp"
|
||||
#include "HelloLib/HelloLib.hpp"
|
||||
|
||||
#include <iostream>
|
||||
|
||||
void hello_from_plugin()
|
||||
{
|
||||
std::cout << "Hello from plugin! ";
|
||||
hello_from_library();
|
||||
}
|
|
@ -1,96 +0,0 @@
|
|||
---
|
||||
Language: Cpp
|
||||
# BasedOnStyle: LLVM
|
||||
AccessModifierOffset: -2
|
||||
AlignAfterOpenBracket: Align
|
||||
AlignConsecutiveAssignments: true
|
||||
AlignConsecutiveDeclarations: true
|
||||
AlignEscapedNewlinesLeft: true
|
||||
AlignOperands: true
|
||||
AlignTrailingComments: true
|
||||
AllowAllParametersOfDeclarationOnNextLine: false
|
||||
AllowShortBlocksOnASingleLine: true
|
||||
AllowShortCaseLabelsOnASingleLine: true
|
||||
AllowShortFunctionsOnASingleLine: All
|
||||
AllowShortIfStatementsOnASingleLine: true
|
||||
AllowShortLoopsOnASingleLine: true
|
||||
AlwaysBreakAfterDefinitionReturnType: None
|
||||
AlwaysBreakAfterReturnType: None
|
||||
AlwaysBreakBeforeMultilineStrings: false
|
||||
AlwaysBreakTemplateDeclarations: true
|
||||
BinPackArguments: true
|
||||
BinPackParameters: true
|
||||
BraceWrapping:
|
||||
AfterClass: false
|
||||
AfterControlStatement: false
|
||||
AfterEnum: false
|
||||
AfterFunction: false
|
||||
AfterNamespace: false
|
||||
AfterObjCDeclaration: false
|
||||
AfterStruct: false
|
||||
AfterUnion: false
|
||||
BeforeCatch: false
|
||||
BeforeElse: false
|
||||
IndentBraces: false
|
||||
BreakBeforeBinaryOperators: None
|
||||
BreakBeforeBraces: Allman
|
||||
BreakBeforeTernaryOperators: true
|
||||
BreakConstructorInitializersBeforeComma: false
|
||||
BreakAfterJavaFieldAnnotations: false
|
||||
BreakStringLiterals: true
|
||||
ColumnLimit: 200
|
||||
CommentPragmas: '^ IWYU pragma:'
|
||||
ConstructorInitializerAllOnOneLineOrOnePerLine: false
|
||||
ConstructorInitializerIndentWidth: 6
|
||||
ContinuationIndentWidth: 6
|
||||
Cpp11BracedListStyle: true
|
||||
DerivePointerAlignment: false
|
||||
DisableFormat: false
|
||||
ExperimentalAutoDetectBinPacking: false
|
||||
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
|
||||
IncludeCategories:
|
||||
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
|
||||
Priority: 2
|
||||
- Regex: '^(<|"(gtest|isl|json)/)'
|
||||
Priority: 3
|
||||
- Regex: '.*'
|
||||
Priority: 1
|
||||
IncludeIsMainRegex: '$'
|
||||
IndentCaseLabels: true
|
||||
IndentWidth: 4
|
||||
IndentWrappedFunctionNames: false
|
||||
JavaScriptQuotes: Leave
|
||||
JavaScriptWrapImports: true
|
||||
KeepEmptyLinesAtTheStartOfBlocks: false
|
||||
MacroBlockBegin: ''
|
||||
MacroBlockEnd: ''
|
||||
MaxEmptyLinesToKeep: 1
|
||||
NamespaceIndentation: All
|
||||
ObjCBlockIndentWidth: 2
|
||||
ObjCSpaceAfterProperty: false
|
||||
ObjCSpaceBeforeProtocolList: true
|
||||
PenaltyBreakBeforeFirstCallParameter: 200
|
||||
PenaltyBreakComment: 300
|
||||
PenaltyBreakFirstLessLess: 120
|
||||
PenaltyBreakString: 1000
|
||||
PenaltyExcessCharacter: 60
|
||||
PenaltyReturnTypeOnItsOwnLine: 1000000
|
||||
PointerAlignment: Middle
|
||||
ReflowComments: true
|
||||
SortIncludes: true
|
||||
SpaceAfterCStyleCast: false
|
||||
SpaceAfterTemplateKeyword: false
|
||||
SpaceBeforeAssignmentOperators: true
|
||||
SpaceBeforeParens: Never
|
||||
SpaceInEmptyParentheses: false
|
||||
SpacesBeforeTrailingComments: 1
|
||||
SpacesInAngles: false
|
||||
SpacesInContainerLiterals: true
|
||||
SpacesInCStyleCastParentheses: false
|
||||
SpacesInParentheses: true
|
||||
SpacesInSquareBrackets: false
|
||||
Standard: Cpp11
|
||||
TabWidth: 4
|
||||
UseTab: ForIndentation
|
||||
...
|
||||
|
|
@ -1,342 +0,0 @@
|
|||
|
||||
# --------------------------
|
||||
# General Formatting Options
|
||||
# --------------------------
|
||||
# How wide to allow formatted cmake files
|
||||
line_width = 200
|
||||
|
||||
# How many spaces to tab for indent
|
||||
tab_size = 4
|
||||
|
||||
# If an argument group contains more than this many sub-groups (parg or kwarg
|
||||
# groups), then force it to a vertical layout.
|
||||
max_subgroups_hwrap = 2
|
||||
|
||||
# If a positinal argument group contains more than this many arguments, then
|
||||
# force it to a vertical layout.
|
||||
max_pargs_hwrap = 6
|
||||
|
||||
# If true, separate flow control names from their parentheses with a space
|
||||
separate_ctrl_name_with_space = False
|
||||
|
||||
# If true, separate function names from parentheses with a space
|
||||
separate_fn_name_with_space = False
|
||||
|
||||
# If a statement is wrapped to more than one line, than dangle the closing
|
||||
# parenthesis on it's own line.
|
||||
dangle_parens = False
|
||||
|
||||
# If the trailing parenthesis must be 'dangled' on it's on line, then align it
|
||||
# to this reference: `prefix`: the start of the statement, `prefix-indent`: the
|
||||
# start of the statement, plus one indentation level, `child`: align to the
|
||||
# column of the arguments
|
||||
dangle_align = 'prefix'
|
||||
|
||||
min_prefix_chars = 4
|
||||
|
||||
# If the statement spelling length (including space and parenthesis is larger
|
||||
# than the tab width by more than this amoung, then force reject un-nested
|
||||
# layouts.
|
||||
max_prefix_chars = 10
|
||||
|
||||
# If a candidate layout is wrapped horizontally but it exceeds this many lines,
|
||||
# then reject the layout.
|
||||
max_lines_hwrap = 2
|
||||
|
||||
# What style line endings to use in the output.
|
||||
line_ending = 'unix'
|
||||
|
||||
# Format command names consistently as 'lower' or 'upper' case
|
||||
command_case = 'canonical'
|
||||
|
||||
# Format keywords consistently as 'lower' or 'upper' case
|
||||
keyword_case = 'unchanged'
|
||||
|
||||
# Specify structure for custom cmake functions
|
||||
additional_commands = {
|
||||
"nx_add_files": {
|
||||
"flags": [
|
||||
"APPLICATION",
|
||||
"APPLICATION_DEBUG",
|
||||
"CMAKE",
|
||||
"CONFIGURATION",
|
||||
"DAEMON",
|
||||
"DAEMON_DEBUG",
|
||||
"DEVBIN",
|
||||
"DEVDOC",
|
||||
"DEVRES",
|
||||
"DOCUMENTATION",
|
||||
"EXECUTABLE",
|
||||
"EXECUTABLE_DEBUG",
|
||||
"EXPORT",
|
||||
"HEADERS",
|
||||
"LIBDEPS",
|
||||
"MODRES",
|
||||
"MODULE",
|
||||
"MODULE_DEBUG",
|
||||
"RESOURCES",
|
||||
"SHARED",
|
||||
"SHARED_DEBUG",
|
||||
"SOURCES",
|
||||
"STATIC"
|
||||
],
|
||||
"kwargs": {
|
||||
"DIRS": "*",
|
||||
"FILES": "*",
|
||||
"GROUP": "*",
|
||||
"GROUP_INSTALL": "*"
|
||||
}
|
||||
},
|
||||
"nx_add_target": {
|
||||
"flags": [
|
||||
"APPLICATION",
|
||||
"DAEMON",
|
||||
"EXECUTABLE",
|
||||
"HEADERS",
|
||||
"LIBRARY",
|
||||
"MODAPI",
|
||||
"MODULE",
|
||||
"OBJECTS",
|
||||
"SHARED",
|
||||
"STATIC",
|
||||
"TEST"
|
||||
],
|
||||
"kwargs": {
|
||||
"ABI": "*",
|
||||
"API": "*",
|
||||
"CFLAGS": "*",
|
||||
"CXXFLAGS": "*",
|
||||
"DEFINES": "*",
|
||||
"DEFINE_SYMBOL": "*",
|
||||
"DEPENDS": "*",
|
||||
"FEATURES": "*",
|
||||
"GENERATE": "*",
|
||||
"GENERATE_EXPORT": "*",
|
||||
"GENERATE_VERSION": "*",
|
||||
"GROUP": "*",
|
||||
"GROUP_EXPORT": "*",
|
||||
"GROUP_INSTALL": "*",
|
||||
"INCLUDES": "*",
|
||||
"ISSUES": "*",
|
||||
"LDFLAGS": "*",
|
||||
"LIBTOOL": "*",
|
||||
"SOURCES": "*",
|
||||
"STATIC_DEFINE": "*",
|
||||
"SUMMARY": "*",
|
||||
"VERSION": "*",
|
||||
"WEBSITE": "*",
|
||||
"WORKSPACE": "*"
|
||||
}
|
||||
},
|
||||
"nx_add_test": {
|
||||
"flags": [
|
||||
"EXECUTABLE",
|
||||
"TEST"
|
||||
],
|
||||
"kwargs": {
|
||||
"CFLAGS": "*",
|
||||
"COMMAND": "*",
|
||||
"CXXFLAGS": "*",
|
||||
"DEFINES": "*",
|
||||
"DEPENDS": "*",
|
||||
"ENVIRONMENT": "*",
|
||||
"FEATURES": "*",
|
||||
"INCLUDES": "*",
|
||||
"LDFLAGS": "*",
|
||||
"SOURCES": "*",
|
||||
"WORKING_DIRECTORY": "*"
|
||||
}
|
||||
},
|
||||
"nx_generate_export_header": {
|
||||
"flags": [
|
||||
"DEFINE_NO_DEPRECATED"
|
||||
],
|
||||
"kwargs": {
|
||||
"BASE_NAME": "*",
|
||||
"CUSTOM_CONTENT_FROM_VARIABLE": "*",
|
||||
"DEFINE_SYMBOL": "*",
|
||||
"DEPRECATED_MACRO_NAME": "*",
|
||||
"EXPORT_FILE_NAME": "*",
|
||||
"EXPORT_MACRO_NAME": "*",
|
||||
"INCLUDE_GUARD_NAME": "*",
|
||||
"NO_DEPRECATED_MACRO_NAME": "*",
|
||||
"NO_EXPORT_MACRO_NAME": "*",
|
||||
"PREFIX_NAME": "*",
|
||||
"STATIC_DEFINE": "*"
|
||||
}
|
||||
},
|
||||
"nx_generate_vcs_header": {
|
||||
"kwargs": {
|
||||
"BASE_NAME": "*",
|
||||
"CUSTOM_CONTENT_FROM_VARIABLE": "*",
|
||||
"GIT_FILE_NAME": "*",
|
||||
"GIT_MACRO_NAME": "*",
|
||||
"INCLUDE_GUARD_NAME": "*",
|
||||
"PREFIX_NAME": "*"
|
||||
}
|
||||
},
|
||||
"nx_generate_version_header": {
|
||||
"kwargs": {
|
||||
"BASE_NAME": "*",
|
||||
"CUSTOM_CONTENT_FROM_VARIABLE": "*",
|
||||
"INCLUDE_GUARD_NAME": "*",
|
||||
"PREFIX_NAME": "*",
|
||||
"VERSION_FILE_NAME": "*",
|
||||
"VERSION_MACRO_NAME": "*"
|
||||
}
|
||||
},
|
||||
"nx_project_details": {
|
||||
"flags": [
|
||||
"LOCAL"
|
||||
],
|
||||
"kwargs": {
|
||||
"ABI": "*",
|
||||
"API": "*",
|
||||
"ISSUES": "*",
|
||||
"LIBTOOL": "*",
|
||||
"NAME": "*",
|
||||
"PACKAGE": "*",
|
||||
"SUMMARY": "*",
|
||||
"VERSION": "*",
|
||||
"WEBSITE": "*",
|
||||
"WORKSPACE": "*"
|
||||
}
|
||||
},
|
||||
"nx_target_compile_definitions": {
|
||||
"kwargs": {
|
||||
"INTERFACE": "*",
|
||||
"PRIVATE": "*",
|
||||
"PUBLIC": "*",
|
||||
"TARGET": "*"
|
||||
}
|
||||
},
|
||||
"nx_target_compile_features": {
|
||||
"kwargs": {
|
||||
"INTERFACE": "*",
|
||||
"PRIVATE": "*",
|
||||
"PUBLIC": "*",
|
||||
"TARGET": "*"
|
||||
}
|
||||
},
|
||||
"nx_target_compile_options": {
|
||||
"kwargs": {
|
||||
"INTERFACE": "*",
|
||||
"PRIVATE": "*",
|
||||
"PUBLIC": "*",
|
||||
"TARGET": "*"
|
||||
}
|
||||
},
|
||||
"nx_target_headers": {
|
||||
"kwargs": {
|
||||
"INTERFACE": "*",
|
||||
"PRIVATE": "*",
|
||||
"PUBLIC": "*",
|
||||
"TARGET": "*"
|
||||
}
|
||||
},
|
||||
"nx_target_include_directories": {
|
||||
"kwargs": {
|
||||
"INTERFACE": "*",
|
||||
"PRIVATE": "*",
|
||||
"PUBLIC": "*",
|
||||
"TARGET": "*"
|
||||
}
|
||||
},
|
||||
"nx_target_link_libraries": {
|
||||
"kwargs": {
|
||||
"INTERFACE": "*",
|
||||
"PRIVATE": "*",
|
||||
"PUBLIC": "*",
|
||||
"TARGET": "*"
|
||||
}
|
||||
},
|
||||
"nx_target_link_options": {
|
||||
"kwargs": {
|
||||
"INTERFACE": "*",
|
||||
"PRIVATE": "*",
|
||||
"PUBLIC": "*",
|
||||
"TARGET": "*"
|
||||
}
|
||||
},
|
||||
"nx_target_sources": {
|
||||
"kwargs": {
|
||||
"INTERFACE": "*",
|
||||
"PRIVATE": "*",
|
||||
"PUBLIC": "*",
|
||||
"TARGET": "*"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# A list of command names which should always be wrapped
|
||||
always_wrap = []
|
||||
|
||||
# If true, the argument lists which are known to be sortable will be sorted
|
||||
# lexicographicall
|
||||
enable_sort = True
|
||||
|
||||
# If true, the parsers may infer whether or not an argument list is sortable
|
||||
# (without annotation).
|
||||
autosort = False
|
||||
|
||||
# If a comment line starts with at least this many consecutive hash characters,
|
||||
# then don't lstrip() them off. This allows for lazy hash rulers where the first
|
||||
# hash char is not separated by space
|
||||
hashruler_min_length = 10
|
||||
|
||||
# A dictionary containing any per-command configuration overrides. Currently
|
||||
# only `command_case` is supported.
|
||||
per_command = {}
|
||||
|
||||
# A dictionary mapping layout nodes to a list of wrap decisions. See the
|
||||
# documentation for more information.
|
||||
layout_passes = {}
|
||||
|
||||
|
||||
# --------------------------
|
||||
# Comment Formatting Options
|
||||
# --------------------------
|
||||
# What character to use for bulleted lists
|
||||
bullet_char = '*'
|
||||
|
||||
# What character to use as punctuation after numerals in an enumerated list
|
||||
enum_char = '.'
|
||||
|
||||
# enable comment markup parsing and reflow
|
||||
enable_markup = False
|
||||
|
||||
# If comment markup is enabled, don't reflow the first comment block in each
|
||||
# listfile. Use this to preserve formatting of your copyright/license
|
||||
# statements.
|
||||
first_comment_is_literal = True
|
||||
|
||||
# If comment markup is enabled, don't reflow any comment block which matches
|
||||
# this (regex) pattern. Default is `None` (disabled).
|
||||
literal_comment_pattern = None
|
||||
|
||||
# Regular expression to match preformat fences in comments
|
||||
# default=r'^\s*([`~]{3}[`~]*)(.*)$'
|
||||
fence_pattern = '^\\s*([`~]{3}[`~]*)(.*)$'
|
||||
|
||||
# Regular expression to match rulers in comments
|
||||
# default=r'^\s*[^\w\s]{3}.*[^\w\s]{3}$'
|
||||
ruler_pattern = '^\\s*[^\\w\\s]{3}.*[^\\w\\s]{3}$'
|
||||
|
||||
# If true, then insert a space between the first hash char and remaining hash
|
||||
# chars in a hash ruler, and normalize it's length to fill the column
|
||||
canonicalize_hashrulers = True
|
||||
|
||||
|
||||
# ---------------------------------
|
||||
# Miscellaneous Options
|
||||
# ---------------------------------
|
||||
# If true, emit the unicode byte-order mark (BOM) at the start of the file
|
||||
emit_byteorder_mark = False
|
||||
|
||||
# Specify the encoding of the input file. Defaults to utf-8.
|
||||
input_encoding = 'utf-8'
|
||||
|
||||
# Specify the encoding of the output file. Defaults to utf-8. Note that cmake
|
||||
# only claims to support utf-8 so be careful when using anything else
|
||||
output_encoding = 'utf-8'
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- BEGIN_INCLUDE(manifest) -->
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="net.nephatrine.Phoenix" android:installLocation="auto"
|
||||
android:versionCode="1" android:versionName="1.0">
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="@ANDROID_PLATFORM_LEVEL@" />
|
||||
<application android:label="Phoenix" android:hasCode="true">
|
||||
<activity android:name="net.nephatrine.Phoenix.GameActivity" android:label="Phoenix"
|
||||
android:configChanges="orientation|keyboardHidden">
|
||||
<meta-data android:name="android.app.lib_name" android:value="@NX_TARGET_APPMODULE@" />
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
</application>
|
||||
</manifest>
|
||||
<!-- END_INCLUDE(manifest) -->
|
|
@ -1,89 +0,0 @@
|
|||
# -------------------------------
|
||||
# SPDX-License-Identifier: ISC
|
||||
#
|
||||
# Copyright © 2019 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(
|
||||
Phoenix
|
||||
VERSION "1.0"
|
||||
DESCRIPTION "Phoenix Game Engine"
|
||||
LANGUAGES CXX)
|
||||
|
||||
set(BUILD_ALL_LIBS ON)
|
||||
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/../cmake/NXClient.cmake" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/")
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_BINARY_DIR}")
|
||||
include(NXClient)
|
||||
include(NXBuild)
|
||||
|
||||
set(HELLO_LIB_SOURCE src/hello.cpp)
|
||||
set(HELLO_LIB_HEADERS include/hello.hpp)
|
||||
set(HELLO_MOD_SOURCE src/hello.mod.cpp)
|
||||
set(HELLO_API_HEADERS include/hello-api.hpp)
|
||||
set(HELLO_SOURCE src/hello.main.cpp)
|
||||
|
||||
nx_add_target(
|
||||
PHOENIX_LIB Flame LIBRARY
|
||||
SOURCES ${HELLO_LIB_SOURCE} PUBLIC ${HELLO_LIB_HEADERS}
|
||||
GENERATE PUBLIC include/hello_exports.hpp
|
||||
INCLUDES PUBLIC include
|
||||
SUMMARY "Phoenix Support Library")
|
||||
nx_add_target(
|
||||
PHOENIX_GAMEAPI GameAPI MODAPI
|
||||
SOURCES INTERFACE ${HELLO_API_HEADERS}
|
||||
GENERATE INTERFACE include/hello-api_exports.hpp
|
||||
INCLUDES INTERFACE include
|
||||
SUMMARY "Phoenix Game API")
|
||||
nx_add_target(
|
||||
PHOENIX_GAMES Game MODULE
|
||||
SOURCES ${HELLO_MOD_SOURCE}
|
||||
DEPENDS Phoenix::GameAPI Phoenix::Flame
|
||||
DEFINE_SYMBOL PROVIDES_GAMEAPI
|
||||
STATIC_DEFINE HARDLINK_GAMEAPI
|
||||
SUMMARY "Phoenix Game Module")
|
||||
|
||||
unset(PHOENIX_DEPENDS)
|
||||
if(NX_TARGET_PLATFORM_ANDROID)
|
||||
list(APPEND PHOENIX_DEPENDS android native_app_glue log)
|
||||
endif()
|
||||
|
||||
nx_add_target(
|
||||
PHOENIX_ENGINES Phoenix APPLICATION
|
||||
SOURCES ${HELLO_SOURCE}
|
||||
DEPENDS Phoenix::GameAPI Phoenix::Flame ${PHOENIX_DEPENDS}
|
||||
GROUP Phoenix)
|
||||
nx_target_headers(${PHOENIX_ENGINES} JAVA java/net/nephatrine/Phoenix/GameActivity.java.configure)
|
||||
|
||||
nx_add_test(
|
||||
PHOENIX_TESTS test-Phoenix
|
||||
SOURCES ${HELLO_SOURCE}
|
||||
DEPENDS Phoenix::GameAPI Phoenix::Flame)
|
||||
|
||||
nx_clang_format(${HELLO_SOURCE} ${HELLO_LIB_SOURCE} ${HELLO_LIB_HEADERS} ${HELLO_API_HEADERS} ${HELLO_MOD_SOURCE})
|
||||
nx_cmake_format()
|
||||
nx_install()
|
||||
nx_package(ANDROID MANIFEST AndroidManifest.xml RESOURCES res SOURCEPATH "${CMAKE_CURRENT_BINARY_DIR}/java")
|
||||
|
||||
if(BUILD_TESTING)
|
||||
enable_testing()
|
||||
endif()
|
||||
|
||||
# TODO: Debug Messages
|
||||
#foreach(sVar ${_NX_PROPOGATE_GLOBAL})
|
||||
# if(DEFINED ${sVar})
|
||||
# message(STATUS "${sVar}: ${${sVar}}")
|
||||
# endif()
|
||||
#endforeach()
|
|
@ -1,3 +0,0 @@
|
|||
#include "hello-api_exports.hpp"
|
||||
|
||||
extern GAMEAPI_EXPORT void say_hello2();
|
|
@ -1,3 +0,0 @@
|
|||
#include "hello_exports.hpp"
|
||||
|
||||
extern FLAME_EXPORT void say_hello1();
|
|
@ -1,10 +0,0 @@
|
|||
package net.nephatrine.Phoenix;
|
||||
|
||||
import android.app.NativeActivity;
|
||||
|
||||
public class GameActivity extends NativeActivity {
|
||||
static
|
||||
{
|
||||
System.loadLibrary("@NX_TARGET_APPMODULE@");
|
||||
}
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">Phoenix</string>
|
||||
</resources>
|
|
@ -1,4 +0,0 @@
|
|||
#include "hello.hpp"
|
||||
#include <iostream>
|
||||
|
||||
FLAME_EXPORT void say_hello1() { std::cout << "Hello!\n"; }
|
|
@ -1,41 +0,0 @@
|
|||
#include "hello.hpp"
|
||||
|
||||
#ifdef __ANDROID__
|
||||
#include <android/log.h>
|
||||
#include <android/native_app_glue.h>
|
||||
#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "phoenix", __VA_ARGS__))
|
||||
#define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, "phoenix", __VA_ARGS__))
|
||||
extern "C" void handle_cmd(struct android_app *state, int32_t cmd)
|
||||
{
|
||||
}
|
||||
extern "C" void android_main(struct android_app *state)
|
||||
{
|
||||
LOGW("PHOENIX - Tick!");
|
||||
state->onAppCmd = handle_cmd;
|
||||
|
||||
// deprecated but seemingly required
|
||||
// app_dummy();
|
||||
|
||||
int events;
|
||||
android_poll_source *pollSource;
|
||||
while(!state->destroyRequested)
|
||||
if(ALooper_pollAll(0, nullptr, &events, (void**)&pollSource) >= 0)
|
||||
if(pollSource)
|
||||
pollSource->process(state, pollSource);
|
||||
}
|
||||
#else
|
||||
int main( int argc, char * argv[] )
|
||||
{
|
||||
say_hello1();
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, INT nCmdShow)
|
||||
{
|
||||
say_hello1();
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
#endif
|
|
@ -1,4 +0,0 @@
|
|||
#include "hello-api.hpp"
|
||||
#include <iostream>
|
||||
|
||||
GAMEAPI_EXPORT void say_hello2() { std::cout << "Hello!\n"; }
|
|
@ -0,0 +1,13 @@
|
|||
#include "HelloLib/HelloLib.hpp"
|
||||
|
||||
#if defined( _WIN32 ) && !defined( _CONSOLE )
|
||||
# include <windows.h>
|
||||
int main( int argc, char * argv[] );
|
||||
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, INT nCmdShow ) { return main( 0, nullptr ); }
|
||||
#endif
|
||||
|
||||
int main( int argc, char * argv[] )
|
||||
{
|
||||
hello_from_library();
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
#include "HelloAPI/HelloAPI.hpp"
|
||||
|
||||
#include <iostream>
|
||||
#include <stdexcept>
|
||||
|
||||
#if defined( TARGET_PLATFORM_WINDOWS )
|
||||
# include <windows.h>
|
||||
#elif defined( TARGET_PLATFORM_TYPE_POSIX ) && !defined( PROVIDES_TESTAPI )
|
||||
# include <dlfcn.h>
|
||||
#endif
|
||||
|
||||
#if defined( _WIN32 ) && !defined( _CONSOLE )
|
||||
int main( int argc, char * argv[] );
|
||||
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, INT nCmdShow ) { return main( 0, nullptr ); }
|
||||
#endif
|
||||
|
||||
int main( int argc, char * argv[] )
|
||||
{
|
||||
#if defined( HARDLINK_HELLOAPI )
|
||||
std::cout << "STATIC LINK\n";
|
||||
hello_from_plugin();
|
||||
#else
|
||||
std::cout << "DYNAMIC LINK\n";
|
||||
hello_import_t hello_from_plugin = nullptr;
|
||||
|
||||
# ifdef TARGET_PLATFORM_WINDOWS
|
||||
{
|
||||
HMODULE plugin = LoadLibraryW( L"./HelloPlugin.dll" );
|
||||
if( !plugin ) throw std::runtime_error( "Failed To Load 'HelloPlugin' Module" );
|
||||
hello_from_plugin = ( hello_import_t )( GetProcAddress( plugin, "hello_from_plugin" ) );
|
||||
}
|
||||
# elif defined( TARGET_PLATFORM_TYPE_POSIX )
|
||||
{
|
||||
void * plugin = dlopen( "./HelloPlugin.so", RTLD_LAZY );
|
||||
if( !plugin ) throw std::runtime_error( "Failed To Load 'HelloPlugin' Module" );
|
||||
hello_from_plugin = ( hello_import_t )( dlsym( plugin, "hello_from_plugin" ) );
|
||||
}
|
||||
# endif
|
||||
|
||||
if( !hello_from_plugin ) throw std::runtime_error( "Failed To Load 'hello_from_plugin' Symbol" );
|
||||
hello_from_plugin();
|
||||
#endif
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue