mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-01-21 20:34:06 +00:00
tinycc: refactor
- get rid of rec
- extreme use of recursive rec
- format version string according to commit
- cb89165fb9
(#280312, RFCs 107 and 147)
- strictDeps
- meta.mainProgram
This commit is contained in:
parent
5d1b96ebf2
commit
5114be97f5
@ -1,20 +1,16 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromRepoOrCz
|
||||
, copyPkgconfigItems
|
||||
, fetchFromRepoOrCz
|
||||
, makePkgconfigItem
|
||||
, perl
|
||||
, stdenv
|
||||
, texinfo
|
||||
, which
|
||||
}:
|
||||
|
||||
let
|
||||
# avoid "malformed 32-bit x.y.z" error on mac when using clang
|
||||
isCleanVer = version: builtins.match "^[0-9]\\.+[0-9]+\\.[0-9]+" version != null;
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "tcc";
|
||||
version = "unstable-2022-07-15";
|
||||
version = "0.9.27-unstable-2022-07-15";
|
||||
|
||||
src = fetchFromRepoOrCz {
|
||||
repo = "tinycc";
|
||||
@ -22,6 +18,8 @@ stdenv.mkDerivation rec {
|
||||
hash = "sha256-jY0P2GErmo//YBaz6u4/jj/voOE3C2JaIDRmo0orXN8=";
|
||||
};
|
||||
|
||||
outputs = [ "out" "info" "man" ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
copyPkgconfigItems
|
||||
perl
|
||||
@ -29,23 +27,27 @@ stdenv.mkDerivation rec {
|
||||
which
|
||||
];
|
||||
|
||||
pkgconfigItems = [
|
||||
(makePkgconfigItem rec {
|
||||
strictDeps = true;
|
||||
|
||||
pkgconfigItems = let
|
||||
libtcc-pcitem = {
|
||||
name = "libtcc";
|
||||
inherit version;
|
||||
cflags = [ "-I${variables.includedir}" ];
|
||||
inherit (finalAttrs) version;
|
||||
cflags = [ "-I${libtcc-pcitem.variables.includedir}" ];
|
||||
libs = [
|
||||
"-L${variables.libdir}"
|
||||
"-Wl,--rpath ${variables.libdir}"
|
||||
"-L${libtcc-pcitem.variables.libdir}"
|
||||
"-Wl,--rpath ${libtcc-pcitem.variables.libdir}"
|
||||
"-ltcc"
|
||||
];
|
||||
variables = rec {
|
||||
variables = {
|
||||
prefix = "${placeholder "out"}";
|
||||
includedir = "${prefix}/include";
|
||||
libdir = "${prefix}/lib";
|
||||
includedir = "${placeholder "dev"}/include";
|
||||
libdir = "${placeholder "lib"}/lib";
|
||||
};
|
||||
description = "Tiny C compiler backend";
|
||||
})
|
||||
};
|
||||
in [
|
||||
(makePkgconfigItem libtcc-pcitem)
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
@ -64,17 +66,19 @@ stdenv.mkDerivation rec {
|
||||
"--config-musl"
|
||||
];
|
||||
|
||||
preConfigure = ''
|
||||
preConfigure = let
|
||||
# To avoid "malformed 32-bit x.y.z" error on mac when using clang
|
||||
versionIsClean = version:
|
||||
builtins.match "^[0-9]\\.+[0-9]+\\.[0-9]+" version != null;
|
||||
in ''
|
||||
${
|
||||
if stdenv.isDarwin && ! isCleanVer version
|
||||
if stdenv.isDarwin && ! versionIsClean finalAttrs.version
|
||||
then "echo 'not overwriting VERSION since it would upset ld'"
|
||||
else "echo ${version} > VERSION"
|
||||
else "echo ${finalAttrs.version} > VERSION"
|
||||
}
|
||||
configureFlagsArray+=("--elfinterp=$(< $NIX_CC/nix-support/dynamic-linker)")
|
||||
'';
|
||||
|
||||
outputs = [ "out" "info" "man" ];
|
||||
|
||||
# Test segfault for static build
|
||||
doCheck = !stdenv.hostPlatform.isStatic;
|
||||
|
||||
@ -84,7 +88,7 @@ stdenv.mkDerivation rec {
|
||||
rm tests/tests2/{108,114}*
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
homepage = "https://repo.or.cz/tinycc.git";
|
||||
description = "Small, fast, and embeddable C compiler and interpreter";
|
||||
longDescription = ''
|
||||
@ -108,13 +112,13 @@ stdenv.mkDerivation rec {
|
||||
|
||||
With libtcc, you can use TCC as a backend for dynamic code generation.
|
||||
'';
|
||||
license = licenses.lgpl21Only;
|
||||
maintainers = with maintainers; [ joachifm AndersonTorres ];
|
||||
platforms = platforms.unix;
|
||||
license = with lib.licenses; [ lgpl21Only ];
|
||||
mainProgram = "tcc";
|
||||
maintainers = with lib.maintainers; [ joachifm AndersonTorres ];
|
||||
platforms = lib.platforms.unix;
|
||||
# https://www.mail-archive.com/tinycc-devel@nongnu.org/msg10199.html
|
||||
broken = stdenv.isDarwin && stdenv.isAarch64;
|
||||
};
|
||||
}
|
||||
})
|
||||
# TODO: more multiple outputs
|
||||
# TODO: self-compilation
|
||||
# TODO: provide expression for stable release
|
||||
|
Loading…
Reference in New Issue
Block a user