Compare commits
6 Commits
aa9d298907
...
72ea21b9b8
Author | SHA1 | Date |
---|---|---|
Jonathan Schleifer | 72ea21b9b8 | |
Wolfgang Thaller | 4ff2d7d902 | |
Mark Cave-Ayland | 9facdaf3c1 | |
Wolfgang Thaller | e187bd21c2 | |
Wolfgang Thaller | e43fee2701 | |
Jonathan Schleifer | ad0dce421b |
|
@ -1,12 +1,12 @@
|
|||
# vim:ft=dockerfile
|
||||
|
||||
# Base image
|
||||
FROM ubuntu:20.04 AS base
|
||||
FROM ubuntu:22.04 AS base
|
||||
|
||||
RUN apt-get update && \
|
||||
DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||||
cmake libgmp-dev libmpfr-dev libmpc-dev \
|
||||
libboost-all-dev bison texinfo \
|
||||
libboost-all-dev bison texinfo bzip2 \
|
||||
ruby flex curl g++ git macutils
|
||||
|
||||
# Add toolchain to default PATH
|
||||
|
|
|
@ -75,6 +75,19 @@ static void writeMacBinary(std::ostream& out, std::string filename,
|
|||
|
||||
const std::string& rsrcBytes = resstream.str();
|
||||
|
||||
// MacBinary files contain mandatory timestamps (creation date and modification date)
|
||||
// We set both of them, but to make reproducible builds possible, this optionally
|
||||
// takes the time from the $SOURCE_DATE_EPOCH environment variable instead of the system clock.
|
||||
// When building under `nix`, this is automatically set to the modification date of the newest source
|
||||
// file.
|
||||
auto timestamp = std::invoke([&] -> std::chrono::system_clock::time_point {
|
||||
const char *sourceDateEpochEnvVar = getenv("SOURCE_DATE_EPOCH");
|
||||
if (sourceDateEpochEnvVar && *sourceDateEpochEnvVar)
|
||||
return std::chrono::system_clock::from_time_t((time_t)std::atoll(sourceDateEpochEnvVar));
|
||||
else
|
||||
return std::chrono::system_clock::now();
|
||||
});
|
||||
|
||||
// Calculate Mac-style timestamp (seconds since 1 January 1904 00:00:00)
|
||||
std::tm mac_epoch_tm = {
|
||||
0, 0, 0, // 00:00:00
|
||||
|
|
|
@ -237,7 +237,7 @@ if [ $SKIP_THIRDPARTY != true ]; then
|
|||
cd gcc-build
|
||||
export target_configargs="--disable-nls --enable-libstdcxx-dual-abi=no --disable-libstdcxx-verbose"
|
||||
$SRC/gcc/configure --target=m68k-apple-macos --prefix=$PREFIX \
|
||||
--enable-languages=c,c++ --with-arch=m68k --with-cpu=m68000 \
|
||||
--enable-languages=c,c++,objc,obj-c++ --with-arch=m68k --with-cpu=m68000 \
|
||||
--disable-libssp MAKEINFO=missing
|
||||
# There seems to be a build failure in parallel builds; ignore any errors and try again without -j8.
|
||||
make -j8 || make
|
||||
|
@ -280,7 +280,7 @@ if [ $SKIP_THIRDPARTY != true ]; then
|
|||
cd gcc-build-ppc
|
||||
export target_configargs="--disable-nls --enable-libstdcxx-dual-abi=no --disable-libstdcxx-verbose"
|
||||
$SRC/gcc/configure --target=powerpc-apple-macos --prefix=$PREFIX \
|
||||
--enable-languages=c,c++ --disable-libssp --disable-lto MAKEINFO=missing
|
||||
--enable-languages=c,c++,objc,obj-c++ --disable-libssp --disable-lto MAKEINFO=missing
|
||||
make -j8
|
||||
make install
|
||||
unset target_configargs
|
||||
|
|
23
flake.nix
23
flake.nix
|
@ -10,6 +10,9 @@
|
|||
|
||||
outputs = inputs@{ flake-parts, nixpkgs, multiversal, ... }:
|
||||
flake-parts.lib.mkFlake { inherit inputs; } ({ self, lib, retroPlatforms, ... }: {
|
||||
imports = [
|
||||
./nix/standalone.nix
|
||||
];
|
||||
_module.args.lib = import (nixpkgs + "/lib");
|
||||
_module.args.retroPlatforms = import ./nix/platforms.nix;
|
||||
|
||||
|
@ -55,26 +58,6 @@
|
|||
tools = pkgs.retro68.tools;
|
||||
hfsutils = pkgs.retro68.hfsutils;
|
||||
|
||||
default = pkgs.runCommand "Retro68" { } ''
|
||||
mkdir $out
|
||||
mkdir $out/m68k-apple-macos
|
||||
mkdir $out/powerpc-apple-macos
|
||||
${pkgs.xorg.lndir}/bin/lndir -silent ${self'.legacyPackages.pkgsCross.m68k.retro68.libretro}/. $out/m68k-apple-macos
|
||||
${pkgs.xorg.lndir}/bin/lndir -silent ${self'.legacyPackages.pkgsCross.m68k.retro68.multiversal}/. $out/m68k-apple-macos
|
||||
${pkgs.xorg.lndir}/bin/lndir -silent ${self'.legacyPackages.pkgsCross.powerpc.retro68.libretro}/. $out/powerpc-apple-macos
|
||||
${pkgs.xorg.lndir}/bin/lndir -silent ${self'.legacyPackages.pkgsCross.powerpc.retro68.multiversal}/. $out/powerpc-apple-macos
|
||||
${pkgs.xorg.lndir}/bin/lndir -silent ${self'.legacyPackages.pkgsCross.carbon.retro68.libretro}/. $out/powerpc-apple-macos
|
||||
${pkgs.xorg.lndir}/bin/lndir -silent ${self'.legacyPackages.pkgsCross.carbon.retro68.multiversal}/. $out/powerpc-apple-macos
|
||||
${pkgs.xorg.lndir}/bin/lndir -silent ${pkgs.retro68.tools}/. $out
|
||||
${pkgs.xorg.lndir}/bin/lndir -silent ${pkgs.retro68.hfsutils}/. $out
|
||||
${pkgs.xorg.lndir}/bin/lndir -silent ${pkgs.cmake}/. $out
|
||||
${pkgs.xorg.lndir}/bin/lndir -silent ${pkgs.gnumake}/. $out
|
||||
${pkgs.xorg.lndir}/bin/lndir -silent ${pkgs.ninja}/. $out
|
||||
|
||||
${pkgs.rsync}/bin/rsync -a ${self'.legacyPackages.pkgsCross.m68k.buildPackages.retro68.gcc_unwrapped}/. $out
|
||||
${pkgs.rsync}/bin/rsync -a ${self'.legacyPackages.pkgsCross.powerpc.buildPackages.retro68.gcc_unwrapped}/. $out
|
||||
${pkgs.rsync}/bin/rsync -a ${self'.legacyPackages.pkgsCross.carbon.buildPackages.retro68.gcc_unwrapped}/. $out
|
||||
'';
|
||||
|
||||
samples = pkgs.linkFarm "Retro68-Samples" [
|
||||
{ name = "m68k"; path = self'.legacyPackages.pkgsCross.m68k.retro68.samples; }
|
||||
|
|
|
@ -1126,7 +1126,6 @@ configure-target: \
|
|||
maybe-configure-target-libbacktrace \
|
||||
maybe-configure-target-libquadmath \
|
||||
maybe-configure-target-libgfortran \
|
||||
maybe-configure-target-libobjc \
|
||||
maybe-configure-target-libgo \
|
||||
maybe-configure-target-libphobos \
|
||||
maybe-configure-target-libtermcap \
|
||||
|
@ -1316,7 +1315,6 @@ all-target: maybe-all-target-libbacktrace
|
|||
@endif target-libbacktrace-no-bootstrap
|
||||
all-target: maybe-all-target-libquadmath
|
||||
all-target: maybe-all-target-libgfortran
|
||||
all-target: maybe-all-target-libobjc
|
||||
all-target: maybe-all-target-libgo
|
||||
@if target-libphobos-no-bootstrap
|
||||
all-target: maybe-all-target-libphobos
|
||||
|
@ -1419,7 +1417,6 @@ info-target: maybe-info-target-libgcc
|
|||
info-target: maybe-info-target-libbacktrace
|
||||
info-target: maybe-info-target-libquadmath
|
||||
info-target: maybe-info-target-libgfortran
|
||||
info-target: maybe-info-target-libobjc
|
||||
info-target: maybe-info-target-libgo
|
||||
info-target: maybe-info-target-libphobos
|
||||
info-target: maybe-info-target-libtermcap
|
||||
|
@ -1509,7 +1506,6 @@ dvi-target: maybe-dvi-target-libgcc
|
|||
dvi-target: maybe-dvi-target-libbacktrace
|
||||
dvi-target: maybe-dvi-target-libquadmath
|
||||
dvi-target: maybe-dvi-target-libgfortran
|
||||
dvi-target: maybe-dvi-target-libobjc
|
||||
dvi-target: maybe-dvi-target-libgo
|
||||
dvi-target: maybe-dvi-target-libphobos
|
||||
dvi-target: maybe-dvi-target-libtermcap
|
||||
|
@ -1599,7 +1595,6 @@ pdf-target: maybe-pdf-target-libgcc
|
|||
pdf-target: maybe-pdf-target-libbacktrace
|
||||
pdf-target: maybe-pdf-target-libquadmath
|
||||
pdf-target: maybe-pdf-target-libgfortran
|
||||
pdf-target: maybe-pdf-target-libobjc
|
||||
pdf-target: maybe-pdf-target-libgo
|
||||
pdf-target: maybe-pdf-target-libphobos
|
||||
pdf-target: maybe-pdf-target-libtermcap
|
||||
|
@ -1689,7 +1684,6 @@ html-target: maybe-html-target-libgcc
|
|||
html-target: maybe-html-target-libbacktrace
|
||||
html-target: maybe-html-target-libquadmath
|
||||
html-target: maybe-html-target-libgfortran
|
||||
html-target: maybe-html-target-libobjc
|
||||
html-target: maybe-html-target-libgo
|
||||
html-target: maybe-html-target-libphobos
|
||||
html-target: maybe-html-target-libtermcap
|
||||
|
@ -1779,7 +1773,6 @@ TAGS-target: maybe-TAGS-target-libgcc
|
|||
TAGS-target: maybe-TAGS-target-libbacktrace
|
||||
TAGS-target: maybe-TAGS-target-libquadmath
|
||||
TAGS-target: maybe-TAGS-target-libgfortran
|
||||
TAGS-target: maybe-TAGS-target-libobjc
|
||||
TAGS-target: maybe-TAGS-target-libgo
|
||||
TAGS-target: maybe-TAGS-target-libphobos
|
||||
TAGS-target: maybe-TAGS-target-libtermcap
|
||||
|
@ -1869,7 +1862,6 @@ install-info-target: maybe-install-info-target-libgcc
|
|||
install-info-target: maybe-install-info-target-libbacktrace
|
||||
install-info-target: maybe-install-info-target-libquadmath
|
||||
install-info-target: maybe-install-info-target-libgfortran
|
||||
install-info-target: maybe-install-info-target-libobjc
|
||||
install-info-target: maybe-install-info-target-libgo
|
||||
install-info-target: maybe-install-info-target-libphobos
|
||||
install-info-target: maybe-install-info-target-libtermcap
|
||||
|
@ -2049,7 +2041,6 @@ install-pdf-target: maybe-install-pdf-target-libgcc
|
|||
install-pdf-target: maybe-install-pdf-target-libbacktrace
|
||||
install-pdf-target: maybe-install-pdf-target-libquadmath
|
||||
install-pdf-target: maybe-install-pdf-target-libgfortran
|
||||
install-pdf-target: maybe-install-pdf-target-libobjc
|
||||
install-pdf-target: maybe-install-pdf-target-libgo
|
||||
install-pdf-target: maybe-install-pdf-target-libphobos
|
||||
install-pdf-target: maybe-install-pdf-target-libtermcap
|
||||
|
@ -2139,7 +2130,6 @@ install-html-target: maybe-install-html-target-libgcc
|
|||
install-html-target: maybe-install-html-target-libbacktrace
|
||||
install-html-target: maybe-install-html-target-libquadmath
|
||||
install-html-target: maybe-install-html-target-libgfortran
|
||||
install-html-target: maybe-install-html-target-libobjc
|
||||
install-html-target: maybe-install-html-target-libgo
|
||||
install-html-target: maybe-install-html-target-libphobos
|
||||
install-html-target: maybe-install-html-target-libtermcap
|
||||
|
@ -2229,7 +2219,6 @@ installcheck-target: maybe-installcheck-target-libgcc
|
|||
installcheck-target: maybe-installcheck-target-libbacktrace
|
||||
installcheck-target: maybe-installcheck-target-libquadmath
|
||||
installcheck-target: maybe-installcheck-target-libgfortran
|
||||
installcheck-target: maybe-installcheck-target-libobjc
|
||||
installcheck-target: maybe-installcheck-target-libgo
|
||||
installcheck-target: maybe-installcheck-target-libphobos
|
||||
installcheck-target: maybe-installcheck-target-libtermcap
|
||||
|
@ -2319,7 +2308,6 @@ mostlyclean-target: maybe-mostlyclean-target-libgcc
|
|||
mostlyclean-target: maybe-mostlyclean-target-libbacktrace
|
||||
mostlyclean-target: maybe-mostlyclean-target-libquadmath
|
||||
mostlyclean-target: maybe-mostlyclean-target-libgfortran
|
||||
mostlyclean-target: maybe-mostlyclean-target-libobjc
|
||||
mostlyclean-target: maybe-mostlyclean-target-libgo
|
||||
mostlyclean-target: maybe-mostlyclean-target-libphobos
|
||||
mostlyclean-target: maybe-mostlyclean-target-libtermcap
|
||||
|
@ -2409,7 +2397,6 @@ clean-target: maybe-clean-target-libgcc
|
|||
clean-target: maybe-clean-target-libbacktrace
|
||||
clean-target: maybe-clean-target-libquadmath
|
||||
clean-target: maybe-clean-target-libgfortran
|
||||
clean-target: maybe-clean-target-libobjc
|
||||
clean-target: maybe-clean-target-libgo
|
||||
clean-target: maybe-clean-target-libphobos
|
||||
clean-target: maybe-clean-target-libtermcap
|
||||
|
@ -2499,7 +2486,6 @@ distclean-target: maybe-distclean-target-libgcc
|
|||
distclean-target: maybe-distclean-target-libbacktrace
|
||||
distclean-target: maybe-distclean-target-libquadmath
|
||||
distclean-target: maybe-distclean-target-libgfortran
|
||||
distclean-target: maybe-distclean-target-libobjc
|
||||
distclean-target: maybe-distclean-target-libgo
|
||||
distclean-target: maybe-distclean-target-libphobos
|
||||
distclean-target: maybe-distclean-target-libtermcap
|
||||
|
@ -2589,7 +2575,6 @@ maintainer-clean-target: maybe-maintainer-clean-target-libgcc
|
|||
maintainer-clean-target: maybe-maintainer-clean-target-libbacktrace
|
||||
maintainer-clean-target: maybe-maintainer-clean-target-libquadmath
|
||||
maintainer-clean-target: maybe-maintainer-clean-target-libgfortran
|
||||
maintainer-clean-target: maybe-maintainer-clean-target-libobjc
|
||||
maintainer-clean-target: maybe-maintainer-clean-target-libgo
|
||||
maintainer-clean-target: maybe-maintainer-clean-target-libphobos
|
||||
maintainer-clean-target: maybe-maintainer-clean-target-libtermcap
|
||||
|
@ -2737,7 +2722,6 @@ check-target: \
|
|||
maybe-check-target-libbacktrace \
|
||||
maybe-check-target-libquadmath \
|
||||
maybe-check-target-libgfortran \
|
||||
maybe-check-target-libobjc \
|
||||
maybe-check-target-libgo \
|
||||
maybe-check-target-libphobos \
|
||||
maybe-check-target-libtermcap \
|
||||
|
@ -2929,7 +2913,6 @@ install-target: \
|
|||
maybe-install-target-libbacktrace \
|
||||
maybe-install-target-libquadmath \
|
||||
maybe-install-target-libgfortran \
|
||||
maybe-install-target-libobjc \
|
||||
maybe-install-target-libgo \
|
||||
maybe-install-target-libphobos \
|
||||
maybe-install-target-libtermcap \
|
||||
|
@ -3039,7 +3022,6 @@ install-strip-target: \
|
|||
maybe-install-strip-target-libbacktrace \
|
||||
maybe-install-strip-target-libquadmath \
|
||||
maybe-install-strip-target-libgfortran \
|
||||
maybe-install-strip-target-libobjc \
|
||||
maybe-install-strip-target-libgo \
|
||||
maybe-install-strip-target-libphobos \
|
||||
maybe-install-strip-target-libtermcap \
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
# flake part to add a 'standalone' build of retro68 for all archs,
|
||||
# i.e. a build that does not rely on nixpkgs's wrapper setup.
|
||||
# this might be what should be put into a docker image.
|
||||
|
||||
# Warning: does not yet work.
|
||||
|
||||
{ ... }: {
|
||||
perSystem = { self', pkgs, ... }: {
|
||||
packages.standalone = pkgs.runCommand "Retro68" { } ''
|
||||
mkdir -p $out/m68k-apple-macos/cmake
|
||||
mkdir -p $out/powerpc-apple-macos/cmake
|
||||
${pkgs.xorg.lndir}/bin/lndir -silent ${self'.legacyPackages.pkgsCross.m68k.retro68.libretro}/. $out/m68k-apple-macos
|
||||
${pkgs.xorg.lndir}/bin/lndir -silent ${self'.legacyPackages.pkgsCross.m68k.retro68.multiversal}/. $out/m68k-apple-macos
|
||||
${pkgs.xorg.lndir}/bin/lndir -silent ${self'.legacyPackages.pkgsCross.powerpc.retro68.libretro}/. $out/powerpc-apple-macos
|
||||
${pkgs.xorg.lndir}/bin/lndir -silent ${self'.legacyPackages.pkgsCross.powerpc.retro68.multiversal}/. $out/powerpc-apple-macos
|
||||
${pkgs.xorg.lndir}/bin/lndir -silent ${self'.legacyPackages.pkgsCross.carbon.retro68.libretro}/. $out/powerpc-apple-macos
|
||||
${pkgs.xorg.lndir}/bin/lndir -silent ${self'.legacyPackages.pkgsCross.carbon.retro68.multiversal}/. $out/powerpc-apple-macos
|
||||
${pkgs.xorg.lndir}/bin/lndir -silent ${pkgs.retro68.tools}/. $out
|
||||
${pkgs.xorg.lndir}/bin/lndir -silent ${pkgs.retro68.hfsutils}/. $out
|
||||
${pkgs.xorg.lndir}/bin/lndir -silent ${pkgs.cmake}/. $out
|
||||
${pkgs.xorg.lndir}/bin/lndir -silent ${pkgs.gnumake}/. $out
|
||||
${pkgs.xorg.lndir}/bin/lndir -silent ${pkgs.ninja}/. $out
|
||||
|
||||
${pkgs.rsync}/bin/rsync -a ${self'.legacyPackages.pkgsCross.m68k.buildPackages.retro68.gcc_unwrapped}/. $out
|
||||
${pkgs.rsync}/bin/rsync -a ${self'.legacyPackages.pkgsCross.powerpc.buildPackages.retro68.gcc_unwrapped}/. $out
|
||||
${pkgs.rsync}/bin/rsync -a ${self'.legacyPackages.pkgsCross.carbon.buildPackages.retro68.gcc_unwrapped}/. $out
|
||||
|
||||
substitute ${../cmake/retro68.toolchain.cmake.in} $out/m68k-apple-macos/cmake/retro68.toolchain.cmake --subst-var-by RETRO68_ROOT $out
|
||||
substitute ${../cmake/retroppc.toolchain.cmake.in} $out/powerpc-apple-macos/cmake/retroppc.toolchain.cmake --subst-var-by RETRO68_ROOT $out
|
||||
substitute ${../cmake/retrocarbon.toolchain.cmake.in} $out/powerpc-apple-macos/cmake/retrocarbon.toolchain.cmake --subst-var-by RETRO68_ROOT $out
|
||||
cp ${../cmake/add_application.cmake} $out/m68k-apple-macos/cmake/add_application.cmake
|
||||
cp -r ${../cmake/Platform} $out/m68k-apple-macos/cmake/Platform
|
||||
cp -r ${../cmake/Platform} $out/powerpc-apple-macos/cmake/Platform
|
||||
'';
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue