Skip to content

Commit

Permalink
Support building for Amiga with CMake
Browse files Browse the repository at this point in the history
  • Loading branch information
ccawley2011 committed Jan 12, 2025
1 parent 96de38d commit ea8e41f
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 3 deletions.
8 changes: 5 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -121,13 +121,15 @@ jobs:
strategy:
matrix:
amiga:
# - { name: "AmigaOS 3", host: "m68k-amigaos", system: "amigaos3" }
- { name: "AmigaOS 4", host: "ppc-amigaos", system: "amiga" }
# - { name: "AmigaOS 3", host: "m68k-amigaos", cmake-flags: -DM68K_CRT=nix20 }
- { name: "AmigaOS 4", host: "ppc-amigaos", cmake-flags: -DPPC_CRT=newlib }

steps:
- uses: actions/checkout@v3
- name: Configure
run: cmake -B build/ -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} ${{ matrix.amiga.cmake-flags }} .
- name: Build
run: make SYSTEM=${{ matrix.amiga.system }} CROSS=${{ matrix.amiga.host }}-
run: cmake --build build/ --config ${{env.BUILD_TYPE}} --parallel
- uses: actions/upload-artifact@v3
with:
name: arcem-${{ matrix.amiga.host }}
Expand Down
37 changes: 37 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,17 @@ set(ARCEM_X_SOURCES
X/pseudo.c
X/true.c
)
set(ARCEM_AMIGA_SOURCES
amiga/arexx.c
amiga/arexx.h
amiga/ControlPane.c
amiga/DispKbd.c
amiga/filecalls.c
amiga/filecalls_internal.h
amiga/KeyTable.h
amiga/platform.h
amiga/wb.c
)
set(ARCEM_VC_SOURCES
vc/dirent.h
)
Expand All @@ -86,6 +97,8 @@ set(ARCEM_WIN_SOURCES

if(WIN32)
set(DEFAULT_SYSTEM "win")
elseif(AMIGA)
set(DEFAULT_SYSTEM "amiga")
elseif(UNIX AND NOT APPLE AND NOT HAIKU)
set(DEFAULT_SYSTEM "X")
else()
Expand Down Expand Up @@ -146,6 +159,29 @@ elseif(${SYSTEM} STREQUAL "X")
find_package(Threads REQUIRED)
target_link_libraries(Threads::Threads)
endif()
elseif(${SYSTEM} STREQUAL "amiga")
option(SOUND_SUPPORT "Build with sound support" ON)
if(SOUND_SUPPORT)
add_definitions(-DSOUND_SUPPORT)
list(APPEND ARCEM_AMIGA_SOURCES amiga/sound.c)
endif()

add_executable(arcem ${ARCEM_SOURCES} ${ARCEM_ARCH_SOURCES} ${ARCEM_INIH_SOURCES} ${ARCEM_AMIGA_SOURCES})
target_include_directories(arcem PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/amiga)
target_compile_definitions(arcem PRIVATE SYSTEM_amiga)

if(AMIGAOS4)
target_compile_definitions(arcem PRIVATE __USE_INLINE__)

option(ONCHIPMEM_SUPPORT "Build with on-chip memory support" OFF)
if(ONCHIPMEM_SUPPORT)
# The following line is for onchipmem support, which should speed
# the emulator up but slows it down, so it is disabled by default
target_compile_definitions(arcem PRIVATE ONCHIPMEM_SUPPORT)
endif()
endif()

# TODO: Build arcempanel
elseif(${SYSTEM} STREQUAL "win")
option(SOUND_SUPPORT "Build with sound support" ON)
if(SOUND_SUPPORT)
Expand Down Expand Up @@ -194,6 +230,7 @@ source_group(src FILES ${ARCEM_SOURCES})
source_group(src\\arch FILES ${ARCEM_ARCH_SOURCES})
source_group(src\\X FILES ${ARCEM_X_SOURCES})
source_group(src\\SDL FILES ${ARCEM_SDL_SOURCES})
source_group(src\\amiga FILES ${ARCEM_AMIGA_SOURCES})
source_group(src\\vc FILES ${ARCEM_VC_SOURCES})
source_group(src\\win FILES ${ARCEM_WIN_SOURCES})
source_group(libs\\inih FILES ${ARCEM_INIH_SOURCES})

0 comments on commit ea8e41f

Please sign in to comment.