diff --git a/CMakeLists.txt b/CMakeLists.txt index 6a104c4..5427396 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,6 +3,10 @@ cmake_minimum_required(VERSION 3.11) project(LabSoundGraphToy VERSION 0.1.0 LANGUAGES C CXX) set_property(GLOBAL PROPERTY USE_FOLDERS ON) +include(GNUInstallDirs) +include(CheckIncludeFile) +set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH}) + add_subdirectory(third/LabSound) if (WIN32) @@ -167,9 +171,12 @@ elseif(WIN32) third/nativefiledialog/nfd_win.cpp third/nativefiledialog/nfd_common.c third/nativefiledialog/nfd_common.h) else() + find_package(PkgConfig REQUIRED) + find_package(GTK3 REQUIRED gtk+-3.0) + pkg_check_modules(GTK3 REQUIRED gtk+-3.0) # nb: there is a zenity variant, but haven't had a call for it yet set(NFD third/nativefiledialog/include/nfd.h - third/nativefiledialog/nfd_gtk.cpp third/nativefiledialog/nfd_common.c + third/nativefiledialog/nfd_gtk.c third/nativefiledialog/nfd_common.c third/nativefiledialog/nfd_common.h) endif() @@ -191,6 +198,10 @@ target_compile_definitions(LabSoundGraphToy PRIVATE SOKOL_WIN32_FORCE_MAIN ) +if (GTK3_FOUND) + target_include_directories(LabSoundGraphToy PUBLIC ${GTK3_INCLUDE_DIRS}) +endif () + target_include_directories(LabSoundGraphToy SYSTEM PRIVATE third/imgui PRIVATE third/LabSound/include @@ -226,6 +237,13 @@ elseif (APPLE) "-framework QuartzCore" ) # endif() +else() + set(PLATFORM_LIBS + ${GTK3_LIBRARIES} + "Xi" + "X11" + "Xcursor" + "GL") endif() target_link_libraries(LabSoundGraphToy diff --git a/cmake/FindGTK3.cmake b/cmake/FindGTK3.cmake new file mode 100644 index 0000000..7f34417 --- /dev/null +++ b/cmake/FindGTK3.cmake @@ -0,0 +1,23 @@ +find_package(PkgConfig REQUIRED) +pkg_check_modules(PC_gtk REQUIRED gtk+-3.0) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(GTK3 + REQUIRED_VARS PC_gtk_FOUND + ) + +if (GTK3_FOUND) + add_library(gtk::gtk INTERFACE IMPORTED) + target_link_directories(gtk::gtk + INTERFACE ${PC_gtk_LIBRARY_DIRS} + ) + target_include_directories(gtk::gtk + INTERFACE ${PC_gtk_INCLUDE_DIRS} + ) + target_link_libraries(gtk::gtk + INTERFACE ${PC_gtk_LIBRARIES} + ) + target_compile_options(gtk::gtk + INTERFACE ${PC_gtk_CFLAGS_OTHER} + ) +endif () diff --git a/src/meshula_lab.hpp b/src/meshula_lab.hpp index 67f63af..d694c28 100644 --- a/src/meshula_lab.hpp +++ b/src/meshula_lab.hpp @@ -47,7 +47,7 @@ #elif defined(ML_APPLE) # include #elif defined(ML_NIX) -# include +# include #endif struct ml_String {}; @@ -175,7 +175,7 @@ ml_String* ml_application_executable_path() s->str = nullptr; s->len = 0; char buf[1024] = { 0 }; - ssize_t buf_size = readlink("/proc/self/exe", buff, sizeof(buf)); + ssize_t buf_size = readlink("/proc/self/exe", buf, sizeof(buf)); if (!buf_size || buf_size == sizeof(buf)) return (ml_String*) s; // return an empty string on failure, or unreasonably long path diff --git a/third/LabMidi b/third/LabMidi index c3ca0d1..d8f686c 160000 --- a/third/LabMidi +++ b/third/LabMidi @@ -1 +1 @@ -Subproject commit c3ca0d18d2ff456812cf3bf16d7f45b4cc9dd5bc +Subproject commit d8f686c0b1692558aa73e2875e993b38618b74b7 diff --git a/third/tinyosc b/third/tinyosc index 20c0f2e..ff4c82e 160000 --- a/third/tinyosc +++ b/third/tinyosc @@ -1 +1 @@ -Subproject commit 20c0f2eb6eac2e197b624a4bbbcb80637804bcdb +Subproject commit ff4c82ef11927401ecbf13ccba76ad052ca8f6bb