shithub: m8c

Download patch

ref: 4f1342e94e588f029d0ce3ac7b2e21dab1ca0b3e
parent: 3aaae53b1bb71f78001c655ec573dc60e6c5df91
parent: c47c0c5f2374c8af0d0344f824308a86e1e92643
author: Jonne Kokkonen <jonne.kokkonen@gmail.com>
date: Wed Mar 8 05:04:23 EST 2023

Merge pull request #96 from v3rm0n/cmake

Add CMake configuration

--- a/.gitignore
+++ b/.gitignore
@@ -11,3 +11,5 @@
 compile_commands.json
 .clangd
 result*
+cmake-build-debug
+.idea
--- /dev/null
+++ b/CMakeLists.txt
@@ -1,0 +1,79 @@
+cmake_minimum_required(VERSION 3.15)
+
+project(m8c LANGUAGES C)
+
+set(APP_NAME m8c)
+
+find_package(PkgConfig REQUIRED)
+
+pkg_check_modules(SDL2 REQUIRED sdl2)
+if (USE_LIBUSB)
+    pkg_check_modules(LIBUSB REQUIRED libusb-1.0)
+    link_directories(${SDL2_LIBRARY_DIRS} ${LIBUSB_LIBRARY_DIRS})
+    add_compile_definitions(USE_LIBUSB)
+else ()
+    pkg_check_modules(LIBSERIALPORT REQUIRED libserialport)
+    link_directories(${SDL2_LIBRARY_DIRS} ${LIBSERIALPORT_LIBRARY_DIRS})
+endif (USE_LIBUSB)
+
+string(CONCAT FILE_CONTENT "#include <SDL.h>")
+
+file(READ inline_font.h INLINE_FONT_HEADER)
+string(CONCAT FILE_CONTENT ${FILE_CONTENT} "${INLINE_FONT_HEADER}")
+
+file(STRINGS inprint2.c INPRINT_C)
+
+unset(ModifiedContents)
+foreach (Line ${INPRINT_C})
+    if (NOT "${Line}" MATCHES "^#include")
+        set(ModifiedContents "${ModifiedContents}${Line}\n")
+    endif ()
+endforeach ()
+
+string(CONCAT FILE_CONTENT "${FILE_CONTENT}" "${ModifiedContents}")
+
+file(WRITE font.c "${FILE_CONTENT}")
+
+file(GLOB m8c_SRC "*.h" "*.c")
+
+list(FILTER m8c_SRC EXCLUDE REGEX ".*inprint2\\.c$")
+
+set(MACOS_CONTENTS "${CMAKE_CURRENT_SOURCE_DIR}/macos/m8c.app/Contents")
+
+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(${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(${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 ()
+
--