Files
haikuports/media-sound/milkytracker/patches/milkytracker-1.05.01.patchset
2024-12-17 22:21:14 +01:00

359 lines
10 KiB
Plaintext

From 5de26f8643d15b0ddfc8042bd7a21ab4f3285839 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= <jerome.duval@gmail.com>
Date: Tue, 17 Dec 2024 21:27:39 +0100
Subject: Support Haiku in the CMake build
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b05e3da..76e0546 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -155,6 +155,10 @@ elseif(WIN32)
# Windows MIDI support requires no external libraries
message(STATUS "Enabled MIDI support (WinMM)")
add_subdirectory(src/midi)
+elseif(HAIKU)
+ # Haiku MIDI support requires no external libraries
+ message(STATUS "Enabled MIDI support (Haiku)")
+ add_subdirectory(src/midi)
else()
# Workaround for SDL bug #3295, which occurs in SDL2 <2.0.5
# https://bugzilla.libsdl.org/show_bug.cgi?id=3295
diff --git a/src/midi/CMakeLists.txt b/src/midi/CMakeLists.txt
index 8481d15..ceb850e 100644
--- a/src/midi/CMakeLists.txt
+++ b/src/midi/CMakeLists.txt
@@ -80,6 +80,25 @@ elseif(WIN32)
)
target_link_libraries(midi PUBLIC winmm)
+elseif(HAIKU)
+ target_sources(midi PRIVATE
+ # Sources
+ haiku/MidiSetup.cpp
+ haiku/MilkyMidiConsumer.cpp
+
+ # Headers
+ haiku/MidiSetup.h
+ haiku/MilkyMidiConsumer.h
+ )
+
+ target_include_directories(midi
+ PUBLIC
+ ${CMAKE_CURRENT_SOURCE_DIR}/haiku
+ PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}/../ppui/osinterface/posix
+ )
+
+ target_link_libraries(midi PUBLIC midi2)
else()
target_sources(midi PRIVATE
# Sources
diff --git a/src/milkyplay/CMakeLists.txt b/src/milkyplay/CMakeLists.txt
index 81f70c4..9c3f886 100644
--- a/src/milkyplay/CMakeLists.txt
+++ b/src/milkyplay/CMakeLists.txt
@@ -198,6 +198,24 @@ elseif(WIN32)
message("RtAudio support disabled (RtAudio unavailable)")
endif()
target_link_libraries(milkyplay PRIVATE winmm dsound)
+elseif(HAIKU)
+ target_sources(milkyplay
+ PRIVATE
+ # Sources
+ drivers/haiku/AudioDriver_Haiku.cpp
+
+ # Headers
+ drivers/haiku/AudioDriver_Haiku.h
+ )
+ target_include_directories(milkyplay
+ PRIVATE
+ drivers/haiku
+ )
+ target_link_libraries(milkyplay
+ PRIVATE
+ media
+ )
+ message(STATUS "Enabled Haiku Audio support")
else()
target_compile_definitions(milkyplay PRIVATE -DDRIVER_UNIX)
diff --git a/src/ppui/CMakeLists.txt b/src/ppui/CMakeLists.txt
index df80970..899b545 100644
--- a/src/ppui/CMakeLists.txt
+++ b/src/ppui/CMakeLists.txt
@@ -102,12 +102,19 @@ add_library(ppui STATIC
VirtualKeys.h
)
-target_include_directories(ppui
- PUBLIC
- .
- PRIVATE
- osinterface
-)
+if (HAIKU)
+ target_include_directories(ppui
+ PRIVATE
+ osinterface
+ )
+else()
+ target_include_directories(ppui
+ PUBLIC
+ .
+ PRIVATE
+ osinterface
+ )
+endif()
target_link_libraries(ppui PRIVATE osinterface)
@@ -136,6 +143,32 @@ elseif(WIN32)
PUBLIC
win32
)
+elseif(HAIKU)
+ target_sources(ppui
+ PRIVATE
+ haiku/DisplayDevice_Haiku.cpp
+ haiku/DisplayDevice_Haiku.h
+ haiku/MilkyView.cpp
+ haiku/MilkyView.h
+ haiku/MilkyWindow.cpp
+ haiku/MilkyWindow.h
+ haiku/KeyCodeMap.cpp
+ haiku/KeyCodeMap.h
+ )
+ target_include_directories(ppui
+ PRIVATE
+ ${PROJECT_SOURCE_DIR}/src/milkyplay
+ ${PROJECT_SOURCE_DIR}/src/ppui/osinterface
+ ${PROJECT_SOURCE_DIR}/src/ppui/osinterface/haiku
+ ${PROJECT_SOURCE_DIR}/src/ppui/osinterface/posix
+ ${PROJECT_SOURCE_DIR}/src/ppui/haiku
+ ${PROJECT_SOURCE_DIR}/src/tracker
+ ${PROJECT_SOURCE_DIR}/src/tracker/haiku
+ PUBLIC
+ haiku
+ osinterface/posix
+ )
+ target_compile_options(ppui PRIVATE -iquote ${PROJECT_SOURCE_DIR}/src/ppui)
else()
target_sources(ppui
PRIVATE
diff --git a/src/ppui/haiku/MilkyWindow.h b/src/ppui/haiku/MilkyWindow.h
index fd1891b..78e9156 100644
--- a/src/ppui/haiku/MilkyWindow.h
+++ b/src/ppui/haiku/MilkyWindow.h
@@ -58,7 +58,7 @@ public:
BHandler* target);
void ForwardEvents();
- status_t RaiseEvent(PPEvent* event);
+ void RaiseEvent(PPEvent* event);
private:
static status_t _EventThread(void* data);
@@ -79,7 +79,7 @@ private:
};
-inline status_t
+inline void
MilkyWindow::RaiseEvent(PPEvent* event)
{
status_t status = write_port_etc(fEventPort, 0, event, sizeof(PPEvent),
diff --git a/src/ppui/osinterface/CMakeLists.txt b/src/ppui/osinterface/CMakeLists.txt
index 6452f51..de18ac6 100644
--- a/src/ppui/osinterface/CMakeLists.txt
+++ b/src/ppui/osinterface/CMakeLists.txt
@@ -33,12 +33,19 @@ add_library(osinterface STATIC
PPSystem.h
)
-target_include_directories(osinterface
- PUBLIC
- ${CMAKE_CURRENT_SOURCE_DIR}
- PRIVATE
- ${CMAKE_CURRENT_SOURCE_DIR}/..
-)
+if (HAIKU)
+ target_include_directories(osinterface
+ PUBLIC
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ )
+else()
+ target_include_directories(osinterface
+ PUBLIC
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}/..
+ )
+endif()
# Add platform-specific sources and include paths
if(APPLE)
@@ -86,6 +93,35 @@ elseif(WIN32)
PUBLIC
win32
)
+elseif(HAIKU)
+ target_sources(osinterface
+ PRIVATE
+ # Sources
+ PPPathFactory.cpp
+ posix/PPMutex.cpp
+ posix/PPPath_POSIX.cpp
+ posix/PPSystem_POSIX.cpp
+ haiku/SynchronousFilePanel.cpp
+ haiku/PPMessageBox_Haiku.cpp
+ haiku/PPOpenPanel_Haiku.cpp
+ haiku/PPQuitSaveAlert_Haiku.cpp
+ haiku/PPSavePanel_Haiku.cpp
+ haiku/WaitView.cpp
+ haiku/WaitWindow.cpp
+
+ # Headers
+ posix/PPMutex.h
+ posix/PPPath_POSIX.h
+ posix/PPSystemString_POSIX.h
+ posix/PPSystem_POSIX.h
+ )
+ target_include_directories(osinterface
+ PRIVATE
+ ${PROJECT_SOURCE_DIR}/src/ppui/haiku
+ ${PROJECT_SOURCE_DIR}/src/tracker/haiku
+ posix
+ )
+ target_compile_options(osinterface PRIVATE -iquote ${PROJECT_SOURCE_DIR}/src/ppui)
else()
target_sources(osinterface
PRIVATE
diff --git a/src/tracker/CMakeLists.txt b/src/tracker/CMakeLists.txt
index 6f3c0ab..03d8e5a 100644
--- a/src/tracker/CMakeLists.txt
+++ b/src/tracker/CMakeLists.txt
@@ -291,6 +291,29 @@ elseif(WIN32)
win32/ThreadTimer.h
win32/Win32_resource.h
)
+elseif(HAIKU)
+ target_sources(tracker PRIVATE
+ haiku/Haiku_main.cpp
+ haiku/Tools.cpp
+ haiku/MilkyApplication.cpp
+ )
+
+ target_include_directories(tracker
+ PRIVATE
+ ${PROJECT_SOURCE_DIR}/src/midi/haiku
+ )
+ target_compile_options(tracker PRIVATE -iquote ${PROJECT_SOURCE_DIR}/src/ppui)
+
+
+ add_executable(settings
+ haiku/MilkySettings/main.cpp
+ haiku/MilkySettings/InterfaceSettingsView.cpp
+ haiku/MilkySettings/MidiSettingsView.cpp
+ haiku/MilkySettings/MilkySettingsApplication.cpp
+ haiku/MilkySettings/SettingsWindow.cpp
+ )
+
+ set_target_properties(settings PROPERTIES OUTPUT_NAME MilkySettings)
else()
target_sources(tracker PRIVATE
# Sources
@@ -358,6 +381,10 @@ elseif(WIN32)
set_target_properties(tracker PROPERTIES WIN32_EXECUTABLE TRUE)
target_link_libraries(tracker midi)
+elseif(HAIKU)
+ target_link_libraries(tracker midi be libtracker.so)
+
+ target_link_libraries(settings midi2 be)
else()
if(ALSA_FOUND AND RTMIDI_FOUND)
target_compile_definitions(tracker PRIVATE -DHAVE_LIBRTMIDI)
@@ -387,3 +414,7 @@ else()
endif()
install(TARGETS tracker DESTINATION ${INSTALL_DEST})
+
+if(HAIKU)
+ install(TARGETS settings DESTINATION ${INSTALL_DEST})
+endif()
diff --git a/src/tracker/Tracker.h b/src/tracker/Tracker.h
index 1155df2..9cd10d4 100644
--- a/src/tracker/Tracker.h
+++ b/src/tracker/Tracker.h
@@ -98,7 +98,7 @@ private:
PanelTop_Sample,
PanelTop_Instrument
};
- PanelRotate panelrotate = PanelRotate::PanelTop;
+ PanelRotate panelrotate = PanelTop;
// I've replaced some constants
#ifndef __LOWRES__
diff --git a/src/tracker/TrackerKeyboard.cpp b/src/tracker/TrackerKeyboard.cpp
index 82b1bbe..340fa3d 100644
--- a/src/tracker/TrackerKeyboard.cpp
+++ b/src/tracker/TrackerKeyboard.cpp
@@ -451,18 +451,18 @@ void Tracker::eventKeyDownBinding_RotatePanels()
return;
switch( panelrotate ){
- case PanelRotate::PanelTop:{
- panelrotate = PanelRotate::PanelTop_Sample;
+ case PanelTop:{
+ panelrotate = PanelTop_Sample;
eventKeyDownBinding_InvokeSectionSamples();
break;
}
- case PanelRotate::PanelTop_Sample:{
- panelrotate = PanelRotate::PanelTop_Instrument;
+ case PanelTop_Sample:{
+ panelrotate = PanelTop_Instrument;
eventKeyDownBinding_InvokeSectionInstruments();
break;
}
- case PanelRotate::PanelTop_Instrument:{
- panelrotate = PanelRotate::PanelTop;
+ case PanelTop_Instrument:{
+ panelrotate = PanelTop;
sectionSwitcher->showBottomSection(SectionSwitcher::ActiveBottomSectionNone);
break;
}
--
2.45.2
From 24d6d935b10887f36870004f788ca21a406ead3d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= <jerome.duval@gmail.com>
Date: Tue, 17 Dec 2024 22:03:52 +0100
Subject: rdef version variable
diff --git a/src/tracker/haiku/MilkyTracker.rdef b/src/tracker/haiku/MilkyTracker.rdef
index 7544e36..0f99554 100644
--- a/src/tracker/haiku/MilkyTracker.rdef
+++ b/src/tracker/haiku/MilkyTracker.rdef
@@ -4,10 +4,10 @@ resource app_flags B_MULTIPLE_LAUNCH;
resource app_version
{
- major = 0,
- middle = 90,
- minor = 85,
- variety = B_APPV_DEVELOPMENT,
+ major = @MAJOR@,
+ middle = @MIDDLE@,
+ minor = @MINOR@,
+ variety = B_APPV_FINAL,
internal = 0,
short_info = "MilkyTracker",
long_info = "MilkyTracker"
--
2.45.2