diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/folly')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/folly/default.nix | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/folly/default.nix b/nixpkgs/pkgs/development/libraries/folly/default.nix new file mode 100644 index 000000000000..22d395785434 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/folly/default.nix @@ -0,0 +1,98 @@ +{ lib +, stdenv +, fetchFromGitHub +, boost +, cmake +, double-conversion +, fmt_8 +, gflags +, glog +, libevent +, libiberty +, libunwind +, lz4 +, openssl +, pkg-config +, xz +, zlib +, zstd +, jemalloc +, follyMobile ? false +}: + +stdenv.mkDerivation rec { + pname = "folly"; + version = "2023.02.27.00"; + + src = fetchFromGitHub { + owner = "facebook"; + repo = "folly"; + rev = "v${version}"; + sha256 = "sha256-DfZiVxncpKSPn9BN25d8o0/tC27+HhSG/t53WgzAT/s="; + }; + + nativeBuildInputs = [ + cmake + pkg-config + ]; + + # See CMake/folly-deps.cmake in the Folly source tree. + buildInputs = [ + boost + double-conversion + glog + gflags + libevent + libiberty + openssl + lz4 + xz + zlib + libunwind + fmt_8 + zstd + ] ++ lib.optional stdenv.isLinux jemalloc; + + # jemalloc headers are required in include/folly/portability/Malloc.h + propagatedBuildInputs = lib.optional stdenv.isLinux jemalloc; + + env.NIX_CFLAGS_COMPILE = toString [ "-DFOLLY_MOBILE=${if follyMobile then "1" else "0"}" "-fpermissive" ]; + cmakeFlags = [ + "-DBUILD_SHARED_LIBS=ON" + + # temporary hack until folly builds work on aarch64, + # see https://github.com/facebook/folly/issues/1880 + "-DCMAKE_LIBRARY_ARCHITECTURE=${if stdenv.isx86_64 then "x86_64" else "dummy"}" + + # ensure correct dirs in $dev/lib/pkgconfig/libfolly.pc + # see https://github.com/NixOS/nixpkgs/issues/144170 + "-DCMAKE_INSTALL_INCLUDEDIR=include" + "-DCMAKE_INSTALL_LIBDIR=lib" + ]; + + # split outputs to reduce downstream closure sizes + outputs = [ "out" "dev" ]; + + # patch prefix issues again + # see https://github.com/NixOS/nixpkgs/issues/144170 + postFixup = '' + substituteInPlace $dev/lib/cmake/${pname}/${pname}-targets-release.cmake \ + --replace '$'{_IMPORT_PREFIX}/lib/ $out/lib/ + ''; + + # folly-config.cmake, will `find_package` these, thus there should be + # a way to ensure abi compatibility. + passthru = { + inherit boost; + fmt = fmt_8; + }; + + meta = with lib; { + description = "An open-source C++ library developed and used at Facebook"; + homepage = "https://github.com/facebook/folly"; + license = licenses.asl20; + # 32bit is not supported: https://github.com/facebook/folly/issues/103 + platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" "aarch64-linux" ]; + maintainers = with maintainers; [ abbradar pierreis ]; + }; +} |