93 lines
2.4 KiB
Nix
93 lines
2.4 KiB
Nix
|
# Build steps adapted from https://github.com/fosslinux/live-bootstrap/blob/1bc4296091c51f53a5598050c8956d16e945b0f5/sysa/tcc-0.9.27/tcc-0.9.27.kaem
|
||
|
#
|
||
|
# SPDX-FileCopyrightText: 2021-22 fosslinux <fosslinux@aussies.space>
|
||
|
#
|
||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||
|
|
||
|
{ lib
|
||
|
, fetchurl
|
||
|
, callPackage
|
||
|
, kaem
|
||
|
, tinycc-bootstrappable
|
||
|
}:
|
||
|
let
|
||
|
inherit (callPackage ./common.nix { }) buildTinyccMes;
|
||
|
|
||
|
version = "unstable-2023-04-20";
|
||
|
rev = "86f3d8e33105435946383aee52487b5ddf918140";
|
||
|
|
||
|
tarball = fetchurl {
|
||
|
url = "https://repo.or.cz/tinycc.git/snapshot/${rev}.tar.gz";
|
||
|
sha256 = "11idrvbwfgj1d03crv994mpbbbyg63j1k64lw1gjy7mkiifw2xap";
|
||
|
};
|
||
|
src = (kaem.runCommand "tinycc-${version}-source" {} ''
|
||
|
ungz --file ${tarball} --output tinycc.tar
|
||
|
mkdir -p ''${out}
|
||
|
cd ''${out}
|
||
|
untar --file ''${NIX_BUILD_TOP}/tinycc.tar
|
||
|
'') + "/tinycc-${builtins.substring 0 7 rev}";
|
||
|
|
||
|
meta = with lib; {
|
||
|
description = "Small, fast, and embeddable C compiler and interpreter";
|
||
|
homepage = "https://repo.or.cz/w/tinycc.git";
|
||
|
license = licenses.lgpl21Only;
|
||
|
maintainers = teams.minimal-bootstrap.members;
|
||
|
platforms = [ "i686-linux" ];
|
||
|
};
|
||
|
|
||
|
tccdefs = kaem.runCommand "tccdefs-${version}" {} ''
|
||
|
mkdir ''${out}
|
||
|
${tinycc-bootstrappable.compiler}/bin/tcc \
|
||
|
-B ${tinycc-bootstrappable.libs}/lib \
|
||
|
-static \
|
||
|
-DC2STR \
|
||
|
-o c2str \
|
||
|
${src}/conftest.c
|
||
|
./c2str ${src}/include/tccdefs.h ''${out}/tccdefs_.h
|
||
|
'';
|
||
|
|
||
|
tinycc-mes-boot = buildTinyccMes {
|
||
|
pname = "tinycc-mes-boot";
|
||
|
inherit src version meta;
|
||
|
prev = tinycc-bootstrappable;
|
||
|
buildOptions = [
|
||
|
"-D HAVE_BITFIELD=1"
|
||
|
"-D HAVE_FLOAT=1"
|
||
|
"-D HAVE_LONG_LONG=1"
|
||
|
"-D HAVE_SETJMP=1"
|
||
|
"-D CONFIG_TCC_PREDEFS=1"
|
||
|
"-I ${tccdefs}"
|
||
|
"-D CONFIG_TCC_SEMLOCK=0"
|
||
|
];
|
||
|
libtccBuildOptions = [
|
||
|
"-D HAVE_FLOAT=1"
|
||
|
"-D HAVE_LONG_LONG=1"
|
||
|
"-D CONFIG_TCC_PREDEFS=1"
|
||
|
"-I ${tccdefs}"
|
||
|
"-D CONFIG_TCC_SEMLOCK=0"
|
||
|
];
|
||
|
};
|
||
|
in
|
||
|
buildTinyccMes {
|
||
|
pname = "tinycc-mes";
|
||
|
inherit src version meta;
|
||
|
prev = tinycc-mes-boot;
|
||
|
buildOptions = [
|
||
|
"-std=c99"
|
||
|
"-D HAVE_BITFIELD=1"
|
||
|
"-D HAVE_FLOAT=1"
|
||
|
"-D HAVE_LONG_LONG=1"
|
||
|
"-D HAVE_SETJMP=1"
|
||
|
"-D CONFIG_TCC_PREDEFS=1"
|
||
|
"-I ${tccdefs}"
|
||
|
"-D CONFIG_TCC_SEMLOCK=0"
|
||
|
];
|
||
|
libtccBuildOptions = [
|
||
|
"-D HAVE_FLOAT=1"
|
||
|
"-D HAVE_LONG_LONG=1"
|
||
|
"-D CONFIG_TCC_PREDEFS=1"
|
||
|
"-I ${tccdefs}"
|
||
|
"-D CONFIG_TCC_SEMLOCK=0"
|
||
|
];
|
||
|
}
|