nixpkgs-suyu/pkgs/games/sil/default.nix
Sergei Trofimovich d2ef633388 sil: add -fcommon workaround
Workaround build failure on -fno-common toolchains like upstream
gcc-10. Otherwise build fails as:

    ld: main.o:/build/source/Sil/src/externs.h:57: multiple definition of
      `mini_screenshot_char'; variable.o:/build/source/Sil/src/externs.h:57: first defined here
2022-05-29 07:36:52 +01:00

70 lines
2.4 KiB
Nix
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{ lib, stdenv, fetchzip, ncurses, libX11, libXaw, libXt, libXext, libXmu, makeWrapper, writeScript, ... }:
let
setup = writeScript "setup" ''
mkdir -p "$ANGBAND_PATH"
# Copy all the data files into place
cp -ar $1/* "$ANGBAND_PATH"
# The copied files are not writable, make them so
chmod +w -R "$ANGBAND_PATH"
'';
in
stdenv.mkDerivation rec {
pname = "Sil";
version = "1.3.0";
src = fetchzip {
url = "http://www.amirrorclear.net/flowers/game/sil/Sil-130-src.zip";
sha256 = "1amp2mr3fxascra0k76sdsvikjh8g76nqh46kka9379zd35lfq8w";
stripRoot=false;
};
nativeBuildInputs = [ makeWrapper ];
buildInputs = [ ncurses libX11 libXaw libXt libXext libXmu ];
sourceRoot = "source/Sil/src";
makefile = "Makefile.std";
prePatch = ''
# Allow usage of ANGBAND_PATH
substituteInPlace config.h --replace "#define FIXED_PATHS" ""
'';
preConfigure = ''
buildFlagsArray+=("LIBS=-lXaw -lXext -lSM -lICE -lXmu -lXt -lX11 -lncurses")
'';
# Workaround build failure on -fno-common toolchains like upstream
# gcc-10. Otherwise build fails as:
# ld: main.o:/build/source/Sil/src/externs.h:57: multiple definition of
# `mini_screenshot_char'; variable.o:/build/source/Sil/src/externs.h:57: first defined here
NIX_CFLAGS_COMPILE = "-fcommon";
installPhase = ''
# the makefile doesn't have a sensible install target, so we hav to do it ourselves
mkdir -p $out/bin
cp sil $out/bin/sil
# Wrap the program to set a user-local ANGBAND_PATH, and run the setup script to copy files into place
# We could just use the options for a user-local save and scores dir, but it tried to write to the
# lib directory anyway, so we might as well give everyone a copy
wrapProgram $out/bin/sil \
--run "set -u" \
--run "export ANGBAND_PATH=\$HOME/.sil" \
--run "${setup} ${src}/Sil/lib"
'';
meta = {
description = "A rouge-like game set in the first age of Middle-earth";
longDescription = ''
A game of adventure set in the first age of Middle-earth, when the world still
rang with elven song and gleamed with dwarven mail.
Walk the dark halls of Angband. Slay creatures black and fell. Wrest a shining
Silmaril from Morgoths iron crown.
'';
homepage = "http://www.amirrorclear.net/flowers/game/sil/index.html";
license = lib.licenses.gpl2;
maintainers = [ lib.maintainers.michaelpj ];
platforms = lib.platforms.linux;
};
}