summaryrefslogtreecommitdiff
path: root/sci-libs/plplot/files/plplot-5.12.0-ocaml-remove-rpath.patch
blob: 2d18c79736fac880c824c4f5fc358a59ea97b7b8 (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
Fix OCaml's asinine RPATH inserting behaviour.

--- a/bindings/ocaml/CMakeLists.txt
+++ b/bindings/ocaml/CMakeLists.txt
@@ -97,6 +97,20 @@
 
   # ocamlc -c compiles *.c into *.o.
   # ocamlmklib links *.o into *.so and *.a
+
+  # ocamlmklib implicits inserts RPATHs if it is provided with an absolute path to -L,
+  # which is absolutely unacceptable and presents a massive security hazard. The
+  # following statements convert the absolute paths to relative ones to fix this.
+  # See also:
+  #   https://caml.inria.fr/mantis/view.php?id=5943
+  if(CMAKE_SKIP_RPATH)
+    file(RELATIVE_PATH CAMLIDL_LINK_LIB_DIR ${CMAKE_CURRENT_BINARY_DIR} ${CAMLIDL_LIB_DIR})
+    file(RELATIVE_PATH CMAKE_LINK_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_BINARY_DIR})
+  else(CMAKE_SKIP_RPATH)
+    set(CAMLIDL_LINK_LIB_DIR ${CAMLIDL_LIB_DIR})
+    set(CMAKE_LINK_BINARY_DIR ${CMAKE_BINARY_DIR})
+  endif(CMAKE_SKIP_RPATH)
+
   add_custom_command(
     OUTPUT
     ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.o
@@ -105,7 +119,7 @@
     ${CMAKE_CURRENT_BINARY_DIR}/libplplot_stubs.a
     COMMAND ${OCAMLC} -ccopt -I${CAMLIDL_LIB_DIR} -c ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.c
     COMMAND ${OCAMLC} -ccopt -I${CMAKE_SOURCE_DIR}/include -ccopt -I${CMAKE_BINARY_DIR}/include -ccopt -I${CMAKE_SOURCE_DIR}/lib/qsastime -ccopt -I${CMAKE_BINARY_DIR} -ccopt -I${CAMLIDL_LIB_DIR} -ccopt -DPLPLOT_HAVE_CONFIG_H -c ${CMAKE_CURRENT_SOURCE_DIR}/plplot_impl.c
-    COMMAND ${OCAMLMKLIB} -o plplot_stubs -L${CAMLIDL_LIB_DIR} -lcamlidl -L${CMAKE_BINARY_DIR}/src -lplplot ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.o ${CMAKE_CURRENT_BINARY_DIR}/plplot_impl.o ${ocaml_STATIC_FLAGS}
+    COMMAND ${OCAMLMKLIB} -o plplot_stubs -L${CAMLIDL_LINK_LIB_DIR} -lcamlidl -L${CMAKE_LINK_BINARY_DIR}/src -lplplot ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.o ${CMAKE_CURRENT_BINARY_DIR}/plplot_impl.o ${ocaml_STATIC_FLAGS}
     DEPENDS
     ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.c
     ${CMAKE_CURRENT_SOURCE_DIR}/plplot_impl.c