Skip to content

Commit 4babddc

Browse files
committed
Start the process of moving internal build of math lib to mim
1 parent ac22074 commit 4babddc

File tree

107 files changed

+6708
-1039
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

107 files changed

+6708
-1039
lines changed

CMakeLists.txt

Lines changed: 114 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,118 @@
11
cmake_minimum_required(VERSION 3.18)
2-
project(mim VERSION 0.1.0)
32

3+
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
4+
set(CMAKE_DEBUG_POSTFIX "-d")
5+
set(CMAKE_CXX_EXTENSIONS OFF)
46
set(CMAKE_CXX_STANDARD 20)
7+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
8+
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
59

6-
add_subdirectory(mim)
7-
add_library(mim::mim ALIAS mim)
10+
# We will hit 1.0.0 when we have a stable API
11+
# We will hit 0.1.0 when we have finished the basic API
12+
set(build_version 0.0.3)
13+
14+
project(mim VERSION ${build_version})
15+
16+
17+
set(is_root_project OFF)
18+
19+
if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
20+
set(is_root_project ON)
21+
endif()
22+
23+
option(MIM_BUILD_TEST "Build mim tests" ${is_root_project})
24+
option(MIM_INSTALL "Setup install and package steps" ${is_root_project})
25+
26+
include(GNUInstallDirs)
27+
28+
configure_file(src/version.hpp.in "${CMAKE_CURRENT_BINARY_DIR}/include/${PROJECT_NAME}/version.hpp" @ONLY)
29+
30+
31+
32+
add_library(${PROJECT_NAME})
33+
add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
34+
target_include_directories(${PROJECT_NAME} PUBLIC
35+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
36+
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>
37+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
38+
)
39+
target_include_directories(${PROJECT_NAME} PRIVATE src)
40+
41+
# Add the source files
42+
43+
include(header_list.cmake)
44+
target_sources(${PROJECT_NAME} PRIVATE ${mim_headers})
45+
46+
target_sources(${PROJECT_NAME} PRIVATE
47+
src/_dummy.cpp
48+
)
49+
50+
51+
# Currently everything is headers only
52+
53+
54+
# Currently we are only a static LIB but I'd like to enable the ability to be dynamic!
55+
56+
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
57+
58+
if(CMAKE_CXX_COMPILER_ID STREQUAL Clang OR CMAKE_CXX_COMPILER_ID STREQUAL GNU)
59+
target_compile_options(${PROJECT_NAME} PRIVATE
60+
-Wall -Wextra -Wpedantic -Wconversion -Werror=return-type -Wunused
61+
)
62+
endif()
63+
64+
target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_20)
65+
66+
if(MIM_INSTALL)
67+
include(GNUInstallDirs)
68+
include(CMakePackageConfigHelpers)
69+
70+
# install targets
71+
install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}-targets
72+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
73+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
74+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
75+
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
76+
)
77+
78+
# install headers from include
79+
install(DIRECTORY include/
80+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
81+
FILES_MATCHING PATTERN "*.hpp"
82+
)
83+
84+
# install generated headers
85+
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/include/"
86+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
87+
FILES_MATCHING PATTERN "*.hpp"
88+
)
89+
90+
# install and export targets
91+
install(EXPORT ${PROJECT_NAME}-targets
92+
FILE ${PROJECT_NAME}-targets.cmake
93+
NAMESPACE ${PROJECT_NAME}::
94+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
95+
)
96+
# configure ${PROJECT_NAME}-config.cmake
97+
configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/config.cmake.in"
98+
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake"
99+
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
100+
)
101+
102+
# install ${PROJECT_NAME}-config.cmake
103+
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake"
104+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
105+
)
106+
107+
# configure ${PROJECT_NAME}-config-version.cmake
108+
write_basic_package_version_file(
109+
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake"
110+
VERSION ${build_version}
111+
COMPATIBILITY AnyNewerVersion
112+
)
113+
114+
# install ${PROJECT_NAME}-config-version.cmake
115+
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake"
116+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
117+
)
118+
endif()

config.cmake.in

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
@PACKAGE_INIT@
2+
3+
include("${CMAKE_CURRENT_LIST_DIR}/mim-targets.cmake")

header_list.cmake

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
2+
3+
4+
5+
6+
7+
set(mim_detail_compute_headers
8+
include/mim/detail/compute/compute_matrix.hpp
9+
include/mim/detail/compute/compute_quaternion.hpp
10+
include/mim/detail/compute/compute_vector.hpp
11+
)
12+
13+
set(mim_detail_func_headers
14+
# Matrix
15+
include/mim/detail/func/func_matrix2x2.inl
16+
include/mim/detail/func/func_matrix2x3.inl
17+
include/mim/detail/func/func_matrix2x4.inl
18+
include/mim/detail/func/func_matrix3x2.inl
19+
include/mim/detail/func/func_matrix3x3.inl
20+
include/mim/detail/func/func_matrix3x4.inl
21+
include/mim/detail/func/func_matrix4x2.inl
22+
include/mim/detail/func/func_matrix4x3.inl
23+
include/mim/detail/func/func_matrix4x4.inl
24+
include/mim/detail/func/func_matrix4x4_simd.inl
25+
26+
# Quaternion
27+
include/mim/detail/func/func_quaternion.inl
28+
include/mim/detail/func/func_quaternion_simd.inl
29+
30+
# Vector
31+
include/mim/detail/func/func_vector1.inl
32+
include/mim/detail/func/func_vector1_simd.inl
33+
include/mim/detail/func/func_vector2.inl
34+
include/mim/detail/func/func_vector2_simd.inl
35+
include/mim/detail/func/func_vector3.inl
36+
include/mim/detail/func/func_vector3_simd.inl
37+
include/mim/detail/func/func_vector4.inl
38+
include/mim/detail/func/func_vector4_simd.inl
39+
)
40+
41+
set(mim_detail_type_headers
42+
# Matrix
43+
include/mim/detail/type/type_matrix2x2.hpp
44+
include/mim/detail/type/type_matrix2x2.inl
45+
include/mim/detail/type/type_matrix2x3.hpp
46+
include/mim/detail/type/type_matrix2x3.inl
47+
include/mim/detail/type/type_matrix2x4.hpp
48+
include/mim/detail/type/type_matrix2x4.inl
49+
include/mim/detail/type/type_matrix3x2.hpp
50+
include/mim/detail/type/type_matrix3x2.inl
51+
include/mim/detail/type/type_matrix3x3.hpp
52+
include/mim/detail/type/type_matrix3x3.inl
53+
include/mim/detail/type/type_matrix3x4.hpp
54+
include/mim/detail/type/type_matrix3x4.inl
55+
include/mim/detail/type/type_matrix4x2.hpp
56+
include/mim/detail/type/type_matrix4x2.inl
57+
include/mim/detail/type/type_matrix4x3.hpp
58+
include/mim/detail/type/type_matrix4x3.inl
59+
include/mim/detail/type/type_matrix4x4.hpp
60+
61+
# Quaternion
62+
include/mim/detail/type/type_quaternion.hpp
63+
include/mim/detail/type/type_quaternion.inl
64+
include/mim/detail/type/type_quaternion_simd.inl
65+
66+
# Vector
67+
include/mim/detail/type/type_vector1.hpp
68+
include/mim/detail/type/type_vector1.inl
69+
include/mim/detail/type/type_vector2.hpp
70+
include/mim/detail/type/type_vector2.inl
71+
include/mim/detail/type/type_vector3.hpp
72+
include/mim/detail/type/type_vector3.inl
73+
include/mim/detail/type/type_vector4.hpp
74+
include/mim/detail/type/type_vector4.inl
75+
include/mim/detail/type/type_vector4_simd.inl
76+
)
77+
78+
79+
set(mim_detail_headers
80+
${mim_detail_compute_headers}
81+
${mim_detail_func_headers}
82+
${mim_detail_type_headers}
83+
84+
include/mim/detail/qualifier.hpp
85+
)
86+
87+
set(mim_internal_headers
88+
include/mim/internal/float16compressor.hpp
89+
include/mim/internal/functionpacker.hpp
90+
include/mim/internal/functionpacker.inl
91+
include/mim/internal/functionpacker_simd.inl
92+
include/mim/internal/setup.hpp
93+
)
94+
95+
set(mim_simd_headers
96+
include/mim/simd/simdNeon.hpp
97+
include/mim/simd/simdSetup.hpp
98+
include/mim/simd/simdUtil.hpp
99+
)
100+
101+
102+
set(mim_headers
103+
104+
${mim_detail_headers}
105+
${mim_internal_headers}
106+
${mim_simd_headers}
107+
108+
109+
include/mim/mim.hpp
110+
111+
include/mim/half.hpp
112+
include/mim/mat.hpp
113+
include/mim/mathUtils.hpp
114+
include/mim/mimMath.hpp
115+
include/mim/mimMathDefs.hpp
116+
include/mim/quat.hpp
117+
include/mim/random.hpp
118+
include/mim/vec.hpp
119+
include/mim/vec1.hpp
120+
include/mim/vec2.hpp
121+
include/mim/vec3.hpp
122+
include/mim/vec4.hpp
123+
)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
// Copyright WizWorks, Inc. All Rights Reserved.
2+
3+
#pragma once
4+
5+
#include "system/core.hpp"
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
// Copyright WizWorks, Inc. All Rights Reserved.
2+
3+
#pragma once
4+
5+
#include "system/core.hpp"

0 commit comments

Comments
 (0)