Skip to content
Merged
Show file tree
Hide file tree
Changes from 30 commits
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
624877e
Cleanup runner configs
Rinzii Sep 1, 2024
f450b58
add workflow for automatic formatting with clang-format
Rinzii Sep 1, 2024
28536b3
Setup initial work for pow implementation
Rinzii Sep 1, 2024
389dd21
Setup simd intrinsic wrapper for pow
Rinzii Sep 1, 2024
6cf8c8e
Setup layout for runtime pow
Rinzii Sep 1, 2024
2269a07
Setup layout for runtime pow
Rinzii Sep 1, 2024
b1174e5
Setup layout for runtime pow
Rinzii Sep 1, 2024
a0e64cc
Setup generic for implementation of pow
Rinzii Sep 1, 2024
a148cc0
Apply work around for SVML issues on Linux
Rinzii Sep 1, 2024
87637eb
Add initial work on reworking how sources are added along with major …
Rinzii Oct 18, 2024
f4bb7a5
Add links to project discord and additional badges
Rinzii Oct 18, 2024
95d1a9f
Continue major rewrite of cmake scripts along with significant change…
Rinzii Oct 18, 2024
780778e
Finish major rewrite of cmake script setup
Rinzii Oct 19, 2024
cda8706
Formatting
Rinzii Oct 19, 2024
f051b0e
Final cleanup
Rinzii Oct 19, 2024
1e53230
Simplify header adding function
Rinzii Oct 19, 2024
63fd16b
Bug fixing for intel OneAPI DPC++
Rinzii Oct 19, 2024
012a23a
Revert cmake version to 3.18
Rinzii Oct 19, 2024
143cefa
Major CMake rework (#72)
Rinzii Oct 19, 2024
1337766
Minor cleanup
Rinzii Oct 21, 2024
23e1b4d
Add type-specific optimizations for popcount
Rinzii Oct 21, 2024
0bfd90e
Minor bug fix
Rinzii Oct 21, 2024
d1d6b83
Finalize popcount optimization
Rinzii Oct 22, 2024
406c404
Minor cleanup
Rinzii Oct 30, 2024
979b5ad
Add feature checking for simd
Rinzii Oct 30, 2024
c7022ec
Minor cleanup & bug fixing
Rinzii Oct 30, 2024
8416e90
Fix incorrect abi usage
Rinzii Oct 30, 2024
be0e44f
Minor cleanup
Rinzii Oct 30, 2024
4e67643
Change fenv exception handling to now enforce runtime evaluation
Rinzii Oct 30, 2024
205944f
Add a windows-specific lint script
Rinzii Oct 30, 2024
ab4ae1b
Add cmake specific SVML detection for pow
Rinzii Oct 30, 2024
a6137cd
Add --no-install-recommends to install command
Rinzii Oct 30, 2024
3436be5
Apply multiple adjustments and minor fixes based on linting work alon…
Rinzii Oct 30, 2024
7f80369
Enable color in clang tidy
Rinzii Oct 30, 2024
4488e30
typo
Rinzii Dec 11, 2024
a70b3c6
clang-tidy cleanup
Rinzii Dec 11, 2024
2e352a6
Add major feature validation to cmake scripts
Rinzii Dec 11, 2024
d6ebf91
Major rework of cmake scripts and ci
Rinzii Dec 23, 2024
2511661
Remove explicit setting of appleclang version
Rinzii Dec 23, 2024
f118927
Update licensing to include LLVM licensing
Rinzii Dec 23, 2024
510b9c6
Improve contributing doc
Rinzii Dec 23, 2024
70f6bb3
Increase gtest version
Rinzii Dec 23, 2024
2f4594e
Change folder from scripts to tools
Rinzii Dec 23, 2024
3bad88e
Fix issue where windows builds of clang output a million warnings
Rinzii Dec 23, 2024
208cbaf
Minor adjustments to functionality
Rinzii Dec 24, 2024
5ca8e57
Clean up headers to take advantage of cmake
Rinzii Dec 24, 2024
a8ce844
Minor bug fixes
Rinzii Dec 24, 2024
79471e7
Initial support for benchmarking trunc
Rinzii Dec 24, 2024
0d40a8d
Apply significantly more aggressive warnings
Rinzii Dec 24, 2024
1162cfb
Merge branch 'main' into dev
Rinzii Dec 24, 2024
7e208e4
Minor cleanup
Rinzii Dec 24, 2024
d6441f6
Fix minor bugs
Rinzii Dec 24, 2024
0b0e94f
Disable resharper inspection
Rinzii Dec 24, 2024
96d23cb
Move location of disabled warning macro
Rinzii Dec 24, 2024
67c9fad
Apply possible workaround to SEH issue on runners
Rinzii Dec 24, 2024
1ae6773
Additional fixing of warnings
Rinzii Dec 24, 2024
27ab97a
Additional fixing of warnings
Rinzii Dec 24, 2024
cd2a6bb
Additional debugging of CI SEH exception
Rinzii Dec 24, 2024
04ae858
More additional debugging of CI SEH exception
Rinzii Dec 24, 2024
8cbc6c9
Maintainer is testing things for CI specific SEH exception
Rinzii Dec 24, 2024
78520b6
Troubleshooting CI SEH Exception on sqrt tests
Rinzii Dec 26, 2024
3674a26
Troubleshooting CI SEH Exception on sqrt tests
Rinzii Dec 26, 2024
26ea10c
Adjust dependabot to only update dev
Rinzii Dec 26, 2024
809233e
Troubleshooting CI SEH Exception on sqrt tests
Rinzii Dec 26, 2024
dbcc5b8
More Troubleshooting CI SEH Exception on sqrt tests
Rinzii Dec 26, 2024
4ecf0f0
Allow gtest to debug SEH exceptions with abseil and re2
Rinzii Dec 26, 2024
e0cc964
Minor modernization for CI
Rinzii Dec 27, 2024
1a9a134
Disable usage of AVX512
Rinzii Dec 27, 2024
dd5c0a2
Rename m1 macos ci to better name
Rinzii Dec 27, 2024
0b07d7a
Remove homebrew install as macos-latest has it preinstalled
Rinzii Dec 27, 2024
e668311
Experimental output
Rinzii Dec 27, 2024
f5f06ee
Testing with homebrew
Rinzii Dec 27, 2024
da59201
Check path of ninja
Rinzii Dec 27, 2024
8ad2b0b
Remove path check of ninja
Rinzii Dec 27, 2024
2ea2673
Install cmake also as workaround to path issue
Rinzii Dec 27, 2024
0a2b0fc
Additional work around for issues with cmake
Rinzii Dec 27, 2024
ea47cfa
Additional work around for issues with cmake
Rinzii Dec 27, 2024
df43f6d
Remove step to install homebrew
Rinzii Dec 27, 2024
b83f54b
Fix sym link issue
Rinzii Dec 27, 2024
ff105b0
Enforce Fix sym link issue
Rinzii Dec 27, 2024
13a6c89
For now remove older macos ci
Rinzii Dec 27, 2024
d927593
Begin initial work on simd wrapper rework
Rinzii Dec 27, 2024
b83a1a8
Switch over to improved ccm_add_headers
Rinzii Dec 28, 2024
561ec06
experimental simd
Rinzii Dec 28, 2024
ce5d4b8
experimental compiler flags
Rinzii Dec 28, 2024
88328bc
experimental builtin_fma support
Rinzii Dec 28, 2024
a606a47
return to old name
Rinzii Dec 28, 2024
bfd496d
return to old name
Rinzii Dec 28, 2024
15283eb
Completely remove avx512 support
Rinzii Dec 28, 2024
feff834
Completely remove avx512 support
Rinzii Dec 28, 2024
b4c3a53
Remove builtin checking for now
Rinzii Dec 28, 2024
ddb56da
Bring in starting work of new builtin checking
Rinzii Dec 29, 2024
e110ab5
Bring in starting work of new builtin checking
Rinzii Dec 29, 2024
c7c95c9
Fix missing added sub dir
Rinzii Dec 29, 2024
3fc2bc2
Formatting
Rinzii Dec 29, 2024
dca6633
Bring in builtin detection for all builtins in gcc
Rinzii Dec 29, 2024
9f1943b
Clean up missing headers in cmake
Rinzii Dec 29, 2024
2983062
Bring in new builtin detection system into front face code base
Rinzii Dec 29, 2024
16825a4
Make it so gtests internal implementation details can never trigger o…
Rinzii Dec 29, 2024
112b710
disable static assert on long double nanl due to issues with how clan…
Rinzii Dec 29, 2024
bc83e99
Add support for Clang, NVC++, and Intel DPC++ for builtin detection
Rinzii Dec 29, 2024
d460366
Remove builtin detection with cmake
Rinzii Dec 30, 2024
388e680
Finalize fma
Rinzii Dec 30, 2024
60b433d
Update comparison functions to be more standard conforming
Rinzii Dec 30, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 5 additions & 8 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file

version: 2
updates:
- package-ecosystem: "github-actions" # See documentation for possible values
directory: "/" # Location of package manifests
- package-ecosystem: "github-actions" # Necessary to update action hashes.
directory: "/"
schedule:
interval: "weekly"
interval: "monthly"
# Allow up to 3 opened pull requests for github-actions versions.
open-pull-requests-limit: 3
16 changes: 3 additions & 13 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -1,22 +1,12 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#

name: "CodeQL"

on:
push:
branches: ["main"]
branches: ["main", "dev"]
pull_request:
# The branches below must be a subset of the branches above
branches: ["main"]
branches: ["main", "dev"]
schedule:
- cron: "0 0 * * 1"

Expand Down
25 changes: 25 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: lint

on:
pull_request:
paths:
- '**.hpp'

permissions:
contents: read

jobs:
format_code:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6

- name: Install clang-format
uses: aminya/setup-cpp@290824452986e378826155f3379d31bce8753d76 # v0.37.0
with:
clangformat: 17.0.5

- name: Run clang-format
run: |
find include -name '*.hpp' | xargs clang-format -i -style=file -fallback-style=none
git diff --exit-code
222 changes: 115 additions & 107 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.18)
cmake_minimum_required(VERSION 3.18.0)

set(CCMATH_BUILD_VERSION 0.2.0)

Expand All @@ -12,10 +12,10 @@ project(

set(is_root_project OFF) # Identifies if this is the root project
if (CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
set(is_root_project ON)
set(is_root_project ON)
endif ()
if(NOT CCMATH_SOURCE_DIR)
set(CCMATH_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
if (NOT CCMATH_SOURCE_DIR)
set(CCMATH_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
endif ()

set(CMAKE_CXX_STANDARD 17)
Expand All @@ -25,19 +25,28 @@ set(CMAKE_CXX_EXTENSIONS OFF)
message(STATUS "CCMath version: ${PROJECT_VERSION}")

# TO THE IMPLEMENTOR: If CCMATH_BUILD_TESTS is set to OFF then googletest can be deleted from the ext folder.
option(CCMATH_BUILD_TESTS "Build ccmath tests" ${is_root_project})
option(CCMATH_INSTALL "Setup install and package steps" ${is_root_project})

## CCMath specific user defined options
option(CCMATH_BUILD_TESTS "Build ccmath tests" ${is_root_project}) # If disabled then gtest will not be fetched.
option(CCMATH_FIND_GTEST_PACKAGE "Enable finding of gtest package" OFF)
option(CCMATH_BUILD_EXAMPLES "Build ccmath examples" ${is_root_project})
option(CCMATH_BUILD_BENCHMARKS "Build ccmath benchmarks" ${is_root_project})
option(CCMATH_BUILD_BENCHMARKS "Build ccmath benchmarks" ${is_root_project}) # If disabled then gbench will not be fetched.
option(CCMATH_FIND_GBENCH_PACKAGE "Enable finding of google benchmark package" OFF)
option(CCMATH_INSTALL "Setup install and package steps" ${is_root_project})
option(CCMATH_ENABLE_EXTENSIONS "Enable the extended ccmath library that adds helpful additional methods that are not defined by the standard" ${is_root_project})
option(CCMATH_ENABLE_RUNTIME_SIMD "Enable SIMD optimization for runtime evaluation (does not effect compile time)" ON)
option(CCMATH_BUILD_EXAMPLES "Build ccmath examples" ${is_root_project})
option(CCMATH_ENABLE_USER_DEFINED_OPTIMIZATION_MACROS "Enable user defined optimization macros instead of having ccmath define its own internal ones in cmake" OFF)
option(CCMATH_DISABLE_ERRNO "Disable the use of errno in ccmath during runtime" OFF)

## Standard changing user defined options
# Most options here are by default set to OFF. Setting them to ON will violate the standard, but generally
# provide better performance or get rid of extra bloat that the standard requires.
option(CCMATH_ENABLE_EXTENSIONS "Enable the extended ccmath library that adds helpful additional methods that are not defined by the standard" OFF)
option(CCMATH_DISABLE_ERRNO "Disable the use of errno in ccmath during runtime (this will allow compile time evaluation of edge cases that normally can not be evaluated at compile time)" OFF)

## Simd specific user defined options
option(CCMATH_ENABLE_RUNTIME_SIMD "Enable SIMD optimization for runtime evaluation (does not effect compile time)" ON) # By default we want SIMD to be enabled to allow faster runtime evaluation.
option(CCMATH_DISABLE_SVML_USAGE "Disable the use of SVML functions in ccmath. (This only effects compilers that use SVML)" OFF)

# include the global configuration file
include(cmake/GlobalConfig.cmake)
include(cmake/config/GlobalConfig.cmake)

add_library(${PROJECT_NAME}-compile-options INTERFACE)
add_library(${PROJECT_NAME}::${PROJECT_NAME}-compile-options ALIAS ${PROJECT_NAME}-compile-options)
Expand All @@ -47,65 +56,60 @@ add_library(${PROJECT_NAME}::${PROJECT_NAME}-compile-options ALIAS ${PROJECT_NAM

# Generic clang/gcc compiler options
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU|IntelLLVM")
target_compile_options(${PROJECT_NAME}-compile-options INTERFACE
-Wall
-Wextra
-Wconversion
-Werror=return-type
target_compile_options(${PROJECT_NAME}-compile-options INTERFACE
-Wall
-Wextra
-Wconversion
-Werror=return-type

-Wno-pedantic
-Wno-pedantic

# Allow FMA instructions
-ffp-contract=fast

# Macros to define
-DNOMINMAX
)
# Allow FMA instructions
-ffp-contract=fast

# Macros to define
-DNOMINMAX
)

if (CMAKE_CXX_COMPILER_ID STREQUAL MSVC)
target_compile_options(${PROJECT_NAME}-compile-options INTERFACE
/W3
/WX
/permissive-

/Zc:__cplusplus

# Macros to define
/DNOMINMAX
/D_ENABLE_EXTENDED_ALIGNED_STORAGE
)
endif ()
if (CMAKE_CXX_COMPILER_ID STREQUAL MSVC)
target_compile_options(${PROJECT_NAME}-compile-options INTERFACE
/W3
/WX
/permissive-

# Disable intel specific warnings that don't apply to us.
if (CMAKE_CXX_COMPILER_ID STREQUAL IntelLLVM)
target_compile_options(${PROJECT_NAME}-compile-options INTERFACE
-Wno-tautological-constant-compare
)
endif ()
/Zc:__cplusplus

# Macros to define
/DNOMINMAX
/D_ENABLE_EXTENDED_ALIGNED_STORAGE
)
endif ()

# TODO: Remove this later.
# Some variables have been provided but are not currently being used, but it would not atm make sense to remove them.
# So to clean up the warnings we are just silencing these specific cases.
# Disable intel specific warnings that don't apply to us.
if (CMAKE_CXX_COMPILER_ID STREQUAL IntelLLVM)
target_compile_options(${PROJECT_NAME}-compile-options INTERFACE
-Wno-unused-but-set-variable -Wno-unused-value -Wno-unused-parameter
-Wno-tautological-constant-compare
)
endif ()
endif ()

include(ccmath_internal_headers.cmake)
include(ccmath_core_headers.cmake)

# TODO: Remove this later.
# Some variables have been provided but are not currently being used, but it would not atm make sense to remove them.
# So to clean up the warnings we are just silencing these specific cases.
target_compile_options(${PROJECT_NAME}-compile-options INTERFACE
-Wno-unused-but-set-variable -Wno-unused-value -Wno-unused-parameter
)
endif ()

add_library(${PROJECT_NAME} INTERFACE)
add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})

target_sources(${PROJECT_NAME} INTERFACE "$<BUILD_INTERFACE:${ccmath_internal_headers}>")
target_sources(${PROJECT_NAME} INTERFACE "$<BUILD_INTERFACE:${ccmath_core_headers}>")
include(cmake/functions/CcmathMessage.cmake)

if (CCMATH_ENABLE_EXTENSIONS)
include(ccmath_extensions_headers.cmake)
target_sources(${PROJECT_NAME} INTERFACE "$<BUILD_INTERFACE:${ccmath_extensions_headers}>")
endif ()
include(cmake/functions/CcmAddHeaders.cmake)

add_subdirectory(include/ccmath)

target_include_directories(${PROJECT_NAME} INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/>)
target_include_directories(${PROJECT_NAME} SYSTEM INTERFACE $<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include>)
Expand All @@ -115,81 +119,85 @@ target_link_libraries(${PROJECT_NAME} INTERFACE
)

if (CCMATH_ENABLE_RUNTIME_SIMD)
target_compile_definitions(${PROJECT_NAME} INTERFACE CCM_CONFIG_USE_RT_SIMD)
target_compile_definitions(${PROJECT_NAME} INTERFACE CCM_CONFIG_USE_RT_SIMD)

if (NOT CCMATH_DISABLE_SVML_USAGE)
include(cmake/config/features/CheckAllSupportedSimdFeatures.cmake) # Checks for specific SIMD features and sets the appropriate macros.
endif ()
endif ()

if (NOT CCMATH_ENABLE_USER_DEFINED_OPTIMIZATION_MACROS)
# Set these definitions based on the build type to aid in identifying the optimization level.
# These are essential when dealing with compiler specific outcomes that are based on the optimization level.
target_compile_definitions(${PROJECT_NAME}
INTERFACE
$<$<CONFIG:Debug>:CCM_CONFIG_DEBUG> # -O0
$<$<CONFIG:RelWithDebInfo>:CCM_CONFIG_OPTIMIZE> # -O2
$<$<CONFIG:Release>:CCM_CONFIG_AGGRESSIVELY_OPTIMIZE> # -O3
$<$<CONFIG:MinSizeRel>:CCM_CONFIG_MINSIZE> # -Os
)
# Set these definitions based on the build type to aid in identifying the optimization level.
# These are essential when dealing with compiler specific outcomes that are based on the optimization level.
target_compile_definitions(${PROJECT_NAME}
INTERFACE
$<$<CONFIG:Debug>:CCM_CONFIG_DEBUG> # -O0
$<$<CONFIG:RelWithDebInfo>:CCM_CONFIG_OPTIMIZE> # -O2
$<$<CONFIG:Release>:CCM_CONFIG_AGGRESSIVELY_OPTIMIZE> # -O3
$<$<CONFIG:MinSizeRel>:CCM_CONFIG_MINSIZE> # -Os
)
endif ()

if (CCMATH_DISABLE_ERRNO)
target_compile_definitions(${PROJECT_NAME} INTERFACE CCM_CONFIG_DISABLE_ERRNO)
target_compile_definitions(${PROJECT_NAME} INTERFACE CCM_CONFIG_DISABLE_ERRNO)
endif ()

configure_file(cmake/version.hpp.in "${CMAKE_CURRENT_BINARY_DIR}/include/${PROJECT_NAME}/version.hpp" @ONLY)

if (CCMATH_BUILD_EXAMPLES OR CCMATH_BUILD_BENCHMARKS OR CCMATH_BUILD_TESTS)
add_subdirectory(thirdparty)
add_subdirectory(thirdparty)
endif ()

if (CCMATH_BUILD_EXAMPLES)
add_subdirectory(example)
add_subdirectory(example)
endif ()

if (CCMATH_BUILD_BENCHMARKS)
add_subdirectory(benchmark)
add_subdirectory(benchmark)
endif ()

if (CCMATH_BUILD_TESTS)
enable_testing()
add_subdirectory(test)
enable_testing()
add_subdirectory(test)
endif ()


if (CCMATH_INSTALL)
include(GNUInstallDirs)
include(CMakePackageConfigHelpers)

install(TARGETS
${PROJECT_NAME}
${PROJECT_NAME}-compile-options
EXPORT ${PROJECT_NAME}-targets
)

# Manually specify the headers to install
install(DIRECTORY
"${CMAKE_CURRENT_SOURCE_DIR}/include/"
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
FILES_MATCHING PATTERN "*.hpp"
)

install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/include/${PROJECT_NAME}/version.hpp"
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}"
)

install(EXPORT ${PROJECT_NAME}-targets
FILE ${PROJECT_NAME}-targets.cmake
NAMESPACE ${PROJECT_NAME}::
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
)

configure_package_config_file(
cmake/${PROJECT_NAME}-config.cmake.in
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake"
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
)

install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
include(GNUInstallDirs)
include(CMakePackageConfigHelpers)

install(TARGETS
${PROJECT_NAME}
${PROJECT_NAME}-compile-options
EXPORT ${PROJECT_NAME}-targets
)

# Manually specify the headers to install
install(DIRECTORY
"${CMAKE_CURRENT_SOURCE_DIR}/include/"
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
FILES_MATCHING PATTERN "*.hpp"
)

install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/include/${PROJECT_NAME}/version.hpp"
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}"
)

install(EXPORT ${PROJECT_NAME}-targets
FILE ${PROJECT_NAME}-targets.cmake
NAMESPACE ${PROJECT_NAME}::
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
)

configure_package_config_file(
cmake/${PROJECT_NAME}-config.cmake.in
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake"
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
)

install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")

endif ()
11 changes: 10 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
# CCMath - A C++17 constexpr-Compatible CMath Library
# CCMath - A C++17 Compile Time CMath Library
[![image](https://github.com/Rinzii/ccmath/workflows/ci-windows/badge.svg)](https://github.com/Rinzii/ccmath/actions?query=workflow%3Aci-windows)
[![image](https://github.com/Rinzii/ccmath/workflows/ci-linux/badge.svg)](https://github.com/Rinzii/ccmath/actions?query=workflow%3Aci-linux)
[![image](https://github.com/Rinzii/ccmath/workflows/ci-macos/badge.svg)](https://github.com/Rinzii/ccmath/actions?query=workflow%3Aci-macos)
[![image](https://api.securityscorecards.dev/projects/github.com/Rinzii/ccmath/badge)](https://securityscorecards.dev/viewer/?uri=github.com/Rinzii/ccmath)
[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/9402/badge)](https://www.bestpractices.dev/projects/9402)
[![License](https://img.shields.io/badge/License-Apache%202.0%20WITH%20LLVM--exception-blue.svg)](
https://opensource.org/licenses/Apache-2.0)
[![Discord](https://img.shields.io/discord/1286067628456284244?label=Discord)](https://discord.gg/p3mVxAbdmc)


**CCMath** is a C++17 library that provides a re-implementation of the standard `<cmath>` library with all features made `constexpr`.
Expand Down Expand Up @@ -77,6 +80,12 @@ CCMath is also designed with functions being freestanding and header only so you
> [!NOTE]
> Currently working on finding manners to lower these requirements.

## Join Our Discord!

If you have any questions, suggestions, or just want to chat, feel free to join our Discord server!

[![Discord Banner](https://discord.com/api/guilds/1286067628456284244/widget.png?style=banner2)](https://discord.gg/p3mVxAbdmc)

## Contributing

CCmath is an open-source project, and it needs your help to go on growing and improving. If you want to get involved and suggest some additional features, file a bug report or submit a patch, please have a look at the [contribution guidelines](CONTRIBUTING.md)!
Expand Down
Loading