{ lib, stdenv, fetchurl, bison, buildPackages, pkgsBuildTarget }: let mkJam = { pname, version, src, meta ? { } }: stdenv.mkDerivation { inherit pname version src; depsBuildBuild = [ buildPackages.stdenv.cc ]; nativeBuildInputs = [ bison ]; # Jambase expects ar to have flags. preConfigure = '' export AR="$AR rc" ''; # When cross-compiling, we need to set the preprocessor macros # OSMAJOR/OSMINOR/OSPLAT to the values from the target platform, not the # host platform. This looks a little ridiculous because the vast majority of # build tools don't embed target-specific information into their binary, but # in this case we behave more like a compiler than a make(1)-alike. postPatch = lib.optionalString (stdenv.hostPlatform != stdenv.targetPlatform) '' cat >>jam.h <