Skip to content
This repository was archived by the owner on Aug 21, 2025. It is now read-only.
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@
branch = master
[submodule "third-party/nxdk"]
path = third-party/nxdk
url = https://github.com/XboxDev/nxdk.git
url = https://github.com/ReenigneArcher/nxdk.git
branch = master
10 changes: 10 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,15 @@ endif()
set(CMAKE_CXX_FLAGS_RELEASE "-O2")
set(CMAKE_C_FLAGS_RELEASE "-O2")

# submodules
# moonlight common library
# find_package(OpenSSL REQUIRED)
include(GetOpenSSL REQUIRED)
set(ENET_NO_INSTALL ON CACHE BOOL "Don't install any libraries built for enet")
add_subdirectory("${CMAKE_SOURCE_DIR}/third-party/moonlight-common-c")
#target_include_directories(moonlight-common-c PUBLIC "/mingw32/include")
target_link_libraries(enet PUBLIC NXDK::NXDK NXDK::Net NXDK::ws2_32)

set(MOONLIGHT_SOURCES
"${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp"
)
Expand Down Expand Up @@ -77,6 +86,7 @@ target_link_libraries(${CMAKE_PROJECT_NAME} PUBLIC
)

target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE "")
add_dependencies(${CMAKE_PROJECT_NAME} moonlight-common-c)

#
# tests
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,8 @@ This script takes care of everything, except installing the prerequisites.
- [ ] Get tests to properly compile
- [ ] Enable codecov
- [x] Enable sonarcloud
- [ ] Build moonlight-common-c
- [ ] Build custom enet, depends on https://github.com/XboxDev/nxdk/pull/680 or https://github.com/thrimbor/nxdk/tree/winsock/lib/winapi (seems unlikely nxdk will ever be ready for this, could definitely use some help with this)
- [x] Build moonlight-common-c
- [x] Build custom enet
- Menus / Screens
- [x] Loading/splash screen
- [x] Initial loading screen, see https://github.com/XboxDev/nxdk/blob/master/samples/sdl_image/main.c
Expand Down
39 changes: 39 additions & 0 deletions cmake/modules/FindNXDK.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,13 @@ if(NOT TARGET NXDK::NXDK)
IMPORTED_LOCATION "${NXDK_DIR}/lib/winmm.lib"
)

add_library(ws2_32 STATIC IMPORTED)
set_target_properties(
ws2_32
PROPERTIES
IMPORTED_LOCATION "${NXDK_DIR}/lib/ws2_32.lib"
)

add_library(xboxrt STATIC IMPORTED)
set_target_properties(
xboxrt
Expand Down Expand Up @@ -89,6 +96,7 @@ if(NOT TARGET NXDK::NXDK)
pdclib
winapi
winmm
ws2_32
xboxrt
zlib
)
Expand All @@ -106,3 +114,34 @@ if(NOT TARGET NXDK::NXDK_CXX)
add_library(NXDK::NXDK_CXX INTERFACE IMPORTED)
target_link_libraries(NXDK::NXDK_CXX INTERFACE nxdk_cxx)
endif()

if (NOT TARGET NXDK::Net)
add_library(NXDK::Net INTERFACE IMPORTED)
target_link_libraries(
NXDK::Net
INTERFACE
nxdk_net
)
target_include_directories(
NXDK::Net
SYSTEM INTERFACE
"${NXDK_DIR}/lib/net/lwip/src/include"
"${NXDK_DIR}/lib/net/nforceif/include"
"${NXDK_DIR}/lib/net/nvnetdrv"
"${NXDK_DIR}/lib/net/pktdrv"
)
endif ()

if (NOT TARGET NXDK::ws2_32)
add_library(NXDK::ws2_32 INTERFACE IMPORTED)
target_link_libraries(
NXDK::ws2_32
INTERFACE
ws2_32
)
target_include_directories(
NXDK::ws2_32
SYSTEM INTERFACE
"${NXDK_DIR}/lib/winapi/ws2_32"
)
endif ()
34 changes: 34 additions & 0 deletions cmake/modules/GetOpenSSL.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
include_guard(GLOBAL)

set(OPENSSL_VERSION 3.3.2)
set(OPENSSL_URL "https://github.com/openssl/openssl/releases/download/openssl-${OPENSSL_VERSION}/openssl-${OPENSSL_VERSION}.tar.gz") # cmake-lint: disable=C0301

find_package(OpenSSL ${OPENSSL_VERSION})
if(NOT OpenSSL_FOUND OR NOT TARGET OpenSSL::Crypto)
message(STATUS
"OpenSSL v${OPENSSL_VERSION} package not found in the system or incomplete. Falling back to FetchContent.")
include(FetchContent)

# Avoid warning about DOWNLOAD_EXTRACT_TIMESTAMP in CMake 3.24:
if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0")
cmake_policy(SET CMP0135 NEW)
endif()

FetchContent_Declare(
OpenSSL
URL ${OPENSSL_URL}
SYSTEM
OVERRIDE_FIND_PACKAGE
)

FetchContent_MakeAvailable(openssl)

set(OpenSSL_FOUND TRUE) # cmake-lint: disable=C0103
set(OPENSSL_INCLUDE_DIR ${OpenSSL_SOURCE_DIR}/include)
set(OPENSSL_CRYPTO_LIBRARY ${OpenSSL_BINARY_DIR}/lib/libcrypto.a)
set(OPENSSL_SSL_LIBRARY ${OpenSSL_BINARY_DIR}/lib/libssl.a)
set(OPENSSL_LIBRARIES OpenSSL::Crypto OpenSSL::SSL)
endif()

message(STATUS "OpenSSL include dirs: ${OPENSSL_INCLUDE_DIR}")
message(STATUS "OpenSSL libraries: ${OPENSSL_LIBRARIES}")