cmake_minimum_required(VERSION 3.25) set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_LIST_DIR}/cmake/toolchain.cmake") project( cart_tool_private LANGUAGES C CXX ASM VERSION 0.3.4 DESCRIPTION "Konami System 573 security cartridge tool" ) find_package(Python3 REQUIRED COMPONENTS Interpreter) find_program( XORRISO_PATH xorriso DOC "Path to xorriso tool (optional)" ) find_program( CHDMAN_PATH chdman DOC "Path to MAME chdman tool (optional)" ) ## Main executable add_executable( cart_tool src/cart.cpp src/cartdata.cpp src/cartio.cpp src/file.cpp src/gpu.cpp src/gpufont.cpp src/ide.cpp src/ideglue.cpp src/io.cpp src/main.cpp src/pad.cpp src/spu.cpp src/uibase.cpp src/uicommon.cpp src/util.cpp src/zs01.cpp src/app/app.cpp src/app/cartactions.cpp src/app/cartunlock.cpp src/app/main.cpp src/app/misc.cpp src/libc/crt0.c src/libc/cxxsupport.cpp src/libc/malloc.c src/libc/memset.s src/libc/misc.c src/libc/misc.s src/libc/string.c src/ps1/pcdrv.s src/ps1/system.c src/ps1/system.s src/ps1/unhandledexc.c src/vendor/ff.c src/vendor/ffunicode.c src/vendor/miniz.c src/vendor/printf.c src/vendor/qrcodegen.c ) target_include_directories( cart_tool PRIVATE src src/libc ) target_compile_definitions( cart_tool PRIVATE VERSION="${PROJECT_VERSION}" $, ENABLE_DUMMY_DRIVER=1 ENABLE_I2C_LOGGING=1 ENABLE_PS1_CONTROLLER=1 , #ENABLE_ARGV=1 ENABLE_PS1_CONTROLLER=1 > ) add_custom_command( TARGET cart_tool POST_BUILD COMMAND "${Python3_EXECUTABLE}" "${PROJECT_SOURCE_DIR}/tools/convertExecutable.py" -r "cart_tool build ${PROJECT_VERSION} - (C) 2022-2023 spicyjpeg" -s 0x801dfff0 $ cart_tool.psexe BYPRODUCTS cart_tool.psexe COMMENT "Converting executable" VERBATIM ) ## Default resource archive add_custom_command( COMMAND "${Python3_EXECUTABLE}" "${PROJECT_SOURCE_DIR}/tools/buildResourceArchive.py" "${PROJECT_SOURCE_DIR}/resources.json" resources.zip OUTPUT resources.zip DEPENDS resources.json COMMENT "Building resource archive" VERBATIM ) ps1_target_incbin( cart_tool PRIVATE .rodata _resources _resourcesSize "${PROJECT_BINARY_DIR}/resources.zip" ) ## CD-ROM image if(EXISTS "${XORRISO_PATH}") configure_file(assets/cdreadme.txt cdreadme.txt NEWLINE_STYLE CRLF) string(REPLACE "." "_" _version "${PROJECT_VERSION}") add_custom_command( COMMAND "${XORRISO_PATH}" -outdev cart_tool.iso -blank all -rockridge off -joliet off -padding 2M -volid "CART_TOOL_${_version}" -volset_id "CART_TOOL_${_version}" -publisher "SPICYJPEG" -application_id "PLAYSTATION" -system_id "PLAYSTATION" -preparer_id "CART_TOOL BUILD SCRIPT" -map cdreadme.txt README.TXT -map cart_tool.psexe PSX.EXE -clone PSX.EXE QSY.DXD -clone PSX.EXE SSW.BXF -clone PSX.EXE TSV.AXG -clone PSX.EXE GSE.NXX -clone PSX.EXE NSE.GXX OUTPUT cart_tool.iso DEPENDS cart_tool COMMENT "Building CD-ROM image" VERBATIM ) if(EXISTS "${CHDMAN_PATH}") add_custom_command( COMMAND "${CHDMAN_PATH}" createcd -f -i cart_tool.iso -o cart_tool.chd OUTPUT cart_tool.chd DEPENDS cart_tool.iso COMMENT "Building MAME CHD image" VERBATIM ) add_custom_target(cd ALL DEPENDS cart_tool.iso cart_tool.chd) else() add_custom_target(cd ALL DEPENDS cart_tool.iso) endif() endif()