]> git.ipfire.org Git - thirdparty/json-c.git/commitdiff
Add support for MorphOS 847/head
authorCameron Armstrong (Nightfox) <cameronscottarmstrong@gmail.com>
Fri, 30 Aug 2024 19:57:46 +0000 (03:57 +0800)
committerCameron Armstrong (Nightfox) <cameronscottarmstrong@gmail.com>
Tue, 24 Dec 2024 02:09:50 +0000 (10:09 +0800)
CMakeLists.txt
README.md

index 5266def0bb2244a83737ceb958980c4d012999e1..e599244f1682bbaf2f3a38459ab7f267de969b20 100644 (file)
@@ -69,8 +69,7 @@ option(DISABLE_JSON_PATCH             "Disable JSON patch (RFC6902) support."
 option(NEWLOCALE_NEEDS_FREELOCALE     "Work around newlocale bugs in old FreeBSD by calling freelocale"  OFF)
 option(BUILD_APPS                     "Default to building apps" ON)
 
-if (${CMAKE_SYSTEM_NAME} STREQUAL "AmigaOS")
-    set(AMIGA ON)
+if (AMIGA)
     set(DISABLE_THREAD_LOCAL_STORAGE ON)
     set(ENABLE_THREADING OFF)
     set(BUILD_SHARED_LIBS OFF)
@@ -79,7 +78,6 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "AmigaOS")
     if ($ENV{CROSS_PFX} STREQUAL "m68k-amigaos")
         set(AMIGA_M68K ON)
         set(BUILD_TESTING OFF)
-        message(STATUS "Building for Motorola 68k AmigaOS")
         if (${M68K_CRT} STREQUAL "newlib")
             set(NEWLIB ON)
         elseif(${M68K_CRT} STREQUAL "clib2")
@@ -93,9 +91,19 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "AmigaOS")
         else()
             set(NEWLIB ON)
         endif()
+        message(STATUS "Building for Motorola 68k AmigaOS using CRT: ${M68K_CRT}")
     elseif ($ENV{CROSS_PFX} STREQUAL "ppc-amigaos")
         set(AMIGA_PPC ON)
         message(STATUS "Building for PowerPC AmigaOS")
+    elseif($ENV{CROSS_PFX} STREQUAL "ppc-morphos")
+        set(MORPHOS ON)
+        if (NOIXEMUL)
+            message(STATUS "Building for PowerPC MorphOS without ixemul")
+            set(DISABLE_WERROR ON)
+            set(CMAKE_C_FLAGS           "${CMAKE_C_FLAGS} -noixemul")
+        else()
+            message(STATUS "Building for PowerPC MorphOS with ixemul")
+        endif()
     else()
         message(FATAL_ERROR "Unsupported AmigaOS target")
     endif()
index 4b972d6a1d0e1a38b38689417fef833f9d014fa4..d15fa4132da2615002c8bcb3347c288166bd99c3 100644 (file)
--- a/README.md
+++ b/README.md
@@ -12,7 +12,7 @@ json-c
 5. [Testing](#testing)
 6. [Building with `vcpkg`](#buildvcpkg)
 7. [Building for Android](#android)
-8. [Building for Commodore Amiga](#amiga)
+8. [Building for Commodore Amiga or MorphOS](#amiga)
 9. [Linking to libjson-c](#linking)
 10. [Using json-c](#using)
 
@@ -272,10 +272,10 @@ make install
 ```
 
 <a name="amiga"></a>
-Building for Commodore Amiga 
+Building for Commodore Amiga or MorphOS
 ----------------------
 
-Building for Commodore Amiga is supported for both Motorola 68k (AmigaOS 3) and PowerPC (AmigaOS 4) architectures. You can set up a cross compiler locally, however it is much easier to use the already preconfigured Amiga development environment wtthin a Docker container.
+Building for Commodore Amiga is supported for both Motorola 68k (AmigaOS 3) and PowerPC (AmigaOS 4) architectures. MorphOS on compatible PowerPC hardware is also supported. You can set up a cross compiler locally, however it is much easier to use the already preconfigured Amiga development environment wtthin a Docker container.
 
 Install Docker on your machine if you don't already have it. You can download Docker Desktop for Windows/macOS/Linux [here](https://www.docker.com/products/docker-desktop/).
 
@@ -311,6 +311,23 @@ make
 
 libjson-c.a will get created in the build directory.
 
+### To build for PowerPC MorphOS:
+
+```
+mkdir build
+docker run --rm \
+    -v ${PWD}:/work \
+    -e USER=$( id -u ) -e GROUP=$( id -g ) \
+    -it  sacredbanana/amiga-compiler:ppc-morphos bash
+cd build
+cmake -DNOIXEMUL=1 ..
+make
+```
+
+If you are making an application that absolutely requires ixemul, then remove the `-DNOIXEMUL=1`.
+
+libjson-c.a will get created in the build directory.
+
 <a name="linking"></a>
 Linking to `libjson-c`
 ----------------------