Skip to content

Commit 3f7f43b

Browse files
use cmake
1 parent 67ddd72 commit 3f7f43b

File tree

4 files changed

+81
-11
lines changed

4 files changed

+81
-11
lines changed

.github/workflows/ci.yml

+14-3
Original file line numberDiff line numberDiff line change
@@ -129,12 +129,23 @@ jobs:
129129
130130
- name: Build
131131
run: |
132-
eval "$(./third-party/nxdk/bin/activate -s)"
133-
make
132+
nxdk_dir="$(pwd)/third-party/nxdk"
133+
eval "$(${nxdk_dir}/bin/activate -s)"
134+
cd ${nxdk_dir}
135+
make NXDK_ONLY=y
136+
make tools
137+
138+
cd ${GITHUB_WORKSPACE}
139+
mkdir -p build
140+
cmake -DCMAKE_TOOLCHAIN_FILE=${nxdk_dir}/share/toolchain-nxdk.cmake -B build -S .
141+
cmake --build build
142+
143+
# recursively list all files in build directory
144+
ls -R build
134145
135146
# move artifacts
136147
mkdir -p artifacts
137-
mv ./build/default.xbe ./artifacts
148+
mv ./build/xbe/default.xbe ./artifacts
138149
mv ./Moonlight.iso ./artifacts
139150
140151
- name: Upload Artifacts

.gitignore

+8
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,11 @@
3636

3737
# VSCode IDE
3838
.vscode/
39+
40+
# build directories
41+
build/
42+
cmake-*/
43+
docs/doxyconfig*
44+
45+
# iso file is created in project root
46+
*.iso

CMakeLists.txt

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
cmake_minimum_required(VERSION 3.14)
2+
# much of this file is borrowed from https://github.com/Ryzee119/Xenium-Tools/blob/master/CMakeLists.txt
3+
4+
project(Moonlight C CXX)
5+
set(XBE_TITLE ${CMAKE_PROJECT_NAME})
6+
message(STATUS "XBE_TITLE: ${XBE_TITLE}")
7+
8+
set(NXDK_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third-party/nxdk")
9+
message(STATUS "NXDK_DIR: ${NXDK_DIR}")
10+
11+
set(XBOX_XBE_DIR "${CMAKE_CURRENT_BINARY_DIR}/xbe")
12+
set(XBOX_ISO "${CMAKE_PROJECT_NAME}.iso")
13+
message(STATUS "XBOX_ISO: ${XBOX_ISO}")
14+
15+
# create the xbe directory if it doesn't exist
16+
file(MAKE_DIRECTORY ${XBOX_XBE_DIR})
17+
18+
include(FindPkgConfig)
19+
20+
if(NOT CMAKE_BUILD_TYPE)
21+
set(CMAKE_BUILD_TYPE Release)
22+
endif()
23+
set(CMAKE_CXX_FLAGS_RELEASE "-O2")
24+
set(CMAKE_C_FLAGS_RELEASE "-O2")
25+
26+
# Stop lots of warning spam
27+
add_compile_options(-Wno-builtin-macro-redefined)
28+
add_definitions(-DXBOX -DNXDK)
29+
30+
set(MOONLIGHT_SOURCES
31+
"${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp"
32+
)
33+
34+
add_executable(${CMAKE_PROJECT_NAME}
35+
${MOONLIGHT_SOURCES}
36+
)
37+
include_directories("${NXDK_DIR}/lib")
38+
target_link_libraries(${CMAKE_PROJECT_NAME} PUBLIC ${NXDK_DIR}/lib/libpbkit.lib)
39+
40+
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE "")
41+
42+
#Post-build exe to xbe conversion
43+
add_custom_target(cxbe_convert ALL
44+
VERBATIM COMMAND "${CMAKE_COMMAND}" -E env ./tools/cxbe/cxbe -OUT:${XBOX_XBE_DIR}/default.xbe -TITLE:${XBE_TITLE} ${CMAKE_CURRENT_BINARY_DIR}/${XBE_TITLE}.exe
45+
WORKING_DIRECTORY ${NXDK_DIR}
46+
COMMENT "CXBE Conversion: [EXE -> XBE]"
47+
)
48+
add_dependencies(cxbe_convert ${CMAKE_PROJECT_NAME})
49+
50+
#Post-build xbe to xiso conversion
51+
add_custom_target(xbe_iso ALL
52+
VERBATIM COMMAND "${CMAKE_COMMAND}" -E env ${NXDK_DIR}/tools/extract-xiso/build/extract-xiso -c ${XBOX_XBE_DIR} ${XBOX_ISO}
53+
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
54+
COMMENT "CXBE Conversion: [XBE -> XISO]"
55+
)
56+
add_dependencies(xbe_iso cxbe_convert)
57+
58+
set_target_properties(cxbe_convert PROPERTIES OUTPUT_QUIET ON)
59+
set_target_properties(xbe_iso PROPERTIES OUTPUT_QUIET ON)

Makefile

-8
This file was deleted.

0 commit comments

Comments
 (0)