From 1a0f61f6d8e5796cc19c279209871dc595bc9182 Mon Sep 17 00:00:00 2001 From: Přemysl Eric Janouch Date: Mon, 23 Feb 2026 23:54:33 +0100 Subject: Add an AppKit user interface When enabled, the build will create an application bundle. --- CMakeLists.txt | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 93df5e8..d070f6e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -77,6 +77,15 @@ if (WITH_X11) list (APPEND extra_libraries ${x11_LIBRARIES}) endif () +add_option (WITH_APPKIT "Build as a bundle with AppKit support" "${APPLE}") +if (WITH_APPKIT) + enable_language (OBJC) + set (CMAKE_OBJC_FLAGS + "${CMAKE_OBJC_FLAGS} -std=gnu99 -Wall -Wextra -Wno-unused-function") + list (APPEND extra_libraries + "-framework AppKit" "-framework CoreFoundation") +endif () + include_directories (${Unistring_INCLUDE_DIRS} ${Ncursesw_INCLUDE_DIRS} ${Termo_INCLUDE_DIRS} ${curl_INCLUDE_DIRS} ${fftw_INCLUDE_DIRS} ${libpulse_INCLUDE_DIRS} ${x11_INCLUDE_DIRS}) @@ -120,6 +129,18 @@ add_custom_command (OUTPUT ${actions} # Build the main executable and link it add_executable (${PROJECT_NAME} ${PROJECT_NAME}.c ${actions}) +if (WITH_APPKIT) + set_source_files_properties (${PROJECT_NAME}.c PROPERTIES LANGUAGE OBJC) + set_target_properties (${PROJECT_NAME} PROPERTIES MACOSX_BUNDLE TRUE) + + set (MACOSX_BUNDLE_GUI_IDENTIFIER name.janouch.${PROJECT_NAME}) + set (MACOSX_BUNDLE_ICON_FILE ${PROJECT_NAME}.icns) + + include (IconUtils) + icon_to_icns (${PROJECT_SOURCE_DIR}/${PROJECT_NAME}.svg + "${MACOSX_BUNDLE_ICON_FILE}" icon) + target_sources (${PROJECT_NAME} PRIVATE ${icon}) +endif () target_link_libraries (${PROJECT_NAME} ${Unistring_LIBRARIES} ${Ncursesw_LIBRARIES} ${Termo_LIBRARIES} ${curl_LIBRARIES} ${extra_libraries}) -- cgit v1.3.1