summaryrefslogtreecommitdiff
path: root/games
diff options
context:
space:
mode:
authorAlexey Dokuchaev <danfe@FreeBSD.org>2020-12-03 08:53:06 +0000
committerAlexey Dokuchaev <danfe@FreeBSD.org>2020-12-03 08:53:06 +0000
commit702e46d5c2d39766261dde59a5d91e5f495c8919 (patch)
treed9e76f942c210078adb4aa4e9088527b25095d6b /games
parentaudio/geonkick-lv2: Update 2.5.0 -> 2.5.1 (diff)
- 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
Notes
Notes: svn path=/head/; revision=556892
Diffstat (limited to 'games')
-rw-r--r--games/Makefile1
-rw-r--r--games/slade/Makefile54
-rw-r--r--games/slade/distinfo3
-rw-r--r--games/slade/files/patch-src_CMakeLists.txt33
-rw-r--r--games/slade/files/patch-src_MainEditor_UI_EntryPanel_AudioEntryPanel.cpp132
-rw-r--r--games/slade/files/patch-src_MainEditor_UI_EntryPanel_AudioEntryPanel.h12
-rw-r--r--games/slade/pkg-descr13
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/