diff options
author | Alexey Dokuchaev <danfe@FreeBSD.org> | 2020-12-03 16:53:06 +0800 |
---|---|---|
committer | Alexey Dokuchaev <danfe@FreeBSD.org> | 2020-12-03 16:53:06 +0800 |
commit | 702e46d5c2d39766261dde59a5d91e5f495c8919 (patch) | |
tree | d9e76f942c210078adb4aa4e9088527b25095d6b /games | |
parent | 98b3386ac3aa4b3ac3909c9987cf27256004dc07 (diff) | |
download | freebsd-ports-gnome-702e46d5c2d39766261dde59a5d91e5f495c8919.tar.gz freebsd-ports-gnome-702e46d5c2d39766261dde59a5d91e5f495c8919.tar.zst freebsd-ports-gnome-702e46d5c2d39766261dde59a5d91e5f495c8919.zip |
- Resurrect SLADE and update to version 3.1.12
- C++14 is now required to build the project
- Register explicit dependencies on cURL and FreeType
- Do not try to force GTK 2.0, no support in wxWidgets
Diffstat (limited to 'games')
-rw-r--r-- | games/Makefile | 1 | ||||
-rw-r--r-- | games/slade/Makefile | 54 | ||||
-rw-r--r-- | games/slade/distinfo | 3 | ||||
-rw-r--r-- | games/slade/files/patch-src_CMakeLists.txt | 33 | ||||
-rw-r--r-- | games/slade/files/patch-src_MainEditor_UI_EntryPanel_AudioEntryPanel.cpp | 132 | ||||
-rw-r--r-- | games/slade/files/patch-src_MainEditor_UI_EntryPanel_AudioEntryPanel.h | 12 | ||||
-rw-r--r-- | games/slade/pkg-descr | 13 |
7 files changed, 248 insertions, 0 deletions
diff --git a/games/Makefile b/games/Makefile index 5a45b9a39deb..8368b92d87e1 100644 --- a/games/Makefile +++ b/games/Makefile @@ -883,6 +883,7 @@ SUBDIR += sjeng SUBDIR += ski SUBDIR += sl + SUBDIR += slade SUBDIR += slashem-tty SUBDIR += slump SUBDIR += sokoban diff --git a/games/slade/Makefile b/games/slade/Makefile new file mode 100644 index 000000000000..a7400e954f89 --- /dev/null +++ b/games/slade/Makefile @@ -0,0 +1,54 @@ +# Created by: Alexey Dokuchaev <danfe@FreeBSD.org> +# $FreeBSD$ + +PORTNAME= slade +PORTVERSION= 3.1.12 +CATEGORIES= games + +MAINTAINER= danfe@FreeBSD.org +COMMENT= Modern editor for Doom-engine based games and source ports + +LICENSE= GPLv2 + +BUILD_DEPENDS= zip:archivers/zip +LIB_DEPENDS= libcurl.so:ftp/curl \ + libfreeimage.so:graphics/freeimage \ + libfreetype.so:print/freetype2 \ + libftgl.so:graphics/ftgl \ + libsfml-system.so:devel/sfml + +USE_GITHUB= yes +GH_ACCOUNT= sirjuddington +GH_PROJECT= ${PORTNAME:tu} + +USES= cmake compiler:c++14-lang gl pkgconfig +USE_WX= 3.0+ +USE_GL= gl glew glu + +CMAKE_ARGS= -DwxWidgets_CONFIG_EXECUTABLE:FILEPATH="${WX_CONFIG}" \ + -DNO_WEBVIEW:BOOL=ON + +PLIST_FILES= bin/slade share/slade3/slade.pk3 \ + share/applications/net.mancubus.SLADE.desktop \ + share/metainfo/net.mancubus.SLADE.metainfo.xml \ + share/icons/net.mancubus.SLADE.png + +OPTIONS_DEFINE= FLUIDSYNTH +OPTIONS_DEFAULT= FLUIDSYNTH + +FLUIDSYNTH_LIB_DEPENDS= libfluidsynth.so:audio/fluidsynth +FLUIDSYNTH_RUN_DEPENDS= ${LOCALBASE}/share/sounds/sf2/FluidR3_GM.sf2:audio/fluid-soundfont +FLUIDSYNTH_CMAKE_OFF= -DNO_FLUIDSYNTH:BOOL=ON + +post-patch: + @${REINPLACE_CMD} -e 's,"alsa","oss", ; \ + /share\/sounds\/sf2/s,/usr,${LOCALBASE},g' \ + ${WRKSRC}/src/Audio/MIDIPlayer.cpp + @${REINPLACE_CMD} -e 's,OpenBSD,${OPSYS},' \ + ${WRKSRC}/src/External/zreaders/portable_endian.h + @${REINPLACE_CMD} -e 's,wxVSCROLL,static_cast<long>(&),' \ + ${WRKSRC}/src/MapEditor/UI/Dialogs/ActionSpecialDialog.cpp + @${REINPLACE_CMD} -e 's,(new_print,&.ToStdString(),' \ + ${WRKSRC}/src/Scripting/Lua.cpp + +.include <bsd.port.mk> diff --git a/games/slade/distinfo b/games/slade/distinfo new file mode 100644 index 000000000000..5c2a895fed06 --- /dev/null +++ b/games/slade/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1590449690 +SHA256 (sirjuddington-SLADE-3.1.12_GH0.tar.gz) = 44645ff43c6d0b44e7f85ac25f15ca50749843f9ed230736d0a39c46af9f7c31 +SIZE (sirjuddington-SLADE-3.1.12_GH0.tar.gz) = 5883591 diff --git a/games/slade/files/patch-src_CMakeLists.txt b/games/slade/files/patch-src_CMakeLists.txt new file mode 100644 index 000000000000..3a45e417e119 --- /dev/null +++ b/games/slade/files/patch-src_CMakeLists.txt @@ -0,0 +1,33 @@ +--- src/CMakeLists.txt.orig 2018-11-25 00:21:04 UTC ++++ src/CMakeLists.txt +@@ -16,7 +16,11 @@ unset(WITH_WXPATH CACHE) + set( CL_WX_CONFIG wx-config ) + + if (UNIX OR MINGW) +- execute_process(COMMAND which ${CL_WX_CONFIG} OUTPUT_VARIABLE WX_TOOL OUTPUT_STRIP_TRAILING_WHITESPACE) ++ if(NOT wxWidgets_CONFIG_EXECUTABLE) ++ execute_process(COMMAND which ${CL_WX_CONFIG} OUTPUT_VARIABLE WX_TOOL OUTPUT_STRIP_TRAILING_WHITESPACE) ++ else() ++ set(WX_TOOL ${wxWidgets_CONFIG_EXECUTABLE}) ++ endif() + if (NOT WX_TOOL) + message(FATAL_ERROR + "\nNo functional wx_config script was found in your PATH.\nIs the wxWidgets development package installed?\nIf you built wxWidgets yourself, you can specify the path to your built wx-config executable via WITH_WXPATH\neg. -DWITH_WXPATH=\"/path/to/wx-config/\"" +@@ -52,7 +54,16 @@ if (WX_GTK3) + set(wxWidgets_CONFIG_OPTIONS --toolkit=gtk3) + endif (WX_GTK3) + +-SET(WX_LIBS std aui gl stc richtext propgrid media) ++# Work around find_package(wxWidgets...) inability to detect absence of some ++# optional components (e.g., media) ++find_library(WX_MEDIA wx_gtk2u_media-3.0) ++if (NOT WX_MEDIA) ++ message(STATUS "wx_gtk2u_media-3.0 not found, building without MP3 playback support.") ++else (WX_MEDIA) ++ SET(WX_LIBS ${WX_LIBS} media) ++endif () ++ ++SET(WX_LIBS std aui gl stc richtext propgrid ${WX_LIBS}) + if (NO_WEBVIEW) + SET(WX_LIBS ${WX_LIBS} html) + else (NO_WEBVIEW) diff --git a/games/slade/files/patch-src_MainEditor_UI_EntryPanel_AudioEntryPanel.cpp b/games/slade/files/patch-src_MainEditor_UI_EntryPanel_AudioEntryPanel.cpp new file mode 100644 index 000000000000..6917cddc2bb4 --- /dev/null +++ b/games/slade/files/patch-src_MainEditor_UI_EntryPanel_AudioEntryPanel.cpp @@ -0,0 +1,132 @@ +--- src/MainEditor/UI/EntryPanel/AudioEntryPanel.cpp.orig 2018-11-25 00:21:04 UTC ++++ src/MainEditor/UI/EntryPanel/AudioEntryPanel.cpp +@@ -93,15 +93,17 @@ AudioEntryPanel::AudioEntryPanel(wxWindow* parent) : + LOG_MESSAGE(3, "Windows Media Player installed, using wxMediaCtrl"); + media_ctrl_ = new wxMediaCtrl(this, -1); + } +-#else ++#elif wxUSE_MEDIACTRL + // Create wxMediaCtrl + media_ctrl_ = new wxMediaCtrl(this, -1); ++#else ++ LOG_MESSAGE(1, "wxWidgets is built without media support, MP3 playback disabled."); + #endif + + // Setup sizer + wxGridBagSizer* sizer_gb = new wxGridBagSizer(UI::pad(), UI::pad()); + sizer_main_->AddStretchSpacer(); +-#ifndef __WXOSX__ ++#if wxUSE_MEDIACTRL && !defined(__WXOSX__) + if (media_ctrl_) sizer_main_->Add(media_ctrl_, 0); + #endif + sizer_main_->Add(sizer_gb, 0, wxALIGN_CENTER); +@@ -163,13 +165,17 @@ AudioEntryPanel::AudioEntryPanel(wxWindow* parent) : + sound_->setVolume(snd_volume); + music_->setVolume(snd_volume); + theMIDIPlayer->setVolume(snd_volume); ++#if wxUSE_MEDIACTRL + if (media_ctrl_) media_ctrl_->SetVolume(snd_volume*0.01); ++#endif + mod_->setVolume(snd_volume); + //theGMEPlayer->setVolume(snd_volume); + //theOPLPlayer->setVolume(snd_volume); + + // Disable general entrypanel buttons ++#if wxUSE_MEDIACTRL + if (media_ctrl_) media_ctrl_->Show(false); ++#endif + toolbar_->Show(false); + + // Bind events +@@ -533,6 +539,7 @@ bool AudioEntryPanel::openMod(MemChunk& data) + // ---------------------------------------------------------------------------- + bool AudioEntryPanel::openMedia(string filename) + { ++#if wxUSE_MEDIACTRL + // Attempt to open with wxMediaCtrl + if (media_ctrl_ && media_ctrl_->Load(filename)) + { +@@ -547,6 +554,7 @@ bool AudioEntryPanel::openMedia(string filename) + + return true; + } ++#endif + + return false; + } +@@ -571,8 +579,10 @@ void AudioEntryPanel::startStream() + mod_->play(); break; + case MIDI: + theMIDIPlayer->play(); break; ++#if wxUSE_MEDIACTRL + case Media: + if (media_ctrl_) media_ctrl_->Play(); break; ++#endif + default: + break; + } +@@ -595,8 +605,10 @@ void AudioEntryPanel::stopStream() + mod_->pause(); break; + case MIDI: + theMIDIPlayer->pause(); break; ++#if wxUSE_MEDIACTRL + case Media: + if (media_ctrl_) media_ctrl_->Pause(); break; ++#endif + default: + break; + } +@@ -620,8 +632,10 @@ void AudioEntryPanel::resetStream() + mod_->stop(); break; + case MIDI: + theMIDIPlayer->stop(); break; ++#if wxUSE_MEDIACTRL + case Media: + if (media_ctrl_) media_ctrl_->Stop(); break; ++#endif + default: + break; + } +@@ -823,8 +837,10 @@ void AudioEntryPanel::onTimer(wxTimerEvent& e) + pos = mod_->getPlayingOffset().asMilliseconds(); break; + case MIDI: + pos = theMIDIPlayer->getPosition(); break; ++#if wxUSE_MEDIACTRL + case Media: + if (media_ctrl_) pos = media_ctrl_->Tell(); break; ++#endif + default: + break; + } +@@ -837,7 +853,9 @@ void AudioEntryPanel::onTimer(wxTimerEvent& e) + (audio_type_ == Sound && sound_->getStatus() == sf::Sound::Stopped) || + (audio_type_ == Music && music_->getStatus() == sf::Sound::Stopped) || + (audio_type_ == Mod && mod_->getStatus() == sf::Sound::Stopped) || ++#if wxUSE_MEDIACTRL + (audio_type_ == Media && media_ctrl_ && media_ctrl_->GetState() == wxMEDIASTATE_STOPPED) || ++#endif + (audio_type_ == MIDI && theMIDIPlayer && !theMIDIPlayer->isPlaying())) + { + timer_seek_->Stop(); +@@ -863,8 +881,10 @@ void AudioEntryPanel::onSliderSeekChanged(wxCommandEve + mod_->setPlayingOffset(sf::milliseconds(slider_seek_->GetValue())); break; + case MIDI: + theMIDIPlayer->setPosition(slider_seek_->GetValue()); break; ++#if wxUSE_MEDIACTRL + case Media: + if (media_ctrl_) media_ctrl_->Seek(slider_seek_->GetValue()); break; ++#endif + default: + break; + } +@@ -887,8 +907,10 @@ void AudioEntryPanel::onSliderVolumeChanged(wxCommandE + music_->setVolume(snd_volume); break; + case MIDI: + theMIDIPlayer->setVolume(snd_volume); break; ++#if wxUSE_MEDIACTRL + case Media: + if (media_ctrl_) media_ctrl_->SetVolume(snd_volume*0.01); break; ++#endif + case Mod: + mod_->setVolume(snd_volume); break; + default: diff --git a/games/slade/files/patch-src_MainEditor_UI_EntryPanel_AudioEntryPanel.h b/games/slade/files/patch-src_MainEditor_UI_EntryPanel_AudioEntryPanel.h new file mode 100644 index 000000000000..c82d3e0a1a49 --- /dev/null +++ b/games/slade/files/patch-src_MainEditor_UI_EntryPanel_AudioEntryPanel.h @@ -0,0 +1,12 @@ +--- src/MainEditor/UI/EntryPanel/AudioEntryPanel.h.orig 2018-11-25 00:21:04 UTC ++++ src/MainEditor/UI/EntryPanel/AudioEntryPanel.h +@@ -46,7 +46,9 @@ class AudioEntryPanel : public EntryPanel (private) + wxSlider* slider_seek_ = nullptr; + wxSlider* slider_volume_ = nullptr; + wxTimer* timer_seek_ = nullptr; ++#if wxUSE_MEDIACTRL + wxMediaCtrl* media_ctrl_ = nullptr; ++#endif + wxStaticText* txt_title_ = nullptr; + wxStaticText* txt_track_ = nullptr; + wxTextCtrl* txt_info_ = nullptr; diff --git a/games/slade/pkg-descr b/games/slade/pkg-descr new file mode 100644 index 000000000000..a7e78a780dd7 --- /dev/null +++ b/games/slade/pkg-descr @@ -0,0 +1,13 @@ +SLADE3 is a modern editor for Doom-engine based games and source ports. +It has the ability to view, modify, and write many different game-specific +formats, and even convert between some of them, or from/to other generic +formats such as PNG. + +SLADE3 can be considered a successor to both SLumpEd and SLADE. Some of +its features: + + - Basic archive/resource editing (create/open/save, import/export) + - Simple tabbed interface with copy/paste support + - Many supported game formats (ZIP/PK3, Quake PAK/WAD2, etc.) + +WWW: http://slade.mancubus.net/ |