summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
blob: aedfac765cf46d190b487e76ec127f310141194f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
cmake_minimum_required(VERSION 3.0)

if("$ENV{PSXSDK_PATH}" STREQUAL "")
    message(FATAL_ERROR "Please set PSXSDK_PATH env variable first")
endif()

set(CMAKE_C_COMPILER psx-gcc)
set(CMAKE_CXX_COMPILER psx-g++)
set(CMAKE_AR mipsel-unknown-elf-ar)
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_CROSSCOMPILING 1)

project(pinboid C)

add_executable(${PROJECT_NAME} "src/main.c")

set(modules
    "res"
    "src/game"
    "src/gfx"
    "src/system"
)

set(mode pal) # pal or ntsc

foreach(c ${modules})
    add_subdirectory(${c})
endforeach()

target_link_libraries(${PROJECT_NAME} PUBLIC init game)

target_link_directories(${PROJECT_NAME} PUBLIC $ENV{PSXSDK_PATH}/lib)
target_compile_options(${PROJECT_NAME} PUBLIC -DFIXMATH_FAST_SIN -D_PAL_MODE_
    -DPSXSDK_DEBUG -DNO_CDDA -DNO_INTRO -Wall -g3 -Og -ffunction-sections
    -fdata-sections)
target_link_libraries(${PROJECT_NAME} PUBLIC -lpsx -lfixmath)
target_include_directories(${PROJECT_NAME} PRIVATE . $ENV{PSXSDK_PATH}/include)
set(cdroot ${CMAKE_SOURCE_DIR}/cdimg)
add_custom_target(exe ALL elf2exe ${PROJECT_NAME}
    ${cdroot}/${PROJECT_NAME}.exe -mark="A homebrew game created with PSXSDK"
    DEPENDS ${PROJECT_NAME})
add_custom_target(iso ALL mkisofs -o ${PROJECT_NAME}.iso -V ${PROJECT_NAME}
    -sysid PLAYSTATION ${cdroot} DEPENDS exe)
set(license $ENV{PSXSDK_PATH}/share/licenses/infoeur.dat)
add_custom_target(bin_cue ALL mkpsxiso ${PROJECT_NAME}.iso ${PROJECT_NAME}.bin
    ${license} -s DEPENDS iso)