llvm-ffi 21.0.0.1 → 21.0.0.2
raw patch · 7 files changed
+116/−86 lines, 7 files
Files
- Justfile +34/−0
- ReadMe.md +23/−9
- flatpak/llvm-3.8.1.json +0/−27
- flatpak/llvm-3.9.1.json +0/−27
- llvm-ffi.cabal +8/−23
- pkg-config.nix +15/−0
- shell-args.nix +36/−0
+ Justfile view
@@ -0,0 +1,34 @@+test:+ nix-shell shell-args.nix --argstr llvmVersion 2100 --run "just test-pkg-config"+ just test-versions+++test-pkg-config:+ runhaskell Setup clean+ runhaskell Setup configure -fbuildExamples -fpkgConfig+ runhaskell Setup build+ runhaskell Setup haddock+ ./dist/build/llvm-ffi-host/llvm-ffi-host+ ./dist/build/llvm-ffi-jit/llvm-ffi-jit++test-versions:+ just test-nix 2100+ just test-nix 2000+ just test-nix 1900+ just test-nix 1800+ just test-nix 1700+ just test-nix 1600+ just test-nix 1500+ just test-nix 1400+ just test-nix 1300++test-nix version:+ nix-shell shell-args.nix --argstr llvmVersion {{version}} --run "just test-version {{version}}"++test-version version:+ # "{{ env_var('CPATH') }}"+ # "{{ env_var('LD_LIBRARY_PATH') }}"+ runhaskell Setup clean+ runhaskell Setup configure -fbuildExamples -fllvm{{version}}+ runhaskell Setup build+ ./dist/build/llvm-ffi-jit/llvm-ffi-jit
ReadMe.md view
@@ -91,6 +91,13 @@ cabal install -fpkgConfig ~~~~ +We ship a `pkg-config.nix` file.+If you import this into your Nix expression,+Nix will prepare and install a llvm.pc file for you.+++## Known issues+ Warning for inplace builds: Re-configuring the package using, say `-fllvm1600`, and re-buildung it might result in corrupt code.@@ -98,14 +105,21 @@ Cabal or GHC may forget about that. You are safe if you run `cabal clean`. -Caution: Nasty crashes can occur++Caution:+Surprises are ahead if you have configured paths for LLVM version X in `.cabal/config`-and try to build `llvm-ffi` for a different LLVM version Y.-Counterintuitively, global search paths have higher precedence+and try to build `llvm-ffi` for a different LLVM version Y+by adding custom include and library paths to `cabal.project`.+Counterintuitively, global search paths take higher precedence [than local ones](https://github.com/haskell/cabal/issues/7782).-But that does not simply mean-that the local configuration is ignored completely.-Instead the local library file is found,-because its name libLLVM-Y.so is unique,-whereas the include file names clash,-thus the ones from the global include directory are used.++We now depend on libLLVM.so, not on libLLVM-X.so anymore.+This is for consistency with the include files,+where there are no include file names including version numbers.+In former versions of this binding package+we depend on generic LLVM/Core.h but specific libLLVM-X.so.+This meant,+that the include files configured in `.cabal/config`+were mixed with the library configured in `cabal.project`.+This lead to ugly, hard to debug crashes.
− flatpak/llvm-3.8.1.json
@@ -1,27 +0,0 @@-{- "cleanup": [- "/bin",- "/include",- "/lib/debug",- "/lib/libLLVM*.a",- "/lib/LLVMHello.so",- "/share"- ],- "sources": [- {- "url": "http://releases.llvm.org/3.8.1/llvm-3.8.1.src.tar.xz",- "type": "archive",- "sha256": "6e82ce4adb54ff3afc18053d6981b6aed1406751b8742582ed50f04b5ab475f9"- }- ],- "config-opts": [- "-DCMAKE_BUILD_TYPE=Release",- "-DLLVM_ENABLE_ASSERTIONS=ON",- "-DLLVM_BUILD_TOOLS=OFF",- "-DLLVM_INCLUDE_EXAMPLES=OFF",- "-DLLVM_BUILD_LLVM_DYLIB=ON"- ],- "name": "llvm-3.8",- "buildsystem": "cmake",- "builddir": true-}
− flatpak/llvm-3.9.1.json
@@ -1,27 +0,0 @@-{- "cleanup": [- "/bin",- "/include",- "/lib/debug",- "/lib/libLLVM*.a",- "/lib/LLVMHello.so",- "/share"- ],- "sources": [- {- "url": "http://releases.llvm.org/3.9.1/llvm-3.9.1.src.tar.xz",- "type": "archive",- "sha256": "1fd90354b9cf19232e8f168faf2220e79be555df3aa743242700879e8fd329ee"- }- ],- "config-opts": [- "-DCMAKE_BUILD_TYPE=Release",- "-DLLVM_ENABLE_ASSERTIONS=ON",- "-DLLVM_BUILD_TOOLS=OFF",- "-DLLVM_INCLUDE_EXAMPLES=OFF",- "-DLLVM_BUILD_LLVM_DYLIB=ON"- ],- "name": "llvm-3.9",- "buildsystem": "cmake",- "builddir": true-}
llvm-ffi.cabal view
@@ -1,6 +1,6 @@ Cabal-Version: 2.2 Name: llvm-ffi-Version: 21.0.0.1+Version: 21.0.0.2 License: BSD-3-Clause License-File: LICENSE Synopsis: FFI bindings to the LLVM compiler toolkit.@@ -28,8 +28,9 @@ include/support.h tool/ltrace.config tool/ltrace.readme- flatpak/llvm-3.8.1.json- flatpak/llvm-3.9.1.json+ shell-args.nix+ pkg-config.nix+ Justfile Extra-Doc-Files: ReadMe.md@@ -99,7 +100,7 @@ Location: https://hub.darcs.net/thielema/llvm-ffi/ Source-Repository this- Tag: 21.0.0.1+ Tag: 21.0.0.2 Type: darcs Location: https://hub.darcs.net/thielema/llvm-ffi/ @@ -150,8 +151,6 @@ PkgConfig-Depends: llvm-13 Else PkgConfig-Depends: llvm == 13.*- Else- Extra-Libraries: LLVM-13 Hs-Source-Dirs: src/13, src/before14 CC-Options: -DHS_LLVM_VERSION=1300 Cxx-Options: -DHS_LLVM_VERSION=1300@@ -164,8 +163,6 @@ PkgConfig-Depends: llvm-14 Else PkgConfig-Depends: llvm == 14.*- Else- Extra-Libraries: LLVM-14 Hs-Source-Dirs: src/14 CC-Options: -DHS_LLVM_VERSION=1400 Cxx-Options: -DHS_LLVM_VERSION=1400@@ -177,8 +174,6 @@ PkgConfig-Depends: llvm-15 Else PkgConfig-Depends: llvm == 15.*- Else- Extra-Libraries: LLVM-15 Hs-Source-Dirs: src/15 CC-Options: -DHS_LLVM_VERSION=1500 Cxx-Options: -DHS_LLVM_VERSION=1500@@ -191,8 +186,6 @@ PkgConfig-Depends: llvm-16 Else PkgConfig-Depends: llvm == 16.*- Else- Extra-Libraries: LLVM-16 Hs-Source-Dirs: src/16 CC-Options: -DHS_LLVM_VERSION=1600 Cxx-Options: -DHS_LLVM_VERSION=1600@@ -204,8 +197,6 @@ PkgConfig-Depends: llvm-17 Else PkgConfig-Depends: llvm == 17.*- Else- Extra-Libraries: LLVM-17 Hs-Source-Dirs: src/17 CC-Options: -DHS_LLVM_VERSION=1700 Cxx-Options: -DHS_LLVM_VERSION=1700@@ -217,8 +208,6 @@ PkgConfig-Depends: llvm-18 Else PkgConfig-Depends: llvm == 18.*- Else- Extra-Libraries: LLVM-18 Hs-Source-Dirs: src/18 CC-Options: -DHS_LLVM_VERSION=1800 Cxx-Options: -DHS_LLVM_VERSION=1800@@ -230,8 +219,6 @@ PkgConfig-Depends: llvm-19 Else PkgConfig-Depends: llvm == 19.*- Else- Extra-Libraries: LLVM-19 Hs-Source-Dirs: src/19 CC-Options: -DHS_LLVM_VERSION=1900 Cxx-Options: -DHS_LLVM_VERSION=1900@@ -243,8 +230,6 @@ PkgConfig-Depends: llvm-20 Else PkgConfig-Depends: llvm == 20.*- Else- Extra-Libraries: LLVM-20 Hs-Source-Dirs: src/20 CC-Options: -DHS_LLVM_VERSION=2000 Cxx-Options: -DHS_LLVM_VERSION=2000@@ -255,13 +240,13 @@ PkgConfig-Depends: llvm-21 Else PkgConfig-Depends: llvm == 21.*- Else--- Extra-Libraries: LLVM-21- Extra-Libraries: LLVM-21git Hs-Source-Dirs: src/21 CC-Options: -DHS_LLVM_VERSION=2100 Cxx-Options: -DHS_LLVM_VERSION=2100 CPP-Options: -DHS_LLVM_VERSION=2100++ If !flag(pkgConfig)+ Extra-Libraries: LLVM CC-Options: -DHAVE_LLVM_SUPPORT_DYNAMICLIBRARY_H=1 CPP-Options: -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS
+ pkg-config.nix view
@@ -0,0 +1,15 @@+{ stdenv, llvmPackages, haskellPackages }:+stdenv.mkDerivation rec {+ pname = "llvm-pc";+ version = llvmPackages.llvm.version;++ buildInputs = [ haskellPackages.llvm-pkg-config ];+ propagatedBuildInputs = [ llvmPackages.libllvm ];++ phases = [ "installPhase" ];++ installPhase = ''+ mkdir -p $out/lib/pkgconfig+ llvm-pkg-config >$out/lib/pkgconfig/llvm-${llvmPackages.llvm.shortVersion}.pc+ '';+}
+ shell-args.nix view
@@ -0,0 +1,36 @@+{ pkgs ? import <unstable> {}+, llvmVersion ? "2100"+}:++let+ llvmPackagesSet = {+ "1300" = pkgs.llvmPackages_13;+ "1400" = pkgs.llvmPackages_14;+ "1500" = pkgs.llvmPackages_15;+ "1600" = pkgs.llvmPackages_16;+ "1700" = pkgs.llvmPackages_17;+ "1800" = pkgs.llvmPackages_18;+ "1900" = pkgs.llvmPackages_19;+ "2000" = pkgs.llvmPackages_20;+ "2100" = pkgs.llvmPackages_21;+ "2200" = pkgs.llvmPackages_git;+ };+ llvmPkgs = llvmPackagesSet.${llvmVersion};+ llvmPkg = llvmPkgs.libllvm;+in+pkgs.mkShell {+ buildInputs = (with pkgs; [+ gnumake+ just+ pkg-config+ (haskellPackages.ghcWithPackages (hpkgs: with hpkgs; [enumset]))+ cabal-install+ llvmPkg+ haskellPackages.llvm-pkg-config+ (callPackage ./pkg-config.nix {llvmPackages=llvmPkgs;})+ ]);+ CPATH="${llvmPkg.dev}/include";+ C_INCLUDE_PATH="${llvmPkg.dev}/include";+ LD_LIBRARY_PATH="${llvmPkg.lib}/lib";+ PKG_CONFIG_PATH=".";+}