Skip to content

Commit 45bce8a

Browse files
style: lint/sonar fixes
1 parent 5ce0c16 commit 45bce8a

5 files changed

Lines changed: 151 additions & 105 deletions

File tree

cmake/host-mingw64-clang.cmake

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ find_program(_clang_executable NAMES clang.exe HINTS "${_msys2_mingw_bin}" NO_DE
1919
find_program(_clangxx_executable NAMES clang++.exe HINTS "${_msys2_mingw_bin}" NO_DEFAULT_PATH REQUIRED)
2020
find_program(_mingw_make_executable NAMES mingw32-make.exe HINTS "${_msys2_mingw_bin}" NO_DEFAULT_PATH REQUIRED)
2121

22-
set(MOONLIGHT_HOST_TOOL_DIR "${_msys2_mingw_bin}" CACHE PATH "Path to the detected host-native mingw64 tool directory" FORCE)
22+
set(MOONLIGHT_HOST_TOOL_DIR "${_msys2_mingw_bin}"
23+
CACHE PATH "Path to the detected host-native mingw64 tool directory" FORCE
24+
)
2325
set(MOONLIGHT_MSYS2_ROOT "${_msys2_root}" CACHE PATH "Path to the detected MSYS2 installation" FORCE)
2426
set(CMAKE_C_COMPILER "${_clang_executable}" CACHE FILEPATH "Host C compiler for the Windows CLion build" FORCE)
2527
set(CMAKE_CXX_COMPILER "${_clangxx_executable}" CACHE FILEPATH "Host C++ compiler for the Windows CLion build" FORCE)

cmake/nxdk.cmake

Lines changed: 127 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,13 @@ function(moonlight_run_nxdk_command description nxdk_dir working_directory)
109109
_moonlight_shell_quote(_quoted_nxdk_dir "${_msys_nxdk_dir}")
110110
_moonlight_shell_quote(_quoted_working_directory "${_msys_working_directory}")
111111

112-
set(_shell_script
113-
"unset MAKEFLAGS MFLAGS GNUMAKEFLAGS MAKELEVEL; export NXDK_DIR=${_quoted_nxdk_dir}; export PATH=\"$NXDK_DIR/bin:$PATH\"; cd ${_quoted_working_directory}; exec ${_shell_command}")
112+
string(CONCAT _shell_script
113+
"unset MAKEFLAGS MFLAGS GNUMAKEFLAGS MAKELEVEL; "
114+
"export NXDK_DIR=${_quoted_nxdk_dir}; "
115+
"export PATH=\"$NXDK_DIR/bin:$PATH\"; "
116+
"cd ${_quoted_working_directory}; "
117+
"exec ${_shell_command}"
118+
)
114119

115120
execute_process(
116121
COMMAND "${_msys2_shell}" -defterm -here -no-start -mingw64 -c "${_shell_script}"
@@ -134,128 +139,162 @@ function(moonlight_run_nxdk_command description nxdk_dir working_directory)
134139
endif()
135140
endfunction()
136141

142+
# Run make inside the nxdk environment with the platform-appropriate make tool.
137143
function(_moonlight_run_nxdk_make nxdk_dir description)
138144
if(WIN32)
139-
set(_make_program make)
145+
set(make_program make)
140146
else()
141-
_moonlight_get_xbox_make_program(_make_program)
147+
_moonlight_get_xbox_make_program(make_program)
148+
endif()
149+
150+
moonlight_run_nxdk_command("${description}" "${nxdk_dir}" "${nxdk_dir}" "${make_program}" ${ARGN})
151+
endfunction()
152+
153+
# Report whether any listed output path is missing.
154+
function(_moonlight_has_missing_output out_var)
155+
set(missing_output FALSE)
156+
157+
foreach(required_output IN LISTS ARGN)
158+
if(NOT EXISTS "${required_output}")
159+
set(missing_output TRUE)
160+
break()
161+
endif()
162+
endforeach()
163+
164+
set(${out_var} "${missing_output}" PARENT_SCOPE)
165+
endfunction()
166+
167+
# Build the vendored cxbe tool when it is missing.
168+
function(_moonlight_prepare_cxbe nxdk_dir cxbe_path)
169+
if(EXISTS "${cxbe_path}")
170+
return()
171+
endif()
172+
173+
message(STATUS "Preparing cxbe at ${nxdk_dir}")
174+
if(WIN32)
175+
moonlight_run_nxdk_command("cxbe build" "${nxdk_dir}" "${nxdk_dir}/tools/cxbe" make)
176+
return()
177+
endif()
178+
179+
_moonlight_get_xbox_make_program(host_make_program)
180+
moonlight_run_nxdk_command("cxbe build" "${nxdk_dir}" "${nxdk_dir}/tools/cxbe" "${host_make_program}")
181+
endfunction()
182+
183+
# Configure and build the vendored extract-xiso tool when it is missing.
184+
function(_moonlight_prepare_extract_xiso nxdk_dir source_dir build_dir output_path)
185+
if(EXISTS "${output_path}")
186+
return()
142187
endif()
143188

144-
moonlight_run_nxdk_command("${description}" "${nxdk_dir}" "${nxdk_dir}" "${_make_program}" ${ARGN})
189+
message(STATUS "Preparing extract-xiso at ${nxdk_dir}")
190+
file(REMOVE_RECURSE "${build_dir}")
191+
file(MAKE_DIRECTORY "${build_dir}")
192+
moonlight_run_nxdk_command(
193+
"extract-xiso configure"
194+
"${nxdk_dir}"
195+
"${nxdk_dir}"
196+
"${CMAKE_COMMAND}"
197+
-S "${source_dir}"
198+
-B "${build_dir}"
199+
-G "Unix Makefiles"
200+
)
201+
moonlight_run_nxdk_command(
202+
"extract-xiso build"
203+
"${nxdk_dir}"
204+
"${nxdk_dir}"
205+
"${CMAKE_COMMAND}"
206+
--build "${build_dir}"
207+
)
208+
endfunction()
209+
210+
# Build the vendored host-side nxdk tools required by the Moonlight Xbox build.
211+
function(_moonlight_prepare_nxdk_tools nxdk_dir cxbe_path source_dir build_dir output_path)
212+
_moonlight_prepare_cxbe("${nxdk_dir}" "${cxbe_path}")
213+
_moonlight_prepare_extract_xiso(
214+
"${nxdk_dir}"
215+
"${source_dir}"
216+
"${build_dir}"
217+
"${output_path}"
218+
)
145219
endfunction()
146220

221+
# Bootstrap the vendored nxdk outputs required by the host-first Moonlight build.
147222
function(moonlight_prepare_nxdk nxdk_dir state_dir)
148223
file(MAKE_DIRECTORY "${state_dir}")
149224

150-
set(_signature_inputs
225+
set(signature_inputs
151226
"NXDK_DIR=${nxdk_dir}"
152227
"HOST_SYSTEM=${CMAKE_HOST_SYSTEM_NAME}"
153228
"NXDK_TOOLCHAIN=${nxdk_dir}/share/toolchain-nxdk.cmake"
154229
"NXDK_ENV_MODE=cmake-driver"
155230
)
156-
list(JOIN _signature_inputs "\n" _signature_text)
157-
string(SHA256 _signature "${_signature_text}")
158-
159-
set(_signature_file "${state_dir}/bootstrap.signature")
160-
set(_cxbe_path "${nxdk_dir}/tools/cxbe/cxbe")
161-
set(_extract_xiso_source_dir "${nxdk_dir}/tools/extract-xiso")
162-
set(_extract_xiso_build_dir "${_extract_xiso_source_dir}/build")
163-
set(_extract_xiso_path "${_extract_xiso_build_dir}/extract-xiso")
164-
set(_required_libraries
231+
list(JOIN signature_inputs "\n" signature_text)
232+
string(SHA256 signature "${signature_text}")
233+
234+
set(signature_file "${state_dir}/bootstrap.signature")
235+
set(cxbe_path "${nxdk_dir}/tools/cxbe/cxbe")
236+
set(extract_xiso_source_dir "${nxdk_dir}/tools/extract-xiso")
237+
set(extract_xiso_build_dir "${extract_xiso_source_dir}/build")
238+
set(extract_xiso_path "${extract_xiso_build_dir}/extract-xiso")
239+
set(required_libraries
165240
"${nxdk_dir}/lib/libnxdk.lib"
166241
"${nxdk_dir}/lib/libc++.lib"
167242
"${nxdk_dir}/lib/libSDL2.lib"
168243
"${nxdk_dir}/lib/libSDL2_image.lib"
169244
)
170-
set(_required_tools
171-
"${_cxbe_path}"
172-
"${_extract_xiso_path}"
245+
set(required_tools
246+
"${cxbe_path}"
247+
"${extract_xiso_path}"
173248
)
174249

175250
if(MOONLIGHT_FORCE_NXDK_DISTCLEAN)
176-
set(_need_distclean TRUE)
251+
set(need_distclean TRUE)
177252
else()
178-
set(_need_distclean FALSE)
253+
set(need_distclean FALSE)
179254
endif()
180-
set(_need_prepare_libraries FALSE)
181-
set(_need_prepare_tools FALSE)
182255

183-
if(NOT EXISTS "${_signature_file}")
184-
set(_need_distclean TRUE)
256+
if(NOT EXISTS "${signature_file}")
257+
set(need_distclean TRUE)
185258
else()
186-
file(READ "${_signature_file}" _saved_signature)
187-
string(STRIP "${_saved_signature}" _saved_signature)
188-
if(NOT _saved_signature STREQUAL _signature)
189-
set(_need_distclean TRUE)
259+
file(READ "${signature_file}" saved_signature)
260+
string(STRIP "${saved_signature}" saved_signature)
261+
if(NOT saved_signature STREQUAL signature)
262+
set(need_distclean TRUE)
190263
endif()
191264
endif()
192265

193-
foreach(_required_output IN LISTS _required_libraries)
194-
if(NOT EXISTS "${_required_output}")
195-
set(_need_prepare_libraries TRUE)
196-
break()
197-
endif()
198-
endforeach()
266+
_moonlight_has_missing_output(need_prepare_libraries ${required_libraries})
267+
_moonlight_has_missing_output(need_prepare_tools ${required_tools})
199268

200-
foreach(_required_output IN LISTS _required_tools)
201-
if(NOT EXISTS "${_required_output}")
202-
set(_need_prepare_tools TRUE)
203-
break()
204-
endif()
205-
endforeach()
206-
207-
if(_need_distclean)
269+
if(need_distclean)
208270
message(STATUS "Cleaning nxdk build tree at ${nxdk_dir}")
209271
_moonlight_run_nxdk_make("${nxdk_dir}" "nxdk clean" clean)
210-
set(_need_prepare_libraries TRUE)
272+
set(need_prepare_libraries TRUE)
211273
endif()
212274

213-
if(_need_prepare_libraries)
275+
if(need_prepare_libraries)
214276
message(STATUS "Preparing nxdk libraries at ${nxdk_dir}")
215277
_moonlight_run_nxdk_make("${nxdk_dir}" "nxdk bootstrap" NXDK_ONLY=y)
216278
else()
217279
message(STATUS "Using existing nxdk library outputs from ${nxdk_dir}")
218280
endif()
219281

220-
if(_need_prepare_tools)
221-
if(NOT EXISTS "${_cxbe_path}")
222-
message(STATUS "Preparing cxbe at ${nxdk_dir}")
223-
if(WIN32)
224-
moonlight_run_nxdk_command("cxbe build" "${nxdk_dir}" "${nxdk_dir}/tools/cxbe" make)
225-
else()
226-
_moonlight_get_xbox_make_program(_host_make_program)
227-
moonlight_run_nxdk_command("cxbe build" "${nxdk_dir}" "${nxdk_dir}/tools/cxbe" "${_host_make_program}")
228-
endif()
229-
endif()
230-
231-
if(NOT EXISTS "${_extract_xiso_path}")
232-
message(STATUS "Preparing extract-xiso at ${nxdk_dir}")
233-
file(REMOVE_RECURSE "${_extract_xiso_build_dir}")
234-
file(MAKE_DIRECTORY "${_extract_xiso_build_dir}")
235-
moonlight_run_nxdk_command(
236-
"extract-xiso configure"
237-
"${nxdk_dir}"
238-
"${nxdk_dir}"
239-
"${CMAKE_COMMAND}"
240-
-S "${_extract_xiso_source_dir}"
241-
-B "${_extract_xiso_build_dir}"
242-
-G "Unix Makefiles"
243-
)
244-
moonlight_run_nxdk_command(
245-
"extract-xiso build"
246-
"${nxdk_dir}"
247-
"${nxdk_dir}"
248-
"${CMAKE_COMMAND}"
249-
--build "${_extract_xiso_build_dir}"
250-
)
251-
endif()
282+
if(need_prepare_tools)
283+
_moonlight_prepare_nxdk_tools(
284+
"${nxdk_dir}"
285+
"${cxbe_path}"
286+
"${extract_xiso_source_dir}"
287+
"${extract_xiso_build_dir}"
288+
"${extract_xiso_path}"
289+
)
252290
else()
253291
message(STATUS "Using existing nxdk tool outputs from ${nxdk_dir}")
254292
endif()
255293

256-
file(WRITE "${_signature_file}" "${_signature}\n")
294+
file(WRITE "${signature_file}" "${signature}\n")
257295
endfunction()
258296

297+
# Configure the internal Xbox child build and expose it as the moonlight_xbox target.
259298
function(moonlight_add_xbox_build)
260299
set(options)
261300
set(oneValueArgs BINARY_DIR NXDK_DIR)
@@ -269,11 +308,11 @@ function(moonlight_add_xbox_build)
269308
message(FATAL_ERROR "moonlight_add_xbox_build requires NXDK_DIR")
270309
endif()
271310

272-
_moonlight_get_xbox_make_program(_xbox_make_program)
311+
_moonlight_get_xbox_make_program(xbox_make_program)
273312

274-
set(_toolchain_file "${MOONLIGHT_XBOX_NXDK_DIR}/share/toolchain-nxdk.cmake")
275-
set(_driver_script "${CMAKE_SOURCE_DIR}/cmake/run-child-build.cmake")
276-
set(_configure_command
313+
set(toolchain_file "${MOONLIGHT_XBOX_NXDK_DIR}/share/toolchain-nxdk.cmake")
314+
set(driver_script "${CMAKE_SOURCE_DIR}/cmake/run-child-build.cmake")
315+
set(configure_command
277316
"${CMAKE_COMMAND}"
278317
-DMOONLIGHT_COMMAND_MODE:STRING=configure
279318
-DMOONLIGHT_CMAKE_COMMAND:FILEPATH=${CMAKE_COMMAND}
@@ -282,25 +321,25 @@ function(moonlight_add_xbox_build)
282321
-DMOONLIGHT_SOURCE_DIR:PATH=${CMAKE_SOURCE_DIR}
283322
-DMOONLIGHT_BINARY_DIR:PATH=${MOONLIGHT_XBOX_BINARY_DIR}
284323
-DMOONLIGHT_WORKING_DIRECTORY:PATH=${CMAKE_SOURCE_DIR}
285-
-DMOONLIGHT_MAKE_PROGRAM:FILEPATH=${_xbox_make_program}
286-
-DMOONLIGHT_TOOLCHAIN_FILE:FILEPATH=${_toolchain_file}
324+
-DMOONLIGHT_MAKE_PROGRAM:FILEPATH=${xbox_make_program}
325+
-DMOONLIGHT_TOOLCHAIN_FILE:FILEPATH=${toolchain_file}
287326
-DMOONLIGHT_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
288-
-P "${_driver_script}"
327+
-P "${driver_script}"
289328
)
290-
set(_build_command
329+
set(build_command
291330
"${CMAKE_COMMAND}"
292331
-DMOONLIGHT_COMMAND_MODE:STRING=build
293332
-DMOONLIGHT_CMAKE_COMMAND:FILEPATH=${CMAKE_COMMAND}
294333
-DMOONLIGHT_DESCRIPTION:STRING=Build Xbox child target
295334
-DMOONLIGHT_NXDK_DIR:PATH=${MOONLIGHT_XBOX_NXDK_DIR}
296335
-DMOONLIGHT_BINARY_DIR:PATH=${MOONLIGHT_XBOX_BINARY_DIR}
297336
-DMOONLIGHT_WORKING_DIRECTORY:PATH=${MOONLIGHT_XBOX_BINARY_DIR}
298-
-P "${_driver_script}"
337+
-P "${driver_script}"
299338
)
300339

301340
add_custom_target(moonlight_xbox ALL
302-
COMMAND ${_configure_command}
303-
COMMAND ${_build_command}
341+
COMMAND ${configure_command}
342+
COMMAND ${build_command}
304343
BYPRODUCTS
305344
"${MOONLIGHT_XBOX_BINARY_DIR}/Moonlight.iso"
306345
"${MOONLIGHT_XBOX_BINARY_DIR}/xbe/default.xbe"

cmake/run-child-build.cmake

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
11
# Configure or build the internal Xbox child project inside the vendored nxdk environment.
22

3-
foreach(_required_var
3+
foreach(required_var
44
MOONLIGHT_COMMAND_MODE
55
MOONLIGHT_CMAKE_COMMAND
66
MOONLIGHT_DESCRIPTION
77
MOONLIGHT_NXDK_DIR
88
MOONLIGHT_BINARY_DIR
99
MOONLIGHT_WORKING_DIRECTORY)
10-
if(NOT DEFINED ${_required_var} OR "${${_required_var}}" STREQUAL "")
11-
message(FATAL_ERROR "${_required_var} must be defined when running run-child-build.cmake")
10+
if(NOT DEFINED ${required_var} OR "${${required_var}}" STREQUAL "")
11+
message(FATAL_ERROR "${required_var} must be defined when running run-child-build.cmake")
1212
endif()
1313
endforeach()
1414

1515
include("${CMAKE_CURRENT_LIST_DIR}/nxdk.cmake")
1616

1717
if(MOONLIGHT_COMMAND_MODE STREQUAL "configure")
18-
foreach(_required_var MOONLIGHT_SOURCE_DIR MOONLIGHT_MAKE_PROGRAM MOONLIGHT_TOOLCHAIN_FILE)
19-
if(NOT DEFINED ${_required_var} OR "${${_required_var}}" STREQUAL "")
20-
message(FATAL_ERROR "${_required_var} must be defined for configure mode")
18+
foreach(required_var MOONLIGHT_SOURCE_DIR MOONLIGHT_MAKE_PROGRAM MOONLIGHT_TOOLCHAIN_FILE)
19+
if(NOT DEFINED ${required_var} OR "${${required_var}}" STREQUAL "")
20+
message(FATAL_ERROR "${required_var} must be defined for configure mode")
2121
endif()
2222
endforeach()
2323

24-
set(_command
24+
set(command_args
2525
"${MOONLIGHT_CMAKE_COMMAND}"
2626
-G "Unix Makefiles"
2727
"-DCMAKE_MAKE_PROGRAM:FILEPATH=${MOONLIGHT_MAKE_PROGRAM}"
@@ -37,10 +37,10 @@ if(MOONLIGHT_COMMAND_MODE STREQUAL "configure")
3737
)
3838

3939
if(DEFINED MOONLIGHT_BUILD_TYPE AND NOT MOONLIGHT_BUILD_TYPE STREQUAL "")
40-
list(APPEND _command "-DCMAKE_BUILD_TYPE:STRING=${MOONLIGHT_BUILD_TYPE}")
40+
list(APPEND command_args "-DCMAKE_BUILD_TYPE:STRING=${MOONLIGHT_BUILD_TYPE}")
4141
endif()
4242
elseif(MOONLIGHT_COMMAND_MODE STREQUAL "build")
43-
set(_command
43+
set(command_args
4444
"${MOONLIGHT_CMAKE_COMMAND}"
4545
--build "${MOONLIGHT_BINARY_DIR}"
4646
)
@@ -52,5 +52,5 @@ moonlight_run_nxdk_command(
5252
"${MOONLIGHT_DESCRIPTION}"
5353
"${MOONLIGHT_NXDK_DIR}"
5454
"${MOONLIGHT_WORKING_DIRECTORY}"
55-
${_command}
55+
${command_args}
5656
)

scripts/find-msys2.sh

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,8 @@ for candidate_root in /c/msys64 /c/tools/msys64; do
5454
done
5555

5656
for tool_name in msys2_shell.cmd bash.exe mingw32-make.exe clang++.exe clang.exe; do
57-
if tool_path="$(command -v "$tool_name" 2>/dev/null)"; then
58-
if try_from_tool "$tool_path"; then
59-
exit 0
60-
fi
57+
if tool_path="$(command -v "$tool_name" 2>/dev/null)" && try_from_tool "$tool_path"; then
58+
exit 0
6159
fi
6260
done
6361

0 commit comments

Comments
 (0)