Skip to content

Commit 98b1a72

Browse files
Fabien Servantcbentejac
authored andcommitted
Create module numeric for swig
1 parent 49854cb commit 98b1a72

File tree

4 files changed

+72
-0
lines changed

4 files changed

+72
-0
lines changed

src/aliceVision/aliceVision.i

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
%include <aliceVision/global.i>
1010
%include <aliceVision/version.hpp>
1111

12+
%import <aliceVision/numeric/numeric.i>
1213
%import <aliceVision/camera/Camera.i>
1314
%import <aliceVision/geometry/Geometry.i>
1415
%import <aliceVision/hdr/Hdr.i>

src/aliceVision/numeric/CMakeLists.txt

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,56 @@ alicevision_add_test(polynomial_test.cpp NAME "numeric_polynomial" LINKS aliceVi
3333
alicevision_add_test(lmFunctor_test.cpp NAME "numeric_lmFunctor" LINKS aliceVision_numeric)
3434
alicevision_add_test(projection_test.cpp NAME "numeric_projection" LINKS aliceVision_numeric)
3535
alicevision_add_test(gps_test.cpp NAME "numeric_gps" LINKS aliceVision_numeric)
36+
37+
38+
# SWIG Binding
39+
if (ALICEVISION_BUILD_SWIG_BINDING)
40+
set(UseSWIG_TARGET_NAME_PREFERENCE STANDARD)
41+
set_property(SOURCE numeric.i PROPERTY CPLUSPLUS ON)
42+
set_property(SOURCE numeric.i PROPERTY SWIG_MODULE_NAME numeric)
43+
44+
swig_add_library(numeric
45+
TYPE MODULE
46+
LANGUAGE python
47+
SOURCES numeric.i
48+
)
49+
50+
set_property(
51+
TARGET numeric
52+
PROPERTY SWIG_COMPILE_OPTIONS -doxygen
53+
)
54+
55+
target_include_directories(numeric
56+
PRIVATE
57+
../include
58+
${ALICEVISION_ROOT}/include
59+
${Python3_INCLUDE_DIRS}
60+
${Python3_NumPy_INCLUDE_DIRS}
61+
)
62+
set_property(
63+
TARGET numeric
64+
PROPERTY SWIG_USE_TARGET_INCLUDE_DIRECTORIES ON
65+
)
66+
set_property(
67+
TARGET numeric
68+
PROPERTY COMPILE_OPTIONS -std=c++17
69+
)
70+
71+
target_link_libraries(numeric
72+
PUBLIC
73+
aliceVision_numeric
74+
)
75+
76+
install(
77+
TARGETS
78+
numeric
79+
DESTINATION
80+
${CMAKE_INSTALL_PREFIX}
81+
)
82+
install(
83+
FILES
84+
${CMAKE_CURRENT_BINARY_DIR}/numeric.py
85+
DESTINATION
86+
${CMAKE_INSTALL_PREFIX}
87+
)
88+
endif()

src/aliceVision/numeric/numeric.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
// AliceVision does not support Eigen with alignment, unless C++17 aligned new feature is enabled.
1212
// So ensure Eigen is used with the correct flags.
13+
#ifndef SWIG
1314
#ifndef ALICEVISION_EIGEN_REQUIRE_ALIGNMENT
1415
#ifndef EIGEN_MAX_ALIGN_BYTES
1516
#error "EIGEN_MAX_ALIGN_BYTES is not defined"
@@ -23,6 +24,7 @@
2324
#error "EIGEN_MAX_STATIC_ALIGN_BYTES is defined but not 0"
2425
#endif
2526
#endif
27+
#endif
2628

2729
//--
2830
// Eigen

src/aliceVision/numeric/numeric.i

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// This file is part of the AliceVision project.
2+
// Copyright (c) 2024 AliceVision contributors.
3+
// This Source Code Form is subject to the terms of the Mozilla Public License,
4+
// v. 2.0. If a copy of the MPL was not distributed with this file,
5+
// You can obtain one at https://mozilla.org/MPL/2.0/.
6+
7+
%module (module="pyalicevision") numeric
8+
9+
%include <aliceVision/global.i>
10+
%include <aliceVision/numeric/numeric.hpp>
11+
12+
%{
13+
#include <aliceVision/numeric/numeric.hpp>
14+
using namespace aliceVision;
15+
%}
16+

0 commit comments

Comments
 (0)