mirror of
https://github.com/yann64/haikuports.git
synced 2026-04-08 21:00:05 +02:00
359 lines
10 KiB
Plaintext
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
|
|
|