openjk: add darwin support (#462784)

This commit is contained in:
Aleksana
2025-12-02 05:38:19 +00:00
committed by GitHub
+67 -25
View File
@@ -71,6 +71,8 @@ stdenv.mkDerivation {
outputs = [
"out"
]
++ lib.optionals stdenv.hostPlatform.isLinux [
"openjo"
"openja"
];
@@ -83,40 +85,80 @@ stdenv.mkDerivation {
"-DBuildJK2SPEngine:BOOL=ON"
"-DBuildJK2SPGame:BOOL=ON"
"-DBuildJK2SPRdVanilla:BOOL=ON"
]
# Otherwise will fall with `not found <fp.h>`
++ lib.optionals stdenv.hostPlatform.isDarwin [
"-DUseInternalJPEG:BOOL=OFF"
"-DUseInternalPNG:BOOL=OFF"
];
postInstall = ''
mkdir -p $out/bin $openja/bin $openjo/bin
mkdir -p $openja/share/applications $openjo/share/applications
mkdir -p $openja/share/icons/hicolor/128x128/apps $openjo/share/icons/hicolor/128x128/apps
mkdir -p $openja/opt $openjo/opt
mv $out/opt/JediAcademy $openja/opt/
mv $out/opt/JediOutcast $openjo/opt/
jaPrefix=$openja/opt/JediAcademy
joPrefix=$openjo/opt/JediOutcast
postInstall =
if stdenv.hostPlatform.isLinux then
''
mkdir -p $out/bin $openja/bin $openjo/bin
mkdir -p $openja/share/applications $openjo/share/applications
mkdir -p $openja/share/icons/hicolor/128x128/apps $openjo/share/icons/hicolor/128x128/apps
mkdir -p $openja/opt $openjo/opt
mv $out/opt/JediAcademy $openja/opt/
mv $out/opt/JediOutcast $openjo/opt/
jaPrefix=$openja/opt/JediAcademy
joPrefix=$openjo/opt/JediOutcast
makeWrapper $jaPrefix/openjk.* $openja/bin/jamp --chdir "$jaPrefix"
makeWrapper $jaPrefix/openjk_sp.* $openja/bin/jasp --chdir "$jaPrefix"
makeWrapper $jaPrefix/openjkded.* $openja/bin/openjkded --chdir "$jaPrefix"
makeWrapper $joPrefix/openjo_sp.* $openjo/bin/josp --chdir "$joPrefix"
makeWrapper $jaPrefix/openjk.* $openja/bin/jamp --chdir "$jaPrefix"
makeWrapper $jaPrefix/openjk_sp.* $openja/bin/jasp --chdir "$jaPrefix"
makeWrapper $jaPrefix/openjkded.* $openja/bin/openjkded --chdir "$jaPrefix"
makeWrapper $joPrefix/openjo_sp.* $openjo/bin/josp --chdir "$joPrefix"
cp $src/shared/icons/OpenJK_Icon_128.png $openjo/share/icons/hicolor/128x128/apps
cp $src/shared/icons/OpenJK_Icon_128.png $openja/share/icons/hicolor/128x128/apps
ln -s ${jamp}/share/applications/* $openja/share/applications
ln -s ${jasp}/share/applications/* $openja/share/applications
ln -s ${josp}/share/applications/* $openjo/share/applications
ln -s $openja/bin/* $out/bin
ln -s $openjo/bin/* $out/bin
rm -rf $out/opt
cp $src/shared/icons/OpenJK_Icon_128.png $openjo/share/icons/hicolor/128x128/apps
cp $src/shared/icons/OpenJK_Icon_128.png $openja/share/icons/hicolor/128x128/apps
ln -s ${jamp}/share/applications/* $openja/share/applications
ln -s ${jasp}/share/applications/* $openja/share/applications
ln -s ${josp}/share/applications/* $openjo/share/applications
ln -s $openja/bin/* $out/bin
ln -s $openjo/bin/* $out/bin
rm -rf $out/opt
''
else if stdenv.hostPlatform.isDarwin then
''
mkdir -p $out/Applications $out/bin
mv $out/opt/JediOutcast/openjo_sp.*.app $out/Applications/openjo_sp.app
mv $out/opt/JediAcademy/openjk.*.app $out/Applications/openjk.app
mv $out/opt/JediAcademy/openjk_sp.*.app $out/Applications/openjk_sp.app
mv $out/opt/JediAcademy/openjkded.* $out/bin/openjkded
rm -rf $out/opt
makeWrapper $out/Applications/openjk.app/Contents/MacOS/openjk.* $out/bin/openjk \
--chdir $out/Applications/openjk.app/Contents/MacOS/
makeWrapper $out/Applications/openjk_sp.app/Contents/MacOS/openjk_sp.* $out/bin/openjk_sp \
--chdir $out/Applications/openjk_sp.app/Contents/MacOS/
makeWrapper $out/Applications/openjo_sp.app/Contents/MacOS/openjo_sp.* $out/bin/openjo_sp \
--chdir $out/Applications/openjo_sp.app/Contents/MacOS/
''
else
throw "unsupported system";
# CMake is copying libraries, but their links are needed
postFixup = lib.optionalString stdenv.hostPlatform.isDarwin ''
for app in openjk openjk_sp openjo_sp; do
pushd $out/Applications/$app.app/Contents/Frameworks/
rm *.dylib
ln -s ${SDL2}/lib/libSDL2.dylib libSDL2-2.0.0.dylib
ln -s ${zlib}/lib/libz.dylib libz.dylib
popd
done
'';
passthru.updateScript = unstableGitUpdater { };
meta = with lib; {
meta = {
description = "Open-source engine for Star Wars Jedi Academy game";
homepage = "https://github.com/JACoders/OpenJK";
license = licenses.gpl2Only;
platforms = platforms.linux;
maintainers = [ ];
license = lib.licenses.gpl2Only;
platforms = with lib.platforms; linux ++ darwin;
maintainers = with lib.maintainers; [ r4v3n6101 ];
};
}