{ lib , buildPlatform , hostPlatform , fetchurl , bash , tinycc , gnumakeBoot , gnupatch , gnused , gnugrep , gawk , gnutar , gzip }: let pname = "gnumake-musl"; version = "4.4.1"; src = fetchurl { url = "mirror://gnu/make/make-${version}.tar.gz"; hash = "sha256-3Rb7HWe/q3mnL16DkHNcSePo5wtJRaFasfgd23hlj7M="; }; patches = [ # Replaces /bin/sh with sh, see patch file for reasoning ./0001-No-impure-bin-sh.patch # Purity: don't look for library dependencies (of the form `-lfoo') in /lib # and /usr/lib. It's a stupid feature anyway. Likewise, when searching for # included Makefiles, don't look in /usr/include and friends. ./0002-remove-impure-dirs.patch ]; in bash.runCommand "${pname}-${version}" { inherit pname version; nativeBuildInputs = [ tinycc.compiler gnumakeBoot gnupatch gnused gnugrep gawk gnutar gzip ]; passthru.tests.get-version = result: bash.runCommand "${pname}-get-version-${version}" {} '' ${result}/bin/make --version mkdir $out ''; meta = with lib; { description = "A tool to control the generation of non-source files from sources"; homepage = "https://www.gnu.org/software/make"; license = licenses.gpl3Plus; maintainers = teams.minimal-bootstrap.members; mainProgram = "make"; platforms = platforms.unix; }; } '' # Unpack tar xzf ${src} cd make-${version} # Patch ${lib.concatMapStringsSep "\n" (f: "patch -Np1 -i ${f}") patches} # Configure export CC="tcc -B ${tinycc.libs}/lib" export LD=tcc bash ./configure \ --prefix=$out \ --build=${buildPlatform.config} \ --host=${hostPlatform.config} # Build make AR="tcc -ar" # Install make install ''