openjk: add darwin support (#462784)
This commit is contained in:
@@ -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 ];
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user