Skip to content

Commit e214933

Browse files
splash screen
1 parent 8b45b06 commit e214933

16 files changed

+628
-28
lines changed

.github/workflows/ci.yml

+1-4
Original file line numberDiff line numberDiff line change
@@ -140,10 +140,7 @@ jobs:
140140
141141
# the main target needs to be cross compiled
142142
echo "--- Building ALL ---"
143-
cmake \
144-
-B build \
145-
-S . \
146-
-DCMAKE_TOOLCHAIN_FILE="${nxdk_dir}/share/toolchain-nxdk.cmake"
143+
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE="${nxdk_dir}/share/toolchain-nxdk.cmake"
147144
cmake --build build
148145
149146
# TODO: Tests are not building properly...

CMakeLists.txt

+33-9
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,42 @@
1-
cmake_minimum_required(VERSION 3.14)
1+
cmake_minimum_required(VERSION 3.18)
22
# much of this file is borrowed from https://github.com/Ryzee119/Xenium-Tools/blob/master/CMakeLists.txt
3+
# and https://github.com/abaire/nxdk_pgraph_tests/blob/main/CMakeLists.txt
34

45
project(Moonlight C CXX)
5-
set(XBE_TITLE ${CMAKE_PROJECT_NAME})
6-
message(STATUS "XBE_TITLE: ${XBE_TITLE}")
76

7+
#
8+
# metadata
9+
#
10+
set(XBE_TITLE ${CMAKE_PROJECT_NAME})
811
set(NXDK_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third-party/nxdk")
9-
message(STATUS "NXDK_DIR: ${NXDK_DIR}")
10-
1112
set(XBOX_XBE_DIR "${CMAKE_CURRENT_BINARY_DIR}/xbe")
1213
set(XBOX_ISO "${CMAKE_PROJECT_NAME}.iso")
13-
message(STATUS "XBOX_ISO: ${XBOX_ISO}")
1414

1515
#
1616
# Options
1717
#
1818
option(BUILD_TESTS "Build tests" OFF)
1919

20+
# add custom modules
21+
set(CMAKE_MODULE_PATH
22+
${CMAKE_MODULE_PATH}
23+
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/"
24+
)
25+
26+
set(CMAKE_CXX_STANDARD 17)
27+
28+
include(XBEUtils REQUIRED)
29+
30+
find_package(NXDK REQUIRED)
31+
find_package(NXDK_SDL2 REQUIRED)
32+
find_package(NXDK_SDL2_Image REQUIRED)
33+
2034
# create the xbe directory if it doesn't exist
2135
file(MAKE_DIRECTORY ${XBOX_XBE_DIR})
2236

37+
# copy assets directory to xbe directory
38+
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/xbe/" DESTINATION "${XBOX_XBE_DIR}")
39+
2340
include(FindPkgConfig)
2441

2542
if(NOT CMAKE_BUILD_TYPE)
@@ -32,10 +49,12 @@ set(MOONLIGHT_SOURCES
3249
"${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp"
3350
)
3451
set(MOONLIGHT_EXTERNAL_LIBRARIES
35-
"${NXDK_DIR}/lib/libpbkit.lib"
52+
NXDK::NXDK
53+
NXDK::NXDK_CXX
54+
NXDK::SDL2
55+
NXDK::SDL2_Image
3656
)
3757
set(MOONLIGHT_INCLUDE_DIRS
38-
"${NXDK_DIR}/lib"
3958
)
4059
set(MOONLIGHT_COMPILE_OPTIONS "-Wno-builtin-macro-redefined")
4160
set(MOONLIGHT_DEFINITIONS "-DXBOX -DNXDK")
@@ -47,7 +66,9 @@ add_definitions(${MOONLIGHT_DEFINITIONS})
4766
add_executable(${CMAKE_PROJECT_NAME}
4867
${MOONLIGHT_SOURCES}
4968
)
50-
include_directories(SYSTEM ${MOONLIGHT_INCLUDE_DIRS})
69+
include_directories(SYSTEM
70+
${CMAKE_CURRENT_SOURCE_DIR}
71+
${MOONLIGHT_INCLUDE_DIRS})
5172
target_link_libraries(${CMAKE_PROJECT_NAME} PUBLIC
5273
${MOONLIGHT_EXTERNAL_LIBRARIES}
5374
)
@@ -85,3 +106,6 @@ add_dependencies(xbe_iso cxbe_convert)
85106

86107
set_target_properties(cxbe_convert PROPERTIES OUTPUT_QUIET ON)
87108
set_target_properties(xbe_iso PROPERTIES OUTPUT_QUIET ON)
109+
110+
#add_xbe(xbe_file "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}.exe" TITLE "${XBE_TITLE}" RESOURCE_DIRS xbe)
111+
#add_xiso(xiso xbe_file XISO ${XBOX_ISO})

README.md

+35
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,37 @@
11
# Moonlight-XboxOG
22
Port of Moonlight for the Original Xbox. Unlikely to ever actually work. Do NOT use.
3+
4+
5+
## Build
6+
7+
### Pre Build
8+
9+
1. Install nxdk prerequisites. Then run the following from mingw64 or bash shell:
10+
11+
```bash
12+
nxdk_dir="$(pwd)/third-party/nxdk"
13+
eval "$(${nxdk_dir}/bin/activate -s)"
14+
cd "${nxdk_dir}"
15+
make NXDK_ONLY=y
16+
make tools
17+
```
18+
19+
### Configure
20+
21+
1. Create build directory
22+
23+
```bash
24+
mkdir -p build
25+
```
26+
27+
2. Configure the project
28+
29+
```bash
30+
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE="${nxdk_dir}/share/toolchain-nxdk.cmake"
31+
```
32+
33+
### Build
34+
35+
```bash
36+
cmake --build build
37+
```

cmake/modules/FindNXDK.cmake

+108
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
if(NOT TARGET NXDK::NXDK)
2+
add_library(nxdk STATIC IMPORTED)
3+
set_target_properties(
4+
nxdk
5+
PROPERTIES
6+
IMPORTED_LOCATION "${NXDK_DIR}/lib/libnxdk.lib"
7+
)
8+
9+
add_library(nxdk_automount_d STATIC IMPORTED)
10+
set_target_properties(
11+
nxdk_automount_d
12+
PROPERTIES
13+
IMPORTED_LOCATION "${NXDK_DIR}/lib/libnxdk_automount_d.lib"
14+
)
15+
16+
add_library(nxdk_hal STATIC IMPORTED)
17+
set_target_properties(
18+
nxdk_hal
19+
PROPERTIES
20+
IMPORTED_LOCATION "${NXDK_DIR}/lib/libnxdk_hal.lib"
21+
)
22+
23+
add_library(nxdk_net STATIC IMPORTED)
24+
set_target_properties(
25+
nxdk_net
26+
PROPERTIES
27+
IMPORTED_LOCATION "${NXDK_DIR}/lib/libnxdk_net.lib"
28+
)
29+
30+
add_library(nxdk_usb STATIC IMPORTED)
31+
set_target_properties(
32+
nxdk_usb
33+
PROPERTIES
34+
IMPORTED_LOCATION "${NXDK_DIR}/lib/nxdk_usb.lib"
35+
)
36+
37+
add_library(pbkit STATIC IMPORTED)
38+
set_target_properties(
39+
pbkit
40+
PROPERTIES
41+
IMPORTED_LOCATION "${NXDK_DIR}/lib/libpbkit.lib"
42+
)
43+
44+
add_library(pdclib STATIC IMPORTED)
45+
set_target_properties(
46+
pdclib
47+
PROPERTIES
48+
IMPORTED_LOCATION "${NXDK_DIR}/lib/libpdclib.lib"
49+
)
50+
51+
add_library(winapi STATIC IMPORTED)
52+
set_target_properties(
53+
winapi
54+
PROPERTIES
55+
IMPORTED_LOCATION "${NXDK_DIR}/lib/libwinapi.lib"
56+
)
57+
58+
add_library(winmm STATIC IMPORTED)
59+
set_target_properties(
60+
winmm
61+
PROPERTIES
62+
IMPORTED_LOCATION "${NXDK_DIR}/lib/winmm.lib"
63+
)
64+
65+
add_library(xboxrt STATIC IMPORTED)
66+
set_target_properties(
67+
xboxrt
68+
PROPERTIES
69+
IMPORTED_LOCATION "${NXDK_DIR}/lib/libxboxrt.lib"
70+
)
71+
72+
add_library(zlib STATIC IMPORTED)
73+
set_target_properties(
74+
zlib
75+
PROPERTIES
76+
IMPORTED_LOCATION "${NXDK_DIR}/lib/libzlib.lib"
77+
)
78+
79+
add_library(NXDK::NXDK INTERFACE IMPORTED)
80+
target_link_libraries(
81+
NXDK::NXDK
82+
INTERFACE
83+
nxdk
84+
nxdk_automount_d
85+
nxdk_hal
86+
nxdk_net
87+
nxdk_usb
88+
pbkit
89+
pdclib
90+
winapi
91+
winmm
92+
xboxrt
93+
zlib
94+
)
95+
endif()
96+
97+
if(NOT TARGET NXDK::NXDK_CXX)
98+
99+
add_library(nxdk_cxx STATIC IMPORTED)
100+
set_target_properties(
101+
nxdk_cxx
102+
PROPERTIES
103+
IMPORTED_LOCATION "${NXDK_DIR}/lib/libc++.lib"
104+
)
105+
106+
add_library(NXDK::NXDK_CXX INTERFACE IMPORTED)
107+
target_link_libraries(NXDK::NXDK_CXX INTERFACE nxdk_cxx)
108+
endif()

cmake/modules/FindNXDK_SDL2.cmake

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
if(NOT TARGET NXDK::SDL2)
2+
find_package(PkgConfig REQUIRED)
3+
pkg_check_modules(SDL2 REQUIRED IMPORTED_TARGET sdl2)
4+
5+
add_library(NXDK::SDL2 ALIAS PkgConfig::SDL2)
6+
endif()
+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
if (NOT TARGET NXDK::SDL2_Image)
2+
3+
add_library(nxdk_sdl2_image STATIC IMPORTED)
4+
set_target_properties(
5+
nxdk_sdl2_image
6+
PROPERTIES
7+
IMPORTED_LOCATION "${NXDK_DIR}/lib/libSDL2_image.lib"
8+
)
9+
10+
add_library(nxdk_jpeg STATIC IMPORTED)
11+
set_target_properties(
12+
nxdk_jpeg
13+
PROPERTIES
14+
IMPORTED_LOCATION "${NXDK_DIR}/lib/libjpeg.lib"
15+
)
16+
17+
add_library(nxdk_png STATIC IMPORTED)
18+
set_target_properties(
19+
nxdk_png
20+
PROPERTIES
21+
IMPORTED_LOCATION "${NXDK_DIR}/lib/libpng.lib"
22+
)
23+
24+
add_library(NXDK::SDL2_Image INTERFACE IMPORTED)
25+
target_link_libraries(
26+
NXDK::SDL2_Image
27+
INTERFACE
28+
nxdk_sdl2_image
29+
nxdk_jpeg
30+
nxdk_png
31+
)
32+
target_include_directories(
33+
NXDK::SDL2_Image
34+
SYSTEM INTERFACE
35+
"${NXDK_DIR}/lib/sdl/SDL2_image"
36+
)
37+
endif ()

0 commit comments

Comments
 (0)