diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 000000000000..586ab7240997 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,18 @@ +cmake_minimum_required(VERSION 3.10) +project(ps2sdk) +include(ExternalProject) + +ExternalProject_Add(tools + SOURCE_DIR ${PROJECT_SOURCE_DIR}/tools + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/tools + BUILD_ALWAYS true) + +ExternalProject_Add(ee + SOURCE_DIR ${PROJECT_SOURCE_DIR}/ee + CMAKE_ARGS -DCMAKE_TOOLCHAIN_FILE=${PROJECT_SOURCE_DIR}/cmake/ee_toolchain.cmake -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/ee + BUILD_ALWAYS true) + +#ExternalProject_Add(iop +# SOURCE_DIR ${PROJECT_SOURCE_DIR}/iop +# CMAKE_ARGS -DCMAKE_TOOLCHAIN_FILE=${PROJECT_SOURCE_DIR}/cmake/iop_toolchain.cmake -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/iop +# BUILD_ALWAYS true) \ No newline at end of file diff --git a/build.sh b/build.sh new file mode 100755 index 000000000000..a60c56ac2fd0 --- /dev/null +++ b/build.sh @@ -0,0 +1,6 @@ +cmake -B build-tools -S tools +#cmake -B build-ee -S ee +#cmake -B build-iop -S iop + +cmake --build build-tools +#cmake --build build-ee diff --git a/ee/CMakeLists.txt b/ee/CMakeLists.txt new file mode 100644 index 000000000000..e41fd4b74f45 --- /dev/null +++ b/ee/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 3.10) +project(ps2sdk-ee) + + +add_subdirectory(kernel) \ No newline at end of file diff --git a/ee/kernel/CMakeLists.txt b/ee/kernel/CMakeLists.txt new file mode 100644 index 000000000000..b027b0d18a17 --- /dev/null +++ b/ee/kernel/CMakeLists.txt @@ -0,0 +1,230 @@ +cmake_minimum_required(VERSION 3.10) + +set(EXEC_SYSCALLS KExit.o _LoadExecPS2.o _ExecPS2.o) +set(EXECOSD_SYSCALL _ExecOSD.o) +set(ALARM_SYSCALLS _SetAlarm.o SetAlarm.o _ReleaseAlarm.o ReleaseAlarm.o) +set(ALARM_INTR_SYSCALLS _iSetAlarm.o iSetAlarm.o _iReleaseAlarm.o iReleaseAlarm.o) +set(ROTATE_THREAD_READY_QUEUE_SYSCALL _iRotateThreadReadyQueue.o) +set(IWAKEUP_THREAD_SYSCALL _iWakeupThread.o) +set(ISUSPEND_THREAD_SYSCALL _iSuspendThread.o) +set(TLB_SYSCALLS PutTLBEntry.o iPutTLBEntry.o _SetTLBEntry.o iSetTLBEntry.o GetTLBEntry.o iGetTLBEntry.o ProbeTLBEntry.o iProbeTLBEntry.o ExpandScratchPad.o) + +set(SIFCMD_OBJ + sif_cmd_send.o _sif_cmd_int_handler.o sif_cmd_main.o + sif_cmd_client.o sif_cmd_remove_cmdhandler.o sif_sreg_get.o +) + +set(SIFRPC_OBJ + SifBindRpc.o SifCallRpc.o SifRpcGetOtherData.o + SifRegisterRpc.o SifRemoveRpc.o SifSetRpcQueue.o SifRemoveRpcQueue.o SifGetNextRequest.o + SifExecRequest.o SifRpcLoop.o SifRpcMain.o _rpc_get_packet.o + _rpc_get_fpacket.o SifCheckStatRpc.o +) + +set(FILEIO_OBJ + __fio_internals.o fio_init.o _fio_intr.o fio_sync.o fio_setblockmode.o + fio_exit.o fio_open.o fio_close.o fio_read.o + fio_write.o fio_lseek.o fio_mkdir.o _fio_read_intr.o fio_getc.o fio_putc.o + fio_ioctl.o fio_dopen.o fio_dclose.o fio_dread.o fio_getstat.o fio_chstat.o + fio_remove.o fio_format.o fio_rmdir.o fio_gets.o +) + +set(LOADFILE_OBJ + SifLoadFileInit.o SifLoadFileExit.o _SifLoadModule.o SifLoadModule.o + SifLoadStartModule.o SifLoadModuleEncrypted.o SifStopModule.o SifUnloadModule.o + SifSearchModuleByName.o SifSearchModuleByAddress.o _SifLoadElfPart.o SifLoadElfPart.o + SifLoadElf.o SifLoadElfEncrypted.o SifIopSetVal.o SifIopGetVal.o + _SifLoadModuleBuffer.o SifLoadModuleBuffer.o SifLoadStartModuleBuffer.o + SifExecModuleBuffer.o SifExecModuleFile.o +) + +set(IOPHEAP_OBJ + SifInitIopHeap.o SifExitIopHeap.o SifAllocIopHeap.o + SifFreeIopHeap.o SifLoadIopHeap.o +) + +set(IOPCONTROL_OBJ + SifIopReboot.o SifIopReset.o SifIopIsAlive.o SifIopSync.o __iop_control_internals.o +) + +set(GLUE_OBJ + DIntr.o EIntr.o EnableIntc.o DisableIntc.o EnableDmac.o DisableDmac.o + iEnableIntc.o iDisableIntc.o iEnableDmac.o iDisableDmac.o + SyncDCache.o iSyncDCache.o InvalidDCache.o iInvalidDCache.o +) + +set(SIO_OBJ + sio_init.o sio_putc.o sio_getc.o sio_write.o sio_read.o sio_puts.o + sio_gets.o sio_getc_block.o sio_flush.o sio_putsn.o +) + +set(ROM0_OBJ + _info_internals.o GetRomNameWithIODriver.o GetRomName.o IsDESRMachineWithIODriver.o IsDESRMachine.o IsT10KWithIODriver.o IsT10K.0 +) + +set(CONFIG_OBJ + _config_internals.o converttobcd.o convertfrombcd.o __adjustTime.o IsEarlyJap.o + configGetLanguageWithIODriver.o configGetLanguage.o + configSetLanguageWithIODriver.o configSetLanguage.o + configGetTvScreenTypeWithIODriver.o configGetTvScreenType.o + configSetTvScreenTypeWithIODriver.o configSetTvScreenType.o + configGetDateFormatWithIODriver.o configGetDateFormat.o + configSetDateFormatWithIODriver.o configSetDateFormat.o + configGetTimeFormatWithIODriver.o configGetTimeFormat.o + configSetTimeFormatWithIODriver.o configSetTimeFormat.o + configGetTimezoneWithIODriver.o configGetTimezone.o + configSetTimezoneWithIODriver.o configSetTimezone.o + configIsSpdifEnabledWithIODriver.o configIsSpdifEnabled.o + configSetSpdifEnabledWithIODriver.o configSetSpdifEnabled.o + configIsDaylightSavingEnabledWithIODriver.o configIsDaylightSavingEnabled.o + configSetDaylightSavingEnabledWithIODriver.o configSetDaylightSavingEnabled.o + configConvertToGmtTime.o configConvertToLocalTimeWithIODriver.o configConvertToLocalTime.o +) + +# bin2c osdsrc_bin.o +set(LIBOSD_OBJ libosd.o libosd_full.o libosd_common.o) + +# bin2c tlbsrc_bin.o +set(TLBFUNC_OBJ tlbfunc.o) + +# bin2c srcfile_bin.o, eenull_bin.o +set(ALARM_OBJ alarm.o) + +set(THREAD_OBJ _thread_internals.o iWakeupThread.o iRotateThreadReadyQueue.o iSuspendThread.o) + +set(SETUP_OBJ kCopy.o kCopyBytes.o) + +set(EXIT_OBJ _exit_internals.o SetArg.o Exit.o ExecPS2.o LoadExecPS2.o ExecOSD.o) + +set(TIMER_OBJ + timer_data.o + SetT2.o + SetT2_COUNT.o + SetT2_MODE.o + SetT2_COMP.o + InitTimer.o + EndTimer.o + GetTimerPreScaleFactor.o + StartTimerSystemTime.o + StopTimerSystemTime.o + SetNextComp.o + InsertAlarm_ForTimer.o + UnlinkAlarm_ForTimer.o + TimerHandler_callback.o + iGetTimerSystemTime.o + GetTimerSystemTime.o + iAllocTimerCounter.o + AllocTimerCounter.o + iFreeTimerCounter.o + FreeTimerCounter.o + iGetTimerUsedUnusedCounters.o + GetTimerUsedUnusedCounters.o + iStartTimerCounter.o + StartTimerCounter.o + iStopTimerCounter.o + StopTimerCounter.o + SetTimerCount.o + iGetTimerBaseTime.o + GetTimerBaseTime.o + iGetTimerCount.o + GetTimerCount.o + iSetTimerHandler.o + SetTimerHandler.o + TimerBusClock2USec.o + TimerUSec2BusClock.o + TimerBusClock2Freq.o + TimerFreq2BusClock.o + cpu_ticks.o +) + +set(TIMER_ALARM_OBJ + alarm_data.o + ForTimer_InitAlarm.o + AlarmHandler.o + iSetTimerAlarm.o + SetTimerAlarm.o + iReleaseTimerAlarm.o + ReleaseTimerAlarm.o +) + +set(DELAYTHREAD_OBJ + DelayThread.o +) + +set(GETKERNEL_OBJ GetSyscallHandler.o GetSyscall.o GetExceptionHandler.o GetInterruptHandler.o) + +set(INITSYS_OBJ _InitSys.o TerminateLibrary.o) + +set(KERNEL_UTIL_OBJS WaitSemaEx.o) + +set(KERNEL_OBJ ResetEE.o SetGsCrt.o ${EXEC_SYSCALLS} + RFU009.o AddSbusIntcHandler.o RemoveSbusIntcHandler.o Interrupt2Iop.o + SetVTLBRefillHandler.o SetVCommonHandler.o SetVInterruptHandler.o + AddIntcHandler.o AddIntcHandler2.o RemoveIntcHandler.o AddDmacHandler.o AddDmacHandler2.o + RemoveDmacHandler.o _EnableIntc.o _DisableIntc.o _EnableDmac.o _DisableDmac.o + ${ALARM_SYSCALLS} _iEnableIntc.o _iDisableIntc.o _iEnableDmac.o + _iDisableDmac.o ${ALARM_INTR_SYSCALLS} CreateThread.o DeleteThread.o + StartThread.o ExitThread.o ExitDeleteThread.o TerminateThread.o + iTerminateThread.o DisableDispatchThread.o EnableDispatchThread.o + ChangeThreadPriority.o iChangeThreadPriority.o RotateThreadReadyQueue.o + ${ROTATE_THREAD_READY_QUEUE_SYSCALL} ReleaseWaitThread.o iReleaseWaitThread.o + GetThreadId.o _iGetThreadId.o ReferThreadStatus.o iReferThreadStatus.o SleepThread.o + WakeupThread.o ${IWAKEUP_THREAD_SYSCALL} CancelWakeupThread.o iCancelWakeupThread.o + SuspendThread.o ${ISUSPEND_THREAD_SYSCALL} ResumeThread.o iResumeThread.o + RFU059.o RFU060.o SetupThread.o RFU061.o SetupHeap.o EndOfHeap.o CreateSema.o DeleteSema.o + iSignalSema.o SignalSema.o WaitSema.o PollSema.o iPollSema.o + ReferSemaStatus.o iReferSemaStatus.o iDeleteSema.o SetOsdConfigParam.o + GetOsdConfigParam.o GetGsHParam.o GetGsVParam.o SetGsHParam.o + SetGsVParam.o CreateEventFlag.o DeleteEventFlag.o SetEventFlag.o + iSetEventFlag.o ${TLB_SYSCALLS} + EnableIntcHandler.o iEnableIntcHandler.o DisableIntcHandler.o iDisableIntcHandler.o + EnableDmacHandler.o iEnableDmacHandler.o DisableDmacHandler.o iDisableDmacHandler.o + KSeg0.o EnableCache.o DisableCache.o GetCop0.o FlushCache.o CpuConfig.o + iGetCop0.o iFlushCache.o RFU105.o iCpuConfig.o SifStopDma.o + SetCPUTimerHandler.o SetCPUTimer.o SetOsdConfigParam2.o + GetOsdConfigParam2.o GsGetIMR.o iGsGetIMR.o GsPutIMR.o iGsPutIMR.o + SetPgifHandler.o SetVSyncFlag.o SetSyscall.o SifDmaStat.o iSifDmaStat.o + SifSetDma.o iSifSetDma.o SifSetDChain.o iSifSetDChain.o SifSetReg.o + SifGetReg.o ${EXECOSD_SYSCALL} Deci2Call.o PSMode.o MachineType.o GetMemorySize.o _GetGsDxDyOffset.o + _InitTLB.o SetMemoryMode.o + SifWriteBackDCache.o _SyncDCache.o _InvalidDCache.o __errno.o errno.o + strncpy.o strlen.o memcpy.o memset.o __syscall.o GPfuncs.o _print.o +) + +function(compile_multiple target objects srcfile) + foreach(obj ${objects}) + add_library(${obj} OBJECT ${srcfile}) + set_target_properties(${obj} PROPERTIES LINKER_LANGUAGE C) + get_filename_component(def ${obj} NAME_WLE) + target_compile_definitions(${obj} PUBLIC "F_${def}") + target_link_libraries(${target} private ${obj}) + endforeach() +endfunction() + +add_library(kernel) +compile_multiple(kernel "${SIFCMD_OBJ}" src/sifcmd.c) +compile_multiple(kernel "${SIFRPC_OBJ}" src/sifrpc.c) +compile_multiple(kernel "${FILEIO_OBJ}" src/fileio.c) +compile_multiple(kernel "${LOADFILE_OBJ}" src/loadfile.c) +compile_multiple(kernel "${IOPHEAP_OBJ}" src/iopheap.c) +compile_multiple(kernel "${IOPCONTROL_OBJ}" src/iopcontrol.c) +compile_multiple(kernel "${GLUE_OBJ}" src/glue.c) +compile_multiple(kernel "${SIO_OBJ}" src/sio.c) +compile_multiple(kernel "${ROM0_OBJ}" src/rom0_info.c) +compile_multiple(kernel "${CONFIG_OBJ}" src/osd_config.c) +compile_multiple(kernel "${LIBOSD_OBJ}" src/libosd.c) +compile_multiple(kernel "${TLBFUNC_OBJ}" src/tlbfunc.c) +compile_multiple(kernel "${ALARM_OBJ}" src/alarm.c) +compile_multiple(kernel "${THREAD_OBJ}" src/thread.c) +compile_multiple(kernel "${SETUP_OBJ}" src/setup.c) +compile_multiple(kernel "${EXIT_OBJ}" src/exit.c) +compile_multiple(kernel "${TIMER_OBJ}" src/timer.c) +compile_multiple(kernel "${TIMER_ALARM_OBJ}" src/timer_alarm.c) +compile_multiple(kernel "${DELAYTHREAD_OBJ}" src/delaythread.c) +compile_multiple(kernel "${GETKERNEL_OBJ}" src/getkernel.c) +compile_multiple(kernel "${INITSYS_OBJ}" src/initsys.c) +compile_multiple(kernel "${KERNEL_UTIL_OBJ}" src/kernel_util.c) +compile_multiple(kernel "${KERNEL_OBJ}" src/kernel.S) +target_sources(kernel PRIVATE src/setup_syscalls.S src/debug.c) + +install(TARGETS kernel) \ No newline at end of file diff --git a/iop/CMakeLists.txt b/iop/CMakeLists.txt new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt new file mode 100644 index 000000000000..5a85e4a956af --- /dev/null +++ b/tools/CMakeLists.txt @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 3.10) +project(ps2sdk-tools) + +add_subdirectory(adpenc) +add_subdirectory(bin2c) +add_subdirectory(gensymtab) +add_subdirectory(ps2-irxgen) +add_subdirectory(ps2adpcm) +add_subdirectory(romimg) \ No newline at end of file diff --git a/tools/adpenc/CMakeLists.txt b/tools/adpenc/CMakeLists.txt new file mode 100644 index 000000000000..876635c5f23d --- /dev/null +++ b/tools/adpenc/CMakeLists.txt @@ -0,0 +1,2 @@ +add_executable(adpenc src/adpcm.c src/main.c) +install(TARGETS adpenc) \ No newline at end of file diff --git a/tools/bin2c/CMakeLists.txt b/tools/bin2c/CMakeLists.txt new file mode 100644 index 000000000000..b231c8b7c939 --- /dev/null +++ b/tools/bin2c/CMakeLists.txt @@ -0,0 +1,2 @@ +add_executable(bin2c src/bin2c.c) +install(TARGETS bin2c) \ No newline at end of file diff --git a/tools/gensymtab/CMakeLists.txt b/tools/gensymtab/CMakeLists.txt new file mode 100644 index 000000000000..26a1ee0060df --- /dev/null +++ b/tools/gensymtab/CMakeLists.txt @@ -0,0 +1,2 @@ +add_executable(gensymtab src/main.c) +install(TARGETS gensymtab) \ No newline at end of file diff --git a/tools/ps2-irxgen/CMakeLists.txt b/tools/ps2-irxgen/CMakeLists.txt new file mode 100644 index 000000000000..b082928663e2 --- /dev/null +++ b/tools/ps2-irxgen/CMakeLists.txt @@ -0,0 +1,2 @@ +add_executable(ps2-irxgen src/ps2-irxgen.c) +install(TARGETS ps2-irxgen) \ No newline at end of file diff --git a/tools/ps2adpcm/CMakeLists.txt b/tools/ps2adpcm/CMakeLists.txt new file mode 100644 index 000000000000..5cbc6a3f5594 --- /dev/null +++ b/tools/ps2adpcm/CMakeLists.txt @@ -0,0 +1,2 @@ +add_executable(ps2adpcm src/adpcm.c src/main.c) +install(TARGETS ps2adpcm) \ No newline at end of file diff --git a/tools/romimg/CMakeLists.txt b/tools/romimg/CMakeLists.txt new file mode 100644 index 000000000000..bcda68fb0867 --- /dev/null +++ b/tools/romimg/CMakeLists.txt @@ -0,0 +1,2 @@ +add_executable(romimg src/main.c src/platform.c src/romimg.c src/SonyRX.c) +install(TARGETS romimg) \ No newline at end of file