souffle: add darwin support (#208373)

Co-authored-by: Sandro <sandro.jaeckel@gmail.com>
This commit is contained in:
Brian J. Cardiff 2023-01-19 19:21:13 -03:00 committed by GitHub
parent 90fb934fec
commit 4141729d9c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 43 additions and 2 deletions

View file

@ -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;

View file

@ -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