ref: c47c0c5f2374c8af0d0344f824308a86e1e92643
parent: 7e379e0d6e2f2899055a2698a0c92dc1f193311b
author: Maido Käära <maido@producement.com>
date: Sat Feb 25 07:41:36 EST 2023
Add MacOS support
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,7 +1,9 @@
cmake_minimum_required(VERSION 3.15)
-project(m8c C)
+project(m8c LANGUAGES C)
+set(APP_NAME m8c)
+
find_package(PkgConfig REQUIRED)
pkg_check_modules(SDL2 REQUIRED sdl2)
@@ -22,11 +24,11 @@
file(STRINGS inprint2.c INPRINT_C)
unset(ModifiedContents)
-foreach(Line ${INPRINT_C})- if(NOT "${Line}" MATCHES "^#include")+foreach (Line ${INPRINT_C})+ if (NOT "${Line}" MATCHES "^#include") set(ModifiedContents "${ModifiedContents}${Line}\n")- endif()
-endforeach()
+ endif ()
+endforeach ()
string(CONCAT FILE_CONTENT "${FILE_CONTENT}" "${ModifiedContents}")@@ -36,19 +38,42 @@
list(FILTER m8c_SRC EXCLUDE REGEX ".*inprint2\\.c$")
-add_executable(m8c ${m8c_SRC})+set(MACOS_CONTENTS "${CMAKE_CURRENT_SOURCE_DIR}/macos/m8c.app/Contents")-target_link_libraries(m8c ${SDL2_LIBRARIES})-target_include_directories(m8c PUBLIC ${SDL2_INCLUDE_DIRS})-target_compile_options(m8c PUBLIC ${SDL2_CFLAGS_OTHER})+set(APP_ICON ${MACOS_CONTENTS}/Resources/m8c.icns)+set_source_files_properties(${APP_ICON} PROPERTIES+ MACOSX_PACKAGE_LOCATION "Resources")
+add_executable(${APP_NAME} WIN32 MACOSX_BUNDLE ${APP_ICON} ${m8c_SRC})+
if (USE_LIBUSB)
- target_link_libraries(m8c ${LIBUSB_LIBRARIES})- target_include_directories(m8c PUBLIC ${LIBUSB_INCLUDE_DIRS})- target_compile_options(m8c PUBLIC ${LIBUSB_CFLAGS_OTHER})+ target_link_libraries(${APP_NAME} ${SDL2_LIBRARIES} ${LIBUSB_LIBRARIES})+ target_include_directories(${APP_NAME} PUBLIC ${SDL2_INCLUDE_DIRS} ${LIBUSB_INCLUDE_DIRS})+ target_compile_options(${APP_NAME} PUBLIC ${SDL2_CFLAGS_OTHER} ${LIBUSB_CFLAGS_OTHER})else ()
- target_link_libraries(m8c ${LIBSERIALPORT_LIBRARIES})- target_include_directories(m8c PUBLIC ${LIBSERIALPORT_INCLUDE_DIRS})- target_compile_options(m8c PUBLIC ${LIBSERIALPORT_CFLAGS_OTHER})+ target_link_libraries(${APP_NAME} ${SDL2_LIBRARIES} ${LIBSERIALPORT_LIBRARIES})+ target_include_directories(${APP_NAME} PUBLIC ${SDL2_INCLUDE_DIRS} ${LIBSERIALPORT_INCLUDE_DIRS})+ target_compile_options(${APP_NAME} PUBLIC ${SDL2_CFLAGS_OTHER} ${LIBSERIALPORT_CFLAGS_OTHER})+endif ()
+
+if (APPLE)
+ # Destination paths below are relative to ${CMAKE_INSTALL_PREFIX}+ install(TARGETS ${APP_NAME}+ BUNDLE DESTINATION . COMPONENT Runtime
+ RUNTIME DESTINATION bin COMPONENT Runtime
+ )
+
+ set_target_properties(${APP_NAME} PROPERTIES+ MACOSX_BUNDLE_BUNDLE_NAME "m8c"
+ MACOSX_BUNDLE_BUNDLE_VERSION "1"
+ MACOSX_BUNDLE_GUI_IDENTIFIER "com.laamaa.m8c"
+ MACOSX_BUNDLE_SHORT_VERSION_STRING "1.0"
+ MACOSX_BUNDLE_COPYRIGHT "Copyright © 2021 laamaa. All rights reserved."
+ MACOSX_BUNDLE_ICON_FILE "m8c.icns")
+
+ set(APPS "\${CMAKE_INSTALL_PREFIX}/${APP_NAME}.app")+
+ install(CODE "include(BundleUtilities)
+ fixup_bundle(\"${APPS}\" \"\" \"\")")endif ()
--
⑨