summaryrefslogtreecommitdiff
path: root/sci-libs/flann/files/flann-1.9.1-build-oct-rather-than-mex-files-for-octave.patch
blob: f29aef41977cf20a98198def6d6498510b816a2c (plain)
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
From 85d2acc120b0640d02d189089bf113d351c14bba Mon Sep 17 00:00:00 2001
From: Alexander Golubev <fatzer2@gmail.com>
Date: Wed, 16 Feb 2022 21:37:55 +0300
Subject: [PATCH] build *.oct rather than *.mex files for octave

 * build .oct filse rather than *.mex
 * install the file to a sane location obtained from octave-config
 * fix a build issue with a recent cmake doesn't like querying target
   LOCATION

Signed-off-by: Alexander Golubev <fatzer2@gmail.com>
---
 src/matlab/CMakeLists.txt | 28 ++++++++++++++++++----------
 1 file changed, 18 insertions(+), 10 deletions(-)

diff --git a/src/matlab/CMakeLists.txt b/src/matlab/CMakeLists.txt
index a89b6b8..ebacaea 100755
--- a/src/matlab/CMakeLists.txt
+++ b/src/matlab/CMakeLists.txt
@@ -16,9 +16,6 @@ endif()
 
 find_program(OCT_CMD mkoctfile)
 
-get_property(FLANN_LIB_LOCATION TARGET flann_s PROPERTY LOCATION)
-get_filename_component(FLANN_LIB_PATH ${FLANN_LIB_LOCATION} PATH)
-
 if(MEX_CMD AND MEXEXT_CMD)
 
     get_filename_component(MEX_REAL_CMD ${MEX_CMD} ABSOLUTE)
@@ -48,7 +45,7 @@ if(MEX_CMD AND MEXEXT_CMD)
         ADD_CUSTOM_COMMAND(
             OUTPUT ${MEX_FILE}
             COMMAND ${MEX_REAL_CMD}
-            ARGS ${CMAKE_CURRENT_SOURCE_DIR}/${MEX_NAME}.cpp -I${PROJECT_SOURCE_DIR}/src/cpp -L${FLANN_LIB_PATH} -lflann_s ${MEX_BUILD_FLAGS}
+            ARGS ${CMAKE_CURRENT_SOURCE_DIR}/${MEX_NAME}.cpp -I${PROJECT_SOURCE_DIR}/src/cpp -L${PROJECT_BINARY_DIR}/lib -lflann_s ${MEX_BUILD_FLAGS}
             DEPENDS flann_s ${CMAKE_CURRENT_SOURCE_DIR}/${MEX_NAME}.cpp
             COMMENT "Building MEX extension ${MEX_FILE}"
         )
@@ -66,11 +63,11 @@ if(MEX_CMD AND MEXEXT_CMD)
         set(BUILD_MATLAB_BINDINGS OFF) 
     endif()
 elseif(OCT_CMD)
-  SET(MEX_FILE ${CMAKE_CURRENT_BINARY_DIR}/${MEX_NAME}.mex)
+  SET(MEX_FILE ${CMAKE_CURRENT_BINARY_DIR}/${MEX_NAME}.oct)
   ADD_CUSTOM_COMMAND(
     OUTPUT ${MEX_FILE}
     COMMAND ${OCT_CMD}
-    ARGS ${CMAKE_CURRENT_SOURCE_DIR}/${MEX_NAME}.cpp -I${PROJECT_SOURCE_DIR}/src/cpp -L${FLANN_LIB_PATH} -DFLANN_STATIC -lflann_s -lgomp --mex
+    ARGS ${CMAKE_CURRENT_SOURCE_DIR}/${MEX_NAME}.cpp -I${PROJECT_SOURCE_DIR}/src/cpp -L${PROJECT_BINARY_DIR}/lib -DFLANN_STATIC -lflann_s -lgomp
     DEPENDS flann_s ${CMAKE_CURRENT_SOURCE_DIR}/${MEX_NAME}.cpp
     COMMENT "Building MEX extension ${MEX_FILE}"
     )
@@ -79,10 +76,21 @@ elseif(OCT_CMD)
 
   FILE(GLOB MATLAB_SOURCES *.m)
 
-  INSTALL (
-    FILES ${MEX_FILE} ${MATLAB_SOURCES}
-    DESTINATION share/flann/octave
-    )
+  find_program(OCTAVE_CONFIG_EXECUTABLE NAMES octave-config)
+
+  if (OCTAVE_CONFIG_EXECUTABLE)
+    execute_process (COMMAND ${OCTAVE_CONFIG_EXECUTABLE} --m-site-dir
+                     OUTPUT_VARIABLE OCTAVE_M_SITE_DIR
+                     OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+    execute_process (COMMAND ${OCTAVE_CONFIG_EXECUTABLE} --oct-site-dir
+                      OUTPUT_VARIABLE OCTAVE_OCT_SITE_DIR
+                      OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+  endif()
+
+  INSTALL (FILES ${MEX_FILE} DESTINATION ${OCTAVE_OCT_SITE_DIR})
+  INSTALL (FILES ${MATLAB_SOURCES} DESTINATION ${OCTAVE_M_SITE_DIR})
 else()
     message(WARNING "Cannot find MATLAB or Octave instalation. Make sure that the 'bin' directory from the MATLAB instalation or that mkoctfile is in PATH")
     set(BUILD_MATLAB_BINDINGS OFF) 
-- 
2.34.1