- Removed custom UAE classes, now using only updated standard Guisan components - Updated all Guisan widgets according to current C++ standards (modernized code) - Fixed a few minor GUI bugs - Improved visibility of disabled GUI objects (e.g. sliders, checkboxes, dropdowns)
415 lines
13 KiB
CMake
415 lines
13 KiB
CMake
cmake_minimum_required(VERSION 3.0)
|
|
set(CMAKE_VERBOSE_MAKEFILE OFF)
|
|
|
|
set(VERSION_MAJOR 2)
|
|
set(VERSION_MINOR 24)
|
|
|
|
if(BUILD_PSP2)
|
|
if (NOT DEFINED CMAKE_TOOLCHAIN_FILE)
|
|
if (DEFINED ENV{VITASDK})
|
|
set(CMAKE_TOOLCHAIN_FILE "$ENV{VITASDK}/share/vita.toolchain.cmake" CACHE PATH "toolchain file")
|
|
else ()
|
|
message(FATAL_ERROR "Please define VITASDK to point to your SDK path!")
|
|
endif ()
|
|
endif ()
|
|
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
set(BUILD_DEBUG true CACHE BOOL "Build with psp2shell support")
|
|
endif()
|
|
endif(BUILD_PSP2)
|
|
|
|
if(BUILD_NX)
|
|
set(CMAKE_SYSTEM_NAME "Generic")
|
|
set(DEVKITPRO $ENV{DEVKITPRO})
|
|
set(CMAKE_SYSTEM_PROCESSOR "armv8-a")
|
|
set(CMAKE_C_COMPILER "${DEVKITPRO}/devkitA64/bin/aarch64-none-elf-gcc")
|
|
set(CMAKE_CXX_COMPILER "${DEVKITPRO}/devkitA64/bin/aarch64-none-elf-g++")
|
|
set(CMAKE_ASM_COMPILER "${DEVKITPRO}/devkitA64/bin/aarch64-none-elf-as")
|
|
set(CMAKE_AR "${DEVKITPRO}/devkitA64/bin/aarch64-none-elf-gcc-ar" CACHE STRING "")
|
|
set(CMAKE_RANLIB "${DEVKITPRO}/devkitA64/bin/aarch64-none-elf-gcc-ranlib" CACHE STRING "")
|
|
set(CMAKE_FIND_ROOT_PATH ${DEVKITPRO} ${DEVKITPRO}/devkitA64 ${DEVKITPRO}/libnx ${DEVKITPRO}/portlibs/switch)
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
|
set(BUILD_SHARED_LIBS OFF CACHE INTERNAL "Shared libs not available")
|
|
link_directories(${DEVKITPRO}/libnx/lib ${DEVKITPRO}/portlibs/switch/lib)
|
|
endif(BUILD_NX)
|
|
|
|
execute_process(COMMAND "date" "+%Y.%m.%d"
|
|
OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
|
|
project(amiberry)
|
|
|
|
if(BUILD_PSP2)
|
|
enable_language(ASM)
|
|
|
|
include("${VITASDK}/share/vita.cmake" REQUIRED)
|
|
endif(BUILD_PSP2)
|
|
|
|
set(TITLEID "AMIBERRY00")
|
|
|
|
set(SRC_FILES
|
|
src/akiko.cpp
|
|
src/ar.cpp
|
|
src/aros.rom.cpp
|
|
src/audio.cpp
|
|
src/autoconf.cpp
|
|
src/blitfunc.cpp
|
|
src/blittable.cpp
|
|
src/blitter.cpp
|
|
src/blkdev.cpp
|
|
src/blkdev_cdimage.cpp
|
|
src/bsdsocket.cpp
|
|
src/calc.cpp
|
|
src/cd32_fmv.cpp
|
|
src/cd32_fmv_genlock.cpp
|
|
src/cdrom.cpp
|
|
src/cfgfile.cpp
|
|
src/cia.cpp
|
|
src/crc32.cpp
|
|
src/custom.cpp
|
|
src/devices.cpp
|
|
src/disk.cpp
|
|
src/diskutil.cpp
|
|
src/drawing.cpp
|
|
src/events.cpp
|
|
src/expansion.cpp
|
|
src/fdi2raw.cpp
|
|
src/filesys.cpp
|
|
src/flashrom.cpp
|
|
src/fpp.cpp
|
|
src/fsdb.cpp
|
|
src/fsdb_unix.cpp
|
|
src/fsusage.cpp
|
|
src/gayle.cpp
|
|
src/gfxboard.cpp
|
|
src/gfxutil.cpp
|
|
src/hardfile.cpp
|
|
src/hrtmon.rom.cpp
|
|
src/ide.cpp
|
|
src/inputdevice.cpp
|
|
src/keybuf.cpp
|
|
src/main.cpp
|
|
src/memory.cpp
|
|
src/native2amiga.cpp
|
|
src/rommgr.cpp
|
|
src/rtc.cpp
|
|
src/savestate.cpp
|
|
src/scp.cpp
|
|
src/scsi.cpp
|
|
src/statusline.cpp
|
|
src/traps.cpp
|
|
src/uaelib.cpp
|
|
src/uaeresource.cpp
|
|
src/zfile.cpp
|
|
src/zfile_archive.cpp
|
|
src/archivers/7z/7zAlloc.cpp
|
|
src/archivers/7z/7zBuf.cpp
|
|
src/archivers/7z/7zCrc.cpp
|
|
src/archivers/7z/7zCrcOpt.cpp
|
|
src/archivers/7z/7zDec.cpp
|
|
src/archivers/7z/7zIn.cpp
|
|
src/archivers/7z/7zStream.cpp
|
|
src/archivers/7z/Bcj2.cpp
|
|
src/archivers/7z/Bra.cpp
|
|
src/archivers/7z/Bra86.cpp
|
|
src/archivers/7z/BraIA64.c
|
|
src/archivers/7z/Delta.c
|
|
src/archivers/7z/LzmaDec.cpp
|
|
src/archivers/7z/Lzma2Dec.cpp
|
|
src/archivers/7z/Sha256.c
|
|
src/archivers/7z/Xz.cpp
|
|
src/archivers/7z/XzCrc64.c
|
|
src/archivers/7z/XzDec.c
|
|
src/archivers/dms/crc_csum.cpp
|
|
src/archivers/dms/getbits.cpp
|
|
src/archivers/dms/maketbl.cpp
|
|
src/archivers/dms/pfile.cpp
|
|
src/archivers/dms/tables.cpp
|
|
src/archivers/dms/u_deep.cpp
|
|
src/archivers/dms/u_heavy.cpp
|
|
src/archivers/dms/u_init.cpp
|
|
src/archivers/dms/u_medium.cpp
|
|
src/archivers/dms/u_quick.cpp
|
|
src/archivers/dms/u_rle.cpp
|
|
src/archivers/lha/crcio.cpp
|
|
src/archivers/lha/dhuf.cpp
|
|
src/archivers/lha/header.cpp
|
|
src/archivers/lha/huf.cpp
|
|
src/archivers/lha/larc.cpp
|
|
src/archivers/lha/lhamaketbl.cpp
|
|
src/archivers/lha/lharc.cpp
|
|
src/archivers/lha/shuf.cpp
|
|
src/archivers/lha/shuf.cpp
|
|
src/archivers/lha/slide.cpp
|
|
src/archivers/lha/uae_lha.cpp
|
|
src/archivers/lha/util.cpp
|
|
src/archivers/lzx/unlzx.cpp
|
|
src/archivers/mp2/kjmp2.cpp
|
|
src/archivers/wrp/warp.cpp
|
|
src/archivers/zip/unzip.cpp
|
|
src/machdep/support.cpp
|
|
src/osdep/bsdsocket_host.cpp
|
|
src/osdep/cda_play.cpp
|
|
src/osdep/charset.cpp
|
|
src/osdep/fsdb_host.cpp
|
|
src/osdep/amiberry_hardfile.cpp
|
|
src/osdep/keyboard.cpp
|
|
src/osdep/mp3decoder.cpp
|
|
src/osdep/picasso96.cpp
|
|
src/osdep/writelog.cpp
|
|
src/osdep/amiberry.cpp
|
|
src/osdep/amiberry_filesys.cpp
|
|
src/osdep/amiberry_input.cpp
|
|
src/osdep/amiberry_gfx.cpp
|
|
src/osdep/amiberry_gui.cpp
|
|
src/osdep/amiberry_rp9.cpp
|
|
src/osdep/amiberry_mem.cpp
|
|
src/osdep/amiberry_whdbooter.cpp
|
|
src/osdep/sigsegv_handler.cpp
|
|
src/sounddep/sound.cpp
|
|
src/osdep/gui/InGameMessage.cpp
|
|
src/osdep/gui/SelectorEntry.cpp
|
|
src/osdep/gui/ShowHelp.cpp
|
|
src/osdep/gui/ShowMessage.cpp
|
|
src/osdep/gui/SelectFolder.cpp
|
|
src/osdep/gui/SelectFile.cpp
|
|
src/osdep/gui/CreateFilesysHardfile.cpp
|
|
src/osdep/gui/EditFilesysVirtual.cpp
|
|
src/osdep/gui/EditFilesysHardfile.cpp
|
|
src/osdep/gui/PanelAbout.cpp
|
|
src/osdep/gui/PanelPaths.cpp
|
|
src/osdep/gui/PanelQuickstart.cpp
|
|
src/osdep/gui/PanelConfig.cpp
|
|
src/osdep/gui/PanelCPU.cpp
|
|
src/osdep/gui/PanelChipset.cpp
|
|
src/osdep/gui/PanelCustom.cpp
|
|
src/osdep/gui/PanelROM.cpp
|
|
src/osdep/gui/PanelRAM.cpp
|
|
src/osdep/gui/PanelFloppy.cpp
|
|
src/osdep/gui/PanelHD.cpp
|
|
src/osdep/gui/PanelInput.cpp
|
|
src/osdep/gui/PanelDisplay.cpp
|
|
src/osdep/gui/PanelSound.cpp
|
|
src/osdep/gui/PanelMisc.cpp
|
|
src/osdep/gui/PanelSavestate.cpp
|
|
src/osdep/gui/main_window.cpp
|
|
src/osdep/gui/Navigation.cpp
|
|
src/newcpu.cpp
|
|
src/newcpu_common.cpp
|
|
src/readcpu.cpp
|
|
src/cpudefs.cpp
|
|
src/cpustbl.cpp
|
|
src/cpuemu_0.cpp
|
|
src/cpuemu_4.cpp
|
|
src/cpuemu_11.cpp
|
|
src/cpuemu_40.cpp
|
|
src/cpuemu_44.cpp
|
|
src/jit/compemu.cpp
|
|
src/jit/compstbl.cpp
|
|
src/jit/compemu_fpp.cpp
|
|
src/jit/compemu_support.cpp
|
|
)
|
|
|
|
include_directories(
|
|
../common/include
|
|
include
|
|
src
|
|
src/osdep
|
|
src/osdep/psp2
|
|
src/include
|
|
src/threaddep
|
|
src/archivers
|
|
)
|
|
|
|
if(BUILD_PSP2)
|
|
set(PSP2_SRC_FILES
|
|
src/osdep/psp2/psp2_shader.cpp
|
|
src/osdep/psp2/psp2-dirent.c
|
|
src/osdep/psp2/psp2_touch.c
|
|
src/osdep/neon_helper.s
|
|
)
|
|
set(SRC_FILES ${PSP2_SRC_FILES} ${SRC_FILES})
|
|
|
|
include_directories(
|
|
${VITASDK}/arm-vita-eabi/include/SDL2
|
|
)
|
|
|
|
set(FLAGS
|
|
-Wno-write-strings
|
|
-DVERSION=\"${BUILD_DATE}\"
|
|
-DAMIBERRY -D__PSP2__
|
|
-DGCCCONSTFUNC="__attribute__\(\(const\)\)" -DUSE_UNDERSCORE
|
|
-DSHM_SUPPORT_LINKS=0 -DUNALIGNED_PROFITABLE -DOPTIMIZED_FLAGS -DOS_WITHOUT_MEMORY_MANAGEMENT
|
|
-DROM_PATH_PREFIX=\"ux0:/data/amiberry/roms/\" -DDATA_PREFIX=\"app0:/data/\" -DSAVE_PREFIX=\"ux0:/data/amiberry/saves/\"
|
|
-DUSE_AMIBERRY_VKBD
|
|
-DARMV6_ASSEMBLY
|
|
-DARMV6T2
|
|
-DUSE_ARMNEON
|
|
-DARM_HAS_DIV
|
|
-D_FILE_OFFSET_BITS=64
|
|
-marm -mfpu=neon -mcpu=cortex-a9 -mfloat-abi=hard -ffast-math
|
|
-fno-asynchronous-unwind-tables -funroll-loops
|
|
-mword-relocations -fno-unwind-tables -fno-optimize-sibling-calls
|
|
-mvectorize-with-neon-quad -funsafe-math-optimizations
|
|
-mlittle-endian -munaligned-access
|
|
)
|
|
|
|
set(LDFLAGS
|
|
SDL2 SDL2_image SDL2_ttf guisan FLAC mpg123 dl mpeg2convert mpeg2
|
|
${CMAKE_SOURCE_DIR}/src/osdep/psp2/vita2d_fbo/lib/libvita2d.a
|
|
${CMAKE_SOURCE_DIR}/src/osdep/psp2/vita-shader-collection/lib/libvitashaders.a
|
|
${CMAKE_SOURCE_DIR}/external/libguisan/lib/libguisan.a
|
|
SceSysmodule_stub SceDisplay_stub SceGxm_stub
|
|
SceCtrl_stub ScePgf_stub ScePower_stub SceCommonDialog_stub
|
|
SceAudio_stub SceShellSvc_stub SceHid_stub SceTouch_stub png jpeg z m c
|
|
)
|
|
|
|
if (BUILD_DEBUG)
|
|
list(APPEND FLAGS -DDEBUG -DDEBUG_AMIBERRY -DUAE_CONSOLE)
|
|
list(APPEND LDFLAGS psp2shell SceSysmodule_stub SceNetCtl_stub
|
|
SceNet_stub SceAppUtil_stub SceAppMgr_stub
|
|
)
|
|
set(UNSAFE_FLAG UNSAFE)
|
|
else ()
|
|
list(APPEND FLAGS -O3)
|
|
endif (BUILD_DEBUG)
|
|
|
|
add_executable(${PROJECT_NAME} ${SRC_FILES})
|
|
target_compile_options(${PROJECT_NAME} PRIVATE ${FLAGS})
|
|
target_link_libraries(${PROJECT_NAME} ${LDFLAGS})
|
|
|
|
vita_create_self(${PROJECT_NAME}.self ${PROJECT_NAME} ${UNSAFE_FLAG})
|
|
add_custom_target(${PROJECT_NAME}.vpk
|
|
DEPENDS ${PROJECT_NAME}.self
|
|
COMMAND rm -rf vpk && mkdir -p vpk/sce_sys
|
|
COMMAND ${VITASDK}/bin/vita-mksfoex -s TITLE_ID=${TITLEID} "${PROJECT_NAME}" vpk/sce_sys/param.sfo
|
|
COMMAND cp ${PROJECT_NAME}.self vpk/eboot.bin
|
|
COMMAND cp -r ${CMAKE_SOURCE_DIR}/psp2data/* vpk
|
|
COMMAND cd vpk && zip -r ../amiberry_${VERSION_MAJOR}.${VERSION_MINOR}.vpk . && cd ..
|
|
)
|
|
endif(BUILD_PSP2)
|
|
|
|
if(BUILD_NX)
|
|
set(NX_SRC_FILES
|
|
src/osdep/switch/switch_touch.c
|
|
src/osdep/switch/sdl2_to_sdl1.cpp
|
|
)
|
|
set(SRC_FILES ${NX_SRC_FILES} ${SRC_FILES})
|
|
|
|
include_directories(
|
|
${DEVKITPRO}/portlibs/switch/include/SDL2
|
|
${DEVKITPRO}/libnx/include
|
|
${DEVKITPRO}/portlibs/switch/include
|
|
src
|
|
src/osdep
|
|
src/osdep/switch
|
|
src/include
|
|
src/threaddep
|
|
src/archivers
|
|
)
|
|
|
|
add_definitions(
|
|
-DVERSION=\"${BUILD_DATE}\"
|
|
-D__SWITCH__
|
|
-D__64BIT__
|
|
-DUSE_AUTOCONFIG
|
|
-DUSE_ZFILE
|
|
-DUSE_FAME_CORE
|
|
-DWITH_TESTMODE
|
|
-DGCCCONSTFUNC=\"__attribute__\(\(const\)\)\"
|
|
-DUSE_UNDERSCORE
|
|
-DSHM_SUPPORT_LINKS=0
|
|
-DUNALIGNED_PROFITABLE
|
|
-DOPTIMIZED_FLAGS
|
|
-DOS_WITHOUT_MEMORY_MANAGEMENT
|
|
-DROM_PATH_PREFIX=\"./roms/\"
|
|
-DDATA_PREFIX=\"./data/\"
|
|
-DSAVE_PREFIX=\"./saves/\"
|
|
-DUSE_AMIBERRY_VKBD
|
|
-DAMIBERRY
|
|
-D_FILE_OFFSET_BITS=64
|
|
-DCPU_AARCH64
|
|
)
|
|
|
|
set(FLAGS
|
|
-Wno-write-strings
|
|
-march=armv8-a
|
|
-mtune=cortex-a57
|
|
-mtp=soft
|
|
#-fPIE is neccessary to prevent crash on startup
|
|
-fPIE
|
|
-O1
|
|
-ffast-math
|
|
-fno-asynchronous-unwind-tables
|
|
-funroll-loops
|
|
-fno-unwind-tables
|
|
-fno-optimize-sibling-calls
|
|
-funsafe-math-optimizations
|
|
-mlittle-endian
|
|
-ffunction-sections
|
|
-fno-rtti
|
|
-fexceptions
|
|
# -fomit-frame-pointer
|
|
# -fno-strict-aliasing
|
|
# -fexpensive-optimizations
|
|
# -fweb
|
|
# -frename-registers
|
|
# -fomit-frame-pointer
|
|
# -falign-functions=32
|
|
# -finline
|
|
# -finline-functions
|
|
# -fno-builtin
|
|
)
|
|
|
|
set(LIBS
|
|
SDL2
|
|
SDL2_image
|
|
SDL2_ttf
|
|
xml2
|
|
EGL
|
|
GLESv2
|
|
glapi
|
|
drm_nouveau
|
|
nx
|
|
png
|
|
jpeg
|
|
z
|
|
m
|
|
c
|
|
stdc++
|
|
)
|
|
|
|
foreach(flag ${FLAGS})
|
|
set(FLAGS_GENERAL "${FLAGS_GENERAL} ${flag}")
|
|
endforeach(flag ${FLAGS})
|
|
|
|
#set(CMAKE_C_FLAGS "${FLAGS_GENERAL}" CACHE STRING "C Flags" FORCE)
|
|
#set(CMAKE_CXX_FLAGS "${FLAGS_GENERAL}" CACHE STRING "C++ Flags" FORCE)
|
|
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${FLAGS_GENERAL} -specs=${DEVKITPRO}/libnx/switch.specs --verbose")
|
|
|
|
add_executable(${PROJECT_NAME}.elf ${SRC_FILES})
|
|
target_compile_options(${PROJECT_NAME}.elf PRIVATE ${FLAGS})
|
|
target_link_libraries(${PROJECT_NAME}.elf PRIVATE ${LIBS})
|
|
add_custom_target(${PROJECT_NAME}.nro
|
|
DEPENDS ${PROJECT_NAME}.elf
|
|
COMMAND ${DEVKITPRO}/tools/bin/nacptool --create "${PROJECT_NAME}" "midwan" "${VERSION_MAJOR}.${VERSION_MINOR}" ${PROJECT_NAME}.nacp
|
|
COMMAND ${DEVKITPRO}/tools/bin/elf2nro ${PROJECT_NAME}.elf ${PROJECT_NAME}.nro --icon=${CMAKE_SOURCE_DIR}/switchdata/icon0.jpg --nacp=${PROJECT_NAME}.nacp
|
|
)
|
|
add_custom_target(${PROJECT_NAME}_switch.zip
|
|
DEPENDS ${PROJECT_NAME}.nro
|
|
COMMAND rm -rf ${CMAKE_BINARY_DIR}/release/${PROJECT_NAME}
|
|
COMMAND mkdir -p ${CMAKE_BINARY_DIR}/release/${PROJECT_NAME}
|
|
COMMAND mkdir -p ${CMAKE_BINARY_DIR}/release/${PROJECT_NAME}/data
|
|
COMMAND mkdir -p ${CMAKE_BINARY_DIR}/release/${PROJECT_NAME}/roms
|
|
COMMAND mkdir -p ${CMAKE_BINARY_DIR}/release/${PROJECT_NAME}/kickstarts
|
|
COMMAND mkdir -p ${CMAKE_BINARY_DIR}/release/${PROJECT_NAME}/saves
|
|
COMMAND mkdir -p ${CMAKE_BINARY_DIR}/release/${PROJECT_NAME}/conf
|
|
COMMAND cp -f ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.nro ${CMAKE_BINARY_DIR}/release/${PROJECT_NAME}/${PROJECT_NAME}.nro
|
|
COMMAND cp -r ${CMAKE_SOURCE_DIR}/switchdata/data/* ${CMAKE_BINARY_DIR}/release/${PROJECT_NAME}/data/
|
|
COMMAND cd ${CMAKE_BINARY_DIR}/release && zip -r ../${PROJECT_NAME}_${VERSION_MAJOR}.${VERSION_MINOR}_switch.zip ${PROJECT_NAME} && cd ${CMAKE_BINARY_DIR}
|
|
)
|
|
endif(BUILD_NX)
|
|
|
|
|