From: Stefan Reinauer Date: Thu, 4 Jun 2026 15:00:35 +0000 (-0700) Subject: cmake: add Unix build wiring X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=66121f95de1db5a038a4b222310f42c421986b35;p=francis%2Fwinuae.git cmake: add Unix build wiring Add the CMake build graph for the Unix target, optional feature probes, test targets, and package staging rules. This ties the shared emulator sources and od-unix backends together for macOS and Linux builds. --- diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..779a0f01 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,1821 @@ +cmake_minimum_required(VERSION 3.20) + +if(CMAKE_HOST_APPLE) + set(WINUAE_UNIX_DEFAULT_MACOS_DEPLOYMENT_TARGET "13.0") + set(WINUAE_UNIX_MACOS_DEPS_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/../winuae-macos-deps" CACHE PATH "Private macOS dependency prefix built by tools/macos-build-deps.sh") + set(WINUAE_QEMU_UAE_DEPS_PREFIX "${WINUAE_UNIX_MACOS_DEPS_PREFIX}" CACHE PATH "Private macOS GLib prefix for the QEMU-UAE plugin") + if(NOT DEFINED CMAKE_OSX_DEPLOYMENT_TARGET) + set(CMAKE_OSX_DEPLOYMENT_TARGET "${WINUAE_UNIX_DEFAULT_MACOS_DEPLOYMENT_TARGET}" CACHE STRING "Minimum macOS version for WinUAE Unix builds") + elseif(CMAKE_OSX_DEPLOYMENT_TARGET STREQUAL "") + set(CMAKE_OSX_DEPLOYMENT_TARGET "${WINUAE_UNIX_DEFAULT_MACOS_DEPLOYMENT_TARGET}" CACHE STRING "Minimum macOS version for WinUAE Unix builds" FORCE) + endif() +endif() + +project(winuae_unix_port LANGUAGES C CXX) + +include(GNUInstallDirs) +include(CTest) + +set(WINUAE_UNIX_TEST_TARGETS) +function(winuae_unix_register_test target) + list(APPEND WINUAE_UNIX_TEST_TARGETS "${target}") + set(WINUAE_UNIX_TEST_TARGETS "${WINUAE_UNIX_TEST_TARGETS}" PARENT_SCOPE) + if(BUILD_TESTING) + add_test(NAME ${target} COMMAND $) + set_tests_properties(${target} PROPERTIES LABELS "unix") + endif() +endfunction() + +function(winuae_unix_imported_location target out_var) + foreach(prop IMPORTED_LOCATION_RELEASE IMPORTED_LOCATION_RELWITHDEBINFO IMPORTED_LOCATION_MINSIZEREL IMPORTED_LOCATION_DEBUG IMPORTED_LOCATION) + get_target_property(location "${target}" "${prop}") + if(location AND NOT location MATCHES "-NOTFOUND$" AND EXISTS "${location}") + set("${out_var}" "${location}" PARENT_SCOPE) + return() + endif() + endforeach() + set("${out_var}" "" PARENT_SCOPE) +endfunction() + +function(winuae_unix_macos_find_qt_frameworks out_var) + set(prefix_candidates ${CMAKE_PREFIX_PATH}) + if(WINUAE_UNIX_MACOS_DEPS_PREFIX) + list(APPEND prefix_candidates "${WINUAE_UNIX_MACOS_DEPS_PREFIX}") + endif() + list(REMOVE_DUPLICATES prefix_candidates) + + foreach(prefix IN LISTS prefix_candidates) + if(EXISTS "${prefix}/lib/QtWidgets.framework/QtWidgets" + AND EXISTS "${prefix}/lib/QtGui.framework/QtGui" + AND EXISTS "${prefix}/lib/QtCore.framework/QtCore") + if(NOT TARGET winuae_unix_qt_frameworks) + add_library(winuae_unix_qt_frameworks INTERFACE) + target_include_directories(winuae_unix_qt_frameworks INTERFACE + "${prefix}/lib/QtWidgets.framework/Headers" + "${prefix}/lib/QtGui.framework/Headers" + "${prefix}/lib/QtCore.framework/Headers" + ) + target_compile_definitions(winuae_unix_qt_frameworks INTERFACE + QT_WIDGETS_LIB + QT_GUI_LIB + QT_CORE_LIB + ) + target_compile_options(winuae_unix_qt_frameworks INTERFACE + "-F${prefix}/lib" + ) + target_link_options(winuae_unix_qt_frameworks INTERFACE + "-F${prefix}/lib" + ) + target_link_libraries(winuae_unix_qt_frameworks INTERFACE + "${prefix}/lib/QtWidgets.framework" + "${prefix}/lib/QtGui.framework" + "${prefix}/lib/QtCore.framework" + ) + endif() + if(EXISTS "${prefix}/bin/macdeployqt") + set(MACDEPLOYQT_EXECUTABLE "${prefix}/bin/macdeployqt" CACHE FILEPATH "macdeployqt executable" FORCE) + endif() + set("${out_var}" winuae_unix_qt_frameworks PARENT_SCOPE) + return() + endif() + endforeach() + + set("${out_var}" "" PARENT_SCOPE) +endfunction() + +function(winuae_unix_find_lzma_sdk out_var) + set(WINUAE_LZMA_SDK_CANDIDATES + "${WINUAE_LZMA_SDK_DIR}/C" + "${WINUAE_LZMA_SDK_DIR}" + ) + foreach(candidate IN LISTS WINUAE_LZMA_SDK_CANDIDATES) + if(EXISTS "${candidate}/7z/7zVersion.h") + set(WINUAE_LZMA_SDK_SOURCE_DIR "${candidate}") + break() + endif() + endforeach() + + if(NOT WINUAE_LZMA_SDK_SOURCE_DIR) + if(NOT WINUAE_LZMA_SDK_FETCH) + message(FATAL_ERROR + "7-Zip/LZMA SDK ${WINUAE_LZMA_SDK_VERSION} was not found in " + "${WINUAE_LZMA_SDK_DIR}. Enable WINUAE_LZMA_SDK_FETCH or " + "pre-seed WINUAE_LZMA_SDK_DIR with the SDK archive contents." + ) + endif() + + message(STATUS + "Fetching 7-Zip/LZMA SDK ${WINUAE_LZMA_SDK_VERSION} into " + "${WINUAE_LZMA_SDK_DIR}" + ) + execute_process( + COMMAND sh "${CMAKE_CURRENT_SOURCE_DIR}/tools/fetch-lzma-sdk.sh" + "${WINUAE_LZMA_SDK_DIR}" + "${WINUAE_LZMA_SDK_URL}" + "${WINUAE_LZMA_SDK_VERSION}" + "${WINUAE_LZMA_SDK_SHA256}" + RESULT_VARIABLE WINUAE_LZMA_SDK_FETCH_RESULT + OUTPUT_VARIABLE WINUAE_LZMA_SDK_FETCH_OUTPUT + ERROR_VARIABLE WINUAE_LZMA_SDK_FETCH_ERROR + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_STRIP_TRAILING_WHITESPACE + ) + if(NOT WINUAE_LZMA_SDK_FETCH_RESULT EQUAL 0) + message(FATAL_ERROR + "Failed to fetch 7-Zip/LZMA SDK " + "${WINUAE_LZMA_SDK_VERSION}: " + "${WINUAE_LZMA_SDK_FETCH_ERROR}\n" + "${WINUAE_LZMA_SDK_FETCH_OUTPUT}" + ) + endif() + + foreach(candidate IN LISTS WINUAE_LZMA_SDK_CANDIDATES) + if(EXISTS "${candidate}/7z/7zVersion.h") + set(WINUAE_LZMA_SDK_SOURCE_DIR "${candidate}") + break() + endif() + endforeach() + endif() + + if(NOT WINUAE_LZMA_SDK_SOURCE_DIR) + message(FATAL_ERROR + "7-Zip/LZMA SDK ${WINUAE_LZMA_SDK_VERSION} was fetched, but " + "no 7z/7zVersion.h was found in ${WINUAE_LZMA_SDK_DIR}." + ) + endif() + + file(STRINGS "${WINUAE_LZMA_SDK_SOURCE_DIR}/7z/7zVersion.h" + WINUAE_LZMA_SDK_VERSION_LINES + REGEX "^#define MY_VERSION \"${WINUAE_LZMA_SDK_VERSION}\"" + ) + if(NOT WINUAE_LZMA_SDK_VERSION_LINES) + message(FATAL_ERROR + "Expected 7-Zip/LZMA SDK ${WINUAE_LZMA_SDK_VERSION}, but " + "${WINUAE_LZMA_SDK_SOURCE_DIR}/7z/7zVersion.h did not match." + ) + endif() + + set("${out_var}" "${WINUAE_LZMA_SDK_SOURCE_DIR}" PARENT_SCOPE) +endfunction() + +option(WINUAE_UNIX_BUILD_EXECUTABLE "Link the initial Unix command-line executable" ON) +option(WINUAE_UNIX_WITH_SDL3 "Build the Unix SDL3 video/audio backend" ON) +option(WINUAE_UNIX_WITH_SLIRP "Build built-in SLIRP user-mode networking and A2065 Ethernet support" ON) +option(WINUAE_UNIX_WITH_SANA2 "Build uaenet.device SANA-II networking on top of the Unix Ethernet backend" ON) +option(WINUAE_UNIX_WITH_UAENET_PCAP "Build native libpcap and TAP/TUN packet networking for A2065 and uaenet.device" ON) +option(WINUAE_UNIX_WITH_PROWIZARD "Build Pro-Wizard module ripper support" ON) +option(WINUAE_UNIX_WITH_QT_UI "Build the optional Unix Qt configuration UI" ON) +option(WINUAE_UNIX_WITH_INTEGRATED_QT_UI "Allow winuae_unix to host the Unix Qt frontend" ON) +option(WINUAE_UNIX_WITH_LIBPNG "Build optional PNG screenshot support when libpng is available" ON) +option(WINUAE_UNIX_WITH_ARCHIVES "Build bundled ZIP/LHA/LZX/DMS/WRP archive support" ON) +option(WINUAE_UNIX_WITH_CHD "Build CHD hardfile and CD image support" ON) +option(WINUAE_UNIX_WITH_CHD_FLAC "Build CHD FLAC codecs when a compatible libFLAC is available" ON) +option(WINUAE_UNIX_WITH_LIBMPEG2 "Build CD32 FMV video decode support when libmpeg2 is available" ON) +option(WINUAE_UNIX_WITH_BSDSOCKET "Build bsdsocket.library on top of POSIX sockets" ON) +option(WINUAE_UNIX_WITH_UAESCSI "Build uaescsi.device using the shared CD/tape SCSI emulation layer" ON) +option(WINUAE_UNIX_WITH_UAESERIAL "Build uaeserial.device on top of the Unix serial backend" ON) +option(WINUAE_UNIX_WITH_SAMPLER "Build SDL3 recording support for the parallel-port sampler" ON) +option(WINUAE_UNIX_WITH_NATIVE_HARDDRIVES "Build Unix raw hard-drive enumeration and read-only open support" ON) +option(WINUAE_UNIX_WITH_NATIVE_CD "Build Unix native CD/DVD drive access" ON) +option(WINUAE_UNIX_WITH_NATIVE_SCSI "Build native SCSI/tape passthrough (macOS SCSITaskLib, Linux SG_IO)" ON) +option(WINUAE_UNIX_WITH_MIDI "Build native Unix MIDI support" ON) +option(WINUAE_UNIX_WITH_MIDIEMU "Build Munt MT-32/CM-32L MIDI emulation when mt32emu is available" ON) +option(WINUAE_UNIX_WITH_CPUBOARD "Build shared non-PPC CPU accelerator board support" ON) +option(WINUAE_UNIX_WITH_PPC_QEMU "Build Unix PPC accelerator support through the qemu-uae plugin ABI" ON) +option(WINUAE_UNIX_BUILD_QEMU_UAE_PLUGIN "Build the sibling qemu-uae plugin for Unix packaging" ON) +option(WINUAE_UNIX_WITH_DSP "Build shared DSP3210 accelerator support" ON) +option(WINUAE_UNIX_WITH_AVIOUTPUT "Build Unix screenshot and video/audio capture output support" ON) +option(WINUAE_UNIX_WITH_OPENGL_SHADER_PIPELINE "Build OpenGL-backed Unix shader/filter presentation support" ON) +option(WINUAE_LZMA_SDK_FETCH "Fetch the 7-Zip/LZMA SDK into WINUAE_LZMA_SDK_DIR when missing" ON) + +set(WINUAE_LZMA_SDK_VERSION "16.04" CACHE STRING "7-Zip/LZMA SDK version used by archive and CHD support") +set(WINUAE_LZMA_SDK_URL "https://www.7-zip.org/a/lzma1604.7z" + CACHE STRING "URL for the 7-Zip/LZMA SDK archive") +set(WINUAE_LZMA_SDK_SHA256 "edf8690e9d5ae0dbe80751e3df247bb4e1b497b100c4af5b95fc50a5c2e5b04f" + CACHE STRING "Expected SHA-256 for the 7-Zip/LZMA SDK archive") +set(WINUAE_LZMA_SDK_DIR "${CMAKE_BINARY_DIR}/_deps/lzma-sdk/${WINUAE_LZMA_SDK_VERSION}" + CACHE PATH "Local cache directory for the 7-Zip/LZMA SDK") + +set(WINUAE_QEMU_UAE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../qemu-uae-v11.0" + CACHE PATH "QEMU-UAE plugin source directory") +set(WINUAE_QEMU_UAE_PLUGIN_FILE "" CACHE FILEPATH "Prebuilt qemu-uae.so plugin to install or bundle") +set(WINUAE_UNIX_INSTALL_PLUGINDIR_RELATIVE "${CMAKE_INSTALL_LIBDIR}/winuae/plugins" + CACHE STRING "Relative Unix install directory for runtime plugins") + +if(IS_ABSOLUTE "${WINUAE_UNIX_INSTALL_PLUGINDIR_RELATIVE}") + message(FATAL_ERROR "WINUAE_UNIX_INSTALL_PLUGINDIR_RELATIVE must be relative") +endif() + +set(WINUAE_UNIX_TARGET_ARCHES "${CMAKE_SYSTEM_PROCESSOR}") +if(APPLE AND CMAKE_OSX_ARCHITECTURES) + set(WINUAE_UNIX_TARGET_ARCHES ${CMAKE_OSX_ARCHITECTURES}) +endif() + +set(WINUAE_UNIX_JIT_TARGET_SUPPORTED OFF) +foreach(WINUAE_UNIX_TARGET_ARCH IN LISTS WINUAE_UNIX_TARGET_ARCHES) + if(WINUAE_UNIX_TARGET_ARCH MATCHES "^(aarch64|arm64|x86_64|amd64|AMD64)$") + set(WINUAE_UNIX_JIT_TARGET_SUPPORTED ON) + endif() +endforeach() + +set(WINUAE_UNIX_WITH_JIT_DEFAULT ${WINUAE_UNIX_JIT_TARGET_SUPPORTED}) +option(WINUAE_UNIX_WITH_JIT "Build JIT support for Unix targets where a backend is available" ${WINUAE_UNIX_WITH_JIT_DEFAULT}) + +set(WINUAE_UNIX_VERSION_MAJOR 0) +set(WINUAE_UNIX_VERSION_MINOR 0) +set(WINUAE_UNIX_VERSION_REVISION 0) +file(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/include/options.h" WINUAE_UNIX_VERSION_LINES REGEX "^#define UAE(MAJOR|MINOR|SUBREV) [0-9]+") +foreach(WINUAE_UNIX_VERSION_LINE IN LISTS WINUAE_UNIX_VERSION_LINES) + if(WINUAE_UNIX_VERSION_LINE MATCHES "^#define UAEMAJOR +([0-9]+)") + set(WINUAE_UNIX_VERSION_MAJOR "${CMAKE_MATCH_1}") + elseif(WINUAE_UNIX_VERSION_LINE MATCHES "^#define UAEMINOR +([0-9]+)") + set(WINUAE_UNIX_VERSION_MINOR "${CMAKE_MATCH_1}") + elseif(WINUAE_UNIX_VERSION_LINE MATCHES "^#define UAESUBREV +([0-9]+)") + set(WINUAE_UNIX_VERSION_REVISION "${CMAKE_MATCH_1}") + endif() +endforeach() +set(WINUAE_UNIX_VERSION "${WINUAE_UNIX_VERSION_MAJOR}.${WINUAE_UNIX_VERSION_MINOR}.${WINUAE_UNIX_VERSION_REVISION}") + +find_package(ZLIB REQUIRED) +if(WINUAE_UNIX_WITH_LIBPNG) + if(APPLE AND CMAKE_PREFIX_PATH) + unset(PNG_LIBRARY CACHE) + unset(PNG_LIBRARY_RELEASE CACHE) + unset(PNG_LIBRARY_DEBUG CACHE) + unset(PNG_PNG_INCLUDE_DIR CACHE) + endif() + find_package(PNG QUIET) +endif() +find_package(PkgConfig QUIET) + +set(CMAKE_C_STANDARD 11) +set(CMAKE_C_STANDARD_REQUIRED ON) +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS ON) + +add_library(winuae_core OBJECT) + +target_compile_definitions(winuae_core PRIVATE + UAE_TARGET_UNIX=1 + UAE_NOGUI=1 + WINUAE_UNIX_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}" + WINUAE_UNIX_INSTALL_DATA_DIR="${CMAKE_INSTALL_FULL_DATADIR}/winuae" + WINUAE_UNIX_INSTALL_DATADIR_RELATIVE="${CMAKE_INSTALL_DATADIR}/winuae" + WINUAE_UNIX_INSTALL_PLUGINDIR_RELATIVE="${WINUAE_UNIX_INSTALL_PLUGINDIR_RELATIVE}" +) + +target_include_directories(winuae_core PRIVATE + "${CMAKE_CURRENT_SOURCE_DIR}/od-unix" + "${CMAKE_CURRENT_SOURCE_DIR}/od-unix/include" + "${CMAKE_CURRENT_SOURCE_DIR}" + "${CMAKE_CURRENT_SOURCE_DIR}/include" + "${CMAKE_CURRENT_SOURCE_DIR}/archivers" + "${CMAKE_CURRENT_SOURCE_DIR}/archivers/dms" + "${CMAKE_CURRENT_SOURCE_DIR}/archivers/lha" + "${CMAKE_CURRENT_SOURCE_DIR}/archivers/lzx" + "${CMAKE_CURRENT_SOURCE_DIR}/archivers/mp2" + "${CMAKE_CURRENT_SOURCE_DIR}/archivers/wrp" + "${CMAKE_CURRENT_SOURCE_DIR}/archivers/zip" +) + +if(WINUAE_UNIX_WITH_ARCHIVES OR WINUAE_UNIX_WITH_CHD) + winuae_unix_find_lzma_sdk(WINUAE_LZMA_SDK_SOURCE_DIR) + set(WINUAE_LZMA_SDK_7Z_DIR "${WINUAE_LZMA_SDK_SOURCE_DIR}/7z") + target_include_directories(winuae_core PRIVATE "${WINUAE_LZMA_SDK_SOURCE_DIR}") + target_compile_definitions(winuae_core PRIVATE + _7ZIP_ST=1 + UAE_7Z_SDK_1604=1 + ) +endif() + +target_compile_options(winuae_core PRIVATE + $<$:-Wno-c++11-narrowing> + $<$:-Wno-narrowing> + $<$:-Wno-deprecated-declarations> + $<$:-Wno-deprecated-register> + $<$:-Wno-format-security> + $<$:-Wno-multichar> + $<$:-Wno-register> + $<$:-Wno-unused-value> +) + +set(WINUAE_UNIX_EXTRA_SOURCES) +set(WINUAE_UNIX_EXTRA_LIBRARIES) +set(WINUAE_UNIX_EXTRA_LIBRARY_DIRS) +set(WINUAE_UNIX_ENABLE_SANA2 OFF) +set(WINUAE_UNIX_ENABLE_UAENET_PCAP OFF) +set(WINUAE_UNIX_ENABLE_BSDSOCKET OFF) +set(WINUAE_UNIX_ENABLE_UAESCSI OFF) +set(WINUAE_UNIX_ENABLE_UAESERIAL OFF) +set(WINUAE_UNIX_ENABLE_SAMPLER OFF) +set(WINUAE_UNIX_ENABLE_NATIVE_HARDDRIVES OFF) +set(WINUAE_UNIX_ENABLE_NATIVE_CD OFF) +set(WINUAE_UNIX_ENABLE_NATIVE_SCSI OFF) +set(WINUAE_UNIX_ENABLE_MIDI OFF) +set(WINUAE_UNIX_ENABLE_MIDIEMU OFF) +set(WINUAE_UNIX_ENABLE_CPUBOARD OFF) +set(WINUAE_UNIX_ENABLE_PPC OFF) +set(WINUAE_UNIX_ENABLE_DSP OFF) +set(WINUAE_UNIX_ENABLE_SNDBOARD OFF) +set(WINUAE_UNIX_ENABLE_PCI OFF) +set(WINUAE_UNIX_ENABLE_GFXBOARD OFF) +set(WINUAE_UNIX_ENABLE_X86 OFF) +set(WINUAE_UNIX_ENABLE_DRACO OFF) +set(WINUAE_UNIX_ENABLE_PCEM OFF) +set(WINUAE_UNIX_ENABLE_JIT OFF) +set(WINUAE_UNIX_ENABLE_AVIOUTPUT OFF) +set(WINUAE_UNIX_ENABLE_SHADER_PIPELINE OFF) +set(WINUAE_UNIX_MIDI_LIBRARIES) +set(WINUAE_UNIX_MIDI_INCLUDE_DIRS) +set(WINUAE_UNIX_MIDI_LIBRARY_DIRS) +set(WINUAE_UNIX_MIDI_COMPILE_OPTIONS) +set(WINUAE_UNIX_MIDI_QT_DEFINITIONS) + +set(WINUAE_UNIX_PCEM_COMMON_SOURCES + od-unix/pcem_wincompat.cpp + pcem/pcemglue.cpp + pcem/timer.cpp +) + +set(WINUAE_UNIX_PCEM_VIDEO_SOURCES + pcem/vid_bt482_ramdac.cpp + pcem/vid_cl5429.cpp + pcem/vid_et4000.cpp + pcem/vid_et4000w32.cpp + pcem/vid_inmos.cpp + pcem/vid_mga.cpp + pcem/vid_ncr.cpp + pcem/vid_permedia2.cpp + pcem/vid_s3.cpp + pcem/vid_s3_virge.cpp + pcem/vid_sc1502x_ramdac.cpp + pcem/vid_sdac_ramdac.cpp + pcem/vid_svga.cpp + pcem/vid_svga_render.cpp + pcem/vid_tvp3026_ramdac.cpp + pcem/vid_voodoo.cpp + pcem/vid_voodoo_banshee.cpp + pcem/vid_voodoo_banshee_blitter.cpp + pcem/vid_voodoo_blitter.cpp + pcem/vid_voodoo_display.cpp + pcem/vid_voodoo_fb.cpp + pcem/vid_voodoo_fifo.cpp + pcem/vid_voodoo_reg.cpp + pcem/vid_voodoo_render.cpp + pcem/vid_voodoo_setup.cpp + pcem/vid_voodoo_texture.cpp + qemuvga/cirrus_vga.cpp + qemuvga/es1370.cpp + qemuvga/ne2000.cpp + qemuvga/qemu.cpp + qemuvga/qemuuaeglue.cpp + qemuvga/vga.cpp +) + +set(WINUAE_UNIX_PCEM_X86_SOURCES + pcem/386.cpp + pcem/386_common.cpp + pcem/386_dynarec.cpp + pcem/808x.cpp + pcem/cpu.cpp + pcem/dma.cpp + pcem/dosbox/dbopl.cpp + pcem/dosbox/nukedopl.cpp + pcem/keyboard.cpp + pcem/keyboard_at.cpp + pcem/mem.cpp + pcem/mouse_ps2.cpp + pcem/mouse_serial.cpp + pcem/nvr.cpp + pcem/pcemrtc.cpp + pcem/pic.cpp + pcem/pit.cpp + pcem/serial.cpp + pcem/sound_cms.cpp + pcem/sound_dbopl.cpp + pcem/sound_mpu401_uart.cpp + pcem/sound_opl.cpp + pcem/sound_sb.cpp + pcem/sound_sb_dsp.cpp + pcem/sound_speaker.cpp + pcem/x86seg.cpp + pcem/x87.cpp + pcem/x87_timings.cpp +) + +set(WINUAE_UNIX_PCEM_DRACO_SOURCES + pcem/keyboard.cpp + pcem/keyboard_at.cpp + pcem/keyboard_at_draco.cpp + pcem/mouse_serial.cpp + pcem/serial.cpp +) + +set(WINUAE_UNIX_USE_LIBPNG OFF) +if(WINUAE_UNIX_WITH_LIBPNG AND PNG_FOUND) + set(WINUAE_UNIX_USE_LIBPNG ON) + if(APPLE) + set(WINUAE_UNIX_PNG_LIBRARY "") + get_target_property(WINUAE_UNIX_PNG_LIBRARY_RELEASE PNG::PNG IMPORTED_LOCATION_RELEASE) + get_target_property(WINUAE_UNIX_PNG_LIBRARY_DEFAULT PNG::PNG IMPORTED_LOCATION) + if(WINUAE_UNIX_PNG_LIBRARY_RELEASE AND EXISTS "${WINUAE_UNIX_PNG_LIBRARY_RELEASE}") + set(WINUAE_UNIX_PNG_LIBRARY "${WINUAE_UNIX_PNG_LIBRARY_RELEASE}") + elseif(WINUAE_UNIX_PNG_LIBRARY_DEFAULT AND EXISTS "${WINUAE_UNIX_PNG_LIBRARY_DEFAULT}") + set(WINUAE_UNIX_PNG_LIBRARY "${WINUAE_UNIX_PNG_LIBRARY_DEFAULT}") + elseif(PNG_LIBRARY_RELEASE AND EXISTS "${PNG_LIBRARY_RELEASE}") + set(WINUAE_UNIX_PNG_LIBRARY "${PNG_LIBRARY_RELEASE}") + endif() + if(WINUAE_UNIX_PNG_LIBRARY) + execute_process( + COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/tools/macos-check-deployment-target.sh" "${WINUAE_UNIX_PNG_LIBRARY}" "${CMAKE_OSX_DEPLOYMENT_TARGET}" + RESULT_VARIABLE WINUAE_UNIX_PNG_DEPLOYMENT_RESULT + OUTPUT_VARIABLE WINUAE_UNIX_PNG_DEPLOYMENT_OUTPUT + ERROR_VARIABLE WINUAE_UNIX_PNG_DEPLOYMENT_ERROR + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_STRIP_TRAILING_WHITESPACE + ) + if(NOT WINUAE_UNIX_PNG_DEPLOYMENT_RESULT EQUAL 0) + message(STATUS "libpng is newer than CMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}; PNG screenshots disabled. ${WINUAE_UNIX_PNG_DEPLOYMENT_ERROR}") + set(WINUAE_UNIX_USE_LIBPNG OFF) + endif() + else() + message(WARNING "libpng was found but its imported library path was not available; PNG screenshots disabled") + set(WINUAE_UNIX_USE_LIBPNG OFF) + endif() + endif() +endif() + +if(WINUAE_UNIX_USE_LIBPNG) + target_compile_definitions(winuae_core PRIVATE WINUAE_UNIX_WITH_LIBPNG=1) + target_link_libraries(winuae_core PRIVATE PNG::PNG) + list(APPEND WINUAE_UNIX_EXTRA_LIBRARIES PNG::PNG) +endif() + +if(APPLE) + target_compile_definitions(winuae_core PRIVATE WINUAE_UNIX_WITH_IMAGEIO=1) + list(APPEND WINUAE_UNIX_EXTRA_LIBRARIES + "-framework CoreFoundation" + "-framework CoreGraphics" + "-framework ImageIO" + ) +endif() + +if(WINUAE_UNIX_WITH_ARCHIVES) + target_compile_definitions(winuae_core PRIVATE + WINUAE_UNIX_WITH_ARCHIVES=1 + A_ZIP=1 + A_7Z=1 + A_LHA=1 + A_LZX=1 + A_DMS=1 + A_WRP=1 + ) + list(APPEND WINUAE_UNIX_EXTRA_SOURCES + zfile_archive.cpp + archivers/zip/ioapi.cpp + archivers/zip/unzip.cpp + archivers/zip/zip.cpp + "${WINUAE_LZMA_SDK_7Z_DIR}/7zAlloc.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/7zArcIn.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/7zBuf.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/7zBuf2.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/7zCrc.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/7zCrcOpt.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/7zDec.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/7zFile.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/7zStream.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/Aes.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/AesOpt.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/Alloc.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/Bcj2.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/Bra.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/Bra86.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/BraIA64.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/CpuArch.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/Delta.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/LzFind.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/Lzma2Dec.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/Lzma2Enc.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/Lzma86Dec.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/Lzma86Enc.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/LzmaDec.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/LzmaEnc.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/LzmaLib.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/Ppmd7.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/Ppmd7Dec.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/Ppmd7Enc.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/Sha256.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/Sort.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/Xz.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/XzCrc64.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/XzCrc64Opt.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/XzDec.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/XzEnc.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/XzIn.c" + archivers/lha/crcio.cpp + archivers/lha/dhuf.cpp + archivers/lha/header.cpp + archivers/lha/huf.cpp + archivers/lha/larc.cpp + archivers/lha/lhamaketbl.cpp + archivers/lha/lharc.cpp + archivers/lha/shuf.cpp + archivers/lha/slide.cpp + archivers/lha/uae_lha.cpp + archivers/lha/util.cpp + archivers/lzx/unlzx.cpp + archivers/dms/crc_csum.cpp + archivers/dms/getbits.cpp + archivers/dms/maketbl.cpp + archivers/dms/pfile.cpp + archivers/dms/tables.cpp + archivers/dms/u_deep.cpp + archivers/dms/u_heavy.cpp + archivers/dms/u_init.cpp + archivers/dms/u_medium.cpp + archivers/dms/u_quick.cpp + archivers/dms/u_rle.cpp + archivers/wrp/warp.cpp + ) +endif() + +if(WINUAE_UNIX_WITH_CHD) + target_compile_definitions(winuae_core PRIVATE + WINUAE_UNIX_WITH_CHD=1 + WITH_CHD=1 + ) + list(APPEND WINUAE_UNIX_EXTRA_SOURCES + archivers/chd/astring.cpp + archivers/chd/chd.cpp + archivers/chd/chdcdrom.cpp + archivers/chd/chdcodec.cpp + archivers/chd/chdglue.cpp + archivers/chd/corealloc.cpp + archivers/chd/harddisk.cpp + archivers/chd/hashing.cpp + archivers/chd/huffman.cpp + archivers/chd/md5.cpp + archivers/chd/sha1.cpp + od-unix/chd_unix_time.cpp + od-unix/chd_unix_work.cpp + ) + if(NOT WINUAE_UNIX_WITH_ARCHIVES) + list(APPEND WINUAE_UNIX_EXTRA_SOURCES + "${WINUAE_LZMA_SDK_7Z_DIR}/LzmaDec.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/LzmaEnc.c" + "${WINUAE_LZMA_SDK_7Z_DIR}/LzFind.c" + ) + endif() + + set(WINUAE_UNIX_CHD_FLAC_OK OFF) + if(WINUAE_UNIX_WITH_CHD_FLAC AND PkgConfig_FOUND) + pkg_check_modules(FLAC QUIET flac) + if(FLAC_FOUND) + set(WINUAE_UNIX_CHD_FLAC_OK ON) + if(APPLE) + unset(WINUAE_UNIX_FLAC_LIBRARY CACHE) + find_library(WINUAE_UNIX_FLAC_LIBRARY NAMES FLAC PATHS ${FLAC_LIBRARY_DIRS} NO_DEFAULT_PATH) + if(WINUAE_UNIX_FLAC_LIBRARY) + execute_process( + COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/tools/macos-check-deployment-target.sh" "${WINUAE_UNIX_FLAC_LIBRARY}" "${CMAKE_OSX_DEPLOYMENT_TARGET}" + RESULT_VARIABLE WINUAE_UNIX_FLAC_DEPLOYMENT_RESULT + OUTPUT_VARIABLE WINUAE_UNIX_FLAC_DEPLOYMENT_OUTPUT + ERROR_VARIABLE WINUAE_UNIX_FLAC_DEPLOYMENT_ERROR + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_STRIP_TRAILING_WHITESPACE + ) + if(NOT WINUAE_UNIX_FLAC_DEPLOYMENT_RESULT EQUAL 0) + message(STATUS "libFLAC is newer than CMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}; CHD FLAC codecs disabled. ${WINUAE_UNIX_FLAC_DEPLOYMENT_ERROR}") + set(WINUAE_UNIX_CHD_FLAC_OK OFF) + endif() + else() + message(STATUS "libFLAC was found by pkg-config but not as a library path; CHD FLAC codecs disabled") + set(WINUAE_UNIX_CHD_FLAC_OK OFF) + endif() + endif() + endif() + endif() + + if(WINUAE_UNIX_CHD_FLAC_OK) + target_compile_definitions(winuae_core PRIVATE WITH_CHD_FLAC=1) + target_include_directories(winuae_core PRIVATE ${FLAC_INCLUDE_DIRS}) + target_compile_options(winuae_core PRIVATE ${FLAC_CFLAGS_OTHER}) + list(APPEND WINUAE_UNIX_EXTRA_SOURCES archivers/chd/flac.cpp) + list(APPEND WINUAE_UNIX_EXTRA_LIBRARIES ${FLAC_LIBRARIES}) + list(APPEND WINUAE_UNIX_EXTRA_LIBRARY_DIRS ${FLAC_LIBRARY_DIRS}) + else() + target_compile_definitions(winuae_core PRIVATE WITH_CHD_FLAC=0) + endif() +endif() + +set(WINUAE_UNIX_LIBMPEG2_OK OFF) +set(WINUAE_UNIX_LIBMPEG2_FOUND OFF) +if(WINUAE_UNIX_WITH_LIBMPEG2 AND PkgConfig_FOUND) + pkg_check_modules(LIBMPEG2 QUIET libmpeg2 libmpeg2convert) + if(LIBMPEG2_FOUND) + set(WINUAE_UNIX_LIBMPEG2_FOUND ON) + set(WINUAE_UNIX_LIBMPEG2_OK ON) + if(APPLE) + unset(WINUAE_UNIX_LIBMPEG2_LIBRARY CACHE) + unset(WINUAE_UNIX_LIBMPEG2CONVERT_LIBRARY CACHE) + find_library(WINUAE_UNIX_LIBMPEG2_LIBRARY + NAMES mpeg2 + PATHS ${LIBMPEG2_LIBRARY_DIRS} + NO_DEFAULT_PATH + ) + find_library(WINUAE_UNIX_LIBMPEG2CONVERT_LIBRARY + NAMES mpeg2convert + PATHS ${LIBMPEG2_LIBRARY_DIRS} + NO_DEFAULT_PATH + ) + if(WINUAE_UNIX_LIBMPEG2_LIBRARY AND WINUAE_UNIX_LIBMPEG2CONVERT_LIBRARY) + foreach(WINUAE_UNIX_LIBMPEG2_CHECK_LIBRARY IN ITEMS WINUAE_UNIX_LIBMPEG2_LIBRARY WINUAE_UNIX_LIBMPEG2CONVERT_LIBRARY) + execute_process( + COMMAND + "${CMAKE_CURRENT_SOURCE_DIR}/tools/macos-check-deployment-target.sh" + "${${WINUAE_UNIX_LIBMPEG2_CHECK_LIBRARY}}" + "${CMAKE_OSX_DEPLOYMENT_TARGET}" + RESULT_VARIABLE WINUAE_UNIX_LIBMPEG2_DEPLOYMENT_RESULT + OUTPUT_VARIABLE WINUAE_UNIX_LIBMPEG2_DEPLOYMENT_OUTPUT + ERROR_VARIABLE WINUAE_UNIX_LIBMPEG2_DEPLOYMENT_ERROR + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_STRIP_TRAILING_WHITESPACE + ) + if(NOT WINUAE_UNIX_LIBMPEG2_DEPLOYMENT_RESULT EQUAL 0) + message(STATUS + "libmpeg2 is newer than " + "CMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}; " + "CD32 FMV video decode disabled. " + "${WINUAE_UNIX_LIBMPEG2_DEPLOYMENT_ERROR}" + ) + set(WINUAE_UNIX_LIBMPEG2_OK OFF) + endif() + endforeach() + else() + message(STATUS + "libmpeg2 was found by pkg-config but not as library " + "paths; CD32 FMV video decode disabled" + ) + set(WINUAE_UNIX_LIBMPEG2_OK OFF) + endif() + endif() + endif() +endif() + +if(WINUAE_UNIX_LIBMPEG2_OK) + target_compile_definitions(winuae_core PRIVATE WITH_LIBMPEG2=1) + target_include_directories(winuae_core PRIVATE ${LIBMPEG2_INCLUDE_DIRS}) + target_compile_options(winuae_core PRIVATE ${LIBMPEG2_CFLAGS_OTHER}) + if(APPLE) + list(APPEND WINUAE_UNIX_EXTRA_LIBRARIES + "${WINUAE_UNIX_LIBMPEG2_LIBRARY}" + "${WINUAE_UNIX_LIBMPEG2CONVERT_LIBRARY}" + ) + else() + list(APPEND WINUAE_UNIX_EXTRA_LIBRARIES ${LIBMPEG2_LIBRARIES}) + endif() + list(APPEND WINUAE_UNIX_EXTRA_LIBRARY_DIRS ${LIBMPEG2_LIBRARY_DIRS}) +elseif(WINUAE_UNIX_WITH_LIBMPEG2 AND NOT WINUAE_UNIX_LIBMPEG2_FOUND) + message(STATUS "libmpeg2 development package not found; CD32 FMV video decode disabled") +endif() + +set(WINUAE_UNIX_MT32EMU_OK OFF) +set(WINUAE_UNIX_MT32EMU_FOUND OFF) +if(WINUAE_UNIX_WITH_MIDIEMU AND PkgConfig_FOUND) + pkg_check_modules(MT32EMU QUIET mt32emu) + if(MT32EMU_FOUND) + set(WINUAE_UNIX_MT32EMU_FOUND ON) + set(WINUAE_UNIX_MT32EMU_OK ON) + if(APPLE) + unset(WINUAE_UNIX_MT32EMU_LIBRARY CACHE) + find_library(WINUAE_UNIX_MT32EMU_LIBRARY + NAMES mt32emu + PATHS ${MT32EMU_LIBRARY_DIRS} + NO_DEFAULT_PATH + ) + if(WINUAE_UNIX_MT32EMU_LIBRARY) + execute_process( + COMMAND + "${CMAKE_CURRENT_SOURCE_DIR}/tools/macos-check-deployment-target.sh" + "${WINUAE_UNIX_MT32EMU_LIBRARY}" + "${CMAKE_OSX_DEPLOYMENT_TARGET}" + RESULT_VARIABLE WINUAE_UNIX_MT32EMU_DEPLOYMENT_RESULT + OUTPUT_VARIABLE WINUAE_UNIX_MT32EMU_DEPLOYMENT_OUTPUT + ERROR_VARIABLE WINUAE_UNIX_MT32EMU_DEPLOYMENT_ERROR + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_STRIP_TRAILING_WHITESPACE + ) + if(NOT WINUAE_UNIX_MT32EMU_DEPLOYMENT_RESULT EQUAL 0) + message(STATUS + "libmt32emu is newer than " + "CMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}; " + "Munt MIDI emulation disabled. " + "${WINUAE_UNIX_MT32EMU_DEPLOYMENT_ERROR}" + ) + set(WINUAE_UNIX_MT32EMU_OK OFF) + endif() + else() + message(STATUS + "mt32emu was found by pkg-config but not as a library " + "path; Munt MIDI emulation disabled" + ) + set(WINUAE_UNIX_MT32EMU_OK OFF) + endif() + endif() + endif() +endif() + +if(WINUAE_UNIX_WITH_NATIVE_HARDDRIVES) + set(WINUAE_UNIX_ENABLE_NATIVE_HARDDRIVES ON) + target_compile_definitions(winuae_core PRIVATE WINUAE_UNIX_WITH_NATIVE_HARDDRIVES=1) +endif() + +if(WINUAE_UNIX_WITH_MIDI) + if(APPLE) + set(WINUAE_UNIX_ENABLE_MIDI ON) + target_compile_definitions(winuae_core PRIVATE WITH_MIDI=1 WINUAE_UNIX_WITH_COREMIDI=1) + list(APPEND WINUAE_UNIX_EXTRA_SOURCES od-unix/midi.cpp) + list(APPEND WINUAE_UNIX_EXTRA_LIBRARIES "-framework CoreMIDI" "-framework CoreFoundation") + list(APPEND WINUAE_UNIX_MIDI_LIBRARIES "-framework CoreMIDI" "-framework CoreFoundation") + list(APPEND WINUAE_UNIX_MIDI_QT_DEFINITIONS UAE_UNIX_WITH_COREMIDI=1) + elseif(PkgConfig_FOUND) + pkg_check_modules(ALSA QUIET alsa) + if(ALSA_FOUND) + set(WINUAE_UNIX_ENABLE_MIDI ON) + target_compile_definitions(winuae_core PRIVATE WITH_MIDI=1 WINUAE_UNIX_WITH_ALSA_MIDI=1) + target_include_directories(winuae_core PRIVATE ${ALSA_INCLUDE_DIRS}) + target_compile_options(winuae_core PRIVATE ${ALSA_CFLAGS_OTHER}) + list(APPEND WINUAE_UNIX_EXTRA_SOURCES od-unix/midi.cpp) + list(APPEND WINUAE_UNIX_EXTRA_LIBRARIES ${ALSA_LIBRARIES}) + list(APPEND WINUAE_UNIX_EXTRA_LIBRARY_DIRS ${ALSA_LIBRARY_DIRS}) + list(APPEND WINUAE_UNIX_MIDI_LIBRARIES ${ALSA_LIBRARIES}) + list(APPEND WINUAE_UNIX_MIDI_INCLUDE_DIRS ${ALSA_INCLUDE_DIRS}) + list(APPEND WINUAE_UNIX_MIDI_LIBRARY_DIRS ${ALSA_LIBRARY_DIRS}) + list(APPEND WINUAE_UNIX_MIDI_COMPILE_OPTIONS ${ALSA_CFLAGS_OTHER}) + list(APPEND WINUAE_UNIX_MIDI_QT_DEFINITIONS UAE_UNIX_WITH_ALSA_MIDI=1) + else() + message(STATUS "ALSA development package not found; native Unix MIDI disabled") + endif() + else() + message(STATUS "pkg-config not available; native Unix MIDI disabled") + endif() +endif() + +if(WINUAE_UNIX_WITH_MIDIEMU AND WINUAE_UNIX_ENABLE_MIDI) + if(WINUAE_UNIX_MT32EMU_OK) + set(WINUAE_UNIX_ENABLE_MIDIEMU ON) + target_compile_definitions(winuae_core PRIVATE WITH_MIDIEMU=1) + target_include_directories(winuae_core PRIVATE ${MT32EMU_INCLUDE_DIRS}) + target_compile_options(winuae_core PRIVATE ${MT32EMU_CFLAGS_OTHER}) + list(APPEND WINUAE_UNIX_EXTRA_SOURCES midiemu.cpp) + if(APPLE) + list(APPEND WINUAE_UNIX_EXTRA_LIBRARIES "${WINUAE_UNIX_MT32EMU_LIBRARY}") + else() + list(APPEND WINUAE_UNIX_EXTRA_LIBRARIES ${MT32EMU_LIBRARIES}) + endif() + list(APPEND WINUAE_UNIX_EXTRA_LIBRARY_DIRS ${MT32EMU_LIBRARY_DIRS}) + elseif(NOT WINUAE_UNIX_MT32EMU_FOUND) + message(STATUS "mt32emu development package not found; Munt MIDI emulation disabled") + endif() +elseif(WINUAE_UNIX_WITH_MIDIEMU AND NOT WINUAE_UNIX_ENABLE_MIDI) + message(STATUS "Native Unix MIDI disabled; Munt MIDI emulation disabled") +endif() + +if(WINUAE_UNIX_WITH_CPUBOARD) + set(WINUAE_UNIX_ENABLE_CPUBOARD ON) + target_compile_definitions(winuae_core PRIVATE WITH_CPUBOARD=1) + list(APPEND WINUAE_UNIX_EXTRA_SOURCES cpuboard.cpp) +endif() + +if(WINUAE_UNIX_WITH_PPC_QEMU) + set(WINUAE_UNIX_ENABLE_PPC ON) + target_compile_definitions(winuae_core PRIVATE WITH_PPC=1 WITH_QEMU_CPU=1) + list(APPEND WINUAE_UNIX_EXTRA_SOURCES + ppc/ppc.cpp + ppc/ppcd.cpp + qemuvga/qemu.cpp + ) +endif() + +if(WINUAE_UNIX_WITH_DSP) + set(WINUAE_UNIX_ENABLE_DSP ON) + target_compile_definitions(winuae_core PRIVATE WITH_DSP=1) + list(APPEND WINUAE_UNIX_EXTRA_SOURCES + dsp3210/DSP3210_emulation.cpp + dsp3210/dsp_glue.cpp + ) +endif() + +set(WINUAE_UNIX_ENABLE_SNDBOARD ON) +set(WINUAE_UNIX_ENABLE_PCI ON) +target_compile_definitions(winuae_core PRIVATE + WITH_SNDBOARD=1 + WITH_TOCCATA=1 + WITH_PCI=1 +) +list(APPEND WINUAE_UNIX_EXTRA_SOURCES + sndboard.cpp + od-unix/sndboard_host.cpp + pci.cpp + qemuvga/es1370.cpp + qemuvga/ne2000.cpp + qemuvga/qemuuaeglue.cpp +) + +set(WINUAE_UNIX_ENABLE_GFXBOARD ON) +target_compile_definitions(winuae_core PRIVATE GFXBOARD=1) +set(WINUAE_UNIX_ENABLE_PCEM ON) +list(APPEND WINUAE_UNIX_EXTRA_SOURCES + gfxboard.cpp + pci.cpp + mame/a2410.cpp + mame/tm34010/tms34010.cpp + ${WINUAE_UNIX_PCEM_COMMON_SOURCES} + ${WINUAE_UNIX_PCEM_VIDEO_SOURCES} +) + +set(WINUAE_UNIX_ENABLE_X86 ON) +set(WINUAE_UNIX_ENABLE_PCEM ON) +target_compile_definitions(winuae_core PRIVATE WITH_X86=1) +list(APPEND WINUAE_UNIX_EXTRA_SOURCES + x86.cpp + ${WINUAE_UNIX_PCEM_COMMON_SOURCES} + ${WINUAE_UNIX_PCEM_X86_SOURCES} +) + +set(WINUAE_UNIX_ENABLE_DRACO ON) +set(WINUAE_UNIX_ENABLE_PCEM ON) +target_compile_definitions(winuae_core PRIVATE WITH_DRACO=1) +list(APPEND WINUAE_UNIX_EXTRA_SOURCES + draco.cpp + ${WINUAE_UNIX_PCEM_COMMON_SOURCES} + ${WINUAE_UNIX_PCEM_DRACO_SOURCES} +) + +if(WINUAE_UNIX_ENABLE_PCEM) + target_compile_definitions(winuae_core PRIVATE WINUAE_UNIX_WITH_PCEM=1) + target_compile_options(winuae_core PRIVATE + $<$:-include> + $<$:${CMAKE_CURRENT_SOURCE_DIR}/od-unix/pcem_wincompat.h> + ) +endif() + +if(WINUAE_UNIX_ENABLE_PPC OR WINUAE_UNIX_ENABLE_GFXBOARD OR WINUAE_UNIX_ENABLE_X86 OR WINUAE_UNIX_ENABLE_DRACO) + target_compile_definitions(winuae_core PRIVATE UAE=) +endif() + +if(WINUAE_UNIX_WITH_AVIOUTPUT) + set(WINUAE_UNIX_ENABLE_AVIOUTPUT ON) + target_compile_definitions(winuae_core PRIVATE AVIOUTPUT=1) + list(APPEND WINUAE_UNIX_EXTRA_SOURCES od-unix/avioutput.cpp) +endif() + +if(WINUAE_UNIX_WITH_OPENGL_SHADER_PIPELINE AND WINUAE_UNIX_WITH_SDL3) + find_package(OpenGL QUIET) + if(OpenGL_FOUND) + set(WINUAE_UNIX_ENABLE_SHADER_PIPELINE ON) + target_compile_definitions(winuae_core PRIVATE WINUAE_UNIX_WITH_OPENGL_SHADER_PIPELINE=1) + list(APPEND WINUAE_UNIX_EXTRA_LIBRARIES OpenGL::GL) + else() + message(STATUS "OpenGL development package not found; Unix shader pipeline disabled") + endif() +endif() + +if(WINUAE_UNIX_WITH_JIT) + if(WINUAE_UNIX_JIT_TARGET_SUPPORTED) + set(WINUAE_UNIX_ENABLE_JIT ON) + target_compile_definitions(winuae_core PRIVATE + JIT=1 + USE_JIT_FPU=1 + NOFLAGS_SUPPORT_GENCOMP=1 + SAHF_SETO_PROFITABLE=1 + ) + list(APPEND WINUAE_UNIX_EXTRA_SOURCES + jit/compemu.cpp + jit/compemu_fpp.cpp + jit/compemu_support.cpp + jit/compstbl.cpp + ) + else() + message(STATUS "JIT is currently enabled only for Unix ARM64 and x86_64 builds; disabling JIT for ${CMAKE_SYSTEM_PROCESSOR}") + endif() +endif() + +if(WINUAE_UNIX_WITH_SLIRP) + target_compile_definitions(winuae_core PRIVATE + A2065=1 + WITH_SLIRP=1 + WITH_BUILTIN_SLIRP=1 + ) + list(APPEND WINUAE_UNIX_EXTRA_SOURCES + a2065.cpp + slirp_uae.cpp + slirp/bootp.cpp + slirp/cksum.cpp + slirp/if.cpp + slirp/ip_icmp.cpp + slirp/ip_input.cpp + slirp/ip_output.cpp + slirp/mbuf.cpp + slirp/misc.cpp + slirp/sbuf.cpp + slirp/slirp.cpp + slirp/slirpdebug.cpp + slirp/socket.cpp + slirp/tcp_input.cpp + slirp/tcp_output.cpp + slirp/tcp_subr.cpp + slirp/tcp_timer.cpp + slirp/tftp.cpp + slirp/udp.cpp + ) +endif() + +if(WINUAE_UNIX_WITH_SANA2) + if(WINUAE_UNIX_WITH_SLIRP) + set(WINUAE_UNIX_ENABLE_SANA2 ON) + target_compile_definitions(winuae_core PRIVATE SANA2=1) + list(APPEND WINUAE_UNIX_EXTRA_SOURCES sana2.cpp) + else() + message(STATUS "uaenet.device requires the Unix Ethernet backend; disabling WINUAE_UNIX_WITH_SANA2") + endif() +endif() + +if(WINUAE_UNIX_WITH_UAENET_PCAP) + set(WINUAE_UNIX_PCAP_FOUND OFF) + if(PkgConfig_FOUND) + pkg_check_modules(PCAP QUIET libpcap) + if(PCAP_FOUND) + set(WINUAE_UNIX_PCAP_FOUND ON) + target_include_directories(winuae_core PRIVATE ${PCAP_INCLUDE_DIRS}) + target_compile_options(winuae_core PRIVATE ${PCAP_CFLAGS_OTHER}) + list(APPEND WINUAE_UNIX_EXTRA_LIBRARIES ${PCAP_LIBRARIES}) + list(APPEND WINUAE_UNIX_EXTRA_LIBRARY_DIRS ${PCAP_LIBRARY_DIRS}) + endif() + endif() + if(NOT WINUAE_UNIX_PCAP_FOUND) + find_path(WINUAE_UNIX_PCAP_INCLUDE_DIR NAMES pcap/pcap.h pcap.h) + find_library(WINUAE_UNIX_PCAP_LIBRARY NAMES pcap) + if(WINUAE_UNIX_PCAP_INCLUDE_DIR AND WINUAE_UNIX_PCAP_LIBRARY) + set(WINUAE_UNIX_PCAP_FOUND ON) + target_include_directories(winuae_core PRIVATE "${WINUAE_UNIX_PCAP_INCLUDE_DIR}") + list(APPEND WINUAE_UNIX_EXTRA_LIBRARIES "${WINUAE_UNIX_PCAP_LIBRARY}") + endif() + endif() + if(WINUAE_UNIX_PCAP_FOUND) + set(WINUAE_UNIX_ENABLE_UAENET_PCAP ON) + target_compile_definitions(winuae_core PRIVATE WITH_UAENET_PCAP=1) + list(APPEND WINUAE_UNIX_EXTRA_SOURCES od-unix/uaenet_unix.cpp) + else() + message(STATUS "libpcap was not found; disabling native Unix packet networking") + endif() +endif() + +if(WINUAE_UNIX_WITH_BSDSOCKET) + set(WINUAE_UNIX_ENABLE_BSDSOCKET ON) + target_compile_definitions(winuae_core PRIVATE BSDSOCKET=1) + list(APPEND WINUAE_UNIX_EXTRA_SOURCES od-unix/bsdsock_unix.cpp) +endif() + +if(WINUAE_UNIX_WITH_UAESCSI) + set(WINUAE_UNIX_ENABLE_UAESCSI ON) + target_compile_definitions(winuae_core PRIVATE SCSIEMU=1) + list(APPEND WINUAE_UNIX_EXTRA_SOURCES scsiemul.cpp) +endif() + +if(WINUAE_UNIX_WITH_NATIVE_CD) + if(APPLE OR CMAKE_SYSTEM_NAME STREQUAL "Linux") + set(WINUAE_UNIX_ENABLE_NATIVE_CD ON) + target_compile_definitions(winuae_core PRIVATE WITH_SCSI_IOCTL=1) + list(APPEND WINUAE_UNIX_EXTRA_SOURCES + od-unix/blkdev_unix_ioctl.cpp + od-unix/cda_play.cpp + ) + if(APPLE) + list(APPEND WINUAE_UNIX_EXTRA_LIBRARIES + "-framework CoreFoundation" + "-framework DiskArbitration" + "-framework IOKit" + ) + endif() + else() + message(STATUS "Native Unix CD/DVD access is implemented for macOS and Linux only") + endif() +endif() + +if(WINUAE_UNIX_WITH_NATIVE_SCSI) + if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + set(WINUAE_UNIX_ENABLE_NATIVE_SCSI ON) + target_compile_definitions(winuae_core PRIVATE WITH_SCSI_SPTI=1) + list(APPEND WINUAE_UNIX_EXTRA_SOURCES od-unix/blkdev_unix_sg.cpp) + elseif(APPLE) + set(WINUAE_UNIX_ENABLE_NATIVE_SCSI ON) + target_compile_definitions(winuae_core PRIVATE WITH_SCSI_SPTI=1) + list(APPEND WINUAE_UNIX_EXTRA_SOURCES od-unix/blkdev_unix_scsi_macos.cpp) + list(APPEND WINUAE_UNIX_EXTRA_LIBRARIES + "-framework CoreFoundation" + "-framework IOKit" + ) + else() + message(STATUS "Native Unix SCSI/tape passthrough is implemented for macOS SCSITaskLib and Linux SG_IO only") + endif() +endif() + +if(WINUAE_UNIX_WITH_UAESERIAL) + set(WINUAE_UNIX_ENABLE_UAESERIAL ON) + target_compile_definitions(winuae_core PRIVATE UAESERIAL=1) + list(APPEND WINUAE_UNIX_EXTRA_SOURCES + uaeserial.cpp + od-unix/uaeserial_host.cpp + ) +endif() + +target_compile_definitions(winuae_core PRIVATE NCR=1 NCR9X=1) +set_source_files_properties(ncr_scsi.cpp ncr9x_scsi.cpp PROPERTIES COMPILE_DEFINITIONS WITH_QEMU_CPU=1) +list(APPEND WINUAE_UNIX_EXTRA_SOURCES + ncr_scsi.cpp + ncr9x_scsi.cpp + qemuvga/esp.cpp + qemuvga/lsi53c710.cpp + qemuvga/lsi53c895a.cpp + qemuvga/qemuuaeglue.cpp +) + +if(WINUAE_UNIX_WITH_PROWIZARD) + target_compile_definitions(winuae_core PRIVATE PROWIZARD=1) + target_include_directories(winuae_core PRIVATE + "${CMAKE_CURRENT_SOURCE_DIR}/prowizard/include" + ) + set(WINUAE_UNIX_PROWIZARD_C_SOURCES + prowizard/misc/misc.c + prowizard/prowiz.c + prowizard/misc/testbag.c + prowizard/rippers/AC1D_packer.c + prowizard/rippers/AMOS-MusicBank.c + prowizard/rippers/AMOS-PowerPackerBank.c + prowizard/rippers/BP-Soundmonitor.c + prowizard/rippers/BSI-FutureComposer.c + prowizard/rippers/Bytekiller.c + prowizard/rippers/ChipTracker.c + prowizard/rippers/Crunchmania-Address.c + prowizard/rippers/Crunchmania-Simple.c + prowizard/rippers/datacrunchers.c + prowizard/rippers/DefjamCruncher32-pro.c + prowizard/rippers/DigiBooster17.c + prowizard/rippers/DigitalIllusion.c + prowizard/rippers/DoubleAction.c + prowizard/rippers/Dragpack100.c + prowizard/rippers/Dragpack252.c + prowizard/rippers/EurekaPacker.c + prowizard/rippers/FastTracker2.c + prowizard/rippers/FC-M-Packer.c + prowizard/rippers/FuchsTracker.c + prowizard/rippers/FutureComposer13.c + prowizard/rippers/FutureComposer14.c + prowizard/rippers/FuzzacPacker.c + prowizard/rippers/GMC.c + prowizard/rippers/GNUPacker12.c + prowizard/rippers/GnuPlayer.c + prowizard/rippers/GPMO.c + prowizard/rippers/HeatseekerMC10.c + prowizard/rippers/HornetPacker.c + prowizard/rippers/HQC2.c + prowizard/rippers/JamCracker.c + prowizard/rippers/KefrensSoundMachine.c + prowizard/rippers/MasterCruncher30-Address.c + prowizard/rippers/MaxPacker12.c + prowizard/rippers/MED-Octamed.c + prowizard/rippers/MegaCruncher-Object.c + prowizard/rippers/MegaCruncher.c + prowizard/rippers/MOD-compatible.c + prowizard/rippers/ModuleProtector.c + prowizard/rippers/Mugician.c + prowizard/rippers/Newtron.c + prowizard/rippers/NewtronOld.c + prowizard/rippers/NoiseFromHeaven.c + prowizard/rippers/NoisePacker1.c + prowizard/rippers/NoisePacker2.c + prowizard/rippers/NoiseRunner.c + prowizard/rippers/NovoTrade.c + prowizard/rippers/NP3.c + prowizard/rippers/PhaPacker.c + prowizard/rippers/PolkaPacker.c + prowizard/rippers/PowerMusic.c + prowizard/rippers/PowerPacker23.c + prowizard/rippers/PowerPacker30.c + prowizard/rippers/PowerPacker40-library.c + prowizard/rippers/PowerPacker40.c + prowizard/rippers/Promizer01.c + prowizard/rippers/Promizer10c.c + prowizard/rippers/Promizer18a.c + prowizard/rippers/Promizer20.c + prowizard/rippers/Promizer40.c + prowizard/rippers/ProPacker10.c + prowizard/rippers/ProPacker21.c + prowizard/rippers/ProPacker30.c + prowizard/rippers/Prorunner10.c + prowizard/rippers/Prorunner20.c + prowizard/rippers/QuadraComposer.c + prowizard/rippers/RelokIt10.c + prowizard/rippers/SGT-Packer.c + prowizard/rippers/skizzo.c + prowizard/rippers/SkytPacker.c + prowizard/rippers/SoundFX.c + prowizard/rippers/SoundTracker.c + prowizard/rippers/SoundTracker26.c + prowizard/rippers/SpikeCruncher.c + prowizard/rippers/StartrekkerPack.c + prowizard/rippers/StimPacker.c + prowizard/rippers/StoneArtsPlayer.c + prowizard/rippers/StoneCracker270.c + prowizard/rippers/StoneCracker299.c + prowizard/rippers/StoneCracker299b.c + prowizard/rippers/StoneCracker299d.c + prowizard/rippers/StoneCracker300.c + prowizard/rippers/StoneCracker310.c + prowizard/rippers/SuperCruncher27.c + prowizard/rippers/SyncroPacker46.c + prowizard/rippers/TetraPack102.c + prowizard/rippers/TetraPack21.c + prowizard/rippers/TetraPack22.c + prowizard/rippers/TheDarkDemon.c + prowizard/rippers/ThePlayer22a.c + prowizard/rippers/ThePlayer30a.c + prowizard/rippers/ThePlayer40.c + prowizard/rippers/ThePlayer41a.c + prowizard/rippers/ThePlayer50a.c + prowizard/rippers/ThePlayer60a.c + prowizard/rippers/ThePlayer61a.c + prowizard/rippers/TimeCruncher17.c + prowizard/rippers/TitanicsPlayer.c + prowizard/rippers/TMK.c + prowizard/rippers/TNMCruncher.c + prowizard/rippers/TrackerPacker1.c + prowizard/rippers/TrackerPacker2.c + prowizard/rippers/TrackerPacker3.c + prowizard/rippers/TryItCruncher101.c + prowizard/rippers/TurboSqueezer61.c + prowizard/rippers/UnicTracker.c + prowizard/rippers/UnicTracker2.c + prowizard/rippers/WantonPacker.c + prowizard/rippers/XannPlayer.c + prowizard/rippers/ZenPacker.c + ) + list(APPEND WINUAE_UNIX_EXTRA_SOURCES + moduleripper.cpp + ${WINUAE_UNIX_PROWIZARD_C_SOURCES} + ) + set_source_files_properties(${WINUAE_UNIX_PROWIZARD_C_SOURCES} + PROPERTIES LANGUAGE CXX + ) +endif() + +if(WINUAE_UNIX_WITH_SDL3) + find_package(SDL3 CONFIG QUIET) + if(TARGET SDL3::SDL3) + set(WINUAE_UNIX_SDL3_TARGET SDL3::SDL3) + elseif(TARGET SDL3::SDL3-shared) + set(WINUAE_UNIX_SDL3_TARGET SDL3::SDL3-shared) + elseif(TARGET SDL3-static) + set(WINUAE_UNIX_SDL3_TARGET SDL3-static) + elseif(TARGET SDL3) + set(WINUAE_UNIX_SDL3_TARGET SDL3) + endif() + if(WINUAE_UNIX_SDL3_TARGET AND APPLE) + winuae_unix_imported_location("${WINUAE_UNIX_SDL3_TARGET}" WINUAE_UNIX_SDL3_IMPORTED_LIBRARY) + if(WINUAE_UNIX_SDL3_IMPORTED_LIBRARY) + execute_process( + COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/tools/macos-check-deployment-target.sh" "${WINUAE_UNIX_SDL3_IMPORTED_LIBRARY}" "${CMAKE_OSX_DEPLOYMENT_TARGET}" + RESULT_VARIABLE WINUAE_UNIX_SDL3_DEPLOYMENT_RESULT + OUTPUT_VARIABLE WINUAE_UNIX_SDL3_DEPLOYMENT_OUTPUT + ERROR_VARIABLE WINUAE_UNIX_SDL3_DEPLOYMENT_ERROR + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_STRIP_TRAILING_WHITESPACE + ) + if(NOT WINUAE_UNIX_SDL3_DEPLOYMENT_RESULT EQUAL 0) + message(STATUS "SDL3 is newer than CMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}; ignoring package target. ${WINUAE_UNIX_SDL3_DEPLOYMENT_ERROR}") + unset(WINUAE_UNIX_SDL3_TARGET) + set(SDL3_FOUND OFF) + endif() + endif() + endif() + if(NOT WINUAE_UNIX_SDL3_TARGET) + find_path(WINUAE_UNIX_SDL3_INCLUDE_DIR NAMES SDL3/SDL.h) + find_library(WINUAE_UNIX_SDL3_FALLBACK_LIBRARY NAMES SDL3 SDL3.0) + if(WINUAE_UNIX_SDL3_INCLUDE_DIR AND WINUAE_UNIX_SDL3_FALLBACK_LIBRARY) + set(WINUAE_UNIX_SDL3_FALLBACK_OK ON) + if(APPLE) + execute_process( + COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/tools/macos-check-deployment-target.sh" "${WINUAE_UNIX_SDL3_FALLBACK_LIBRARY}" "${CMAKE_OSX_DEPLOYMENT_TARGET}" + RESULT_VARIABLE WINUAE_UNIX_SDL3_FALLBACK_DEPLOYMENT_RESULT + OUTPUT_VARIABLE WINUAE_UNIX_SDL3_FALLBACK_DEPLOYMENT_OUTPUT + ERROR_VARIABLE WINUAE_UNIX_SDL3_FALLBACK_DEPLOYMENT_ERROR + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_STRIP_TRAILING_WHITESPACE + ) + if(NOT WINUAE_UNIX_SDL3_FALLBACK_DEPLOYMENT_RESULT EQUAL 0) + message(STATUS "SDL3 library is newer than CMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}; SDL3 disabled. ${WINUAE_UNIX_SDL3_FALLBACK_DEPLOYMENT_ERROR}") + set(WINUAE_UNIX_SDL3_FALLBACK_OK OFF) + endif() + endif() + if(WINUAE_UNIX_SDL3_FALLBACK_OK) + add_library(WINUAE::SDL3 UNKNOWN IMPORTED) + set_target_properties(WINUAE::SDL3 PROPERTIES + IMPORTED_LOCATION "${WINUAE_UNIX_SDL3_FALLBACK_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${WINUAE_UNIX_SDL3_INCLUDE_DIR}" + ) + set(WINUAE_UNIX_SDL3_TARGET WINUAE::SDL3) + message(STATUS "Using SDL3 library: ${WINUAE_UNIX_SDL3_FALLBACK_LIBRARY}") + endif() + endif() + endif() + if(NOT WINUAE_UNIX_SDL3_TARGET AND PkgConfig_FOUND AND NOT APPLE) + pkg_check_modules(SDL3 QUIET sdl3) + endif() +endif() + +if(WINUAE_UNIX_SDL3_TARGET) + target_compile_definitions(winuae_core PRIVATE UAE_UNIX_WITH_SDL3=1) + target_link_libraries(winuae_core PRIVATE ${WINUAE_UNIX_SDL3_TARGET}) + list(APPEND WINUAE_UNIX_EXTRA_SOURCES od-unix/video_sdl.cpp) + list(APPEND WINUAE_UNIX_EXTRA_LIBRARIES ${WINUAE_UNIX_SDL3_TARGET}) +elseif(SDL3_FOUND) + target_compile_definitions(winuae_core PRIVATE UAE_UNIX_WITH_SDL3=1) + target_include_directories(winuae_core PRIVATE ${SDL3_INCLUDE_DIRS}) + target_compile_options(winuae_core PRIVATE ${SDL3_CFLAGS_OTHER}) + list(APPEND WINUAE_UNIX_EXTRA_SOURCES od-unix/video_sdl.cpp) + list(APPEND WINUAE_UNIX_EXTRA_LIBRARIES ${SDL3_LIBRARIES}) + list(APPEND WINUAE_UNIX_EXTRA_LIBRARY_DIRS ${SDL3_LIBRARY_DIRS}) +else() + list(APPEND WINUAE_UNIX_EXTRA_SOURCES od-unix/video_null.cpp) +endif() + +if(WINUAE_UNIX_WITH_SAMPLER AND (WINUAE_UNIX_SDL3_TARGET OR SDL3_FOUND)) + set(WINUAE_UNIX_ENABLE_SAMPLER ON) + target_compile_definitions(winuae_core PRIVATE WINUAE_UNIX_WITH_SAMPLER=1) + list(APPEND WINUAE_UNIX_EXTRA_SOURCES od-unix/sampler_sdl.cpp) +endif() + +set(WINUAE_CORE_SOURCES + a2091.cpp + akiko.cpp + amax.cpp + ar.cpp + arcadia.cpp + aros.rom.cpp + audio.cpp + autoconf.cpp + blitfunc.cpp + blitops.cpp + blittable.cpp + blitter.cpp + blkdev.cpp + blkdev_cdimage.cpp + bsdsocket.cpp + calc.cpp + cd32_fmv.cpp + cd32_fmv_genlock.cpp + cdrom.cpp + cdtv.cpp + cdtvcr.cpp + cfgfile.cpp + cia.cpp + consolehook.cpp + cpudefs.cpp + cpustbl.cpp + cpuemu_0.cpp + cpuemu_11.cpp + cpuemu_13.cpp + cpuemu_20.cpp + cpuemu_21.cpp + cpuemu_22.cpp + cpuemu_23.cpp + cpuemu_24.cpp + cpuemu_31.cpp + cpuemu_32.cpp + cpuemu_33.cpp + cpuemu_34.cpp + cpuemu_35.cpp + cpuemu_40.cpp + cpuemu_50.cpp + cpummu.cpp + cpummu30.cpp + crc32.cpp + custom.cpp + debug.cpp + debugmem.cpp + def_icons.cpp + devices.cpp + disasm.cpp + disk.cpp + diskutil.cpp + dlopen.cpp + dongle.cpp + drawing.cpp + driveclick.cpp + enforcer.cpp + ethernet.cpp + events.cpp + expansion.cpp + fdi2raw.cpp + filesys.cpp + flashrom.cpp + fpp.cpp + fpp_native.cpp + fpp_softfloat.cpp + framebufferboards.cpp + fsdb.cpp + fsdb_unix.cpp + gayle.cpp + gfxlib.cpp + gfxutil.cpp + hardfile.cpp + hrtmon.rom.cpp + ide.cpp + idecontrollers.cpp + identify.cpp + ini.cpp + inputdevice.cpp + inputrecord.cpp + isofs.cpp + kbmcu/8048/co8048.cpp + kbmcu/keyboard_mcu_6500_1.cpp + kbmcu/keyboard_mcu_6805.cpp + kbmcu/keyboard_mcu_d8039hlc.cpp + kbmcu/m6805/m68emu.cpp + kbmcu/m6805/m68_ops.cpp + keybuf.cpp + logging.cpp + main.cpp + memory.cpp + missing.cpp + mos6502.cpp + native2amiga.cpp + newcpu.cpp + newcpu_common.cpp + readcpu.cpp + rommgr.cpp + rtc.cpp + savestate.cpp + scp.cpp + scsi.cpp + scsitape.cpp + statusline.cpp + test_card.cpp + tinyxml2.cpp + traps.cpp + uaeexe.cpp + uaelib.cpp + uaeresource.cpp + vm.cpp + writelog.cpp + zfile.cpp + archivers/mp2/kjmp2.cpp + softfloat/softfloat.cpp + softfloat/softfloat_decimal.cpp + softfloat/softfloat_fpsp.cpp + od-unix/charset.cpp + od-unix/clipboard.cpp + od-unix/config.cpp + od-unix/driveclick.cpp + od-unix/dlopen.cpp + od-unix/filesys_host.cpp + od-unix/graphics.cpp + od-unix/gui.cpp + od-unix/hardfile_host.cpp + od-unix/input.cpp + od-unix/logging.cpp + od-unix/mman.cpp + od-unix/path_expand.cpp + od-unix/parallel.cpp + od-unix/romscan.cpp + od-unix/rtg.cpp + od-unix/screenshot.cpp + od-unix/serial.cpp + od-unix/sound.cpp + od-unix/stubs.cpp + od-unix/support.cpp + od-unix/threading.cpp + od-unix/time.cpp +) + +list(REMOVE_DUPLICATES WINUAE_UNIX_EXTRA_SOURCES) +list(APPEND WINUAE_CORE_SOURCES ${WINUAE_UNIX_EXTRA_SOURCES}) +target_sources(winuae_core PRIVATE ${WINUAE_CORE_SOURCES}) + +if(WINUAE_UNIX_BUILD_EXECUTABLE) + add_executable(winuae_unix $) + if(WINUAE_UNIX_EXTRA_LIBRARY_DIRS) + target_link_directories(winuae_unix PRIVATE ${WINUAE_UNIX_EXTRA_LIBRARY_DIRS}) + endif() + target_link_libraries(winuae_unix PRIVATE pthread ${CMAKE_DL_LIBS} ZLIB::ZLIB ${WINUAE_UNIX_EXTRA_LIBRARIES}) + + function(add_winuae_unix_smoke_target target script) + add_custom_target(${target} + COMMAND "${CMAKE_COMMAND}" -E env + "WINUAE_BUILD_DIR=${CMAKE_BINARY_DIR}" + "${CMAKE_CURRENT_SOURCE_DIR}/tools/${script}" + DEPENDS winuae_unix + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + COMMENT "Running ${script}" + VERBATIM + ) + endfunction() + + add_winuae_unix_smoke_target(winuae_unix_smoke_a1200 unix-smoke-a1200.sh) + add_winuae_unix_smoke_target(winuae_unix_smoke_a2065 unix-smoke-a2065.sh) + add_winuae_unix_smoke_target(winuae_unix_smoke_sana2 unix-smoke-sana2.sh) + add_winuae_unix_smoke_target(winuae_unix_smoke_driveclick unix-smoke-driveclick.sh) + add_winuae_unix_smoke_target(winuae_unix_smoke_sound_boards unix-smoke-sound-boards.sh) + add_winuae_unix_smoke_target(winuae_unix_smoke_rtg_z3 unix-smoke-rtg-z3.sh) + add_winuae_unix_smoke_target(winuae_unix_smoke_uaegfx unix-smoke-uaegfx.sh) + add_winuae_unix_smoke_target(winuae_unix_smoke_p96_guest unix-smoke-p96-guest.sh) + add_winuae_unix_smoke_target(winuae_unix_smoke_p96_guest_800x600 unix-smoke-p96-guest-800x600.sh) + add_winuae_unix_smoke_target(winuae_unix_smoke_p96_guest_16bit_modes unix-smoke-p96-guest-16bit-modes.sh) + add_winuae_unix_smoke_target(winuae_unix_smoke_p96_guest_15bit_open unix-smoke-p96-guest-15bit-open.sh) + add_winuae_unix_smoke_target(winuae_unix_smoke_p96_guest_16bit_open unix-smoke-p96-guest-16bit-open.sh) + add_winuae_unix_smoke_target(winuae_unix_smoke_p96_guest_24bit_open unix-smoke-p96-guest-24bit-open.sh) + add_winuae_unix_smoke_target(winuae_unix_smoke_p96_guest_32bit_open unix-smoke-p96-guest-32bit-open.sh) + add_winuae_unix_smoke_target(winuae_unix_smoke_p96_guest_draw_8bit unix-smoke-p96-guest-draw-8bit.sh) + add_winuae_unix_smoke_target(winuae_unix_smoke_p96_guest_draw_16bit unix-smoke-p96-guest-draw-16bit.sh) + add_winuae_unix_smoke_target(winuae_unix_smoke_p96_guest_z3 unix-smoke-p96-guest-z3.sh) + add_winuae_unix_smoke_target(winuae_unix_smoke_a4091_hdf unix-smoke-a4091-hdf.sh) + add_winuae_unix_smoke_target(winuae_unix_smoke_alfapower_hdf unix-smoke-alfapower-hdf.sh) + add_winuae_unix_smoke_target(winuae_unix_smoke_ripple_hdf unix-smoke-ripple-hdf.sh) + add_winuae_unix_smoke_target(winuae_unix_smoke_serial_tcp unix-smoke-serial-tcp.sh) + add_winuae_unix_smoke_target(winuae_unix_smoke_path_config unix-smoke-path-config.sh) + if(WINUAE_UNIX_ENABLE_JIT) + add_winuae_unix_smoke_target(winuae_unix_smoke_jit unix-smoke-jit.sh) + endif() + add_custom_target(winuae_unix_smoke_basic + DEPENDS winuae_unix_smoke_a1200 winuae_unix_smoke_path_config + ) +endif() + +add_executable(winuae_unix_path_expand_test EXCLUDE_FROM_ALL + od-unix/path_expand.cpp + od-unix/path_expand_test.cpp +) +target_include_directories(winuae_unix_path_expand_test PRIVATE + "${CMAKE_CURRENT_SOURCE_DIR}/od-unix" + "${CMAKE_CURRENT_SOURCE_DIR}/include" +) +winuae_unix_register_test(winuae_unix_path_expand_test) + +add_executable(winuae_unix_threading_test EXCLUDE_FROM_ALL + od-unix/threading.cpp + od-unix/threading_test.cpp +) +target_include_directories(winuae_unix_threading_test PRIVATE + "${CMAKE_CURRENT_SOURCE_DIR}/od-unix" + "${CMAKE_CURRENT_SOURCE_DIR}" + "${CMAKE_CURRENT_SOURCE_DIR}/include" +) +target_link_libraries(winuae_unix_threading_test PRIVATE pthread) +winuae_unix_register_test(winuae_unix_threading_test) + +if(WINUAE_UNIX_WITH_INTEGRATED_QT_UI AND NOT WINUAE_UNIX_WITH_QT_UI) + message(STATUS + "WINUAE_UNIX_WITH_INTEGRATED_QT_UI requires " + "WINUAE_UNIX_WITH_QT_UI; disabling integrated Qt UI" + ) + set(WINUAE_UNIX_WITH_INTEGRATED_QT_UI OFF) +endif() + +if(WINUAE_UNIX_WITH_QT_UI) + if(APPLE) + winuae_unix_macos_find_qt_frameworks(WINUAE_UNIX_QT_WIDGETS_TARGET) + endif() + if(NOT WINUAE_UNIX_QT_WIDGETS_TARGET) + find_package(Qt6 COMPONENTS Widgets QUIET) + if(Qt6_FOUND) + set(WINUAE_UNIX_QT_WIDGETS_TARGET Qt6::Widgets) + endif() + endif() + if(NOT WINUAE_UNIX_QT_WIDGETS_TARGET) + find_package(Qt5 COMPONENTS Widgets QUIET) + if(Qt5_FOUND) + set(WINUAE_UNIX_QT_WIDGETS_TARGET Qt5::Widgets) + endif() + endif() + + if(WINUAE_UNIX_QT_WIDGETS_TARGET) + add_library(winuae_unix_qt_frontend STATIC + od-unix/qt/config.cpp + od-unix/qt/launcher.cpp + od-unix/qt/launcher_bridge.cpp + od-unix/qt/mount_config.cpp + od-unix/qt/path_utils.cpp + od-unix/qt/prefs_adapter.cpp + ) + target_include_directories(winuae_unix_qt_frontend PRIVATE + "${CMAKE_CURRENT_SOURCE_DIR}/od-unix" + "${CMAKE_CURRENT_SOURCE_DIR}" + "${CMAKE_CURRENT_SOURCE_DIR}/include" + ) + target_compile_definitions(winuae_unix_qt_frontend PRIVATE + WINUAE_UNIX_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}" + WINUAE_UNIX_INSTALL_DATA_DIR="${CMAKE_INSTALL_FULL_DATADIR}/winuae" + WINUAE_UNIX_INSTALL_DATADIR_RELATIVE="${CMAKE_INSTALL_DATADIR}/winuae" + WINUAE_UNIX_VERSION_MAJOR=${WINUAE_UNIX_VERSION_MAJOR} + WINUAE_UNIX_VERSION_MINOR=${WINUAE_UNIX_VERSION_MINOR} + WINUAE_UNIX_VERSION_REVISION=${WINUAE_UNIX_VERSION_REVISION} + UAE_UNIX_WITH_SANA2=$ + UAE_UNIX_WITH_UAENET_PCAP=$ + UAE_UNIX_WITH_BSDSOCKET=$ + UAE_UNIX_WITH_UAESCSI=$ + UAE_UNIX_WITH_SAMPLER=$ + UAE_UNIX_WITH_NATIVE_HARDDRIVES=$ + UAE_UNIX_WITH_NATIVE_SCSI=$ + UAE_UNIX_WITH_MIDI=$ + UAE_UNIX_WITH_DSP=$ + UAE_UNIX_WITH_SNDBOARD=$ + UAE_UNIX_WITH_GFXBOARD=$ + UAE_UNIX_WITH_X86=$ + UAE_UNIX_WITH_DRACO=$ + UAE_UNIX_WITH_JIT=$ + UAE_UNIX_WITH_AVIOUTPUT=$ + UAE_UNIX_WITH_SHADER_PIPELINE=$ + ${WINUAE_UNIX_MIDI_QT_DEFINITIONS} + ) + if(WINUAE_UNIX_MIDI_INCLUDE_DIRS) + target_include_directories(winuae_unix_qt_frontend PRIVATE ${WINUAE_UNIX_MIDI_INCLUDE_DIRS}) + endif() + if(WINUAE_UNIX_MIDI_COMPILE_OPTIONS) + target_compile_options(winuae_unix_qt_frontend PRIVATE ${WINUAE_UNIX_MIDI_COMPILE_OPTIONS}) + endif() + target_link_libraries(winuae_unix_qt_frontend PUBLIC ${WINUAE_UNIX_QT_WIDGETS_TARGET}) + if(WINUAE_UNIX_MIDI_LIBRARY_DIRS) + target_link_directories(winuae_unix_qt_frontend PUBLIC ${WINUAE_UNIX_MIDI_LIBRARY_DIRS}) + endif() + if(WINUAE_UNIX_MIDI_LIBRARIES) + target_link_libraries(winuae_unix_qt_frontend PUBLIC ${WINUAE_UNIX_MIDI_LIBRARIES}) + endif() + if(WINUAE_UNIX_SDL3_TARGET) + target_compile_definitions(winuae_unix_qt_frontend PRIVATE UAE_UNIX_WITH_SDL3=1) + target_link_libraries(winuae_unix_qt_frontend PUBLIC ${WINUAE_UNIX_SDL3_TARGET}) + elseif(SDL3_FOUND) + target_compile_definitions(winuae_unix_qt_frontend PRIVATE UAE_UNIX_WITH_SDL3=1) + target_include_directories(winuae_unix_qt_frontend PRIVATE ${SDL3_INCLUDE_DIRS}) + target_compile_options(winuae_unix_qt_frontend PRIVATE ${SDL3_CFLAGS_OTHER}) + target_link_libraries(winuae_unix_qt_frontend PUBLIC ${SDL3_LIBRARIES}) + if(SDL3_LIBRARY_DIRS) + target_link_directories(winuae_unix_qt_frontend PUBLIC ${SDL3_LIBRARY_DIRS}) + endif() + endif() + + add_executable(winuae_unix_qt_config_test EXCLUDE_FROM_ALL + od-unix/qt/config.cpp + od-unix/qt/config_roundtrip_test.cpp + ) + target_link_libraries(winuae_unix_qt_config_test PRIVATE ${WINUAE_UNIX_QT_WIDGETS_TARGET}) + winuae_unix_register_test(winuae_unix_qt_config_test) + + add_executable(winuae_unix_qt_mount_config_test EXCLUDE_FROM_ALL + od-unix/qt/mount_config.cpp + od-unix/qt/mount_config_test.cpp + ) + target_link_libraries(winuae_unix_qt_mount_config_test PRIVATE ${WINUAE_UNIX_QT_WIDGETS_TARGET}) + winuae_unix_register_test(winuae_unix_qt_mount_config_test) + + add_executable(winuae_unix_qt_prefs_adapter_test EXCLUDE_FROM_ALL + od-unix/qt/config.cpp + od-unix/qt/prefs_adapter.cpp + od-unix/qt/prefs_adapter_test.cpp + ) + target_include_directories(winuae_unix_qt_prefs_adapter_test PRIVATE + "${CMAKE_CURRENT_SOURCE_DIR}/od-unix" + "${CMAKE_CURRENT_SOURCE_DIR}" + "${CMAKE_CURRENT_SOURCE_DIR}/include" + ) + target_link_libraries(winuae_unix_qt_prefs_adapter_test PRIVATE ${WINUAE_UNIX_QT_WIDGETS_TARGET}) + winuae_unix_register_test(winuae_unix_qt_prefs_adapter_test) + + add_executable(winuae_unix_qt_path_utils_test EXCLUDE_FROM_ALL + od-unix/qt/path_utils.cpp + od-unix/qt/path_utils_test.cpp + ) + target_link_libraries(winuae_unix_qt_path_utils_test PRIVATE ${WINUAE_UNIX_QT_WIDGETS_TARGET}) + winuae_unix_register_test(winuae_unix_qt_path_utils_test) + + if(WINUAE_UNIX_WITH_INTEGRATED_QT_UI) + target_compile_definitions(winuae_core PRIVATE WINUAE_UNIX_WITH_INTEGRATED_QT_UI=1) + if(TARGET winuae_unix) + target_link_libraries(winuae_unix PRIVATE winuae_unix_qt_frontend) + endif() + endif() + else() + message(STATUS "Qt Widgets not found; skipping Unix Qt targets") + endif() +endif() + +if(WINUAE_UNIX_TEST_TARGETS) + add_custom_target(winuae_unix_tests + DEPENDS ${WINUAE_UNIX_TEST_TARGETS} + ) + if(BUILD_TESTING) + add_custom_target(winuae_unix_check + COMMAND "${CMAKE_CTEST_COMMAND}" --output-on-failure + DEPENDS winuae_unix_tests + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" + COMMENT "Running Unix host tests" + VERBATIM + ) + endif() +endif() + +add_custom_target(winuae_unix_linux_package_metadata_check + COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/tools/unix-check-linux-package-metadata.sh" "${CMAKE_CURRENT_SOURCE_DIR}" + COMMENT "Checking Linux install and package metadata" + VERBATIM +) + +if(APPLE) + add_custom_target(winuae_unix_macos_deps + COMMAND "${CMAKE_COMMAND}" -E env + "WINUAE_MACOS_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}" + "${CMAKE_CURRENT_SOURCE_DIR}/tools/macos-build-deps.sh" "${WINUAE_UNIX_MACOS_DEPS_PREFIX}" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + COMMENT "Building private macOS dependencies for deployment target ${CMAKE_OSX_DEPLOYMENT_TARGET}" + VERBATIM + ) + add_custom_target(winuae_unix_macos_qemu_deps + COMMAND "${CMAKE_COMMAND}" -E env + "WINUAE_MACOS_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}" + "${CMAKE_CURRENT_SOURCE_DIR}/tools/macos-build-qemu-deps.sh" "${WINUAE_QEMU_UAE_DEPS_PREFIX}" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + COMMENT "Building private macOS QEMU-UAE dependencies for deployment target ${CMAKE_OSX_DEPLOYMENT_TARGET}" + VERBATIM + ) +endif() + +if(WINUAE_QEMU_UAE_PLUGIN_FILE) + get_filename_component(WINUAE_QEMU_UAE_PLUGIN_PATH + "${WINUAE_QEMU_UAE_PLUGIN_FILE}" ABSOLUTE + BASE_DIR "${CMAKE_BINARY_DIR}") +else() + set(WINUAE_QEMU_UAE_PLUGIN_PATH "${CMAKE_BINARY_DIR}/qemu-uae.so") +endif() +if(UNIX + AND WINUAE_UNIX_WITH_PPC_QEMU + AND WINUAE_UNIX_BUILD_QEMU_UAE_PLUGIN + AND EXISTS "${WINUAE_QEMU_UAE_SOURCE_DIR}/configure-qemu-uae") + add_custom_target(winuae_unix_qemu_uae_plugin + COMMAND "${CMAKE_COMMAND}" -E env + "WINUAE_MACOS_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}" + "QEMU_UAE_DEPS_PREFIX=${WINUAE_QEMU_UAE_DEPS_PREFIX}" + "${CMAKE_CURRENT_SOURCE_DIR}/tools/build-qemu-uae.sh" + "${WINUAE_QEMU_UAE_SOURCE_DIR}" + "${WINUAE_QEMU_UAE_PLUGIN_PATH}" + WORKING_DIRECTORY "${WINUAE_QEMU_UAE_SOURCE_DIR}" + COMMENT "Building QEMU-UAE PPC plugin" + VERBATIM + ) +endif() + +if(WINUAE_UNIX_WITH_PPC_QEMU) + if(WINUAE_QEMU_UAE_PLUGIN_FILE) + if(NOT EXISTS "${WINUAE_QEMU_UAE_PLUGIN_PATH}") + message(FATAL_ERROR + "WINUAE_QEMU_UAE_PLUGIN_FILE does not exist: " + "${WINUAE_QEMU_UAE_PLUGIN_PATH}") + endif() + endif() + set(WINUAE_UNIX_QEMU_UAE_PACKAGE_CHECK_DEPS) + if(TARGET winuae_unix_qemu_uae_plugin) + list(APPEND WINUAE_UNIX_QEMU_UAE_PACKAGE_CHECK_DEPS + winuae_unix_qemu_uae_plugin) + endif() + add_custom_target(winuae_unix_qemu_uae_package_check + COMMAND sh "${CMAKE_CURRENT_SOURCE_DIR}/tools/require-qemu-uae-plugin.sh" + "${WINUAE_QEMU_UAE_PLUGIN_PATH}" + DEPENDS ${WINUAE_UNIX_QEMU_UAE_PACKAGE_CHECK_DEPS} + COMMENT "Checking packaged QEMU-UAE PPC plugin" + VERBATIM + ) +endif() + +if(TARGET winuae_unix AND NOT APPLE) + install(PROGRAMS "$" + DESTINATION "${CMAKE_INSTALL_BINDIR}" + RENAME winuae + ) + install(FILES README_unix.md + DESTINATION "${CMAKE_INSTALL_DOCDIR}" + ) + install(DIRECTORY od-win32/resources/ + DESTINATION "${CMAKE_INSTALL_DATADIR}/winuae/od-win32/resources" + PATTERN "*.rc" EXCLUDE + PATTERN "*.manifest" EXCLUDE + PATTERN "resource.h" EXCLUDE + ) + if(WINUAE_UNIX_WITH_PPC_QEMU) + install(FILES "${WINUAE_QEMU_UAE_PLUGIN_PATH}" + DESTINATION "${WINUAE_UNIX_INSTALL_PLUGINDIR_RELATIVE}" + ) + endif() + if(NOT APPLE) + install(FILES od-unix/share/applications/net.winuae.WinUAE.desktop + DESTINATION "${CMAKE_INSTALL_DATADIR}/applications" + ) + install(FILES od-unix/share/mime/packages/net.winuae.WinUAE.xml + DESTINATION "${CMAKE_INSTALL_DATADIR}/mime/packages" + ) + install(FILES od-win32/resources/amiga.png + DESTINATION "${CMAKE_INSTALL_DATADIR}/icons/hicolor/256x256/apps" + RENAME winuae.png + ) + install(FILES od-win32/resources/amiga.png + DESTINATION "${CMAKE_INSTALL_DATADIR}/icons/hicolor/256x256/mimetypes" + RENAME application-x-winuae-config.png + ) + endif() +endif() + +if(APPLE AND TARGET winuae_unix) + set(WINUAE_UNIX_MACOS_APP_DEPS winuae_unix) + if(TARGET winuae_unix_qemu_uae_plugin) + list(APPEND WINUAE_UNIX_MACOS_APP_DEPS winuae_unix_qemu_uae_plugin) + endif() + if(TARGET winuae_unix_qemu_uae_package_check) + list(APPEND WINUAE_UNIX_MACOS_APP_DEPS + winuae_unix_qemu_uae_package_check) + endif() + add_custom_target(winuae_unix_macos_app + COMMAND "${CMAKE_COMMAND}" -E env + "WINUAE_QEMU_UAE_PLUGIN=${WINUAE_QEMU_UAE_PLUGIN_PATH}" + "${CMAKE_CURRENT_SOURCE_DIR}/tools/macos-bundle.sh" "${CMAKE_BINARY_DIR}" "${CMAKE_BINARY_DIR}/package" + DEPENDS ${WINUAE_UNIX_MACOS_APP_DEPS} + COMMENT "Creating WinUAE.app" + VERBATIM + ) + add_custom_target(winuae_unix_macos_dmg + COMMAND "${CMAKE_COMMAND}" -E env + "WINUAE_QEMU_UAE_PLUGIN=${WINUAE_QEMU_UAE_PLUGIN_PATH}" + "${CMAKE_CURRENT_SOURCE_DIR}/tools/macos-dmg.sh" "${CMAKE_BINARY_DIR}" "${CMAKE_BINARY_DIR}/package" + DEPENDS winuae_unix_macos_app + COMMENT "Creating WinUAE drag-install DMG" + VERBATIM + ) + if(TARGET winuae_unix_qt_frontend AND WINUAE_UNIX_WITH_INTEGRATED_QT_UI) + add_custom_target(winuae_unix_macos_app_smoke + COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/tools/macos-smoke-app.sh" "${CMAKE_BINARY_DIR}/package/WinUAE.app" + DEPENDS winuae_unix_macos_app + COMMENT "Smoke testing packaged WinUAE.app Qt launch" + VERBATIM + ) + add_custom_target(winuae_unix_macos_release_check + COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/tools/macos-smoke-app.sh" "${CMAKE_BINARY_DIR}/package/WinUAE.app" + DEPENDS winuae_unix_macos_dmg + COMMENT "Release checking packaged WinUAE DMG and Qt app launch" + VERBATIM + ) + else() + add_custom_target(winuae_unix_macos_release_check + COMMAND "${CMAKE_COMMAND}" -E echo "Qt integrated UI is disabled; release check is limited to DMG verification" + DEPENDS winuae_unix_macos_dmg + COMMENT "Release checking packaged WinUAE DMG" + VERBATIM + ) + endif() +endif() + +if(NOT APPLE) + set(CPACK_PACKAGE_NAME "WinUAE") + set(CPACK_PACKAGE_VENDOR "WinUAE") + set(CPACK_PACKAGE_VERSION "${WINUAE_UNIX_VERSION}") + set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "WinUAE Unix port") + set(CPACK_PACKAGE_CONTACT "https://www.winuae.net/") + set(CPACK_PACKAGE_FILE_NAME "WinUAE-${WINUAE_UNIX_VERSION}-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}") + set(CPACK_PACKAGING_INSTALL_PREFIX "/usr") + set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README_unix.md") + set(CPACK_GENERATOR "TGZ") + if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + list(APPEND CPACK_GENERATOR "DEB") + set(CPACK_DEBIAN_PACKAGE_NAME "winuae") + set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT) + set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://www.winuae.net/") + set(CPACK_DEBIAN_PACKAGE_MAINTAINER "WinUAE") + set(CPACK_DEBIAN_PACKAGE_SECTION "emulators") + set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional") + set(CPACK_DEBIAN_PACKAGE_RECOMMENDS + "desktop-file-utils, shared-mime-info, hicolor-icon-theme" + ) + set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) + set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA + "${CMAKE_CURRENT_SOURCE_DIR}/packaging/debian/postinst" + "${CMAKE_CURRENT_SOURCE_DIR}/packaging/debian/postrm" + ) + endif() + include(CPack) + if(TARGET package AND TARGET winuae_unix) + add_dependencies(package winuae_unix) + endif() + if(TARGET package AND TARGET winuae_unix_qemu_uae_plugin) + add_dependencies(package winuae_unix_qemu_uae_plugin) + endif() + if(TARGET package AND TARGET winuae_unix_qemu_uae_package_check) + add_dependencies(package winuae_unix_qemu_uae_package_check) + endif() +endif() diff --git a/od-unix/sysconfig.h b/od-unix/sysconfig.h index 78c4d1d6..ce32c241 100644 --- a/od-unix/sysconfig.h +++ b/od-unix/sysconfig.h @@ -156,7 +156,7 @@ typedef long uae_atomic; typedef int boolean; -#ifdef WINUAE_UNIX_WITH_GFXBOARD +#ifdef GFXBOARD typedef int8_t INT8; typedef uint8_t UINT8; typedef int16_t INT16;