@@ -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(NEWLOCALE_NEEDS_FREELOCALE "Work around newlocale bugs in old FreeBSD by calling freelocale" OFF) | ||||
option(BUILD_APPS "Default to building apps" ON) | 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(DISABLE_THREAD_LOCAL_STORAGE ON) | ||||
set(ENABLE_THREADING OFF) | set(ENABLE_THREADING OFF) | ||||
set(BUILD_SHARED_LIBS OFF) | set(BUILD_SHARED_LIBS OFF) | ||||
@@ -79,7 +78,6 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "AmigaOS") | |||||
if ($ENV{CROSS_PFX} STREQUAL "m68k-amigaos") | if ($ENV{CROSS_PFX} STREQUAL "m68k-amigaos") | ||||
set(AMIGA_M68K ON) | set(AMIGA_M68K ON) | ||||
set(BUILD_TESTING OFF) | set(BUILD_TESTING OFF) | ||||
message(STATUS "Building for Motorola 68k AmigaOS") | |||||
if (${M68K_CRT} STREQUAL "newlib") | if (${M68K_CRT} STREQUAL "newlib") | ||||
set(NEWLIB ON) | set(NEWLIB ON) | ||||
elseif(${M68K_CRT} STREQUAL "clib2") | elseif(${M68K_CRT} STREQUAL "clib2") | ||||
@@ -93,9 +91,19 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "AmigaOS") | |||||
else() | else() | ||||
set(NEWLIB ON) | set(NEWLIB ON) | ||||
endif() | endif() | ||||
message(STATUS "Building for Motorola 68k AmigaOS using CRT: ${M68K_CRT}") | |||||
elseif ($ENV{CROSS_PFX} STREQUAL "ppc-amigaos") | elseif ($ENV{CROSS_PFX} STREQUAL "ppc-amigaos") | ||||
set(AMIGA_PPC ON) | set(AMIGA_PPC ON) | ||||
message(STATUS "Building for PowerPC AmigaOS") | 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() | else() | ||||
message(FATAL_ERROR "Unsupported AmigaOS target") | message(FATAL_ERROR "Unsupported AmigaOS target") | ||||
endif() | endif() | ||||
@@ -12,7 +12,7 @@ json-c | |||||
5. [Testing](#testing) | 5. [Testing](#testing) | ||||
6. [Building with `vcpkg`](#buildvcpkg) | 6. [Building with `vcpkg`](#buildvcpkg) | ||||
7. [Building for Android](#android) | 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) | 9. [Linking to libjson-c](#linking) | ||||
10. [Using json-c](#using) | 10. [Using json-c](#using) | ||||
@@ -272,10 +272,10 @@ make install | |||||
``` | ``` | ||||
<a name="amiga"></a> | <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/). | 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. | 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> | <a name="linking"></a> | ||||
Linking to `libjson-c` | Linking to `libjson-c` | ||||
---------------------- | ---------------------- | ||||