From: Cameron Armstrong (Nightfox) Date: Fri, 30 Aug 2024 19:57:46 +0000 (+0800) Subject: Add support for MorphOS X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F847%2Fhead;p=thirdparty%2Fjson-c.git Add support for MorphOS --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 5266def..e599244 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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() diff --git a/README.md b/README.md index 4b972d6..d15fa41 100644 --- 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 ``` -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. + Linking to `libjson-c` ----------------------