summary refs log tree commit diff
path: root/pkgs/development/libraries/elf-header
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2018-09-11 18:17:20 -0400
committerJohn Ericson <John.Ericson@Obsidian.Systems>2018-09-15 01:14:31 -0400
commitb8ce6a31f555a2e4471880cc4c01b629e7d6d36f (patch)
treeb45d7f3831400cdf844acd84fb5dbbe30f2aeb3c /pkgs/development/libraries/elf-header
parent2205beaa8c95746e1ed580875dea202e93a85b5d (diff)
downloadnixpkgs-b8ce6a31f555a2e4471880cc4c01b629e7d6d36f.tar
nixpkgs-b8ce6a31f555a2e4471880cc4c01b629e7d6d36f.tar.gz
nixpkgs-b8ce6a31f555a2e4471880cc4c01b629e7d6d36f.tar.bz2
nixpkgs-b8ce6a31f555a2e4471880cc4c01b629e7d6d36f.tar.lz
nixpkgs-b8ce6a31f555a2e4471880cc4c01b629e7d6d36f.tar.xz
nixpkgs-b8ce6a31f555a2e4471880cc4c01b629e7d6d36f.tar.zst
nixpkgs-b8ce6a31f555a2e4471880cc4c01b629e7d6d36f.zip
elf-header: Init at <libc version>
A little shim derivation to get this header for Darwin, where it is
needed for cross compilation.

There's no real reason to do glibc and musl like that, but as I'm
maintaining it I suppose I can go overboard like that.
Diffstat (limited to 'pkgs/development/libraries/elf-header')
-rw-r--r--pkgs/development/libraries/elf-header/default.nix43
1 files changed, 43 insertions, 0 deletions
diff --git a/pkgs/development/libraries/elf-header/default.nix b/pkgs/development/libraries/elf-header/default.nix
new file mode 100644
index 00000000000..48e5b73d9e7
--- /dev/null
+++ b/pkgs/development/libraries/elf-header/default.nix
@@ -0,0 +1,43 @@
+{ stdenvNoCC, lib, glibc, musl }:
+
+let
+   libc =
+     if stdenvNoCC.targetPlatform.isMusl
+     then musl
+     else glibc;
+   headerPath =
+     if stdenvNoCC.targetPlatform.isMusl
+     then "musl-${libc.version}/include/elf.h"
+     else "glibc-${libc.version}/elf/elf.h";
+in
+
+stdenvNoCC.mkDerivation {
+  name = "elf-header";
+  inherit (libc) version;
+
+  src = null;
+
+  unpackPhase = "true";
+
+  dontBuild = true;
+
+  installPhase = ''
+    mkdir -p "$out/include";
+    tar -xf \
+        ${lib.escapeShellArg libc.src} \
+        ${lib.escapeShellArg headerPath} \
+        --to-stdout \
+      | sed -e '/features\.h/d' \
+      > "$out/include/elf.h"
+  '';
+
+  meta = libc.meta // {
+    description = "The datastructures of ELF according to the target platform's libc";
+    longDescription = ''
+	  The Executable and Linkable Format (ELF, formerly named Extensible Linking
+	  Format), is usually defined in a header like this.
+	'';
+    platforms = lib.platforms.all;
+    maintainers = [ lib.maintainers.ericson2314 ];
+  };
+}