about summary refs log tree commit diff
path: root/pkgs/development/compilers/souffle
diff options
context:
space:
mode:
authorBrian J. Cardiff <bcardiff@gmail.com>2023-01-19 19:21:13 -0300
committerGitHub <noreply@github.com>2023-01-19 23:21:13 +0100
commit4141729d9c97e3beab8ef95d9ad0420226e27401 (patch)
tree9994ca40f317e6dc2a042de74ffb02e222952640 /pkgs/development/compilers/souffle
parent90fb934fec1bde7c9ce998f12f89bd83f8e825ff (diff)
souffle: add darwin support (#208373)
Co-authored-by: Sandro <sandro.jaeckel@gmail.com>
Diffstat (limited to 'pkgs/development/compilers/souffle')
-rw-r--r--pkgs/development/compilers/souffle/default.nix14
-rw-r--r--pkgs/development/compilers/souffle/threads.patch31
2 files changed, 43 insertions, 2 deletions
diff --git a/pkgs/development/compilers/souffle/default.nix b/pkgs/development/compilers/souffle/default.nix
index 30c87ed997356..96d3b5f6fc422 100644
--- a/pkgs/development/compilers/souffle/default.nix
+++ b/pkgs/development/compilers/souffle/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchFromGitHub
+{ lib, stdenv, fetchFromGitHub, fetchpatch
 , bash-completion, perl, ncurses, zlib, sqlite, libffi
 , mcpp, cmake, bison, flex, doxygen, graphviz
 , makeWrapper
@@ -19,6 +19,17 @@ stdenv.mkDerivation rec {
     sha256 = "sha256-wdTBSmyA2I+gaSV577NNKA2oY2fdVTGmvV7h15NY1tU=";
   };
 
+  patches = [
+    ./threads.patch
+    (fetchpatch {
+      name = "missing-override.patch";
+      url = "https://github.com/souffle-lang/souffle/commit/da2d778f0cca94f206686546fa56b9ffc738ad75.patch";
+      sha256 = "Oefm3vRRwOyom94oGSOK2w9m23gkbJ++9gcWrdLlkyk=";
+    })
+  ];
+
+  hardeningDisable = lib.optionals stdenv.isDarwin [ "strictoverflow" ];
+
   nativeBuildInputs = [ bison cmake flex mcpp doxygen graphviz makeWrapper perl ];
   buildInputs = [ bash-completion ncurses zlib sqlite libffi ];
   # these propagated inputs are needed for the compiled Souffle mode to work,
@@ -35,7 +46,6 @@ stdenv.mkDerivation rec {
   outputs = [ "out" ];
 
   meta = with lib; {
-    broken = stdenv.isDarwin;
     description = "A translator of declarative Datalog programs into the C++ language";
     homepage    = "https://souffle-lang.github.io/";
     platforms   = platforms.unix;
diff --git a/pkgs/development/compilers/souffle/threads.patch b/pkgs/development/compilers/souffle/threads.patch
new file mode 100644
index 0000000000000..cf23baa1550d4
--- /dev/null
+++ b/pkgs/development/compilers/souffle/threads.patch
@@ -0,0 +1,31 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 73d5c3c84..e4b0dbfd1 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -104,13 +104,6 @@ option(SOUFFLE_CUSTOM_GETOPTLONG "Enable/Disable custom getopt_long implementati
+ cmake_dependent_option(SOUFFLE_USE_LIBCPP "Link to libc++ instead of libstdc++" ON
+     "CMAKE_CXX_COMPILER_ID STREQUAL Clang" OFF)
+ 
+-# Using Clang? Likely want to use `lld` too.
+-if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+-    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=lld")
+-    set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fuse-ld=lld")
+-    set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fuse-ld=lld")
+-endif()
+-
+ # Add aditional modules to CMake
+ set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
+ 
+@@ -247,7 +240,11 @@ endif()
+ # pthreads
+ # --------------------------------------------------
+ set(THREADS_PREFER_PTHREAD_FLAG ON)
+-find_package(Threads REQUIRED)
++set(CMAKE_THREAD_LIBS_INIT "-lpthread")
++set(CMAKE_HAVE_THREADS_LIBRARY 1)
++set(CMAKE_USE_WIN32_THREADS_INIT 0)
++set(CMAKE_USE_PTHREADS_INIT 1)
++set(THREADS_PREFER_PTHREAD_FLAG ON)
+ 
+ # --------------------------------------------------
+ # OpenMP