diff --git a/pkgs/development/compilers/souffle/default.nix b/pkgs/development/compilers/souffle/default.nix index 30c87ed99735..96d3b5f6fc42 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 000000000000..cf23baa1550d --- /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