-
Notifications
You must be signed in to change notification settings - Fork 23
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
157 lines (131 loc) · 4.79 KB
/
CMakeLists.txt
File metadata and controls
157 lines (131 loc) · 4.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
cmake_minimum_required(VERSION 3.15.0) # minimum imposed by scikit-build-core
project(polyscope LANGUAGES CXX)
# Default to release build
if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE)
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
endif()
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_CXX_STANDARD 20)
## Gather dependencies
# == Eigen
set(EIGEN3_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/deps/eigen/")
# == Nanobind
if (CMAKE_VERSION VERSION_LESS 3.18)
set(DEV_MODULE Development)
else()
set(DEV_MODULE Development.Module)
endif()
# find python version to target for bindings
find_package(Python 3.9 COMPONENTS Interpreter ${DEV_MODULE} REQUIRED)
# recurse into nanobind
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/deps/nanobind)
# == polyscope
add_subdirectory(deps/polyscope)
nanobind_add_module(polyscope_bindings
src/cpp/core.cpp
src/cpp/surface_mesh.cpp
src/cpp/point_cloud.cpp
src/cpp/curve_network.cpp
src/cpp/volume_mesh.cpp
src/cpp/volume_grid.cpp
src/cpp/sparse_volume_grid.cpp
src/cpp/camera_view.cpp
src/cpp/gaussian_particles.cpp
src/cpp/floating_quantities.cpp
src/cpp/implicit_helpers.cpp
src/cpp/managed_buffer.cpp
src/cpp/gaussian_particles_structure.cpp
src/cpp/gaussian_particles_structure.h
src/cpp/utils.h
# ImGui related things
src/cpp/imgui/imgui.cpp
src/cpp/imgui/imgui_enums.cpp
src/cpp/imgui/imgui_structs.cpp
src/cpp/imgui/imgui_structs_fonts.cpp
src/cpp/imgui/imgui_macros.cpp
src/cpp/imgui/imgui_structs_io.cpp
src/cpp/imgui/imgui_structs_style.cpp
src/cpp/imgui/imgui_structs_drawlist.cpp
src/cpp/imgui/imgui_api_main.cpp
src/cpp/imgui/imgui_api_context_creation.cpp
src/cpp/imgui/imgui_api_demo_debug.cpp
src/cpp/imgui/imgui_api_styles.cpp
src/cpp/imgui/imgui_api_windows.cpp
src/cpp/imgui/imgui_api_child_windows.cpp
src/cpp/imgui/imgui_api_window_utilities.cpp
src/cpp/imgui/imgui_api_window_manipulation.cpp
src/cpp/imgui/imgui_api_scrolling.cpp
src/cpp/imgui/imgui_api_parameter_stacks.cpp
src/cpp/imgui/imgui_api_style_read.cpp
src/cpp/imgui/imgui_api_cursor_layout.cpp
src/cpp/imgui/imgui_api_id_stack.cpp
src/cpp/imgui/imgui_api_widgets_text.cpp
src/cpp/imgui/imgui_api_widgets_main.cpp
src/cpp/imgui/imgui_api_widgets_images.cpp
src/cpp/imgui/imgui_api_widgets_combo.cpp
src/cpp/imgui/imgui_api_widgets_drag.cpp
src/cpp/imgui/imgui_api_widgets_sliders.cpp
src/cpp/imgui/imgui_api_widgets_input.cpp
src/cpp/imgui/imgui_api_widgets_color.cpp
src/cpp/imgui/imgui_api_widgets_trees.cpp
src/cpp/imgui/imgui_api_widgets_selectables.cpp
src/cpp/imgui/imgui_api_widgets_listbox.cpp
src/cpp/imgui/imgui_api_data_plotting.cpp
src/cpp/imgui/imgui_api_menus.cpp
src/cpp/imgui/imgui_api_tooltips.cpp
src/cpp/imgui/imgui_api_popups.cpp
src/cpp/imgui/imgui_api_tables.cpp
src/cpp/imgui/imgui_api_columns_legacy.cpp
src/cpp/imgui/imgui_api_tab_bars.cpp
src/cpp/imgui/imgui_api_logging.cpp
src/cpp/imgui/imgui_api_drag_drop.cpp
src/cpp/imgui/imgui_api_disabling.cpp
src/cpp/imgui/imgui_api_clipping.cpp
src/cpp/imgui/imgui_api_focus_activation.cpp
src/cpp/imgui/imgui_api_overlapping_items.cpp
src/cpp/imgui/imgui_api_item_query.cpp
src/cpp/imgui/imgui_api_viewports.cpp
src/cpp/imgui/imgui_api_draw_lists.cpp
src/cpp/imgui/imgui_api_misc_utils.cpp
src/cpp/imgui/imgui_api_text_utils.cpp
src/cpp/imgui/imgui_api_color_utils.cpp
src/cpp/imgui/imgui_api_inputs_keyboard.cpp
src/cpp/imgui/imgui_api_inputs_mouse.cpp
src/cpp/imgui/imgui_api_clipboard.cpp
src/cpp/imgui/imgui_api_settings.cpp
src/cpp/imgui/imgui_api_debug.cpp
src/cpp/imgui/imgui_api_allocators.cpp
src/cpp/imgui/implot.cpp
src/cpp/imgui/implot_enums.cpp
src/cpp/imgui/imgui_utils.h
)
set_target_properties(polyscope_bindings PROPERTIES CXX_VISIBILITY_PRESET "default")
target_include_directories(polyscope_bindings PUBLIC "${EIGEN3_INCLUDE_DIR}")
target_link_libraries(polyscope_bindings PRIVATE polyscope)
# Generate type stubs
nanobind_add_stub(
polyscope_stub
MODULE polyscope_bindings
PYTHON_PATH $<TARGET_FILE_DIR:polyscope_bindings>
DEPENDS polyscope_bindings
MARKER_FILE py.typed
RECURSIVE
OUTPUT_PATH .
OUTPUT
__init__.pyi
imgui.pyi
implot.pyi
)
# Copy stub files into the appropriate place in the source directory after build
set(STUB_FILES __init__.pyi imgui.pyi implot.pyi)
foreach(STUB_FILE ${STUB_FILES})
add_custom_command(
TARGET polyscope_stub POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${CMAKE_CURRENT_BINARY_DIR}/polyscope_bindings/${STUB_FILE}
${CMAKE_CURRENT_SOURCE_DIR}/src/polyscope_bindings/${STUB_FILE}
VERBATIM
)
endforeach()
install(TARGETS polyscope_bindings LIBRARY DESTINATION .)