initial commit
continuous-integration/drone/push Build is failing Details

This commit is contained in:
Daniel Wolf 2020-06-26 15:32:11 -04:00
parent b0979bbdb7
commit 18b24dfb77
No known key found for this signature in database
GPG Key ID: E8FEA551AA478F9A
55 changed files with 500 additions and 11357 deletions

View File

@ -57,6 +57,7 @@ IncludeCategories:
Priority: 1
IncludeIsMainRegex: '$'
IndentCaseLabels: true
IndentPPDirectives: AfterHash
IndentWidth: 4
IndentWrappedFunctionNames: false
JavaScriptQuotes: Leave

View File

@ -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": "*"
}
}
}

View File

@ -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

View File

@ -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

View File

@ -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()

View File

@ -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.

View File

@ -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'

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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()

View File

@ -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)

View File

@ -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()

File diff suppressed because it is too large Load Diff

View File

@ -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()

View File

@ -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()

View File

@ -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

View File

@ -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@")

File diff suppressed because it is too large Load Diff

View File

@ -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()

View File

@ -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()

View File

@ -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()

View File

@ -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()

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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>] )
```

View File

@ -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] )
```

View File

@ -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

View File

@ -0,0 +1,3 @@
#include <HelloLib/HelloExports.hpp>
HELLO_CEXPORT void hello_from_library();

47
src/Hello.main.cpp Normal file
View File

@ -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;
}

View File

@ -0,0 +1,5 @@
#include "HelloLib/HelloLib.hpp"
#include <iostream>
void hello_from_library() { std::cout << "Hello from library!\n"; }

View File

@ -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();
}

View File

@ -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
...

View File

@ -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'

View File

@ -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) -->

View File

@ -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()

View File

@ -1,3 +0,0 @@
#include "hello-api_exports.hpp"
extern GAMEAPI_EXPORT void say_hello2();

View File

@ -1,3 +0,0 @@
#include "hello_exports.hpp"
extern FLAME_EXPORT void say_hello1();

View File

@ -1,10 +0,0 @@
package net.nephatrine.Phoenix;
import android.app.NativeActivity;
public class GameActivity extends NativeActivity {
static
{
System.loadLibrary("@NX_TARGET_APPMODULE@");
}
}

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Phoenix</string>
</resources>

View File

@ -1,4 +0,0 @@
#include "hello.hpp"
#include <iostream>
FLAME_EXPORT void say_hello1() { std::cout << "Hello!\n"; }

View File

@ -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

View File

@ -1,4 +0,0 @@
#include "hello-api.hpp"
#include <iostream>
GAMEAPI_EXPORT void say_hello2() { std::cout << "Hello!\n"; }

13
tests/HelloLib.cpp Normal file
View File

@ -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;
}

44
tests/HelloPlugin.cpp Normal file
View File

@ -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;
}