Skip to content
This repository was archived by the owner on Jun 5, 2025. It is now read-only.

Commit 27172b8

Browse files
feat: add patches and edit makefile to apply them if on osx
1 parent 41a8ceb commit 27172b8

File tree

8 files changed

+185
-1
lines changed

8 files changed

+185
-1
lines changed

3rdparty/homography.patch

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
diff --git a/3rdparty/homography/LibHomography/Splines.h b/3rdparty/homography/LibHomography/Splines.h
2+
index 56a36f1..46a123d 100644
3+
--- a/3rdparty/homography/LibHomography/Splines.h
4+
+++ b/3rdparty/homography/LibHomography/Splines.h
5+
@@ -5,8 +5,7 @@
6+
//! Global includes
7+
#include <cstdlib>
8+
#include <cmath>
9+
-#include <xmmintrin.h>
10+
-#include <x86intrin.h>
11+
+#include "../../sse2neon/sse2neon.h"
12+
13+
14+
//! Local includes
15+
diff --git a/3rdparty/homography/LibImages/LibImages.cpp b/3rdparty/homography/LibImages/LibImages.cpp
16+
index 7c1f6f5..fd75fb4 100644
17+
--- a/3rdparty/homography/LibImages/LibImages.cpp
18+
+++ b/3rdparty/homography/LibImages/LibImages.cpp
19+
@@ -14,8 +14,7 @@
20+
#ifdef _OPENMP
21+
#include <omp.h>
22+
#endif
23+
-#include <xmmintrin.h>
24+
-#include <x86intrin.h>
25+
+#include "../../sse2neon/sse2neon.h"
26+
#include <cmath>
27+
#include <algorithm>
28+
#include <cstring>
29+
diff --git a/3rdparty/homography/LibImages/LibImages.h b/3rdparty/homography/LibImages/LibImages.h
30+
index 51233a3..8ae589d 100644
31+
--- a/3rdparty/homography/LibImages/LibImages.h
32+
+++ b/3rdparty/homography/LibImages/LibImages.h
33+
@@ -5,8 +5,7 @@
34+
#include <stdlib.h>
35+
#include <string>
36+
#include <vector>
37+
-#include <xmmintrin.h>
38+
-#include <x86intrin.h>
39+
+#include "../../sse2neon/sse2neon.h"
40+
41+
//! Local includes
42+
43+
diff --git a/3rdparty/homography/Utilities/Utilities.h b/3rdparty/homography/Utilities/Utilities.h
44+
index cc80a22..ee45bf9 100644
45+
--- a/3rdparty/homography/Utilities/Utilities.h
46+
+++ b/3rdparty/homography/Utilities/Utilities.h
47+
@@ -8,8 +8,8 @@
48+
#include <sstream>
49+
#include <iostream>
50+
#include <iomanip>
51+
-#include <xmmintrin.h>
52+
-#include <x86intrin.h>
53+
+#include "../../sse2neon/sse2neon.h"
54+
+
55+
#include <vector>
56+
57+

3rdparty/iio.patch

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
diff --git a/3rdparty/iio/iio.c b/3rdparty/iio/iio.c
2+
index 5bff3d8..67b06ac 100644
3+
--- a/3rdparty/iio/iio.c
4+
+++ b/3rdparty/iio/iio.c
5+
@@ -535,7 +535,9 @@ int iio_type_id(size_t sample_size, bool ieeefp_sample, bool signed_sample)
6+
switch(sample_size) {
7+
case sizeof(float): return IIO_TYPE_FLOAT;
8+
case sizeof(double): return IIO_TYPE_DOUBLE;
9+
- case sizeof(long double): return IIO_TYPE_LONGDOUBLE;
10+
+ #ifdef I_CAN_HAS_LONGDOUBLE
11+
+ case sizeof(long double): return IIO_TYPE_LONGDOUBLE;
12+
+ #endif//I_CAN_HAS_LONGDOUBLE
13+
case sizeof(float)/2: return IIO_TYPE_HALF;
14+
default: fail("bad float size %zu", sample_size);
15+
}

3rdparty/imscript.patch

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
diff --git a/3rdparty/imscript/src/iio.c b/3rdparty/imscript/src/iio.c
2+
index 2516713..8428556 100644
3+
--- a/3rdparty/imscript/src/iio.c
4+
+++ b/3rdparty/imscript/src/iio.c
5+
@@ -535,7 +535,9 @@ int iio_type_id(size_t sample_size, bool ieeefp_sample, bool signed_sample)
6+
switch(sample_size) {
7+
case sizeof(float): return IIO_TYPE_FLOAT;
8+
case sizeof(double): return IIO_TYPE_DOUBLE;
9+
- case sizeof(long double): return IIO_TYPE_LONGDOUBLE;
10+
+ #ifdef I_CAN_HAS_LONGDOUBLE
11+
+ case sizeof(long double): return IIO_TYPE_LONGDOUBLE;
12+
+ #endif//I_CAN_HAS_LONGDOUBLE
13+
case sizeof(float)/2: return IIO_TYPE_HALF;
14+
default: fail("bad float size %zu", sample_size);
15+
}

3rdparty/mgm.patch

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
diff --git a/3rdparty/mgm/iio/iio.c b/3rdparty/mgm/iio/iio.c
2+
index 4a678db..33de681 100644
3+
--- a/3rdparty/mgm/iio/iio.c
4+
+++ b/3rdparty/mgm/iio/iio.c
5+
@@ -489,7 +489,9 @@ int iio_type_id(size_t sample_size, bool ieeefp_sample, bool signed_sample)
6+
switch(sample_size) {
7+
case sizeof(float): return IIO_TYPE_FLOAT;
8+
case sizeof(double): return IIO_TYPE_DOUBLE;
9+
- case sizeof(long double): return IIO_TYPE_LONGDOUBLE;
10+
+ #ifdef I_CAN_HAS_LONGDOUBLE
11+
+ case sizeof(long double): return IIO_TYPE_LONGDOUBLE;
12+
+ #endif//I_CAN_HAS_LONGDOUBLE
13+
case sizeof(float)/2: return IIO_TYPE_HALF;
14+
default: fail("bad float size %zu", sample_size);
15+
}

3rdparty/mgm_multi.patch

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
diff --git a/3rdparty/mgm_multi/iio/iio.c b/3rdparty/mgm_multi/iio/iio.c
2+
index 9f28831..7475497 100644
3+
--- a/3rdparty/mgm_multi/iio/iio.c
4+
+++ b/3rdparty/mgm_multi/iio/iio.c
5+
@@ -511,8 +511,10 @@ int iio_type_id(size_t sample_size, bool ieeefp_sample, bool signed_sample)
6+
switch(sample_size) {
7+
case sizeof(float): return IIO_TYPE_FLOAT;
8+
case sizeof(double): return IIO_TYPE_DOUBLE;
9+
- case sizeof(long double): return IIO_TYPE_LONGDOUBLE;
10+
- case sizeof(float)/2: return IIO_TYPE_HALF;
11+
+ #ifdef I_CAN_HAS_LONGDOUBLE
12+
+ case sizeof(long double): return IIO_TYPE_LONGDOUBLE;
13+
+ #endif//I_CAN_HAS_LONGDOUBLE
14+
+ case sizeof(float)/2: return IIO_TYPE_HALF;
15+
default: fail("bad float size %zu", sample_size);
16+
}
17+
} else {

3rdparty/sift.patch

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
diff --git a/3rdparty/sift/simd/LibImages/LibImages.cpp b/3rdparty/sift/simd/LibImages/LibImages.cpp
2+
index 6acbe4e..870d80b 100644
3+
--- a/3rdparty/sift/simd/LibImages/LibImages.cpp
4+
+++ b/3rdparty/sift/simd/LibImages/LibImages.cpp
5+
@@ -10,8 +10,7 @@
6+
#ifdef _OPENMP
7+
#include <omp.h>
8+
#endif
9+
-#include <xmmintrin.h>
10+
-#include <x86intrin.h>
11+
+#include "../../sse2neon/sse2neon.h"
12+
#include <cmath>
13+
#include <algorithm>
14+
#include <cstring>
15+
diff --git a/3rdparty/sift/simd/LibImages/LibImages.h b/3rdparty/sift/simd/LibImages/LibImages.h
16+
index 9918472..c8c5db1 100644
17+
--- a/3rdparty/sift/simd/LibImages/LibImages.h
18+
+++ b/3rdparty/sift/simd/LibImages/LibImages.h
19+
@@ -5,8 +5,7 @@
20+
#include <stdlib.h>
21+
#include <string>
22+
#include <vector>
23+
-#include <xmmintrin.h>
24+
-#include <x86intrin.h>
25+
+#include "../../../sse2neon/sse2neon.h"
26+
27+
//! Local includes
28+

3rdparty/tvl1flow.patch

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
diff --git a/3rdparty/tvl1flow/iio.c b/3rdparty/tvl1flow/iio.c
2+
index 9f28831..e27955e 100644
3+
--- a/3rdparty/tvl1flow/iio.c
4+
+++ b/3rdparty/tvl1flow/iio.c
5+
@@ -511,7 +511,9 @@ int iio_type_id(size_t sample_size, bool ieeefp_sample, bool signed_sample)
6+
switch(sample_size) {
7+
case sizeof(float): return IIO_TYPE_FLOAT;
8+
case sizeof(double): return IIO_TYPE_DOUBLE;
9+
- case sizeof(long double): return IIO_TYPE_LONGDOUBLE;
10+
+ #ifdef I_CAN_HAS_LONGDOUBLE
11+
+ case sizeof(long double): return IIO_TYPE_LONGDOUBLE;
12+
+ #endif//I_CAN_HAS_LONGDOUBLE
13+
case sizeof(float)/2: return IIO_TYPE_HALF;
14+
default: fail("bad float size %zu", sample_size);
15+
}

makefile

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,34 @@
1+
UNAME := $(shell uname)
2+
13
# the following two options are used to control all C and C++ compilations
24
CFLAGS ?= -march=native -O3
35
CXXFLAGS ?= -march=native -O3
6+
7+
ifeq ($(UNAME), Darwin)
8+
# on Mac OS, use recommended flag for sse2neon
9+
CFLAGS ?= -march=armv8-a+fp+simd+crypto+crc -O3
10+
CXXFLAGS ?= -march=armv8-a+fp+simd+crypto+crc -O3
11+
endif
12+
413
export CFLAGS
514
export CXXFLAGS
615

16+
ifeq ($(UNAME), Darwin)
17+
# on mac, also link to homebrew
18+
export C_INCLUDE_PATH := ${C_INCLUDE_PATH}:/opt/homebrew/include
19+
export CPLUS_INCLUDE_PATH := ${CPLUS_INCLUDE_PATH}:/opt/homebrew/include
20+
export LIBRARY_PATH := ${LIBRARY_PATH}:/opt/homebrew/lib
21+
export LD_LIBRARY_PATH := ${LD_LIBRARY_PATH}:/opt/homebrew/lib
22+
# apply patches, ignore if they fail (already patched)
23+
patch_osx = git apply 3rdparty/*.patch || true
24+
endif
25+
726
# these options are only used for the programs directly inside "./c/"
827
IIOLIBS = -lz -ltiff -lpng -ljpeg -lm
928

1029

1130
# default rule builds only the programs necessary for the test
12-
default: homography sift mgm_multi tvl1 lsd executables libraries
31+
default: patch_osx homography sift mgm_multi tvl1 lsd executables libraries
1332

1433
# the "all" rule builds three further correlators
1534
all: default msmw3 sgbm
@@ -22,6 +41,9 @@ test: default
2241
# four standard "modules": homography, sift, mgm, and mgm_multi
2342
#
2443

44+
patch_osx:
45+
$(patch_osx)
46+
2547
homography:
2648
$(MAKE) -j -C 3rdparty/homography
2749
cp 3rdparty/homography/homography bin

0 commit comments

Comments
 (0)