diff --git a/.gitmodules b/.gitmodules index 57b4e9b..73b9151 100644 --- a/.gitmodules +++ b/.gitmodules @@ -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 diff --git a/CMakeLists.txt b/CMakeLists.txt index 13d57b6..627bc82 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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" ) @@ -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 diff --git a/README.md b/README.md index ef6cb82..ba6fad0 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/cmake/modules/FindNXDK.cmake b/cmake/modules/FindNXDK.cmake index 66bfc00..9336928 100644 --- a/cmake/modules/FindNXDK.cmake +++ b/cmake/modules/FindNXDK.cmake @@ -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 @@ -89,6 +96,7 @@ if(NOT TARGET NXDK::NXDK) pdclib winapi winmm + ws2_32 xboxrt zlib ) @@ -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 () diff --git a/cmake/modules/GetOpenSSL.cmake b/cmake/modules/GetOpenSSL.cmake new file mode 100644 index 0000000..009c155 --- /dev/null +++ b/cmake/modules/GetOpenSSL.cmake @@ -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}") diff --git a/third-party/nxdk b/third-party/nxdk index 56cdc3d..e3cf8be 160000 --- a/third-party/nxdk +++ b/third-party/nxdk @@ -1 +1 @@ -Subproject commit 56cdc3d89e6a6ab00e6d7d6ecfcb533e96678107 +Subproject commit e3cf8be26ed2b8af42c172fbc88e858c4456b776