summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/main.yml2
-rw-r--r--.gitignore2
-rw-r--r--CMakeLists.txt363
3 files changed, 185 insertions, 182 deletions
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index c57009a83..bea0b4e06 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -447,7 +447,7 @@ jobs:
mkdir -p spaghetti-${{ matrix.config }}
wget -O gamecontrollerdb.txt https://raw.githubusercontent.com/mdqinc/SDL_GameControllerDB/master/gamecontrollerdb.txt
mv gamecontrollerdb.txt spaghetti-${{ matrix.config }}/
- cp build/*.appimage spaghetti-${{ matrix.config }}/ 2>/dev/null || true
+ cp build/*.appimage spaghetti-${{ matrix.config }}/spaghetti.appimage 2>/dev/null || true
- name: Publish packaged artifacts
uses: actions/upload-artifact@v4
diff --git a/.gitignore b/.gitignore
index b65d51fef..1b21a6b7b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -129,3 +129,5 @@ build*/
.DS_Store
.cache/
_packages/
+out/
+
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 277d34612..9b4be14c9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,7 +1,6 @@
cmake_minimum_required(VERSION 3.16.0 FATAL_ERROR)
# Set the project version and language
-project(Spaghettify VERSION 0.1.0 LANGUAGES C CXX ASM)
include(FetchContent)
set(NATO_PHONETIC_ALPHABET
@@ -53,10 +52,12 @@ math(EXPR PATCH_INDEX "${PROJECT_VERSION_PATCH}")
# Use the patch number to select the correct word
list(GET NATO_PHONETIC_ALPHABET ${PATCH_INDEX} PROJECT_PATCH_WORD)
-set(PROJECT_BUILD_NAME "Alfredo ${PROJECT_PATCH_WORD}" CACHE STRING "" FORCE)
+set(PROJECT_BUILD_NAME "Bolognese ${PROJECT_PATCH_WORD}" CACHE STRING "" FORCE)
set(PROJECT_TEAM "github.com/harbourmasters" CACHE STRING "" FORCE)
-message("Spaghetti Kart version: ${PROJECT_VERSION} Alfredo ${PROJECT_PATCH_WORD}")
+project(Spaghettify VERSION ${PROJECT_VERSION_PATCH} LANGUAGES C CXX ASM)
+
+message("Spaghetti Kart version: ${PROJECT_VERSION} ${PROJECT_PATCH_WORD}")
if(APPLE)
enable_language(OBJCXX)
@@ -84,52 +85,52 @@ add_compile_definitions(YAML_CPP_STATIC_DEFINE)
include(cmake/lus-cvars.cmake)
if (WIN32)
-include(cmake/automate-vcpkg.cmake)
-set(VCPKG_TRIPLET x64-windows-static)
-set(VCPKG_TARGET_TRIPLET x64-windows-static)
-vcpkg_bootstrap()
-vcpkg_install_packages()
-
-set_property(DIRECTORY ${CMAKE_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${PROJECT_NAME})
-set_property(DIRECTORY ${CMAKE_SOURCE_DIR} PROPERTY VS_DEBUGGER_WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
+ include(cmake/automate-vcpkg.cmake)
+ set(VCPKG_TRIPLET x64-windows-static)
+ set(VCPKG_TARGET_TRIPLET x64-windows-static)
+ vcpkg_bootstrap()
+ vcpkg_install_packages()
+
+ set_property(DIRECTORY ${CMAKE_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${PROJECT_NAME})
+ set_property(DIRECTORY ${CMAKE_SOURCE_DIR} PROPERTY VS_DEBUGGER_WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
endif()
if (MSVC)
-set(CPP "${CMAKE_C_COMPILER}" "/EP")
+ set(CPP "${CMAKE_C_COMPILER}" "/EP")
else()
-set(CPP "${CMAKE_C_COMPILER}" "-E" "-P" "-Wno-trigraphs" "-x" "c")
+ set(CPP "${CMAKE_C_COMPILER}" "-E" "-P" "-Wno-trigraphs" "-x" "c")
endif()
if(IOS)
-set(PLATFORM "OS64")
-include(cmake/ios.toolchain.cmake)
-add_compile_definitions(
+ set(PLATFORM "OS64")
+ include(cmake/ios.toolchain.cmake)
+ add_compile_definitions(
PLATFORM_IOS=1
)
-set(CMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM "YOUR_TEAM_ID")
-set(PROJECT_ID "dev.net64.game")
+ set(CMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM "YOUR_TEAM_ID")
+ set(PROJECT_ID "dev.net64.game")
endif()
################################################################################
# Set target arch type if empty. Visual studio solution generator provides it.
################################################################################
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
- if(NOT CMAKE_VS_PLATFORM_NAME)
- set(CMAKE_VS_PLATFORM_NAME "x64")
- endif()
- message("${CMAKE_VS_PLATFORM_NAME} architecture in use")
+ if(NOT CMAKE_VS_PLATFORM_NAME)
+ set(CMAKE_VS_PLATFORM_NAME "x64")
+ endif()
+ message("${CMAKE_VS_PLATFORM_NAME} architecture in use")
- if(NOT ("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64"
+ if(NOT ("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64"
OR "${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32"))
- message(FATAL_ERROR "${CMAKE_VS_PLATFORM_NAME} arch is not supported!")
- endif()
+ message(FATAL_ERROR "${CMAKE_VS_PLATFORM_NAME} arch is not supported!")
+ endif()
endif()
################################################################################
# Compiler specific configuration types
################################################################################
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU|Clang|AppleClang")
- set(COMMON_FLAGS "-Wall -Wextra -Wno-error \
+ set(COMMON_FLAGS "-Wall -Wextra -Wno-error \
-Wno-return-type \
-Wno-unused-parameter \
-Wno-unused-function \
@@ -143,40 +144,40 @@ if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU|Clang|AppleClang")
-pipe"
)
- set(COMMON_C_FLAGS "${COMMON_FLAGS} -Wno-int-conversion -Werror-implicit-function-declaration -Wno-incompatible-pointer-types")
- set(COMMON_CXX_FLAGS "${COMMON_FLAGS} -Wno-c++11-narrowing -Wno-deprecated-enum-enum-conversion -fpermissive -fomit-frame-pointer")
+ set(COMMON_C_FLAGS "${COMMON_FLAGS} -Wno-int-conversion -Werror-implicit-function-declaration -Wno-incompatible-pointer-types")
+ set(COMMON_CXX_FLAGS "${COMMON_FLAGS} -Wno-c++11-narrowing -Wno-deprecated-enum-enum-conversion -fpermissive -fomit-frame-pointer")
elseif (MSVC)
- set(COMMON_FLAGS "/fp:fast")
- set(COMMON_C_FLAGS "${COMMON_FLAGS}")
- set(COMMON_CXX_FLAGS "${COMMON_FLAGS}")
+ set(COMMON_FLAGS "/fp:fast")
+ set(COMMON_C_FLAGS "${COMMON_FLAGS}")
+ set(COMMON_CXX_FLAGS "${COMMON_FLAGS}")
else()
- set(COMMON_C_FLAGS "")
- set(COMMON_CXX_FLAGS "")
+ set(COMMON_C_FLAGS "")
+ set(COMMON_CXX_FLAGS "")
endif()
# fix LTO breaks debug information on Apple/Ninja https://gitlab.kitware.com/cmake/cmake/-/issues/25202
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "AppleClang" AND "${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
- add_link_options("-fno-lto")
- add_compile_options("-fno-lto")
+ add_link_options("-fno-lto")
+ add_compile_options("-fno-lto")
endif()
################################################################################
# Global configuration types
################################################################################
if (MSVC)
- set(CMAKE_C_FLAGS_DEBUG "/Od /Zi /DNDEBUG ${COMMON_C_FLAGS}")
- set(CMAKE_CXX_FLAGS_DEBUG "/Od /Zi /DNDEBUG ${COMMON_CXX_FLAGS}")
- set(CMAKE_C_FLAGS_RELEASE "/O2 /DNDEBUG ${COMMON_C_FLAGS}")
- set(CMAKE_CXX_FLAGS_RELEASE "/O2 /DNDEBUG ${COMMON_CXX_FLAGS}")
+ set(CMAKE_C_FLAGS_DEBUG "/Od /Zi /DNDEBUG ${COMMON_C_FLAGS}")
+ set(CMAKE_CXX_FLAGS_DEBUG "/Od /Zi /DNDEBUG ${COMMON_CXX_FLAGS}")
+ set(CMAKE_C_FLAGS_RELEASE "/O2 /DNDEBUG ${COMMON_C_FLAGS}")
+ set(CMAKE_CXX_FLAGS_RELEASE "/O2 /DNDEBUG ${COMMON_CXX_FLAGS}")
else()
- set(CMAKE_C_FLAGS_DEBUG "-g -DNDEBUG ${COMMON_C_FLAGS}")
- set(CMAKE_CXX_FLAGS_DEBUG "-g -DNDEBUG ${COMMON_CXX_FLAGS}")
- set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG ${COMMON_C_FLAGS}")
- set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG ${COMMON_CXX_FLAGS}")
- set(CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG ${COMMON_C_FLAGS}")
- set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG ${COMMON_CXX_FLAGS}")
- set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g -DNDEBUG ${COMMON_C_FLAGS}")
- set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -DNDEBUG ${COMMON_CXX_FLAGS}")
+ set(CMAKE_C_FLAGS_DEBUG "-g -DNDEBUG ${COMMON_C_FLAGS}")
+ set(CMAKE_CXX_FLAGS_DEBUG "-g -DNDEBUG ${COMMON_CXX_FLAGS}")
+ set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG ${COMMON_C_FLAGS}")
+ set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG ${COMMON_CXX_FLAGS}")
+ set(CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG ${COMMON_C_FLAGS}")
+ set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG ${COMMON_CXX_FLAGS}")
+ set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g -DNDEBUG ${COMMON_C_FLAGS}")
+ set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -DNDEBUG ${COMMON_CXX_FLAGS}")
endif()
# Set game compilation version
@@ -197,17 +198,17 @@ add_compile_definitions(
CIMGUI_DEFINE_ENUMS_AND_STRUCTS
NON_MATCHING=1
NON_EQUIVALENT=1
- AVOID_UB=1
- SPAGHETTI_VERSION="${PROJECT_VERSION}"
+ AVOID_UB=1
+ SPAGHETTI_VERSION="${PROJECT_VERSION}"
)
# Find necessary libraries
if (UNIX AND NOT APPLE)
-find_package(OpenGL REQUIRED)
+ find_package(OpenGL REQUIRED)
endif()
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
- configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/properties.h.in ${CMAKE_CURRENT_SOURCE_DIR}/properties.h @ONLY)
+ configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/properties.h.in ${CMAKE_CURRENT_SOURCE_DIR}/properties.h @ONLY)
endif()
# Include directories
@@ -299,17 +300,17 @@ list(FILTER ALL_FILES EXCLUDE REGEX ".*.inc.c")
list(FILTER ALL_FILES EXCLUDE REGEX "./src/debug/crash_screen_enhancement.c")
if (CMAKE_SYSTEM_NAME STREQUAL "iOS")
- set(IOS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libultraship/ios)
+ set(IOS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libultraship/ios)
- set(STORYBOARD_FILE ${IOS_DIR}/Launch.storyboard)
- set(IMAGE_FILES ${IOS_DIR}/PoweredBy.png)
- set(ICON_FILES ${IOS_DIR}/Icon.png)
+ set(STORYBOARD_FILE ${IOS_DIR}/Launch.storyboard)
+ set(IMAGE_FILES ${IOS_DIR}/PoweredBy.png)
+ set(ICON_FILES ${IOS_DIR}/Icon.png)
- list(APPEND ALL_FILES ${STORYBOARD_FILE} ${IMAGE_FILES} ${ICON_FILES})
+ list(APPEND ALL_FILES ${STORYBOARD_FILE} ${IMAGE_FILES} ${ICON_FILES})
- add_executable(${PROJECT_NAME} ${ALL_FILES})
- set_xcode_property(${PROJECT_NAME} PRODUCT_BUNDLE_IDENTIFIER ${PROJECT_ID} All)
- set_target_properties(
+ add_executable(${PROJECT_NAME} ${ALL_FILES})
+ set_xcode_property(${PROJECT_NAME} PRODUCT_BUNDLE_IDENTIFIER ${PROJECT_ID} All)
+ set_target_properties(
${PROJECT_NAME}
PROPERTIES
MACOSX_BUNDLE TRUE
@@ -317,7 +318,7 @@ if (CMAKE_SYSTEM_NAME STREQUAL "iOS")
RESOURCE "${IMAGE_FILES};${STORYBOARD_FILE};${ICON_FILES}"
)
else()
- add_executable(${PROJECT_NAME} ${ALL_FILES})
+ add_executable(${PROJECT_NAME} ${ALL_FILES})
endif()
@@ -326,29 +327,29 @@ endif()
################################################################################
if (MSVC)
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
- get_property(MSVC_RUNTIME_LIBRARY_DEFAULT TARGET ${PROJECT_NAME} PROPERTY MSVC_RUNTIME_LIBRARY)
- if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
- string(CONCAT "MSVC_RUNTIME_LIBRARY_STR"
- $<$<CONFIG:Debug>:
+ get_property(MSVC_RUNTIME_LIBRARY_DEFAULT TARGET ${PROJECT_NAME} PROPERTY MSVC_RUNTIME_LIBRARY)
+ if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
+ string(CONCAT "MSVC_RUNTIME_LIBRARY_STR"
+ $<$<CONFIG:Debug>:
MultiThreadedDebug
- >
- $<$<CONFIG:Release>:
+ >
+ $<$<CONFIG:Release>:
MultiThreaded
- >
- $<$<NOT:$<OR:$<CONFIG:Debug>,$<CONFIG:Release>>>:${MSVC_RUNTIME_LIBRARY_DEFAULT}>
- )
- elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
- string(CONCAT "MSVC_RUNTIME_LIBRARY_STR"
- $<$<CONFIG:Debug>:
- MultiThreadedDebug
- >
- $<$<CONFIG:Release>:
- MultiThreaded
- >
- $<$<NOT:$<OR:$<CONFIG:Debug>,$<CONFIG:Release>>>:${MSVC_RUNTIME_LIBRARY_DEFAULT}>
- )
- endif()
- set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY ${MSVC_RUNTIME_LIBRARY_STR})
+ >
+ $<$<NOT:$<OR:$<CONFIG:Debug>,$<CONFIG:Release>>>:${MSVC_RUNTIME_LIBRARY_DEFAULT}>
+ )
+ elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
+ string(CONCAT "MSVC_RUNTIME_LIBRARY_STR"
+ $<$<CONFIG:Debug>:
+ MultiThreadedDebug
+ >
+ $<$<CONFIG:Release>:
+ MultiThreaded
+ >
+ $<$<NOT:$<OR:$<CONFIG:Debug>,$<CONFIG:Release>>>:${MSVC_RUNTIME_LIBRARY_DEFAULT}>
+ )
+ endif()
+ set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY ${MSVC_RUNTIME_LIBRARY_STR})
endif()
endif()
@@ -368,7 +369,7 @@ include_directories(${SEMVER_DIR})
FetchContent_Declare(
dr_libs
GIT_REPOSITORY https://github.com/mackron/dr_libs.git
- GIT_TAG da35f9d6c7374a95353fd1df1d394d44ab66cf01
+ GIT_TAG da35f9d6c7374a95353fd1df1d394d44ab66cf01
)
FetchContent_MakeAvailable(dr_libs)
@@ -395,7 +396,7 @@ set(ENABLE_EXP_AUTO_CONFIGURE_CONTROLLERS ON CACHE BOOL "")
add_compile_definitions(EXCLUDE_MPQ_SUPPORT)
if(CMAKE_SYSTEM_NAME STREQUAL "NintendoSwitch")
- find_package(SDL2)
+ find_package(SDL2)
endif()
include_directories(
@@ -412,7 +413,7 @@ add_dependencies(${PROJECT_NAME} libultraship)
target_link_libraries(${PROJECT_NAME} PRIVATE libultraship)
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
- target_compile_definitions(${PROJECT_NAME} PRIVATE
+ target_compile_definitions(${PROJECT_NAME} PRIVATE
"$<$<CONFIG:Debug>:"
"_DEBUG;"
"_CRT_SECURE_NO_WARNINGS;"
@@ -428,89 +429,89 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
"_CRT_SECURE_NO_WARNINGS;"
"_SILENCE_ALL_MS_EXT_DEPRECATION_WARNINGS;"
)
- add_compile_definitions(STORMLIB_NO_AUTO_LINK)
- set(STORMLIB_NO_AUTO_LINK ON)
+ add_compile_definitions(STORMLIB_NO_AUTO_LINK)
+ set(STORMLIB_NO_AUTO_LINK ON)
elseif (CMAKE_SYSTEM_NAME STREQUAL "CafeOS")
- target_compile_definitions(${PROJECT_NAME} PRIVATE
- "$<$<CONFIG:Debug>:"
- "_DEBUG"
- ">"
- "$<$<CONFIG:Release>:"
- "NDEBUG"
- ">"
+ target_compile_definitions(${PROJECT_NAME} PRIVATE
+ "$<$<CONFIG:Debug>:"
+ "_DEBUG"
+ ">"
+ "$<$<CONFIG:Release>:"
+ "NDEBUG"
+ ">"
"SPDLOG_ACTIVE_LEVEL=3;"
- "SPDLOG_NO_THREAD_ID;"
+ "SPDLOG_NO_THREAD_ID;"
"SPDLOG_NO_TLS;"
- "STBI_NO_THREAD_LOCALS;"
- )
+ "STBI_NO_THREAD_LOCALS;"
+ )
elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU|Clang|AppleClang")
- target_compile_definitions(${PROJECT_NAME} PRIVATE
- "$<$<CONFIG:Debug>:"
- "_DEBUG"
- ">"
- "$<$<CONFIG:Release>:"
- "NDEBUG"
- ">"
+ target_compile_definitions(${PROJECT_NAME} PRIVATE
+ "$<$<CONFIG:Debug>:"
+ "_DEBUG"
+ ">"
+ "$<$<CONFIG:Release>:"
+ "NDEBUG"
+ ">"
"$<$<BOOL:${BUILD_CROWD_CONTROL}>:ENABLE_CROWD_CONTROL>"
- "SPDLOG_ACTIVE_LEVEL=0;"
- "_CONSOLE;"
- "_CRT_SECURE_NO_WARNINGS;"
- "UNICODE;"
- "_UNICODE"
- )
+ "SPDLOG_ACTIVE_LEVEL=0;"
+ "_CONSOLE;"
+ "_CRT_SECURE_NO_WARNINGS;"
+ "UNICODE;"
+ "_UNICODE"
+ )
endif()
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
- find_package(Ogg CONFIG REQUIRED)
- link_libraries(Ogg::ogg)
+ find_package(Ogg CONFIG REQUIRED)
+ link_libraries(Ogg::ogg)
- find_package(Vorbis CONFIG REQUIRED)
- link_libraries(Vorbis::vorbisfile)
- set(ADDITIONAL_LIBRARY_DEPENDENCIES
+ find_package(Vorbis CONFIG REQUIRED)
+ link_libraries(Vorbis::vorbisfile)
+ set(ADDITIONAL_LIBRARY_DEPENDENCIES
"Ogg::ogg"
"Vorbis::vorbis"
"Vorbis::vorbisenc"
"Vorbis::vorbisfile"
)
elseif(CMAKE_SYSTEM_NAME STREQUAL "NintendoSwitch")
- set(ADDITIONAL_LIBRARY_DEPENDENCIES
+ set(ADDITIONAL_LIBRARY_DEPENDENCIES
-lglad
SDL2::SDL2
)
elseif(CMAKE_SYSTEM_NAME STREQUAL "CafeOS")
- set(ADDITIONAL_LIBRARY_DEPENDENCIES
+ set(ADDITIONAL_LIBRARY_DEPENDENCIES
"$<$<CONFIG:Debug>:-Wl,--wrap=abort>"
)
- target_include_directories(${PROJECT_NAME} PRIVATE
+ target_include_directories(${PROJECT_NAME} PRIVATE
${DEVKITPRO}/portlibs/wiiu/include/
)
else()
- find_package(Ogg REQUIRED)
- find_package(Vorbis REQUIRED)
- set(ADDITIONAL_LIBRARY_DEPENDENCIES
+ find_package(Ogg REQUIRED)
+ find_package(Vorbis REQUIRED)
+ set(ADDITIONAL_LIBRARY_DEPENDENCIES
"Ogg::ogg"
"Vorbis::vorbis"
"Vorbis::vorbisenc"
"Vorbis::vorbisfile"
- )
+ )
endif()
if(USE_NETWORKING)
- if(MSVC)
- vcpkg_install_packages(sdl2-net)
- endif()
- include_directories(${SDL2_NET_INCLUDE_DIRS})
- target_compile_definitions(${PROJECT_NAME} PRIVATE USE_NETWORKING)
- if(CMAKE_SYSTEM_NAME STREQUAL "NintendoSwitch")
- target_link_libraries(${PROJECT_NAME} PRIVATE SDL2_net)
- elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
- find_package(SDL2_net REQUIRED)
- target_link_libraries(${PROJECT_NAME} PRIVATE $<IF:$<TARGET_EXISTS:SDL2_net::SDL2_net>,SDL2_net::SDL2_net,SDL2_net::SDL2_net-static>)
- else()
- find_package(SDL2_net REQUIRED)
- target_link_libraries(${PROJECT_NAME} PRIVATE SDL2_net::SDL2_net-static)
- endif()
+ if(MSVC)
+ vcpkg_install_packages(sdl2-net)
+ endif()
+ include_directories(${SDL2_NET_INCLUDE_DIRS})
+ target_compile_definitions(${PROJECT_NAME} PRIVATE USE_NETWORKING)
+ if(CMAKE_SYSTEM_NAME STREQUAL "NintendoSwitch")
+ target_link_libraries(${PROJECT_NAME} PRIVATE SDL2_net)
+ elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ find_package(SDL2_net REQUIRED)
+ target_link_libraries(${PROJECT_NAME} PRIVATE $<IF:$<TARGET_EXISTS:SDL2_net::SDL2_net>,SDL2_net::SDL2_net,SDL2_net::SDL2_net-static>)
+ else()
+ find_package(SDL2_net REQUIRED)
+ target_link_libraries(${PROJECT_NAME} PRIVATE SDL2_net::SDL2_net-static)
+ endif()
endif()
option(USE_STANDALONE "Build as a standalone executable" OFF)
@@ -525,18 +526,18 @@ target_link_libraries(${PROJECT_NAME} PRIVATE torch "${ADDITIONAL_LIBRARY_DEPEND
if(CMAKE_SYSTEM_NAME MATCHES "NintendoSwitch")
-nx_generate_nacp(${PROJECT_NAME}.nacp
+ nx_generate_nacp(${PROJECT_NAME}.nacp
NAME "${PROJECT_NAME}"
AUTHOR "${PROJECT_TEAM}"
VERSION "${PROJECT_VERSION}"
)
-nx_create_nro(${PROJECT_NAME}
+ nx_create_nro(${PROJECT_NAME}
NACP ${PROJECT_NAME}.nacp
ICON ${CMAKE_CURRENT_SOURCE_DIR}/icon.png
)
-INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.nro DESTINATION . COMPONENT ${PROJECT_NAME})
+ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.nro DESTINATION . COMPONENT ${PROJECT_NAME})
endif()
################################################################################
@@ -544,7 +545,7 @@ endif()
################################################################################
if(MSVC)
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
- target_compile_options(${PROJECT_NAME} PRIVATE
+ target_compile_options(${PROJECT_NAME} PRIVATE
$<$<CONFIG:Debug>:
/w;
/Od;
@@ -561,10 +562,10 @@ if(MSVC)
${DEFAULT_CXX_DEBUG_INFORMATION_FORMAT};
${DEFAULT_CXX_EXCEPTION_HANDLING}
)
- target_compile_options(${PROJECT_NAME} PRIVATE $<$<CONFIG:Debug>:/ZI;>)
- target_compile_options(${PROJECT_NAME} PRIVATE $<$<CONFIG:Release>:/Zi;>)
+ target_compile_options(${PROJECT_NAME} PRIVATE $<$<CONFIG:Debug>:/ZI;>)
+ target_compile_options(${PROJECT_NAME} PRIVATE $<$<CONFIG:Release>:/Zi;>)
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
- target_compile_options(${PROJECT_NAME} PRIVATE
+ target_compile_options(${PROJECT_NAME} PRIVATE
$<$<CONFIG:Debug>:
/MTd
>
@@ -582,7 +583,7 @@ if(MSVC)
)
endif()
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
- target_link_options(${PROJECT_NAME} PRIVATE
+ target_link_options(${PROJECT_NAME} PRIVATE
$<$<CONFIG:Debug>:
/INCREMENTAL
>
@@ -597,7 +598,7 @@ if(MSVC)
/SUBSYSTEM:WINDOWS
)
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
- target_link_options(${PROJECT_NAME} PRIVATE
+ target_link_options(${PROJECT_NAME} PRIVATE
$<$<CONFIG:Debug>:
/STACK:8777216
>
@@ -623,33 +624,33 @@ if(MSVC)
endif()
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang")
- if (CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_SYSTEM_NAME STREQUAL "iOS")
- target_compile_options(${PROJECT_NAME} PRIVATE
+ if (CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_SYSTEM_NAME STREQUAL "iOS")
+ target_compile_options(${PROJECT_NAME} PRIVATE
-pthread
)
- target_link_options(${PROJECT_NAME} PRIVATE
+ target_link_options(${PROJECT_NAME} PRIVATE
-pthread
)
- elseif (CMAKE_SYSTEM_NAME STREQUAL "NintendoSwitch")
- target_compile_options(${PROJECT_NAME} PRIVATE
+ elseif (CMAKE_SYSTEM_NAME STREQUAL "NintendoSwitch")
+ target_compile_options(${PROJECT_NAME} PRIVATE
-pthread
)
- target_link_options(${PROJECT_NAME} PRIVATE
+ target_link_options(${PROJECT_NAME} PRIVATE
-pthread
)
elseif (NOT CMAKE_SYSTEM_NAME STREQUAL "CafeOS")
- if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
- set(CPU_OPTION -msse2 -mfpmath=sse)
- endif()
+ if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
+ set(CPU_OPTION -msse2 -mfpmath=sse)
+ endif()
- target_compile_options(${PROJECT_NAME} PRIVATE
+ target_compile_options(${PROJECT_NAME} PRIVATE
-pthread
${CPU_OPTION}
)
- target_link_options(${PROJECT_NAME} PRIVATE
+ target_link_options(${PROJECT_NAME} PRIVATE
-pthread
-Wl,-export-dynamic
)
@@ -657,29 +658,29 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang")
endif()
add_custom_command(
- TARGET ${PROJECT_NAME} POST_BUILD
- COMMENT "Copying asset yamls..."
- COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/config.yml" "$<TARGET_FILE_DIR:Spaghettify>/config.yml"
- COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_SOURCE_DIR}/yamls/" "$<TARGET_FILE_DIR:Spaghettify>/yamls/"
+ TARGET ${PROJECT_NAME} POST_BUILD
+ COMMENT "Copying asset yamls..."
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/config.yml" "$<TARGET_FILE_DIR:Spaghettify>/config.yml"
+ COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_SOURCE_DIR}/yamls/" "$<TARGET_FILE_DIR:Spaghettify>/yamls/"
COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_SOURCE_DIR}/meta/" "$<TARGET_FILE_DIR:Spaghettify>/meta/"
)
if(NOT CMAKE_SYSTEM_NAME STREQUAL "NintendoSwitch")
-include(ExternalProject)
-ExternalProject_Add(TorchExternal
+ include(ExternalProject)
+ ExternalProject_Add(TorchExternal
PREFIX TorchExternal
SOURCE_DIR ${CMAKE_SOURCE_DIR}/torch
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/torch
)
-ExternalProject_Get_Property(TorchExternal install_dir)
-if (MSVC)
- set(TORCH_EXECUTABLE ${install_dir}/src/TorchExternal-build/$<CONFIGURATION>/torch)
-else()
- set(TORCH_EXECUTABLE ${install_dir}/src/TorchExternal-build/torch)
-endif()
+ ExternalProject_Get_Property(TorchExternal install_dir)
+ if (MSVC)
+ set(TORCH_EXECUTABLE ${install_dir}/src/TorchExternal-build/$<CONFIGURATION>/torch)
+ else()
+ set(TORCH_EXECUTABLE ${install_dir}/src/TorchExternal-build/torch)
+ endif()
-add_custom_target(
+ add_custom_target(
ExtractAssets
DEPENDS TorchExternal
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
@@ -690,7 +691,7 @@ add_custom_target(
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/spaghetti.o2r" "${CMAKE_BINARY_DIR}/spaghetti.o2r"
)
-add_custom_target(
+ add_custom_target(
GenerateO2R
DEPENDS TorchExternal
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
@@ -698,12 +699,12 @@ add_custom_target(
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/spaghetti.o2r" "${CMAKE_BINARY_DIR}/spaghetti.o2r"
)
-if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
- install(FILES "${CMAKE_BINARY_DIR}/spaghetti.o2r" DESTINATION . COMPONENT ${PROJECT_NAME})
-endif()
+ if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
+ install(FILES "${CMAKE_BINARY_DIR}/spaghetti.o2r" DESTINATION . COMPONENT ${PROJECT_NAME})
+ endif()
-if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
-add_custom_target(CreateOSXIcons
+ if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
+ add_custom_target(CreateOSXIcons
COMMAND mkdir -p ${CMAKE_BINARY_DIR}/macosx/spaghettikart.iconset
COMMAND sips -z 16 16 icon.png --out ${CMAKE_BINARY_DIR}/macosx/spaghettikart.iconset/icon_16x16.png
COMMAND sips -z 32 32 icon.png --out ${CMAKE_BINARY_DIR}/macosx/spaghettikart.iconset/icon_16x16@2x.png
@@ -721,19 +722,19 @@ add_custom_target(CreateOSXIcons
)
add_dependencies(${PROJECT_NAME} CreateOSXIcons)
configure_file("${CMAKE_SOURCE_DIR}/Info.plist" "${CMAKE_BINARY_DIR}/Info.plist" COPYONLY)
-endif()
+ endif()
-set_property(TARGET ${PROJECT_NAME} PROPERTY APPIMAGE_DESKTOP_FILE_TERMINAL YES)
-set_property(TARGET ${PROJECT_NAME} PROPERTY APPIMAGE_DESKTOP_FILE "${CMAKE_SOURCE_DIR}/SpaghettiKart.desktop")
-set_property(TARGET ${PROJECT_NAME} PROPERTY APPIMAGE_ICON_FILE "${CMAKE_SOURCE_DIR}/icon.png")
+ set_property(TARGET ${PROJECT_NAME} PROPERTY APPIMAGE_DESKTOP_FILE_TERMINAL YES)
+ set_property(TARGET ${PROJECT_NAME} PROPERTY APPIMAGE_DESKTOP_FILE "${CMAKE_SOURCE_DIR}/SpaghettiKart.desktop")
+ set_property(TARGET ${PROJECT_NAME} PROPERTY APPIMAGE_ICON_FILE "${CMAKE_SOURCE_DIR}/icon.png")
endif()
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
- set(CPACK_GENERATOR "External")
+ set(CPACK_GENERATOR "External")
elseif(CMAKE_SYSTEM_NAME MATCHES "Windows|NintendoSwitch|CafeOS")
- set(CPACK_GENERATOR "ZIP")
+ set(CPACK_GENERATOR "ZIP")
elseif(CMAKE_SYSTEM_NAME MATCHES "Darwin")
- set(CPACK_GENERATOR "Bundle")
+ set(CPACK_GENERATOR "Bundle")
endif()
set(CPACK_PROJECT_CONFIG_FILE ${CMAKE_SOURCE_DIR}/cmake/configure-packaging.cmake)