42,7 @@ include(cmake/Dependencies.cmake) + + # Install rules may need dependency targets, such as SDL3 and SDL3_image, + # so include them after dependency discovery. +-if (CMAKE_SYSTEM_NAME STREQUAL "Linux") ++if (CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") + include(cmake/linux/install.cmake) + elseif (IOS) + include(cmake/ios/install.cmake) +@@ -153,25 +153,3 @@ include(packaging/CMakeLists.txt) + endif () + + include(packaging/CMakeLists.txt) +- +-# Link libraries (FreeBSD needs correct order) +-if(TARGET amiberry AND CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") +- target_link_options(amiberry PRIVATE -L/usr/local/lib) +- # Apply FreeBSD pkg-config include/link dirs +- if(FREEBSD_INCLUDE_DIRS) +- target_include_directories(amiberry PRIVATE ${FREEBSD_INCLUDE_DIRS}) +- endif() +- if(FREEBSD_LIBRARIES) +- target_link_libraries(amiberry PRIVATE ${FREEBSD_LIBRARIES}) +- endif() +- +- # forkpty() lives in libutil on FreeBSD +- target_link_libraries(amiberry PRIVATE util) +- +- # libiconv_* symbols come from ports/converters/libiconv +- find_library(LIBICONV_LIBRARY NAMES iconv PATHS /usr/local/lib REQUIRED) +- target_link_libraries(amiberry PRIVATE ${LIBICONV_LIBRARY}) +- +- # existing libs +- target_link_libraries(amiberry PRIVATE ${LIBUSB_LIBRARY} serialport ${EXTRA_LIBS}) +-endif() diff --git a/emulators/amiberry/files/patch-cmake_SourceFiles.cmake b/emulators/amiberry/files/patch-cmake_SourceFiles.cmake deleted file mode 100644 index f0f8e774ba0f..000000000000 --- a/emulators/amiberry/files/patch-cmake_SourceFiles.cmake +++ /dev/null @@ -1,11 +0,0 @@ ---- cmake/SourceFiles.cmake.orig 2025-09-07 17:28:06 UTC -+++ cmake/SourceFiles.cmake -@@ -452,7 +452,7 @@ install(TARGETS ${PROJECT_NAME} - ) - - # Settings for installing per platform --if (CMAKE_SYSTEM_NAME STREQUAL "Linux") -+if (CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") - include(cmake/linux/CMakeLists.txt) - elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin") - include(cmake/macos/CMakeLists.txt) diff --git a/emulators/amiberry/files/patch-cmake_StandardProjectSettings.cmake b/emulators/amiberry/files/patch-cmake_StandardProjectSettings.cmake new file mode 100644 index 000000000000..11ec8660d03f --- /dev/null +++ b/emulators/amiberry/files/patch-cmake_StandardProjectSettings.cmake @@ -0,0 +1,16 @@ +--- cmake/StandardProjectSettings.cmake.orig 2026-04-26 10:53:54 UTC ++++ cmake/StandardProjectSettings.cmake +@@ -83,6 +83,13 @@ if(WITH_LTO) + endif() + + if(WITH_LTO) ++ # ensure LTO links with lld on FreeBSD/clang. ++ if(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" AND CMAKE_CXX_COMPILER_ID MATCHES "Clang") ++ string(APPEND CMAKE_EXE_LINKER_FLAGS " -fuse-ld=lld") ++ string(APPEND CMAKE_SHARED_LINKER_FLAGS " -fuse-ld=lld") ++ string(APPEND CMAKE_MODULE_LINKER_FLAGS " -fuse-ld=lld") ++ endif() ++ + include(CheckIPOSupported) + check_ipo_supported(RESULT lto_supported OUTPUT lto_error) + if(lto_supported) diff --git a/emulators/amiberry/files/patch-src_osdep_fsdb__host.cpp b/emulators/amiberry/files/patch-src_osdep_fsdb__host.cpp new file mode 100644 index 000000000000..54696492b465 --- /dev/null +++ b/emulators/amiberry/files/patch-src_osdep_fsdb__host.cpp @@ -0,0 +1,16 @@ +--- src/osdep/fsdb_host.cpp.orig 2026-04-25 15:03:50 UTC ++++ src/osdep/fsdb_host.cpp +@@ -642,7 +642,13 @@ bool my_utime(const char* name, const struct mytimeval + ok = _utime(path_utf8.c_str(), &utb) == 0; + #else + struct timeval times[2]; ++#if defined(__FreeBSD__) && defined(__i386__) ++ times[0].tv_sec = static_cast(mtv.tv_sec); ++ times[0].tv_usec = static_cast(mtv.tv_usec); ++ times[1] = times[0]; ++#else + times[0] = times[1] = { mtv.tv_sec, mtv.tv_usec }; ++#endif + ok = utimes(path_utf8.c_str(), times) == 0; + #endif + } diff --git a/emulators/amiberry/files/patch-src_osdep_sigsegv__handler.cpp b/emulators/amiberry/files/patch-src_osdep_sigsegv__handler.cpp new file mode 100644 index 000000000000..703fc5bfb4ab --- /dev/null +++ b/emulators/amiberry/files/patch-src_osdep_sigsegv__handler.cpp @@ -0,0 +1,240 @@ +--- src/osdep/sigsegv_handler.cpp.orig 2026-04-26 06:59:39 UTC ++++ src/osdep/sigsegv_handler.cpp +@@ -63,6 +63,9 @@ void init_max_signals() + #else + #include + #endif ++#if defined(__FreeBSD__) && defined(CPU_AARCH64) ++#include ++#endif + #include + #include + +@@ -154,8 +157,10 @@ static int handle_exception(mcontext_t sigcont, long f + #endif + { + int handled = HANDLE_EXCEPTION_NONE; ++#if defined(__FreeBSD__) && defined(CPU_AARCH64) ++ auto fault_pc = static_cast(sigcont->mc_gpregs.gp_elr); ++#elif !defined(__MACH__) + // Mac OS X struct for this is different +-#ifndef __MACH__ + auto fault_pc = static_cast(sigcont->pc); + #else + auto fault_pc = static_cast(sigcont->__ss.__pc); +@@ -199,7 +204,9 @@ static int handle_exception(mcontext_t sigcont, long f + // Check for stupid RAM detection of kickstart + if (a3000lmem_bank.allocated_size > 0 && amiga_addr >= a3000lmem_bank.start - 0x00100000 && amiga_addr < a3000lmem_bank.start - 0x00100000 + 8) { + output_log(_T(" Stupid kickstart detection for size of ramsey_low at 0x%08x.\n"), amiga_addr); +-#ifndef __MACH__ ++#if defined(__FreeBSD__) && defined(CPU_AARCH64) ++ sigcont->mc_gpregs.gp_elr += 4; ++#elif !defined(__MACH__) + sigcont->pc += 4; + #else + sigcont->__ss.__pc += 4; +@@ -211,7 +218,9 @@ static int handle_exception(mcontext_t sigcont, long f + // Check for stupid RAM detection of kickstart + if (a3000hmem_bank.allocated_size > 0 && amiga_addr >= a3000hmem_bank.start + a3000hmem_bank.allocated_size && amiga_addr < a3000hmem_bank.start + a3000hmem_bank.allocated_size + 8) { + output_log(_T(" Stupid kickstart detection for size of ramsey_high at 0x%08x.\n"), amiga_addr); +-#ifndef __MACH__ ++#if defined(__FreeBSD__) && defined(CPU_AARCH64) ++ sigcont->mc_gpregs.gp_elr += 4; ++#elif !defined(__MACH__) + sigcont->pc += 4; + #else + sigcont->__ss.__pc += 4; +@@ -241,43 +250,58 @@ static int handle_exception(mcontext_t sigcont, long f + transfer_type_t transfer_type = TYPE_UNKNOWN; + int transfer_size = SIZE_UNKNOWN; + +- const auto get_reg_w = [&](const int reg) -> uae_u32 { +- if (reg == 31) +- return 0; +-#ifndef __MACH__ +- return static_cast(sigcont->regs[reg]); ++ const auto get_reg_w = [&](const int reg) -> uae_u32 { ++ if (reg == 31) ++ return 0; ++#if defined(__FreeBSD__) && defined(CPU_AARCH64) ++ if (reg < 30) ++ return static_cast(sigcont->mc_gpregs.gp_x[reg]); ++ return static_cast(sigcont->mc_gpregs.gp_lr); ++#elif !defined(__MACH__) ++ return static_cast(sigcont->regs[reg]); + #else +- return static_cast(sigcont->__ss.__x[reg]); ++ return static_cast(sigcont->__ss.__x[reg]); + #endif +- }; +- const auto get_reg_x = [&](const int reg) -> uae_u64 { +- if (reg == 31) +- return 0; +-#ifndef __MACH__ +- return static_cast(sigcont->regs[reg]); ++ }; ++ const auto get_reg_x = [&](const int reg) -> uae_u64 { ++ if (reg == 31) ++ return 0; ++#if defined(__FreeBSD__) && defined(CPU_AARCH64) ++ if (reg < 30) ++ return static_cast(sigcont->mc_gpregs.gp_x[reg]); ++ return static_cast(sigcont->mc_gpregs.gp_lr); ++#elif !defined(__MACH__) ++ return static_cast(sigcont->regs[reg]); + #else +- return static_cast(sigcont->__ss.__x[reg]); ++ return static_cast(sigcont->__ss.__x[reg]); + #endif +- }; +- const auto get_base_x = [&](const int reg) -> uae_u64 { +- if (reg == 31) { +-#ifndef __MACH__ +- return static_cast(sigcont->sp); ++ }; ++ const auto get_base_x = [&](const int reg) -> uae_u64 { ++ if (reg == 31) { ++#if defined(__FreeBSD__) && defined(CPU_AARCH64) ++ return static_cast(sigcont->mc_gpregs.gp_sp); ++#elif !defined(__MACH__) ++ return static_cast(sigcont->sp); + #else +- return static_cast(sigcont->__ss.__sp); ++ return static_cast(sigcont->__ss.__sp); + #endif +- } +- return get_reg_x(reg); +- }; +- const auto set_reg_w = [&](const int reg, const uae_u32 value) { +- if (reg == 31) +- return; +-#ifndef __MACH__ +- sigcont->regs[reg] = value; ++ } ++ return get_reg_x(reg); ++ }; ++ const auto set_reg_w = [&](const int reg, const uae_u32 value) { ++ if (reg == 31) ++ return; ++#if defined(__FreeBSD__) && defined(CPU_AARCH64) ++ if (reg < 30) ++ sigcont->mc_gpregs.gp_x[reg] = value; ++ else ++ sigcont->mc_gpregs.gp_lr = value; ++#elif !defined(__MACH__) ++ sigcont->regs[reg] = value; + #else +- sigcont->__ss.__x[reg] = value; ++ sigcont->__ss.__x[reg] = value; + #endif +- }; ++ }; + + // Decode memory operands for additional diagnostics. + const int rd = opcode & 0x1f; +@@ -489,7 +513,9 @@ static int handle_exception(mcontext_t sigcont, long f + } + + // Go to next instruction +-#ifndef __MACH__ ++#if defined(__FreeBSD__) && defined(CPU_AARCH64) ++ sigcont->mc_gpregs.gp_elr += 4; ++#elif !defined(__MACH__) + sigcont->pc += 4; + #else + sigcont->__ss.__pc += 4; +@@ -557,10 +583,14 @@ void signal_segv(int signum, siginfo_t* info, void* pt + + #ifndef __MACH__ + mcontext_t* context = &(ucontext->uc_mcontext); +- unsigned long long* regs = context->regs; ++#if defined(__FreeBSD__) && defined(CPU_AARCH64) ++ [[maybe_unused]] unsigned long long* regs = reinterpret_cast(context->mc_gpregs.gp_x); + #else ++ [[maybe_unused]] unsigned long long* regs = context->regs; ++#endif ++#else + mcontext_t context = ucontext->uc_mcontext; +- unsigned long long* regs = context->__ss.__x; ++ [[maybe_unused]] unsigned long long* regs = context->__ss.__x; + #endif + + const auto addr = reinterpret_cast(info->si_addr); +@@ -585,13 +615,24 @@ void signal_segv(int signum, siginfo_t* info, void* pt + if (signum == 4) + output_log(_T(" value = 0x%08x\n"), *static_cast(info->si_addr)); + +- for (int i = 0; i < 31; ++i) +-#ifndef __MACH__ +- output_log(_T("x%02d = 0x%016llx\n"), i, ucontext->uc_mcontext.regs[i]); +-#else +- output_log(_T("x%02d = 0x%016llx\n"), i, context->__ss.__x[i]); +-#endif +-#ifndef __MACH__ ++ #if defined(__FreeBSD__) && defined(CPU_AARCH64) ++ for (int i = 0; i < 30; ++i) ++ output_log(_T("x%02d = 0x%016llx\n"), i, ucontext->uc_mcontext.mc_gpregs.gp_x[i]); ++ output_log(_T("x30 = 0x%016llx\n"), ucontext->uc_mcontext.mc_gpregs.gp_lr); ++ #elif !defined(__MACH__) ++ for (int i = 0; i < 31; ++i) ++ output_log(_T("x%02d = 0x%016llx\n"), i, ucontext->uc_mcontext.regs[i]); ++ #else ++ for (int i = 0; i < 31; ++i) ++ output_log(_T("x%02d = 0x%016llx\n"), i, context->__ss.__x[i]); ++ #endif ++#if defined(__FreeBSD__) && defined(CPU_AARCH64) ++ output_log(_T("SP = 0x%016llx\n"), ucontext->uc_mcontext.mc_gpregs.gp_sp); ++ output_log(_T("PC = 0x%016llx\n"), ucontext->uc_mcontext.mc_gpregs.gp_elr); ++ output_log(_T("Fault Address = 0x%016llx\n"), static_cast(reinterpret_cast(info->si_addr))); ++ output_log(_T("SPSR = 0x%016llx\n"), static_cast(ucontext->uc_mcontext.mc_gpregs.gp_spsr)); ++ void* getaddr = reinterpret_cast(ucontext->uc_mcontext.mc_gpregs.gp_lr); ++#elif !defined(__MACH__) + output_log(_T("SP = 0x%016llx\n"), ucontext->uc_mcontext.sp); + output_log(_T("PC = 0x%016llx\n"), ucontext->uc_mcontext.pc); + output_log(_T("Fault Address = 0x%016llx\n"), ucontext->uc_mcontext.fault_address); +@@ -672,10 +713,14 @@ void signal_buserror(int signum, siginfo_t* info, void + + #ifndef __MACH__ + mcontext_t* context = &(ucontext->uc_mcontext); +- unsigned long long* regs = context->regs; ++#if defined(__FreeBSD__) && defined(CPU_AARCH64) ++ [[maybe_unused]] unsigned long long* regs = reinterpret_cast(context->mc_gpregs.gp_x); + #else ++ [[maybe_unused]] unsigned long long* regs = context->regs; ++#endif ++#else + mcontext_t context = ucontext->uc_mcontext; +- unsigned long long* regs = context->__ss.__x; ++ [[maybe_unused]] unsigned long long* regs = context->__ss.__x; + #endif + + auto addr = reinterpret_cast(info->si_addr); +@@ -695,8 +740,17 @@ void signal_buserror(int signum, siginfo_t* info, void + if (signum == 4) + output_log(_T(" value = 0x%08x\n"), *static_cast(info->si_addr)); + ++ #if defined(__FreeBSD__) && defined(CPU_AARCH64) ++ for (int i = 0; i < 30; ++i) ++ output_log(_T("x%02d = 0x%016llx\n"), i, ucontext->uc_mcontext.mc_gpregs.gp_x[i]); ++ output_log(_T("x30 = 0x%016llx\n"), ucontext->uc_mcontext.mc_gpregs.gp_lr); ++ output_log(_T("SP = 0x%016llx\n"), ucontext->uc_mcontext.mc_gpregs.gp_sp); ++ output_log(_T("PC = 0x%016llx\n"), ucontext->uc_mcontext.mc_gpregs.gp_elr); ++ output_log(_T("Fault Address = 0x%016llx\n"), static_cast(reinterpret_cast(info->si_addr))); ++ output_log(_T("SPSR = 0x%016llx\n"), static_cast(ucontext->uc_mcontext.mc_gpregs.gp_spsr)); ++ void* getaddr = reinterpret_cast(ucontext->uc_mcontext.mc_gpregs.gp_lr); ++ #elif !defined(__MACH__) + for (int i = 0; i < 31; ++i) +-#ifndef __MACH__ + output_log(_T("x%02d = 0x%016llx\n"), i, ucontext->uc_mcontext.regs[i]); + output_log(_T("SP = 0x%016llx\n"), ucontext->uc_mcontext.sp); + output_log(_T("PC = 0x%016llx\n"), ucontext->uc_mcontext.pc); +@@ -704,7 +758,8 @@ void signal_buserror(int signum, siginfo_t* info, void + output_log(_T("pstate = 0x%016llx\n"), ucontext->uc_mcontext.pstate); + + void* getaddr = (void*)ucontext->uc_mcontext.regs[30]; +-#else ++ #else ++ for (int i = 0; i < 31; ++i) + output_log(_T("x%02d = 0x%016llx\n"), i, context->__ss.__x[i]); + output_log(_T("SP = 0x%016llx\n"), context->__ss.__sp); + output_log(_T("PC = 0x%016llx\n"), context->__ss.__pc); diff --git a/emulators/amiberry/files/patch-src_pcem_vid__voodoo__codegen__x86.h b/emulators/amiberry/files/patch-src_pcem_vid__voodoo__codegen__x86.h new file mode 100644 index 000000000000..7ebe87c96b32 --- /dev/null +++ b/emulators/amiberry/files/patch-src_pcem_vid__voodoo__codegen__x86.h @@ -0,0 +1,86 @@ +--- src/pcem/vid_voodoo_codegen_x86.h.orig 2026-04-25 16:24:20 UTC ++++ src/pcem/vid_voodoo_codegen_x86.h +@@ -5,7 +5,7 @@ + fbzColorPath + */ + +-#if defined(__linux__) || defined(__APPLE__) ++#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) + #include + #include + #endif +@@ -16,6 +16,7 @@ + #endif + + #include ++#include + + #define BLOCK_NUM 8 + #define BLOCK_MASK (BLOCK_NUM-1) +@@ -85,6 +86,23 @@ static uint32_t i_00_ff_w[2] = {0, 0xff}; + static __m128i xmm_00_ff_w[2]; + static uint32_t i_00_ff_w[2] = {0, 0xff}; + ++static inline __m128i voodoo_set_epi32_u32(uint32_t e3, uint32_t e2, uint32_t e1, uint32_t e0) ++{ ++#if defined(__FreeBSD__) && defined(__i386__) ++ union { ++ __m128i v; ++ uint32_t u[4]; ++ } value = {}; ++ value.u[0] = e0; ++ value.u[1] = e1; ++ value.u[2] = e2; ++ value.u[3] = e3; ++ return value.v; ++#else ++ return _mm_set_epi32(static_cast(e3), static_cast(e2), static_cast(e1), static_cast(e0)); ++#endif ++} ++ + static inline int codegen_texture_fetch(uint8_t *code_block, voodoo_t *voodoo, voodoo_params_t *params, voodoo_state_t *state, int block_pos, int tmu) + { + if (params->textureMode[tmu] & 1) +@@ -674,10 +692,10 @@ static inline void voodoo_generate(uint8_t *code_block + // xmm_01_w = (__m128i)0x0001000100010001ull; + // xmm_ff_w = (__m128i)0x00ff00ff00ff00ffull; + // xmm_ff_b = (__m128i)0x00000000ffffffffull; +- xmm_01_w = _mm_set_epi32(0, 0, 0x00010001, 0x00010001); +- xmm_ff_w = _mm_set_epi32(0, 0, 0x00ff00ff, 0x00ff00ff); +- xmm_ff_b = _mm_set_epi32(0, 0, 0, 0x00ffffff); +- minus_254 = _mm_set_epi32(0, 0, 0xff02ff02, 0xff02ff02); ++ xmm_01_w = voodoo_set_epi32_u32(0, 0, 0x00010001u, 0x00010001u); ++ xmm_ff_w = voodoo_set_epi32_u32(0, 0, 0x00ff00ffu, 0x00ff00ffu); ++ xmm_ff_b = voodoo_set_epi32_u32(0, 0, 0, 0x00ffffffu); ++ minus_254 = voodoo_set_epi32_u32(0, 0, 0xff02ff02u, 0xff02ff02u); + // *(uint64_t *)&const_1_48 = 0x45b0000000000000ull; + // block_pos = 0; + // voodoo_get_depth = &code_block[block_pos]; +@@ -3386,20 +3404,20 @@ void voodoo_codegen_init(voodoo_t *voodoo) + int _ds = c & 0xf; + int dt = c >> 4; + +- alookup[c] = _mm_set_epi32(0, 0, c | (c << 16), c | (c << 16)); +- aminuslookup[c] = _mm_set_epi32(0, 0, (255-c) | ((255-c) << 16), (255-c) | ((255-c) << 16)); ++ alookup[c] = voodoo_set_epi32_u32(0, 0, static_cast(c | (c << 16)), static_cast(c | (c << 16))); ++ aminuslookup[c] = voodoo_set_epi32_u32(0, 0, static_cast((255-c) | ((255-c) << 16)), static_cast((255-c) | ((255-c) << 16))); + + d[0] = (16 - _ds) * (16 - dt); + d[1] = _ds * (16 - dt); + d[2] = (16 - _ds) * dt; + d[3] = _ds * dt; + +- bilinear_lookup[c*2] = _mm_set_epi32(d[1] | (d[1] << 16), d[1] | (d[1] << 16), d[0] | (d[0] << 16), d[0] | (d[0] << 16)); +- bilinear_lookup[c*2 + 1] = _mm_set_epi32(d[3] | (d[3] << 16), d[3] | (d[3] << 16), d[2] | (d[2] << 16), d[2] | (d[2] << 16)); ++ bilinear_lookup[c*2] = voodoo_set_epi32_u32(static_cast(d[1] | (d[1] << 16)), static_cast(d[1] | (d[1] << 16)), static_cast(d[0] | (d[0] << 16)), static_cast(d[0] | (d[0] << 16))); ++ bilinear_lookup[c*2 + 1] = voodoo_set_epi32_u32(static_cast(d[3] | (d[3] << 16)), static_cast(d[3] | (d[3] << 16)), static_cast(d[2] | (d[2] << 16)), static_cast(d[2] | (d[2] << 16))); + } +- alookup[256] = _mm_set_epi32(0, 0, 256 | (256 << 16), 256 | (256 << 16)); +- xmm_00_ff_w[0] = _mm_set_epi32(0, 0, 0, 0); +- xmm_00_ff_w[1] = _mm_set_epi32(0, 0, 0xff | (0xff << 16), 0xff | (0xff << 16)); ++ alookup[256] = voodoo_set_epi32_u32(0, 0, 256u | (256u << 16), 256u | (256u << 16)); ++ xmm_00_ff_w[0] = voodoo_set_epi32_u32(0, 0, 0, 0); ++ xmm_00_ff_w[1] = voodoo_set_epi32_u32(0, 0, 0xffu | (0xffu << 16), 0xffu | (0xffu << 16)); + } + + void voodoo_codegen_close(voodoo_t *voodoo) diff --git a/emulators/amiberry/pkg-plist b/emulators/amiberry/pkg-plist index c4c9adabb352..53c6e3b1b224 100644 --- a/emulators/amiberry/pkg-plist +++ b/emulators/amiberry/pkg-plist @@ -3,115 +3,15 @@ lib/amiberry/libcapsimage.so lib/amiberry/libfloppybridge.so %%DATADIR%%/controllers/gamecontrollerdb.txt %%DATADIR%%/controllers/gamecontrollerdb_user.txt -%%DATADIR%%/data/35floppy.png -%%DATADIR%%/data/AmigaTopaz.ttf %%DATADIR%%/data/abr/brainfile.xml %%DATADIR%%/data/abr/catlist.xml -%%DATADIR%%/data/amiberry-logo.png -%%DATADIR%%/data/amiberry.png -%%DATADIR%%/data/amiberry.svg -%%DATADIR%%/data/amigainfo.png -%%DATADIR%%/data/axis.png -%%DATADIR%%/data/button.png -%%DATADIR%%/data/chip.png -%%DATADIR%%/data/controller.png -%%DATADIR%%/data/controllermap.png -%%DATADIR%%/data/controllermap_back.png -%%DATADIR%%/data/cpu.png -%%DATADIR%%/data/cursor.bmp -%%DATADIR%%/data/delete.png -%%DATADIR%%/data/drive.png -%%DATADIR%%/data/expansion.png -%%DATADIR%%/data/file.png -%%DATADIR%%/data/fixedfont.png +%%DATADIR%%/data/amiberry.ico %%DATADIR%%/data/floppy_sounds/drive_click.wav %%DATADIR%%/data/floppy_sounds/drive_snatch.wav %%DATADIR%%/data/floppy_sounds/drive_spin.wav %%DATADIR%%/data/floppy_sounds/drive_spinnd.wav %%DATADIR%%/data/floppy_sounds/drive_startup.wav %%DATADIR%%/data/icon.icns -%%DATADIR%%/data/joystick.png -%%DATADIR%%/data/keyboard.png -%%DATADIR%%/data/misc.png -%%DATADIR%%/data/paths.png -%%DATADIR%%/data/port.png -%%DATADIR%%/data/quickstart.png -%%DATADIR%%/data/rpgfont.png -%%DATADIR%%/data/savestate.png -%%DATADIR%%/data/screen.png -%%DATADIR%%/data/sound.png -%%DATADIR%%/data/vkbd/vkbdCoolFRLarge.png -%%DATADIR%%/data/vkbd/vkbdCoolFRLargeHires.png -%%DATADIR%%/data/vkbd/vkbdCoolFRLargeShift.png -%%DATADIR%%/data/vkbd/vkbdCoolFRLargeShiftHires.png -%%DATADIR%%/data/vkbd/vkbdCoolGerLarge.png -%%DATADIR%%/data/vkbd/vkbdCoolGerLargeHires.png -%%DATADIR%%/data/vkbd/vkbdCoolGerLargeShift.png -%%DATADIR%%/data/vkbd/vkbdCoolGerLargeShiftHires.png -%%DATADIR%%/data/vkbd/vkbdCoolQuit.png -%%DATADIR%%/data/vkbd/vkbdCoolQuitHires.png -%%DATADIR%%/data/vkbd/vkbdCoolUKLarge.png -%%DATADIR%%/data/vkbd/vkbdCoolUKLargeHires.png -%%DATADIR%%/data/vkbd/vkbdCoolUKLargeShift.png -%%DATADIR%%/data/vkbd/vkbdCoolUKLargeShiftHires.png -%%DATADIR%%/data/vkbd/vkbdCoolUSLarge.png -%%DATADIR%%/data/vkbd/vkbdCoolUSLargeHires.png -%%DATADIR%%/data/vkbd/vkbdCoolUSLargeShift.png -%%DATADIR%%/data/vkbd/vkbdCoolUSLargeShiftHires.png -%%DATADIR%%/data/vkbd/vkbdDarkFRLarge.png -%%DATADIR%%/data/vkbd/vkbdDarkFRLargeHires.png -%%DATADIR%%/data/vkbd/vkbdDarkFRLargeShift.png -%%DATADIR%%/data/vkbd/vkbdDarkFRLargeShiftHires.png -%%DATADIR%%/data/vkbd/vkbdDarkGerLarge.png -%%DATADIR%%/data/vkbd/vkbdDarkGerLargeHires.png -%%DATADIR%%/data/vkbd/vkbdDarkGerLargeShift.png -%%DATADIR%%/data/vkbd/vkbdDarkGerLargeShiftHires.png -%%DATADIR%%/data/vkbd/vkbdDarkQuit.png -%%DATADIR%%/data/vkbd/vkbdDarkQuitHires.png -%%DATADIR%%/data/vkbd/vkbdDarkUKLarge.png -%%DATADIR%%/data/vkbd/vkbdDarkUKLargeHires.png -%%DATADIR%%/data/vkbd/vkbdDarkUKLargeShift.png -%%DATADIR%%/data/vkbd/vkbdDarkUKLargeShiftHires.png -%%DATADIR%%/data/vkbd/vkbdDarkUSLarge.png -%%DATADIR%%/data/vkbd/vkbdDarkUSLargeHires.png -%%DATADIR%%/data/vkbd/vkbdDarkUSLargeShift.png -%%DATADIR%%/data/vkbd/vkbdDarkUSLargeShiftHires.png -%%DATADIR%%/data/vkbd/vkbdOrigFRLarge.png -%%DATADIR%%/data/vkbd/vkbdOrigFRLargeHires.png -%%DATADIR%%/data/vkbd/vkbdOrigFRLargeShift.png -%%DATADIR%%/data/vkbd/vkbdOrigFRLargeShiftHires.png -%%DATADIR%%/data/vkbd/vkbdOrigGerLarge.png -%%DATADIR%%/data/vkbd/vkbdOrigGerLargeHires.png -%%DATADIR%%/data/vkbd/vkbdOrigGerLargeShift.png -%%DATADIR%%/data/vkbd/vkbdOrigGerLargeShiftHires.png -%%DATADIR%%/data/vkbd/vkbdOrigQuit.png -%%DATADIR%%/data/vkbd/vkbdOrigQuitHires.png -%%DATADIR%%/data/vkbd/vkbdOrigUKLarge.png -%%DATADIR%%/data/vkbd/vkbdOrigUKLargeHires.png -%%DATADIR%%/data/vkbd/vkbdOrigUKLargeShift.png -%%DATADIR%%/data/vkbd/vkbdOrigUKLargeShiftHires.png -%%DATADIR%%/data/vkbd/vkbdOrigUSLarge.png -%%DATADIR%%/data/vkbd/vkbdOrigUSLargeHires.png -%%DATADIR%%/data/vkbd/vkbdOrigUSLargeShift.png -%%DATADIR%%/data/vkbd/vkbdOrigUSLargeShiftHires.png -%%DATADIR%%/data/vkbd/vkbdWarmFRLarge.png -%%DATADIR%%/data/vkbd/vkbdWarmFRLargeHires.png -%%DATADIR%%/data/vkbd/vkbdWarmFRLargeShift.png -%%DATADIR%%/data/vkbd/vkbdWarmFRLargeShiftHires.png -%%DATADIR%%/data/vkbd/vkbdWarmGerLarge.png -%%DATADIR%%/data/vkbd/vkbdWarmGerLargeHires.png -%%DATADIR%%/data/vkbd/vkbdWarmGerLargeShift.png -%%DATADIR%%/data/vkbd/vkbdWarmGerLargeShiftHires.png -%%DATADIR%%/data/vkbd/vkbdWarmQuit.png -%%DATADIR%%/data/vkbd/vkbdWarmQuitHires.png -%%DATADIR%%/data/vkbd/vkbdWarmUKLarge.png -%%DATADIR%%/data/vkbd/vkbdWarmUKLargeHires.png -%%DATADIR%%/data/vkbd/vkbdWarmUKLargeShift.png -%%DATADIR%%/data/vkbd/vkbdWarmUKLargeShiftHires.png -%%DATADIR%%/data/vkbd/vkbdWarmUSLarge.png -%%DATADIR%%/data/vkbd/vkbdWarmUSLargeHires.png -%%DATADIR%%/data/vkbd/vkbdWarmUSLargeShift.png -%%DATADIR%%/data/vkbd/vkbdWarmUSLargeShiftHires.png %%DATADIR%%/roms/aros-ext.bin %%DATADIR%%/roms/aros-rom.bin %%DATADIR%%/roms/mt32-roms/dir.txt @@ -131,9 +31,12 @@ lib/amiberry/libfloppybridge.so %%DATADIR%%/whdboot/save-data/Kickstarts/kick40068.A4000.RTB %%DATADIR%%/whdboot/save-data/Savegames/foo.txt share/applications/Amiberry.desktop -%%DOCS%%%%DOCSDIR%%/changelog.gz -%%DOCS%%%%DOCSDIR%%/copyright -share/icons/hicolor/scalable/apps/amiberry.svg +%%PORTDOCS%%%%DOCSDIR%%/changelog.gz +%%PORTDOCS%%%%DOCSDIR%%/copyright +share/icons/hicolor/128x128/apps/amiberry.png +share/icons/hicolor/256x256/apps/amiberry.png +share/icons/hicolor/512x512/apps/amiberry.png +share/icons/hicolor/64x64/apps/amiberry.png share/man/man1/amiberry.1.gz share/metainfo/Amiberry.metainfo.xml share/mime/packages/amiberry.xml