forked from PS5Dev/PS5SDK
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtoolchain-ps5.cmake
49 lines (37 loc) · 1.93 KB
/
toolchain-ps5.cmake
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
47
48
49
###################################################################################################
# PS5SDK - cmake toolchain file
# @author Znullptr
###################################################################################################
set(CMAKE_CROSSCOMPILING TRUE)
set(CMAKE_SYSTEM_NAME FreeBSD)
set(CMAKE_SYSTEM_PROCESSOR x86_64)
# Clang target triple
set(TARGET x86_64-freebsd-pc-elf)
set(CLANG_TARGET_TRIPLE ${TARGET})
set(TC_CWD ${CMAKE_CURRENT_LIST_DIR})
set(CMAKE_MODULE_PATH "${TC_CWD}/cmake")
if (DEFINED ENV{PS5SDK})
set(D_PS5SDK $ENV{PS5SDK})
endif()
if (DEFINED ENV{PS5SDK_FW})
set(V_FW $ENV{PS5SDK_FW})
endif()
if (NOT DEFINED D_PS5SDK)
cmake_path(GET TC_CWD PARENT_PATH D_PS5SDK)
message("TOOLCHAIN: setting D_PS5SDK to: ${D_PS5SDK}")
endif()
if (NOT DEFINED V_FW)
set(V_FW "0x403")
endif()
set(CMAKE_FIND_ROOT_PATH ${D_PS5SDK})
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) # Search for programs in the build host directories
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) # For libraries and headers in the target directories
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_C_FLAGS "--target=x86_64-freebsd-pc-elf -O0 -DPPR -DPS5 -DPS5_FW_VERSION=${V_FW} ")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112 -D__BSD_VISIBLE=1 -D__XSI_VISIBLE=500")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-builtin -nostdlib -Wall -m64") # -nostartfiles
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fomit-frame-pointer -fPIC -fPIE -pie -Wl,-z,norelro")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -nostdinc++ ") #
set(CMAKE_ASM_FLAGS "--target=x86_64-pc-freebsd11-elf -nostdlib -fPIC -fPIE")
#-DCMAKE_LINKER=/path/to/linker -DCMAKE_CXX_LINK_EXECUTABLE="<CMAKE_LINKER> <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>"
set(CMAKE_EXE_LINKER_FLAGS "-fuse-ld=lld -Xlinker -T ${CMAKE_CURRENT_SOURCE_DIR}/linker.x -Wl,--build-id=none -Wl,-z,norelro")