From 4beee81c12907f03d6b83679adf9cf23698a8143 Mon Sep 17 00:00:00 2001 From: marauder2k7 Date: Sun, 17 May 2026 18:51:01 +0100 Subject: [PATCH] jolt build folder --- Engine/lib/JoltPhysics/Build/.gitignore | 7 + .../lib/JoltPhysics/Build/Android/.gitignore | 5 + .../Android/PerformanceTest/build.gradle | 51 ++ .../src/main/AndroidManifest.xml | 20 + .../src/main/cpp/CMakeLists.txt | 20 + .../Build/Android/UnitTests/build.gradle | 51 ++ .../UnitTests/src/main/AndroidManifest.xml | 20 + .../UnitTests/src/main/cpp/CMakeLists.txt | 20 + .../JoltPhysics/Build/Android/build.gradle | 17 + .../Build/Android/gradle.properties | 21 + .../Android/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59203 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 + Engine/lib/JoltPhysics/Build/Android/gradlew | 185 ++++++++ .../lib/JoltPhysics/Build/Android/gradlew.bat | 89 ++++ .../JoltPhysics/Build/Android/settings.gradle | 10 + Engine/lib/JoltPhysics/Build/CMakeLists.txt | 449 ++++++++++++++++++ Engine/lib/JoltPhysics/Build/README.md | 250 ++++++++++ .../Build/cmake_linux_clang_gcc.sh | 28 ++ .../Build/cmake_linux_emscripten.sh | 19 + .../JoltPhysics/Build/cmake_linux_mingw.sh | 19 + .../lib/JoltPhysics/Build/cmake_vs2022_cl.bat | 3 + .../Build/cmake_vs2022_cl_32bit.bat | 3 + .../JoltPhysics/Build/cmake_vs2022_cl_arm.bat | 3 + .../Build/cmake_vs2022_cl_arm_32bit.bat | 4 + ...vs2022_cl_cross_platform_deterministic.bat | 3 + .../Build/cmake_vs2022_cl_double.bat | 3 + .../cmake_vs2022_cl_no_object_stream.bat | 3 + .../JoltPhysics/Build/cmake_vs2022_clang.bat | 10 + ...022_clang_cross_platform_deterministic.bat | 10 + .../Build/cmake_vs2022_clang_double.bat | 10 + .../JoltPhysics/Build/cmake_vs2022_uwp.bat | 5 + .../Build/cmake_vs2022_uwp_arm.bat | 5 + .../lib/JoltPhysics/Build/cmake_vs2026_cl.bat | 3 + ...vs2026_cl_cross_platform_deterministic.bat | 3 + .../Build/cmake_vs2026_cl_double.bat | 3 + .../JoltPhysics/Build/cmake_vs2026_clang.bat | 10 + ...026_clang_cross_platform_deterministic.bat | 10 + .../Build/cmake_vs2026_clang_double.bat | 10 + .../JoltPhysics/Build/cmake_windows_mingw.sh | 19 + .../lib/JoltPhysics/Build/cmake_xcode_ios.sh | 4 + .../JoltPhysics/Build/cmake_xcode_macos.sh | 4 + .../Build/iOS/JoltViewerInfo.plist | 34 ++ .../JoltPhysics/Build/iOS/SamplesInfo.plist | 34 ++ .../JoltPhysics/Build/iOS/UnitTestsInfo.plist | 34 ++ Engine/lib/JoltPhysics/Build/macOS/icon.icns | Bin 0 -> 121564 bytes .../Build/macos_install_vulkan_sdk.sh | 13 + .../JoltPhysics/Build/mingw-w64-x86_64.cmake | 23 + .../Build/ubuntu24_install_vulkan_sdk.sh | 4 + 48 files changed, 1556 insertions(+) create mode 100644 Engine/lib/JoltPhysics/Build/.gitignore create mode 100644 Engine/lib/JoltPhysics/Build/Android/.gitignore create mode 100644 Engine/lib/JoltPhysics/Build/Android/PerformanceTest/build.gradle create mode 100644 Engine/lib/JoltPhysics/Build/Android/PerformanceTest/src/main/AndroidManifest.xml create mode 100644 Engine/lib/JoltPhysics/Build/Android/PerformanceTest/src/main/cpp/CMakeLists.txt create mode 100644 Engine/lib/JoltPhysics/Build/Android/UnitTests/build.gradle create mode 100644 Engine/lib/JoltPhysics/Build/Android/UnitTests/src/main/AndroidManifest.xml create mode 100644 Engine/lib/JoltPhysics/Build/Android/UnitTests/src/main/cpp/CMakeLists.txt create mode 100644 Engine/lib/JoltPhysics/Build/Android/build.gradle create mode 100644 Engine/lib/JoltPhysics/Build/Android/gradle.properties create mode 100644 Engine/lib/JoltPhysics/Build/Android/gradle/wrapper/gradle-wrapper.jar create mode 100644 Engine/lib/JoltPhysics/Build/Android/gradle/wrapper/gradle-wrapper.properties create mode 100644 Engine/lib/JoltPhysics/Build/Android/gradlew create mode 100644 Engine/lib/JoltPhysics/Build/Android/gradlew.bat create mode 100644 Engine/lib/JoltPhysics/Build/Android/settings.gradle create mode 100644 Engine/lib/JoltPhysics/Build/CMakeLists.txt create mode 100644 Engine/lib/JoltPhysics/Build/README.md create mode 100644 Engine/lib/JoltPhysics/Build/cmake_linux_clang_gcc.sh create mode 100644 Engine/lib/JoltPhysics/Build/cmake_linux_emscripten.sh create mode 100644 Engine/lib/JoltPhysics/Build/cmake_linux_mingw.sh create mode 100644 Engine/lib/JoltPhysics/Build/cmake_vs2022_cl.bat create mode 100644 Engine/lib/JoltPhysics/Build/cmake_vs2022_cl_32bit.bat create mode 100644 Engine/lib/JoltPhysics/Build/cmake_vs2022_cl_arm.bat create mode 100644 Engine/lib/JoltPhysics/Build/cmake_vs2022_cl_arm_32bit.bat create mode 100644 Engine/lib/JoltPhysics/Build/cmake_vs2022_cl_cross_platform_deterministic.bat create mode 100644 Engine/lib/JoltPhysics/Build/cmake_vs2022_cl_double.bat create mode 100644 Engine/lib/JoltPhysics/Build/cmake_vs2022_cl_no_object_stream.bat create mode 100644 Engine/lib/JoltPhysics/Build/cmake_vs2022_clang.bat create mode 100644 Engine/lib/JoltPhysics/Build/cmake_vs2022_clang_cross_platform_deterministic.bat create mode 100644 Engine/lib/JoltPhysics/Build/cmake_vs2022_clang_double.bat create mode 100644 Engine/lib/JoltPhysics/Build/cmake_vs2022_uwp.bat create mode 100644 Engine/lib/JoltPhysics/Build/cmake_vs2022_uwp_arm.bat create mode 100644 Engine/lib/JoltPhysics/Build/cmake_vs2026_cl.bat create mode 100644 Engine/lib/JoltPhysics/Build/cmake_vs2026_cl_cross_platform_deterministic.bat create mode 100644 Engine/lib/JoltPhysics/Build/cmake_vs2026_cl_double.bat create mode 100644 Engine/lib/JoltPhysics/Build/cmake_vs2026_clang.bat create mode 100644 Engine/lib/JoltPhysics/Build/cmake_vs2026_clang_cross_platform_deterministic.bat create mode 100644 Engine/lib/JoltPhysics/Build/cmake_vs2026_clang_double.bat create mode 100644 Engine/lib/JoltPhysics/Build/cmake_windows_mingw.sh create mode 100644 Engine/lib/JoltPhysics/Build/cmake_xcode_ios.sh create mode 100644 Engine/lib/JoltPhysics/Build/cmake_xcode_macos.sh create mode 100644 Engine/lib/JoltPhysics/Build/iOS/JoltViewerInfo.plist create mode 100644 Engine/lib/JoltPhysics/Build/iOS/SamplesInfo.plist create mode 100644 Engine/lib/JoltPhysics/Build/iOS/UnitTestsInfo.plist create mode 100644 Engine/lib/JoltPhysics/Build/macOS/icon.icns create mode 100644 Engine/lib/JoltPhysics/Build/macos_install_vulkan_sdk.sh create mode 100644 Engine/lib/JoltPhysics/Build/mingw-w64-x86_64.cmake create mode 100644 Engine/lib/JoltPhysics/Build/ubuntu24_install_vulkan_sdk.sh diff --git a/Engine/lib/JoltPhysics/Build/.gitignore b/Engine/lib/JoltPhysics/Build/.gitignore new file mode 100644 index 000000000..b20966786 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/.gitignore @@ -0,0 +1,7 @@ +/Linux* +/WASM* +/VS20* +/XCode* +/MinGW* +/Doxygen +/CoverageReport diff --git a/Engine/lib/JoltPhysics/Build/Android/.gitignore b/Engine/lib/JoltPhysics/Build/Android/.gitignore new file mode 100644 index 000000000..be3ca89c7 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/Android/.gitignore @@ -0,0 +1,5 @@ +.idea +.gradle +.cxx +build +local.properties diff --git a/Engine/lib/JoltPhysics/Build/Android/PerformanceTest/build.gradle b/Engine/lib/JoltPhysics/Build/Android/PerformanceTest/build.gradle new file mode 100644 index 000000000..dc9eb4f92 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/Android/PerformanceTest/build.gradle @@ -0,0 +1,51 @@ +plugins { + id 'com.android.application' +} + +android { + compileSdk 33 + ndkVersion "26.1.10909125" + + defaultConfig { + applicationId "com.joltphysics.performancetest" + minSdk 21 + targetSdk 33 + versionCode 1 + versionName "1.0" + ndk.abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86_64', 'x86' + + externalNativeBuild { + cmake { + cppFlags '-std=c++17 -Wall -Werror -ffp-model=precise -ffp-contract=off -DJPH_PROFILE_ENABLED -DJPH_DEBUG_RENDERER' + arguments '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=c++_static', '-DCROSS_PLATFORM_DETERMINISTIC=ON' + } + } + signingConfig signingConfigs.debug + } + + buildTypes { + release { + minifyEnabled false + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + externalNativeBuild { + cmake { + path file('src/main/cpp/CMakeLists.txt') + version '3.22.1' + } + } + + buildFeatures { + viewBinding true + } + namespace 'com.joltphysics.performancetest' +} + +dependencies { +} \ No newline at end of file diff --git a/Engine/lib/JoltPhysics/Build/Android/PerformanceTest/src/main/AndroidManifest.xml b/Engine/lib/JoltPhysics/Build/Android/PerformanceTest/src/main/AndroidManifest.xml new file mode 100644 index 000000000..fc5682a74 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/Android/PerformanceTest/src/main/AndroidManifest.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Engine/lib/JoltPhysics/Build/Android/PerformanceTest/src/main/cpp/CMakeLists.txt b/Engine/lib/JoltPhysics/Build/Android/PerformanceTest/src/main/cpp/CMakeLists.txt new file mode 100644 index 000000000..ab8db81ba --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/Android/PerformanceTest/src/main/cpp/CMakeLists.txt @@ -0,0 +1,20 @@ +cmake_minimum_required(VERSION 3.10.2) + +project("JoltPhysicsPerformanceTest") + +# Make sure we include the app glue sources +set(APP_GLUE_DIR ${ANDROID_NDK}/sources/android/native_app_glue) +include_directories(${APP_GLUE_DIR}) + +# Set repository root +set(PHYSICS_REPO_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../") + +# Make targets +include(${PHYSICS_REPO_ROOT}/Jolt/Jolt.cmake) +include(${PHYSICS_REPO_ROOT}/PerformanceTest/PerformanceTest.cmake) + +# Link shared native library +set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -u ANativeActivity_onCreate") +add_library(PerformanceTest SHARED ${PERFORMANCE_TEST_SRC_FILES} ${APP_GLUE_DIR}/android_native_app_glue.c) +target_include_directories(PerformanceTest PUBLIC Jolt ${JOLT_PHYSICS_ROOT} ${PERFORMANCE_TEST_ROOT}) +target_link_libraries(PerformanceTest Jolt android log) diff --git a/Engine/lib/JoltPhysics/Build/Android/UnitTests/build.gradle b/Engine/lib/JoltPhysics/Build/Android/UnitTests/build.gradle new file mode 100644 index 000000000..8f0b3f7e6 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/Android/UnitTests/build.gradle @@ -0,0 +1,51 @@ +plugins { + id 'com.android.application' +} + +android { + compileSdk 33 + ndkVersion "26.1.10909125" + + defaultConfig { + applicationId "com.joltphysics.unittests" + minSdk 21 + targetSdk 33 + versionCode 1 + versionName "1.0" + ndk.abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86_64', 'x86' + + externalNativeBuild { + cmake { + cppFlags '-std=c++17 -Wall -Werror -ffp-contract=off -DJPH_PROFILE_ENABLED -DJPH_DEBUG_RENDERER' + arguments '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=c++_static' + } + } + signingConfig signingConfigs.debug + } + + buildTypes { + release { + minifyEnabled false + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + externalNativeBuild { + cmake { + path file('src/main/cpp/CMakeLists.txt') + version '3.22.1' + } + } + + buildFeatures { + viewBinding true + } + namespace 'com.joltphysics.unittests' +} + +dependencies { +} \ No newline at end of file diff --git a/Engine/lib/JoltPhysics/Build/Android/UnitTests/src/main/AndroidManifest.xml b/Engine/lib/JoltPhysics/Build/Android/UnitTests/src/main/AndroidManifest.xml new file mode 100644 index 000000000..e31e98364 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/Android/UnitTests/src/main/AndroidManifest.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Engine/lib/JoltPhysics/Build/Android/UnitTests/src/main/cpp/CMakeLists.txt b/Engine/lib/JoltPhysics/Build/Android/UnitTests/src/main/cpp/CMakeLists.txt new file mode 100644 index 000000000..de46f4c1e --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/Android/UnitTests/src/main/cpp/CMakeLists.txt @@ -0,0 +1,20 @@ +cmake_minimum_required(VERSION 3.10.2) + +project("JoltPhysicsUnitTests") + +# Make sure we include the app glue sources +set(APP_GLUE_DIR ${ANDROID_NDK}/sources/android/native_app_glue) +include_directories(${APP_GLUE_DIR}) + +# Set repository root +set(PHYSICS_REPO_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../") + +# Make targets +include(${PHYSICS_REPO_ROOT}/Jolt/Jolt.cmake) +include(${PHYSICS_REPO_ROOT}/UnitTests/UnitTests.cmake) + +# Link shared native library +set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -u ANativeActivity_onCreate") +add_library(UnitTests SHARED ${UNIT_TESTS_SRC_FILES} ${APP_GLUE_DIR}/android_native_app_glue.c) +target_include_directories(UnitTests PUBLIC Jolt ${JOLT_PHYSICS_ROOT} ${UNIT_TESTS_ROOT}) +target_link_libraries(UnitTests Jolt android log) diff --git a/Engine/lib/JoltPhysics/Build/Android/build.gradle b/Engine/lib/JoltPhysics/Build/Android/build.gradle new file mode 100644 index 000000000..69a30e60e --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/Android/build.gradle @@ -0,0 +1,17 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +buildscript { + repositories { + google() + mavenCentral() + } + dependencies { + classpath 'com.android.tools.build:gradle:8.7.2' + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/Engine/lib/JoltPhysics/Build/Android/gradle.properties b/Engine/lib/JoltPhysics/Build/Android/gradle.properties new file mode 100644 index 000000000..bfeae71ec --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/Android/gradle.properties @@ -0,0 +1,21 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app"s APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Automatically convert third-party libraries to use AndroidX +android.enableJetifier=true +android.nonTransitiveRClass=false +android.nonFinalResIds=false \ No newline at end of file diff --git a/Engine/lib/JoltPhysics/Build/Android/gradle/wrapper/gradle-wrapper.jar b/Engine/lib/JoltPhysics/Build/Android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f GIT binary patch literal 59203 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

K7UpUK$>l@ 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 E2O(~oYXATM literal 0 HcmV?d00001 diff --git a/Engine/lib/JoltPhysics/Build/Android/gradle/wrapper/gradle-wrapper.properties b/Engine/lib/JoltPhysics/Build/Android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..6e2914a22 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/Android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/Engine/lib/JoltPhysics/Build/Android/gradlew b/Engine/lib/JoltPhysics/Build/Android/gradlew new file mode 100644 index 000000000..4f906e0c8 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/Android/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/Engine/lib/JoltPhysics/Build/Android/gradlew.bat b/Engine/lib/JoltPhysics/Build/Android/gradlew.bat new file mode 100644 index 000000000..107acd32c --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/Android/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/Engine/lib/JoltPhysics/Build/Android/settings.gradle b/Engine/lib/JoltPhysics/Build/Android/settings.gradle new file mode 100644 index 000000000..35a66bb37 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/Android/settings.gradle @@ -0,0 +1,10 @@ +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + } +} +rootProject.name = "Jolt Physics" +include ':UnitTests' +include ':PerformanceTest' diff --git a/Engine/lib/JoltPhysics/Build/CMakeLists.txt b/Engine/lib/JoltPhysics/Build/CMakeLists.txt new file mode 100644 index 000000000..dcc37b5a3 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/CMakeLists.txt @@ -0,0 +1,449 @@ +cmake_minimum_required(VERSION 3.20 FATAL_ERROR) + +project(JoltPhysics VERSION 5.5.0 LANGUAGES CXX) + +# When turning this option on, the library will be compiled using assertions. By default asserts are enabled in Debug build. +option(USE_ASSERTS "Enable asserts" OFF) + +# When turning this option on, the library will be compiled using doubles for positions. This allows for much bigger worlds. +option(DOUBLE_PRECISION "Use double precision math" OFF) + +# When turning this option on, the library will be compiled with debug symbols +option(GENERATE_DEBUG_SYMBOLS "Generate debug symbols" ON) + +# Which type of debug symbols to generate, e.g. using source-map when compiling with emscripten makes compilation a lot faster +set(JPH_DEBUG_SYMBOL_FORMAT "" CACHE STRING "Which type of debug symbols to generate") + +# When turning this option on, the library will override the default CMAKE_CXX_FLAGS_DEBUG/RELEASE values, otherwise they will use the platform defaults +option(OVERRIDE_CXX_FLAGS "Override CMAKE_CXX_FLAGS_DEBUG/RELEASE" ON) + +# When turning this option on, the library will be compiled in such a way to attempt to keep the simulation deterministic across platforms +option(CROSS_PLATFORM_DETERMINISTIC "Cross platform deterministic" OFF) + +# When turning this option on, the library will be compiled for ARM using the CROSS_COMPILE_ARM_TARGET architecture, requires compiling with clang +option(CROSS_COMPILE_ARM "Cross compile to the CROSS_COMPILE_ARM_TARGET architecture" OFF) + +# When cross compiling to ARM this specifies which target to use. Can be 'aarch64-linux-gnu' for 64-bit or 'arm-linux-gnueabihf' for 32-bit +set(CROSS_COMPILE_ARM_TARGET "aarch64-linux-gnu" CACHE STRING "The target to use") + +# When turning this option on, Jolt will be compiled as a shared library and public symbols will be exported. +option(BUILD_SHARED_LIBS "Compile Jolt as a shared library" OFF) + +# When turning this option on, the library will be compiled with interprocedural optimizations enabled, also known as link-time optimizations or link-time code generation. +# Note that if you turn this on you need to use SET_INTERPROCEDURAL_OPTIMIZATION() or set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON) to enable LTO specifically for your own project as well. +# If you don't do this you may get an error: /usr/bin/ld: libJolt.a: error adding symbols: file format not recognized +option(INTERPROCEDURAL_OPTIMIZATION "Enable interprocedural optimizations" ON) + +# When turning this on, in Debug and Release mode, the library will emit extra code to ensure that the 4th component of a 3-vector is kept the same as the 3rd component +# and will enable floating point exceptions during simulation to detect divisions by zero. +# Note that this currently only works using MSVC. Clang turns Float2 into a SIMD vector sometimes causing floating point exceptions (the option is ignored). +option(FLOATING_POINT_EXCEPTIONS_ENABLED "Enable floating point exceptions" ON) + +# When turning this on, the library will be compiled with C++ exceptions enabled. +# This adds some overhead and Jolt doesn't use exceptions so by default it is off. +option(CPP_EXCEPTIONS_ENABLED "Enable C++ exceptions" OFF) + +# When turning this on, the library will be compiled with C++ RTTI enabled. +# This adds some overhead and Jolt doesn't use RTTI so by default it is off. +option(CPP_RTTI_ENABLED "Enable C++ RTTI" OFF) + +# Number of bits to use in ObjectLayer. Can be 16 or 32. +option(OBJECT_LAYER_BITS "Number of bits in ObjectLayer" 16) + +# Select X86 processor features to use (if everything is off it will be SSE2 compatible) +option(USE_SSE4_1 "Enable SSE4.1" ON) +option(USE_SSE4_2 "Enable SSE4.2" ON) +option(USE_AVX "Enable AVX" ON) +option(USE_AVX2 "Enable AVX2" ON) +option(USE_AVX512 "Enable AVX512" OFF) +option(USE_LZCNT "Enable LZCNT" ON) +option(USE_TZCNT "Enable TZCNT" ON) +option(USE_F16C "Enable F16C" ON) +option(USE_FMADD "Enable FMADD" ON) + +# Enable SIMD for the WASM build. Note that this is currently off by default since not all browsers support this. +# See: https://caniuse.com/?search=WebAssembly%20SIMD (Safari got support in March 2023 and was the last major browser to get support). +option(USE_WASM_SIMD "Enable SIMD for WASM" OFF) + +# Enable 64 bit WASM instead of the default 32 bit WASM. Note that this currently requires special commandline flags in browsers and nodejs to enable. +# E.g. use 'node --experimental-wasm-memory64 UnitTests.js' to run the unit tests in nodejs in 64 bit. +option(JPH_USE_WASM64 "Enable 64 bit WASM" OFF) + +# Enable all warnings +option(ENABLE_ALL_WARNINGS "Enable all warnings and warnings as errors" ON) + +# Setting to periodically trace broadphase stats to help determine if the broadphase layer configuration is optimal +option(TRACK_BROADPHASE_STATS "Track Broadphase Stats" OFF) + +# Setting to periodically trace narrowphase stats to help determine which collision queries could be optimized +option(TRACK_NARROWPHASE_STATS "Track Narrowphase Stats" OFF) + +# Setting to track simulation timings per body +option(JPH_TRACK_SIMULATION_STATS "Track Simulation Stats" OFF) + +# Enable the debug renderer in the Debug and Release builds. Note that DEBUG_RENDERER_IN_DISTRIBUTION will override this setting. +option(DEBUG_RENDERER_IN_DEBUG_AND_RELEASE "Enable debug renderer in Debug and Release builds" ON) + +# Setting to enable the debug renderer in all builds. +# Note that enabling this reduces the performance of the library even if you're not drawing anything. +option(DEBUG_RENDERER_IN_DISTRIBUTION "Enable debug renderer in all builds" OFF) + +# Enable the profiler in Debug and Release builds. Note that PROFILER_IN_DISTRIBUTION will override this setting. +option(PROFILER_IN_DEBUG_AND_RELEASE "Enable the profiler in Debug and Release builds" ON) + +# Enable the profiler in all builds. +# Note that enabling this reduces the performance of the library. +option(PROFILER_IN_DISTRIBUTION "Enable the profiler in all builds" OFF) + +# Ability to use the external profiler using CMake config. Defines preprocessor JPH_EXTERNAL_PROFILE. +# Use external profiler set using ProfileStartMeasurement and ProfileEndMeasurement to profile. +# Option is available only when profiling is enabled using PROFILER_IN_DEBUG_AND_RELEASE or PROFILER_IN_DISTRIBUTION. +option(JPH_USE_EXTERNAL_PROFILE "Use external profiler when profiling is enabled" OFF) + +# Setting this option will force the library to use malloc/free instead of allowing the user to override the memory allocator +option(DISABLE_CUSTOM_ALLOCATOR "Disable support for a custom memory allocator" OFF) + +# Setting this option will force the library to use the STL vector instead of the custom Array class +option(USE_STD_VECTOR "Use std::vector instead of own Array class" OFF) + +# Setting this option will compile the ObjectStream class and RTTI attribute information +option(ENABLE_OBJECT_STREAM "Compile the ObjectStream class and RTTI attribute information" ON) + +# Enable installation +option(ENABLE_INSTALL "Generate installation target" ON) + +include(CMakeDependentOption) + +# Ability to toggle between the static and DLL versions of the MSVC runtime library +# Windows Store only supports the DLL version +cmake_dependent_option(USE_STATIC_MSVC_RUNTIME_LIBRARY "Use the static MSVC runtime library" ON "MSVC;NOT WINDOWS_STORE" OFF) + +# Enable Vulkan instead of DirectX +cmake_dependent_option(JPH_ENABLE_VULKAN "Enable Vulkan" ON "LINUX" OFF) + +# Determine which configurations exist +if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) # Only do this when we're at the top level, see: https://gitlab.kitware.com/cmake/cmake/-/issues/24181 + if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") + set(CMAKE_CONFIGURATION_TYPES "Debug;Release;Distribution") + elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang") + set(CMAKE_CONFIGURATION_TYPES "Debug;Release;ReleaseASAN;ReleaseUBSAN;ReleaseTSAN;ReleaseCoverage;Distribution") + endif() +endif() + +if (MSVC) + # Fill in the path to the asan libraries + set(CLANG_LIB_PATH "\"$(VSInstallDir)\\VC\\Tools\\Llvm\\x64\\lib\\clang\\${CMAKE_CXX_COMPILER_VERSION}\\lib\\windows\"") + + # 64 bit architecture + set(CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE "x64") + + # Set runtime library + if (USE_STATIC_MSVC_RUNTIME_LIBRARY) + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") + endif() + + # Set general compiler flags + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zc:__cplusplus /Gm- /MP /nologo /diagnostics:classic /FC /fp:except- /Zc:inline") + + # Enable warnings + if (ENABLE_ALL_WARNINGS) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Wall /WX") + endif() + + # Optionally generate debug symbols + if (GENERATE_DEBUG_SYMBOLS) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zi") + endif() + + if (NOT CPP_RTTI_ENABLED) + # Set compiler flag for disabling RTTI + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /GR-") + else() + # Set compiler flag for enabling RTTI + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /GR") + endif() + + if (NOT CPP_EXCEPTIONS_ENABLED) + # Remove any existing compiler flag that enables exceptions + string(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) + + # Disable warning about STL and compiler-generated types using noexcept when exceptions are disabled + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4577") + else() + # Enable exceptions + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc") + endif() + + # Set compiler flags for various configurations + if (OVERRIDE_CXX_FLAGS) + set(CMAKE_CXX_FLAGS_DEBUG "/GS /Od /Ob0 /RTC1") + set(CMAKE_CXX_FLAGS_RELEASE "/GS- /Gy /O2 /Oi /Ot") + endif() + set(CMAKE_CXX_FLAGS_DISTRIBUTION "${CMAKE_CXX_FLAGS_RELEASE}") + set(CMAKE_CXX_FLAGS_RELEASEASAN "-fsanitize=address /Od") + set(CMAKE_CXX_FLAGS_RELEASEUBSAN "-fsanitize=undefined,implicit-conversion,float-divide-by-zero,local-bounds -fno-sanitize-recover=all") + set(CMAKE_CXX_FLAGS_RELEASETSAN "${CMAKE_CXX_FLAGS_RELEASE} -fsanitize=thread") + set(CMAKE_CXX_FLAGS_RELEASECOVERAGE "-fprofile-instr-generate -fcoverage-mapping") + + # Set linker flags + set(CMAKE_EXE_LINKER_FLAGS "/SUBSYSTEM:WINDOWS /ignore:4221") + if (GENERATE_DEBUG_SYMBOLS) + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DEBUG") + endif() + if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") + if (CROSS_PLATFORM_DETERMINISTIC) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fp:precise") + else() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fp:fast") # Clang doesn't use fast math because it cannot be turned off inside a single compilation unit + endif() + elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /showFilenames") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments") # Clang emits warnings about unused arguments such as /MP and /GL + set(CMAKE_EXE_LINKER_FLAGS_RELEASEASAN "/SUBSYSTEM:CONSOLE /LIBPATH:${CLANG_LIB_PATH} clang_rt.asan-x86_64.lib -wholearchive:clang_rt.asan-x86_64.lib clang_rt.asan_cxx-x86_64.lib -wholearchive:clang_rt.asan_cxx-x86_64.lib") + set(CMAKE_EXE_LINKER_FLAGS_RELEASEUBSAN "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LIBPATH:${CLANG_LIB_PATH}") + set(CMAKE_EXE_LINKER_FLAGS_RELEASETSAN "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LIBPATH:${CLANG_LIB_PATH}") + set(CMAKE_EXE_LINKER_FLAGS_RELEASECOVERAGE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LIBPATH:${CLANG_LIB_PATH}") + endif() +else() + # Enable warnings + if (ENABLE_ALL_WARNINGS) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror") + endif() + + # Optionally generate debug symbols + if (GENERATE_DEBUG_SYMBOLS) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g${JPH_DEBUG_SYMBOL_FORMAT}") + endif() + + if (NOT CPP_RTTI_ENABLED) + # Set compiler flag for disabling RTTI + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti") + else() + # Set compiler flag for enabling RTTI + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -frtti") + endif() + + if (NOT CPP_EXCEPTIONS_ENABLED) + # Set compiler flag for disabling exception-handling + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions") + else() + # Set compiler flag for enabling exception-handling + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexceptions") + endif() + + if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") + # Also disable -Wstringop-overflow or it will generate false positives that can't be disabled from code when link-time optimizations are enabled + # Also disable -Wno-psabi to avoid messages of the form note: parameter passing for argument of type '...' changed in GCC 7.1 + # Also turn off automatic fused multiply add contractions, there doesn't seem to be a way to do this selectively through the macro JPH_PRECISE_MATH_OFF + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-stringop-overflow -Wno-psabi -ffp-contract=off") + else() + # Do not use -ffast-math since it cannot be turned off in a single compilation unit under clang, see Core.h + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffp-model=precise") + + # On clang 14 and later we can turn off float contraction through a pragma, older versions and deterministic versions need it off always, see Core.h + # clang on LoongArch does not support such pragma, also turn off contraction for it. + if (CMAKE_CXX_COMPILER_VERSION LESS 14 OR CROSS_PLATFORM_DETERMINISTIC OR "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "loongarch") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffp-contract=off") + + # Clang 20 and later complain with: overriding '-ffp-model=precise' option with '-ffp-contract=off' [-Woverriding-option], but this is exactly what we want. + if (CMAKE_CXX_COMPILER_VERSION GREATER 19) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-overriding-option") + endif() + endif() + + # Cross compiler flags + if (CROSS_COMPILE_ARM AND NOT ("${CROSS_COMPILE_ARM_TARGET}" STREQUAL "")) + set(CMAKE_CXX_FLAGS "--target=${CROSS_COMPILE_ARM_TARGET} ${CMAKE_CXX_FLAGS}") + endif() + endif() + + # See https://github.com/jrouwe/JoltPhysics/issues/922. When compiling with DOUBLE_PRECISION=YES and CMAKE_OSX_DEPLOYMENT_TARGET=10.12 clang triggers a warning that we silence here. + if ("${CMAKE_SYSTEM_NAME}" MATCHES "Darwin" AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -faligned-allocation") + endif() + + # Set compiler flags for various configurations + if (OVERRIDE_CXX_FLAGS) + set(CMAKE_CXX_FLAGS_DEBUG "") + set(CMAKE_CXX_FLAGS_RELEASE "-O3") + endif() + set(CMAKE_CXX_FLAGS_DISTRIBUTION "${CMAKE_CXX_FLAGS_RELEASE}") + set(CMAKE_CXX_FLAGS_RELEASEASAN "-fsanitize=address") + set(CMAKE_CXX_FLAGS_RELEASEUBSAN "-fsanitize=undefined,implicit-conversion,float-divide-by-zero,local-bounds -fno-sanitize-recover=all") + set(CMAKE_CXX_FLAGS_RELEASETSAN "${CMAKE_CXX_FLAGS_RELEASE} -fsanitize=thread") + set(CMAKE_CXX_FLAGS_RELEASECOVERAGE "-O0 -DJPH_NO_FORCE_INLINE -fprofile-instr-generate -fcoverage-mapping") +endif() + +# Set linker flags +set(CMAKE_EXE_LINKER_FLAGS_DISTRIBUTION "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") + +# Enable link time optimization in Release and Distribution mode if requested and available +function(SET_INTERPROCEDURAL_OPTIMIZATION) + set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE OFF PARENT_SCOPE) + set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_DISTRIBUTION OFF PARENT_SCOPE) + + # On ARM, whole program optimization triggers an internal compiler error during code gen, so we don't turn it on + # When compiling as a shared lib with MinGW, turning on LTO causes errors of the form 'ld.exe: cannot export symbol X wrong type (4 vs 3)' + if (INTERPROCEDURAL_OPTIMIZATION + AND NOT ("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "ARM64") + AND NOT ("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "ARM") + AND (NOT CROSS_COMPILE_ARM OR ("${CROSS_COMPILE_ARM_TARGET}" STREQUAL "aarch64-linux-gnu")) + AND NOT (MINGW AND BUILD_SHARED_LIBS)) + include(CheckIPOSupported) + check_ipo_supported(RESULT IS_IPO_SUPPORTED OUTPUT IPO_CHECK_OUTPUT) + + if (IS_IPO_SUPPORTED) + message("Interprocedural optimizations are turned on") + set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON PARENT_SCOPE) + set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_DISTRIBUTION ON PARENT_SCOPE) + else() + message("Warning: Interprocedural optimizations are not supported for this target, turn off the option INTERPROCEDURAL_OPTIMIZATION to disable this warning") + endif() + endif() +endfunction() +SET_INTERPROCEDURAL_OPTIMIZATION() + +# Set repository root +set(PHYSICS_REPO_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../) + +# Make Jolt Library +include(${PHYSICS_REPO_ROOT}/Jolt/Jolt.cmake) +if (XCODE) + # Ensure that we enable SSE4.2 for the x86_64 build, XCode builds multiple architectures + set_property(TARGET Jolt PROPERTY XCODE_ATTRIBUTE_OTHER_CPLUSPLUSFLAGS[arch=x86_64] "$(inherited) -msse4.2 -mpopcnt") +endif() + +# Install Jolt library and includes +if (ENABLE_INSTALL) + include(GNUInstallDirs) + install(TARGETS Jolt + EXPORT JoltExport + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + foreach(SRC_FILE ${JOLT_PHYSICS_SRC_FILES}) + string(REPLACE ${PHYSICS_REPO_ROOT} "" RELATIVE_SRC_FILE ${SRC_FILE}) + get_filename_component(DESTINATION_PATH ${RELATIVE_SRC_FILE} DIRECTORY) + if (NOT RELATIVE_SRC_FILE MATCHES "\.cpp") + cmake_path(SET DST_FILE NORMALIZE "${CMAKE_INSTALL_INCLUDEDIR}/${DESTINATION_PATH}") + install(FILES ${SRC_FILE} DESTINATION ${DST_FILE}) + endif() + endforeach() + + # Export Jolt library + export(TARGETS Jolt + NAMESPACE Jolt:: + FILE JoltConfig.cmake) + install(EXPORT JoltExport + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Jolt/ + NAMESPACE Jolt:: + FILE JoltConfig.cmake) +endif() + +# Check if we're the root CMakeLists.txt, if not we are included by another CMake file and we should disable everything except for the main library +if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) + # Ability to turn ON/OFF individual applications + option(TARGET_UNIT_TESTS "Build Unit Tests" ON) + option(TARGET_HELLO_WORLD "Build Hello World" ON) + option(TARGET_PERFORMANCE_TEST "Build Performance Test" ON) + option(TARGET_SAMPLES "Build Samples" ON) + option(TARGET_VIEWER "Build JoltViewer" ON) + + if (TARGET_UNIT_TESTS) + # Create UnitTests executable + include(${PHYSICS_REPO_ROOT}/UnitTests/UnitTests.cmake) + add_executable(UnitTests ${UNIT_TESTS_SRC_FILES}) + target_include_directories(UnitTests PUBLIC ${UNIT_TESTS_ROOT}) + target_link_libraries(UnitTests LINK_PUBLIC Jolt) + + if (EMSCRIPTEN) + target_link_options(UnitTests PUBLIC -sSTACK_SIZE=1048576 -sINITIAL_MEMORY=134217728) + endif() + + # Code coverage doesn't work when using precompiled headers + if (CMAKE_GENERATOR STREQUAL "Ninja Multi-Config" AND MSVC) + # The Ninja Multi-Config generator errors out when selectively disabling precompiled headers for certain configurations. + # See: https://github.com/jrouwe/JoltPhysics/issues/1211 + target_precompile_headers(UnitTests PRIVATE "${JOLT_PHYSICS_ROOT}/Jolt.h") + else() + target_precompile_headers(UnitTests PRIVATE "$<$>:${JOLT_PHYSICS_ROOT}/Jolt.h>") + endif() + + if (MSVC) + target_link_options(UnitTests PUBLIC "/SUBSYSTEM:CONSOLE") + endif() + + if (IOS) + # Set the bundle information + set_property(TARGET UnitTests PROPERTY MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/iOS/UnitTestsInfo.plist") + set_property(TARGET UnitTests PROPERTY XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "com.joltphysics.unittests") + endif() + + if (XCODE) + # Ensure that we enable SSE4.2 for the x86_64 build, XCode builds multiple architectures + set_property(TARGET UnitTests PROPERTY XCODE_ATTRIBUTE_OTHER_CPLUSPLUSFLAGS[arch=x86_64] "$(inherited) -msse4.2 -mpopcnt") + endif() + + # Register unit tests as a test so that it can be run with: + # ctest --output-on-failure + enable_testing() + add_test(UnitTests UnitTests) + endif() + + if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore") + if (TARGET_HELLO_WORLD) + # Example 'Hello World' application + include(${PHYSICS_REPO_ROOT}/HelloWorld/HelloWorld.cmake) + add_executable(HelloWorld ${HELLO_WORLD_SRC_FILES}) + target_include_directories(HelloWorld PUBLIC ${HELLO_WORLD_ROOT}) + target_link_libraries(HelloWorld LINK_PUBLIC Jolt) + if (MSVC) + target_link_options(HelloWorld PUBLIC "/SUBSYSTEM:CONSOLE") + endif() + if (EMSCRIPTEN) + target_link_options(HelloWorld PUBLIC -sSTACK_SIZE=1048576 -sINITIAL_MEMORY=134217728) + endif() + endif() + + if (TARGET_PERFORMANCE_TEST) + # Performance Test application + include(${PHYSICS_REPO_ROOT}/PerformanceTest/PerformanceTest.cmake) + add_executable(PerformanceTest ${PERFORMANCE_TEST_SRC_FILES}) + target_include_directories(PerformanceTest PUBLIC ${PERFORMANCE_TEST_ROOT}) + target_link_libraries(PerformanceTest LINK_PUBLIC Jolt) + if (MSVC) + target_link_options(PerformanceTest PUBLIC "/SUBSYSTEM:CONSOLE") + endif() + if (EMSCRIPTEN) + # Embed the assets for the RagdollScene + target_link_options(PerformanceTest PUBLIC "SHELL:--preload-file ${PHYSICS_REPO_ROOT}/Assets/Human.tof@/Assets/Human.tof") + target_link_options(PerformanceTest PUBLIC "SHELL:--preload-file ${PHYSICS_REPO_ROOT}/Assets/Human/dead_pose1.tof@/Assets/Human/dead_pose1.tof") + target_link_options(PerformanceTest PUBLIC "SHELL:--preload-file ${PHYSICS_REPO_ROOT}/Assets/terrain2.bof@/Assets/terrain2.bof") + target_link_options(PerformanceTest PUBLIC -sSTACK_SIZE=1048576 -sINITIAL_MEMORY=134217728) + endif() + set_property(TARGET PerformanceTest PROPERTY VS_DEBUGGER_WORKING_DIRECTORY "${PHYSICS_REPO_ROOT}") + endif() + endif() + + if ((WIN32 OR LINUX OR ("${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")) AND NOT ("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "ARM")) # ARM 32-bit is missing dinput8.lib + # Windows only targets + if (TARGET_SAMPLES OR TARGET_VIEWER) + include(${PHYSICS_REPO_ROOT}/TestFramework/TestFramework.cmake) + endif() + if (TARGET_SAMPLES) + if (TEST_FRAMEWORK_AVAILABLE) + include(${PHYSICS_REPO_ROOT}/Samples/Samples.cmake) + else() + message("Cannot build Samples because Vulkan/DirectX SDK is not available!") + endif() + endif() + if (TARGET_VIEWER) + if (TEST_FRAMEWORK_AVAILABLE) + include(${PHYSICS_REPO_ROOT}/JoltViewer/JoltViewer.cmake) + else() + message("Cannot build JoltViewer because Vulkan/DirectX SDK is not available!") + endif() + endif() + endif() +endif() diff --git a/Engine/lib/JoltPhysics/Build/README.md b/Engine/lib/JoltPhysics/Build/README.md new file mode 100644 index 000000000..231f6a983 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/README.md @@ -0,0 +1,250 @@ +# Building and Using Jolt Physics + +## Build Types + +Each platform supports multiple build targets + +- Debug - Debug version of the library, turns on asserts +- Release - Release version of the library, no asserts but includes profiling support and can draw the world and simulation properties +- ReleaseASAN - As Release but turns on Address Sanitizer (clang only) to find bugs +- ReleaseUBSAN - As Release but turns on Undefined Behavior Sanitizer (clang only) to find bugs +- ReleaseTSAN - As Release but turns on the Thread Sanitizer (clang only) to find bugs +- ReleaseCoverage - As Release but turns on Coverage reporting (clang only) to find which areas of the code are not executed +- Distribution - Shippable version of the library, turns off all debugging support + +## Includes + +The Jolt headers don't include Jolt/Jolt.h. Always include Jolt/Jolt.h before including any other Jolt header. +You can use Jolt/Jolt.h in your precompiled header to speed up compilation. + +## Defines + +There are a number of user configurable defines that turn on/off certain features: +

+ General Options (click to see more) +
    +
  • JPH_SHARED_LIBRARY - Use the Jolt library as a shared library. Use JPH_BUILD_SHARED_LIBRARY to build Jolt as a shared library.
  • +
  • JPH_PROFILE_ENABLED - Turns on the internal profiler.
  • +
  • JPH_EXTERNAL_PROFILE - Turns on the internal profiler but forwards the information to a user defined external system (see Profiler.h). Use JPH_USE_EXTERNAL_PROFILE option to enable this from CMake config.
  • +
  • JPH_DEBUG_RENDERER - Adds support to draw lines and triangles, used to be able to debug draw the state of the world.
  • +
  • JPH_DISABLE_TEMP_ALLOCATOR - Disables the temporary memory allocator, used mainly to allow ASAN to do its job.
  • +
  • JPH_DISABLE_CUSTOM_ALLOCATOR - Disables the ability to override the memory allocator.
  • +
  • JPH_FLOATING_POINT_EXCEPTIONS_ENABLED - Turns on division by zero and invalid floating point exception support in order to detect bugs (Windows only).
  • +
  • JPH_CROSS_PLATFORM_DETERMINISTIC - Turns on behavior to attempt cross platform determinism. If this is set, JPH_USE_FMADD is ignored.
  • +
  • JPH_DET_LOG - Turn on a lot of extra logging to help debug determinism issues when JPH_CROSS_PLATFORM_DETERMINISTIC is turned on.
  • +
  • JPH_ENABLE_ASSERTS - Compiles the library so that it rises an assert in case of failures. The library ignores these failures otherwise.
  • +
  • JPH_DOUBLE_PRECISION - Compiles the library so that all positions are stored in doubles instead of floats. This makes larger worlds possible.
  • +
  • JPH_OBJECT_LAYER_BITS - Defines the size of ObjectLayer, must be 16 or 32 bits.
  • +
  • JPH_OBJECT_STREAM - Includes the code to serialize physics data in the ObjectStream format (mostly used by the examples).
  • +
  • JPH_NO_FORCE_INLINE - Don't use force inlining but fall back to a regular 'inline'.
  • +
  • JPH_USE_STD_VECTOR - Use std::vector instead of Jolt's own Array class.
  • +
  • CPP_RTTI_ENABLED - Enable C++ RTTI for the library. Disabled by default.
  • +
+
+ +
+ CPU Instruction Sets (click to see more) +
    +
  • JPH_USE_SSE4_1 - Enable SSE4.1 CPU instructions (default: on, x86/x64 only)
  • +
  • JPH_USE_SSE4_2 - Enable SSE4.2 CPU instructions (default: on, x86/x64 only)
  • +
  • JPH_USE_F16C - Enable half float CPU instructions (default: on, x86/x64 only)
  • +
  • JPH_USE_LZCNT - Enable the lzcnt CPU instruction (default: on, x86/x64 only)
  • +
  • JPH_USE_TZCNT - Enable the tzcnt CPU instruction (default: on, x86/x64 only)
  • +
  • JPH_USE_AVX - Enable AVX CPU instructions (default: on, x86/x64 only)
  • +
  • JPH_USE_AVX2 - Enable AVX2 CPU instructions (default: on, x86/x64 only)
  • +
  • JPH_USE_AVX512 - Enable AVX512F+AVX512VL CPU instructions (default: off, x86/x64 only)
  • +
  • JPH_USE_FMADD - Enable fused multiply add CPU instructions (default: on, x86/x64 only)
  • +
+
+ +## Logging & Asserting + +To override the default trace and assert mechanism install your own custom handlers in Trace and AssertFailed (see IssueReporting.h). + +## Custom Memory Allocator + +To implement your custom memory allocator override Allocate, Free, Reallocate, AlignedAllocate and AlignedFree (see Memory.h). + +## Building + +
+ Windows 10+ +
  • +
    + MSVC CL (default compiler) +
      +
    • Download Visual Studio 2022 (Community or other edition)
    • +
    • Download CMake 3.20+ (https://cmake.org/download/)
    • +
    • Run cmake_vs2022_cl.bat
    • +
    • Open the resulting project file VS2022_CL\JoltPhysics.sln
    • +
    • Compile and run either 'Samples' or 'UnitTests'
    • +
    +
    +
    + MSVC CL - 32 bit +
      +
    • Download Visual Studio 2022 (Community or other edition)
    • +
    • Download CMake 3.20+ (https://cmake.org/download/)
    • +
    • Run cmake_vs2022_cl_32bit.bat
    • +
    • Open the resulting project file VS2022_CL_32BIT\JoltPhysics.sln
    • +
    • Compile and run either 'Samples' or 'UnitTests'
    • +
    +
    +
    + MSVC Clang compiler +
      +
    • Download Visual Studio 2022 (Community or other edition)
    • +
    • Make sure to install "C++ Clang Compiler for Windows 11.0.0+" and "C++ Clang-cl for v142+ build tools (x64/x86)" using the Visual Studio Installer
    • +
    • Download CMake 3.20+ (https://cmake.org/download/)
    • +
    • Run cmake_vs2022_clang.bat
    • +
    • Open the resulting project file VS2022_Clang\JoltPhysics.sln
    • +
    • Compile and run either 'Samples' or 'UnitTests'
    • +
    +
    +
    + MSVC Universal Windows Platform +
      +
    • Download Visual Studio 2022+ (Community or other edition)
    • +
    • Make sure to install "Universal Windows Platform development" using the Visual Studio Installer
    • +
    • Download CMake 3.20+ (https://cmake.org/download/)
    • +
    • Run cmake_vs2022_uwp.bat
    • +
    • Open the resulting project file VS2022_UWP\JoltPhysics.sln
    • +
    • Compile and run 'UnitTests'
    • +
    +
    +
    + MinGW +
      +
    • Follow download instructions for MSYS2 (https://www.msys2.org/)
    • +
    • From the MSYS2 MSYS app run: pacman -S --needed mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake
    • +
    • From the MSYS2 MINGW x64 app, in the Build folder run: ./cmake_windows_mingw.sh
    • +
    • Run: cmake --build MinGW_Debug
    • +
    • Run: MinGW_Debug/UnitTests.exe
    • +
    +
    +
+
+ +
+ Linux (Ubuntu) +
    +
  • Install clang (apt-get install clang)
  • +
  • Install cmake (apt-get install cmake)
  • +
  • If you want to build the Samples or JoltViewer, install the Vulkan SDK
  • +
  • Run: ./cmake_linux_clang_gcc.sh
  • +
  • Go to the Linux_Debug folder
  • +
  • Run: make -j$(nproc) && ./UnitTests
  • +
  • If you built the samples you can run: ./Samples
  • +
+
+ +
+ Android +
    +
  • Install Android Studio 2020.3.1+ (https://developer.android.com/studio/)
  • +
  • Open the 'Android' folder in Android Studio and wait until gradle finishes
  • +
  • Select 'Run' / 'Run...' and 'UnitTests'
  • +
  • If the screen turns green after a while the unit tests succeeded, when red they failed (see the android log for details)
  • +
+
+ +
+ macOS +
    +
  • Install XCode
  • +
  • Download CMake 3.23+ (https://cmake.org/download/)
  • +
  • Run: ./cmake_xcode_macos.sh
  • +
  • This will open XCode with a newly generated project
  • +
  • Build and run the project
  • +
  • Note that you can also follow the steps in the 'Linux' section if you wish to build without XCode.
  • +
+
+ +
+ iOS +
    +
  • Install XCode
  • +
  • Download CMake 3.23+ (https://cmake.org/download/)
  • +
  • Run: ./cmake_xcode.ios.sh
  • +
  • This will open XCode with a newly generated project
  • +
  • Build and run the project (note that this will only work in the simulator as the code signing information is not set up)
  • +
+
+ +
+ Emscripten (tested only on Linux) +
    +
  • Install Emscripten (https://emscripten.org/docs/getting_started/downloads.html)
  • +
  • Install nodejs (apt-get install nodejs)
  • +
  • Download CMake 3.23+ (https://cmake.org/download/)
  • +
  • Run: ./cmake_linux_emscripten.sh
  • +
  • Go to the WASM_Debug folder
  • +
  • Run: make -j$(nproc) && node UnitTests.js
  • +
+
+ +## Other Build Tools + +* A vcpkg package is available [here](https://github.com/microsoft/vcpkg/tree/master/ports/joltphysics). +* A xmake package is available [here](https://github.com/xmake-io/xmake-repo/tree/dev/packages/j/joltphysics). +* A conan package is available [here](https://conan.io/center/recipes/joltphysics) +* Jolt has been verified to build with [ninja](https://ninja-build.org/) through CMake. + +## Errors + +### Link Error: File Format Not Recognized + +If you receive the following error when linking: + +``` +/usr/bin/ld: libJolt.a: error adding symbols: file format not recognized +``` + +Then you have not enabled interprocedural optimizations (link time optimizations) for your own application. See the INTERPROCEDURAL_OPTIMIZATION option in CMakeLists.txt. + +### Link Error: Unresolved External Symbol + +If you receive a link error that looks like: + +``` +error LNK2001: unresolved external symbol "public: virtual void __cdecl JPH::ConvexShape::GetSubmergedVolume(...) const" +``` + +you have a mismatch in defines between your own code and the Jolt library. In this case the mismatch is in the define `JPH_DEBUG_RENDERER` which is most likely defined in `Jolt.lib` and not in your own project. In `Debug` and `Release` builds, Jolt by default has `JPH_DEBUG_RENDERER` defined, in `Distribution` it is not defined. The cmake options `DEBUG_RENDERER_IN_DEBUG_AND_RELEASE` and `DEBUG_RENDERER_IN_DISTRIBUTION` override this behavior. + +The `RegisterTypes` function (which you have to call to initialize the library) checks the other important defines and will trace and abort if there are more mismatches. + +### Link Error: Undefined Symbol + +If you receive a link error that looks like: + +``` +error: undefined symbol: typeinfo for JPH::DebugRenderer +``` + +you have a mismatch between RTTI settings (MSVC: `/GR`/`/GR-`, clang: `-frtti`/`-fno-rtti`). Jolt by default compiles without RTTI and if your project compiles with RTTI you can get this error. Either turn RTTI off for your project or turn it on for Jolt using the CPP_RTTI_ENABLED cmake option. + +### DirectX Error + +The samples use DirectX for the graphics implementation, when attempting to run the samples you may get a DirectX error pop-up which may say "The GPU device instance has been suspended", in your debugger you may see the message "Using the Redistributable D3D12 SDKLayers dll also requires that the latest SDKLayers for Windows 10 is installed.". + +Fix this by enabling "Graphics Tools" which is an optional Windows settings. To enable it you have to press the windows key, search for "Manage Optional Features", and then click "Add a Feature", and install "Graphics Tools". + +### Illegal Instruction Error + +If your CPU doesn't support all of the instructions you'll get an `Illegal instruction` exception. + +On Linux to see what instructions your CPU supports run `lscpu` and then look at the flags section, on Windows you can use a program like [`coreinfo`](https://learn.microsoft.com/en-us/sysinternals/downloads/coreinfo). Once you know what instructions your cpu supports you can configure the project through cmake and for example disable all special instructions: + +``` +./cmake_linux_clang_gcc.sh Release clang++ -DUSE_SSE4_1=OFF -DUSE_SSE4_2=OFF -DUSE_AVX=OFF -DUSE_AVX2=OFF -DUSE_AVX512=OFF -DUSE_LZCNT=OFF -DUSE_TZCNT=OFF -DUSE_F16C=OFF -DUSE_FMADD=OFF +``` + +Note that this example is for Linux but the cmake settings work on Windows too. + +## Doxygen on Windows + +Documentation can be generated through doxygen: + +- Install Doxygen (https://www.doxygen.nl/download.html) +- Run: run_doxygen.bat diff --git a/Engine/lib/JoltPhysics/Build/cmake_linux_clang_gcc.sh b/Engine/lib/JoltPhysics/Build/cmake_linux_clang_gcc.sh new file mode 100644 index 000000000..94aa97067 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/cmake_linux_clang_gcc.sh @@ -0,0 +1,28 @@ +#!/bin/sh + +if [ -z $1 ] +then + BUILD_TYPE=Debug +else + BUILD_TYPE=$1 + shift +fi + +if [ -z $1 ] +then + COMPILER=clang++ +else + COMPILER=$1 + shift +fi + +BUILD_DIR=Linux_$BUILD_TYPE + +echo Usage: ./cmake_linux_clang_gcc.sh [Configuration] [Compiler] +echo "Possible configurations: Debug (default), Release, Distribution, ReleaseUBSAN, ReleaseASAN, ReleaseTSAN, ReleaseCoverage" +echo "Possible compilers: clang++, clang++-XX, g++, g++-XX where XX is the version" +echo Generating Makefile for build type \"$BUILD_TYPE\" and compiler \"$COMPILER\" in folder \"$BUILD_DIR\" + +cmake -S . -B $BUILD_DIR -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_COMPILER=$COMPILER "${@}" + +echo Compile by running \"make -j $(nproc) \&\& ./UnitTests\" in folder \"$BUILD_DIR\" diff --git a/Engine/lib/JoltPhysics/Build/cmake_linux_emscripten.sh b/Engine/lib/JoltPhysics/Build/cmake_linux_emscripten.sh new file mode 100644 index 000000000..1ddb4bda5 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/cmake_linux_emscripten.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +if [ -z $1 ] +then + BUILD_TYPE=Debug +else + BUILD_TYPE=$1 + shift +fi + +BUILD_DIR=WASM_$BUILD_TYPE + +echo Usage: ./cmake_linux_emscripten.sh [Configuration] +echo "Possible configurations: Debug (default), Release, Distribution" +echo Generating Makefile for build type \"$BUILD_TYPE\" in folder \"$BUILD_DIR\" + +cmake -S . -B $BUILD_DIR -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_TOOLCHAIN_FILE=${EMSDK}/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake "${@}" + +echo Compile by running \"make -j $(nproc) \&\& node UnitTests.js\" in folder \"$BUILD_DIR\" diff --git a/Engine/lib/JoltPhysics/Build/cmake_linux_mingw.sh b/Engine/lib/JoltPhysics/Build/cmake_linux_mingw.sh new file mode 100644 index 000000000..b54042811 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/cmake_linux_mingw.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +if [ -z $1 ] +then + BUILD_TYPE=Release +else + BUILD_TYPE=$1 + shift +fi + +BUILD_DIR=MinGW_$BUILD_TYPE + +echo Usage: ./cmake_linux_mingw.sh [Configuration] +echo "Possible configurations: Debug, Release (default), Distribution" +echo Generating Makefile for build type \"$BUILD_TYPE\" in folder \"$BUILD_DIR\" + +cmake -S . -B $BUILD_DIR -DCMAKE_TOOLCHAIN_FILE=mingw-w64-x86_64.cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE "${@}" + +echo Compile by running \"cmake --build $BUILD_DIR -j $(nproc)\" diff --git a/Engine/lib/JoltPhysics/Build/cmake_vs2022_cl.bat b/Engine/lib/JoltPhysics/Build/cmake_vs2022_cl.bat new file mode 100644 index 000000000..4cf9990ee --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/cmake_vs2022_cl.bat @@ -0,0 +1,3 @@ +@echo off +cmake -S . -B VS2022_CL -G "Visual Studio 17 2022" -A x64 %* +echo Open VS2022_CL\JoltPhysics.sln to build the project. diff --git a/Engine/lib/JoltPhysics/Build/cmake_vs2022_cl_32bit.bat b/Engine/lib/JoltPhysics/Build/cmake_vs2022_cl_32bit.bat new file mode 100644 index 000000000..299fd331d --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/cmake_vs2022_cl_32bit.bat @@ -0,0 +1,3 @@ +@echo off +cmake -S . -B VS2022_CL_32BIT -G "Visual Studio 17 2022" -A Win32 -DUSE_SSE4_1=OFF -DUSE_SSE4_2=OFF -DUSE_AVX=OFF -DUSE_AVX2=OFF -DUSE_AVX512=OFF -DUSE_LZCNT=OFF -DUSE_TZCNT=OFF -DUSE_F16C=OFF -DUSE_FMADD=OFF %* +echo Open VS2022_CL_32BIT\JoltPhysics.sln to build the project. diff --git a/Engine/lib/JoltPhysics/Build/cmake_vs2022_cl_arm.bat b/Engine/lib/JoltPhysics/Build/cmake_vs2022_cl_arm.bat new file mode 100644 index 000000000..146f01f91 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/cmake_vs2022_cl_arm.bat @@ -0,0 +1,3 @@ +@echo off +cmake -S . -B VS2022_CL_ARM -G "Visual Studio 17 2022" -A ARM64 %* +echo Open VS2022_CL_ARM\JoltPhysics.sln to build the project. diff --git a/Engine/lib/JoltPhysics/Build/cmake_vs2022_cl_arm_32bit.bat b/Engine/lib/JoltPhysics/Build/cmake_vs2022_cl_arm_32bit.bat new file mode 100644 index 000000000..3a61ac454 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/cmake_vs2022_cl_arm_32bit.bat @@ -0,0 +1,4 @@ +@echo off +cmake -S . -B VS2022_CL_ARM_32BIT -G "Visual Studio 17 2022" -A ARM -DCMAKE_SYSTEM_VERSION="10.0.22621.0" -DCMAKE_CXX_COMPILER_WORKS=1 %* +echo Note that Windows 11 SDK (10.0.22621.0) is the last SDK to support 32-bit ARM, make sure you have it installed. +echo Open VS2022_CL_ARM_32BIT\JoltPhysics.sln to build the project. diff --git a/Engine/lib/JoltPhysics/Build/cmake_vs2022_cl_cross_platform_deterministic.bat b/Engine/lib/JoltPhysics/Build/cmake_vs2022_cl_cross_platform_deterministic.bat new file mode 100644 index 000000000..c054c8e81 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/cmake_vs2022_cl_cross_platform_deterministic.bat @@ -0,0 +1,3 @@ +@echo off +cmake -S . -B VS2022_CL_CPD -G "Visual Studio 17 2022" -A x64 -DCROSS_PLATFORM_DETERMINISTIC=ON %* +echo Open VS2022_CL_CPD\JoltPhysics.sln to build the project. diff --git a/Engine/lib/JoltPhysics/Build/cmake_vs2022_cl_double.bat b/Engine/lib/JoltPhysics/Build/cmake_vs2022_cl_double.bat new file mode 100644 index 000000000..52ac1245c --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/cmake_vs2022_cl_double.bat @@ -0,0 +1,3 @@ +@echo off +cmake -S . -B VS2022_CL_Double -G "Visual Studio 17 2022" -A x64 -DDOUBLE_PRECISION=ON %* +echo Open VS2022_CL_Double\JoltPhysics.sln to build the project. diff --git a/Engine/lib/JoltPhysics/Build/cmake_vs2022_cl_no_object_stream.bat b/Engine/lib/JoltPhysics/Build/cmake_vs2022_cl_no_object_stream.bat new file mode 100644 index 000000000..8a542362b --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/cmake_vs2022_cl_no_object_stream.bat @@ -0,0 +1,3 @@ +@echo off +cmake -S . -B VS2022_CL_NO_OBJ_STR -G "Visual Studio 17 2022" -A x64 -DENABLE_OBJECT_STREAM=OFF %* +echo Open VS2022_CL_NO_OBJ_STR\JoltPhysics.sln to build the project. diff --git a/Engine/lib/JoltPhysics/Build/cmake_vs2022_clang.bat b/Engine/lib/JoltPhysics/Build/cmake_vs2022_clang.bat new file mode 100644 index 000000000..1f4986130 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/cmake_vs2022_clang.bat @@ -0,0 +1,10 @@ +@echo off +cmake -S . -B VS2022_Clang -G "Visual Studio 17 2022" -A x64 -T ClangCL %* +echo: +echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +echo Make sure to install: +echo - C++ Clang Compiler for Windows 12.0.0+ +echo - C++ Clang-cl for v143+ build tools (x64/x86) +echo Using the Visual Studio Installer +echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +echo Open VS2022_Clang/JoltPhysics.sln to build the project. diff --git a/Engine/lib/JoltPhysics/Build/cmake_vs2022_clang_cross_platform_deterministic.bat b/Engine/lib/JoltPhysics/Build/cmake_vs2022_clang_cross_platform_deterministic.bat new file mode 100644 index 000000000..1afcb8714 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/cmake_vs2022_clang_cross_platform_deterministic.bat @@ -0,0 +1,10 @@ +@echo off +cmake -S . -B VS2022_Clang_CPD -G "Visual Studio 17 2022" -A x64 -T ClangCL -DCROSS_PLATFORM_DETERMINISTIC=ON %* +echo: +echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +echo Make sure to install: +echo - C++ Clang Compiler for Windows 12.0.0+ +echo - C++ Clang-cl for v143+ build tools (x64/x86) +echo Using the Visual Studio Installer +echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +echo Open VS2022_Clang_CPD/JoltPhysics.sln to build the project. diff --git a/Engine/lib/JoltPhysics/Build/cmake_vs2022_clang_double.bat b/Engine/lib/JoltPhysics/Build/cmake_vs2022_clang_double.bat new file mode 100644 index 000000000..908a893bd --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/cmake_vs2022_clang_double.bat @@ -0,0 +1,10 @@ +@echo off +cmake -S . -B VS2022_Clang_Double -G "Visual Studio 17 2022" -A x64 -T ClangCL -DDOUBLE_PRECISION=YES %* +echo: +echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +echo Make sure to install: +echo - C++ Clang Compiler for Windows 12.0.0+ +echo - C++ Clang-cl for v143+ build tools (x64/x86) +echo Using the Visual Studio Installer +echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +echo Open VS2022_Clang_Double/JoltPhysics.sln to build the project. diff --git a/Engine/lib/JoltPhysics/Build/cmake_vs2022_uwp.bat b/Engine/lib/JoltPhysics/Build/cmake_vs2022_uwp.bat new file mode 100644 index 000000000..43167bbd3 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/cmake_vs2022_uwp.bat @@ -0,0 +1,5 @@ +@echo off +cmake -S . -B VS2022_UWP -G "Visual Studio 17 2022" -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0 %* +echo If cmake failed then be sure to check the "Universal Windows Platform development" checkbox in the Visual Studio Installer +echo Open VS2022_UWP\JoltPhysics.sln to build the project. +echo Note that none of the sample applications are available for the Universal Windows Platform (use cmake_vs2022_cl.bat instead). diff --git a/Engine/lib/JoltPhysics/Build/cmake_vs2022_uwp_arm.bat b/Engine/lib/JoltPhysics/Build/cmake_vs2022_uwp_arm.bat new file mode 100644 index 000000000..31651ae33 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/cmake_vs2022_uwp_arm.bat @@ -0,0 +1,5 @@ +@echo off +cmake -S . -B VS2022_UWP_ARM -G "Visual Studio 17 2022" -A ARM64 -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0 %* +echo If cmake failed then be sure to check the "Universal Windows Platform development" checkbox in the Visual Studio Installer +echo Open VS2022_UWP_ARM\JoltPhysics.sln to build the project. +echo Note that none of the sample applications are available for the Universal Windows Platform (use cmake_vs2022_cl_arm.bat instead). diff --git a/Engine/lib/JoltPhysics/Build/cmake_vs2026_cl.bat b/Engine/lib/JoltPhysics/Build/cmake_vs2026_cl.bat new file mode 100644 index 000000000..5ede9ec60 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/cmake_vs2026_cl.bat @@ -0,0 +1,3 @@ +@echo off +cmake -S . -B VS2026_CL -G "Visual Studio 18 2026" -A x64 %* +echo Open VS2026_CL\JoltPhysics.slnx to build the project. diff --git a/Engine/lib/JoltPhysics/Build/cmake_vs2026_cl_cross_platform_deterministic.bat b/Engine/lib/JoltPhysics/Build/cmake_vs2026_cl_cross_platform_deterministic.bat new file mode 100644 index 000000000..6f1411959 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/cmake_vs2026_cl_cross_platform_deterministic.bat @@ -0,0 +1,3 @@ +@echo off +cmake -S . -B VS2026_CL_CPD -G "Visual Studio 18 2026" -A x64 -DCROSS_PLATFORM_DETERMINISTIC=ON %* +echo Open VS2026_CL_CPD\JoltPhysics.sln to build the project. diff --git a/Engine/lib/JoltPhysics/Build/cmake_vs2026_cl_double.bat b/Engine/lib/JoltPhysics/Build/cmake_vs2026_cl_double.bat new file mode 100644 index 000000000..106ba9fc8 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/cmake_vs2026_cl_double.bat @@ -0,0 +1,3 @@ +@echo off +cmake -S . -B VS2026_CL_Double -G "Visual Studio 18 2026" -A x64 -DDOUBLE_PRECISION=ON %* +echo Open VS2026_CL_Double\JoltPhysics.slnx to build the project. diff --git a/Engine/lib/JoltPhysics/Build/cmake_vs2026_clang.bat b/Engine/lib/JoltPhysics/Build/cmake_vs2026_clang.bat new file mode 100644 index 000000000..2e68005cf --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/cmake_vs2026_clang.bat @@ -0,0 +1,10 @@ +@echo off +cmake -S . -B VS2026_Clang -G "Visual Studio 18 2026" -A x64 -T ClangCL %* +echo: +echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +echo Make sure to install: +echo - C++ Clang Compiler for Windows 20+ +echo - MSBuild support for LLVM (clang-cl) toolset +echo Using the Visual Studio Installer +echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +echo Open VS2026_Clang/JoltPhysics.sln to build the project. diff --git a/Engine/lib/JoltPhysics/Build/cmake_vs2026_clang_cross_platform_deterministic.bat b/Engine/lib/JoltPhysics/Build/cmake_vs2026_clang_cross_platform_deterministic.bat new file mode 100644 index 000000000..8184ae07e --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/cmake_vs2026_clang_cross_platform_deterministic.bat @@ -0,0 +1,10 @@ +@echo off +cmake -S . -B VS2026_Clang_CPD -G "Visual Studio 18 2026" -A x64 -T ClangCL -DCROSS_PLATFORM_DETERMINISTIC=ON %* +echo: +echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +echo Make sure to install: +echo - C++ Clang Compiler for Windows 20+ +echo - MSBuild support for LLVM (clang-cl) toolset +echo Using the Visual Studio Installer +echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +echo Open VS2026_Clang_CPD/JoltPhysics.sln to build the project. diff --git a/Engine/lib/JoltPhysics/Build/cmake_vs2026_clang_double.bat b/Engine/lib/JoltPhysics/Build/cmake_vs2026_clang_double.bat new file mode 100644 index 000000000..aacd34b0f --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/cmake_vs2026_clang_double.bat @@ -0,0 +1,10 @@ +@echo off +cmake -S . -B VS2026_Clang_Double -G "Visual Studio 18 2026" -A x64 -T ClangCL -DDOUBLE_PRECISION=YES %* +echo: +echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +echo Make sure to install: +echo - C++ Clang Compiler for Windows 20+ +echo - MSBuild support for LLVM (clang-cl) toolset +echo Using the Visual Studio Installer +echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +echo Open VS2026_Clang_Double/JoltPhysics.sln to build the project. diff --git a/Engine/lib/JoltPhysics/Build/cmake_windows_mingw.sh b/Engine/lib/JoltPhysics/Build/cmake_windows_mingw.sh new file mode 100644 index 000000000..8344b5a01 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/cmake_windows_mingw.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +if [ -z $1 ] +then + BUILD_TYPE=Debug +else + BUILD_TYPE=$1 + shift +fi + +BUILD_DIR=MinGW_$BUILD_TYPE + +echo Usage: ./cmake_windows_mingw.sh [Configuration] +echo "Possible configurations: Debug (default), Release, Distribution" +echo Generating Makefile for build type \"$BUILD_TYPE\" in folder \"$BUILD_DIR\" + +cmake -S . -B $BUILD_DIR -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=$BUILD_TYPE "${@}" + +echo Compile by running \"cmake --build $BUILD_DIR -j $(nproc)\" diff --git a/Engine/lib/JoltPhysics/Build/cmake_xcode_ios.sh b/Engine/lib/JoltPhysics/Build/cmake_xcode_ios.sh new file mode 100644 index 000000000..65e9aac10 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/cmake_xcode_ios.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +cmake -S . -B XCode_iOS -DTARGET_HELLO_WORLD=OFF -DTARGET_PERFORMANCE_TEST=OFF -DCMAKE_SYSTEM_NAME=iOS -GXcode +open XCode_iOS/JoltPhysics.xcodeproj diff --git a/Engine/lib/JoltPhysics/Build/cmake_xcode_macos.sh b/Engine/lib/JoltPhysics/Build/cmake_xcode_macos.sh new file mode 100644 index 000000000..6dd1488a8 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/cmake_xcode_macos.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +cmake -S . -B XCode_MacOS -GXcode -D"CMAKE_OSX_ARCHITECTURES=x86_64;arm64" +open XCode_MacOS/JoltPhysics.xcodeproj diff --git a/Engine/lib/JoltPhysics/Build/iOS/JoltViewerInfo.plist b/Engine/lib/JoltPhysics/Build/iOS/JoltViewerInfo.plist new file mode 100644 index 000000000..72ea9be7f --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/iOS/JoltViewerInfo.plist @@ -0,0 +1,34 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleGetInfoString + + CFBundleIconFile + icon.icns + CFBundleIdentifier + com.joltphysics.joltviewer + CFBundleInfoDictionaryVersion + 6.0 + CFBundleLongVersionString + 1.0 + CFBundleName + JoltViewer + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + CSResourcesFileMapped + + NSHumanReadableCopyright + + + diff --git a/Engine/lib/JoltPhysics/Build/iOS/SamplesInfo.plist b/Engine/lib/JoltPhysics/Build/iOS/SamplesInfo.plist new file mode 100644 index 000000000..dfe0e8b9d --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/iOS/SamplesInfo.plist @@ -0,0 +1,34 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleGetInfoString + + CFBundleIconFile + icon.icns + CFBundleIdentifier + com.joltphysics.samples + CFBundleInfoDictionaryVersion + 6.0 + CFBundleLongVersionString + 1.0 + CFBundleName + Samples + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + CSResourcesFileMapped + + NSHumanReadableCopyright + + + diff --git a/Engine/lib/JoltPhysics/Build/iOS/UnitTestsInfo.plist b/Engine/lib/JoltPhysics/Build/iOS/UnitTestsInfo.plist new file mode 100644 index 000000000..84c416f43 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/iOS/UnitTestsInfo.plist @@ -0,0 +1,34 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleGetInfoString + + CFBundleIconFile + + CFBundleIdentifier + com.joltphysics.unittests + CFBundleInfoDictionaryVersion + 6.0 + CFBundleLongVersionString + 1.0 + CFBundleName + UnitTests + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + CSResourcesFileMapped + + NSHumanReadableCopyright + + + diff --git a/Engine/lib/JoltPhysics/Build/macOS/icon.icns b/Engine/lib/JoltPhysics/Build/macOS/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..3789007f19edbd913f6dc2146e77d5e1c70c447c GIT binary patch literal 121564 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

P7W5>_Zl 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 literal 0 HcmV?d00001 diff --git a/Engine/lib/JoltPhysics/Build/macos_install_vulkan_sdk.sh b/Engine/lib/JoltPhysics/Build/macos_install_vulkan_sdk.sh new file mode 100644 index 000000000..411416a06 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/macos_install_vulkan_sdk.sh @@ -0,0 +1,13 @@ +set -e +if [ -z $1 ] +then + echo "Need to specify installation diretory" + exit +fi + +VULKAN_TEMP=/tmp/vulkan_sdk_install +mkdir ${VULKAN_TEMP} +curl -L -o ${VULKAN_TEMP}/vulkan_sdk.dmg https://sdk.lunarg.com/sdk/download/latest/mac/vulkan_sdk.dmg?Human=true +unzip ${VULKAN_TEMP}/vulkan_sdk.dmg -d ${VULKAN_TEMP} +${VULKAN_TEMP}/vulkansdk-macOS*.app/Contents/MacOS/vulkansdk-macOS* --root $1 --accept-licenses --default-answer --confirm-command install +rm -rf ${VULKAN_TEMP} diff --git a/Engine/lib/JoltPhysics/Build/mingw-w64-x86_64.cmake b/Engine/lib/JoltPhysics/Build/mingw-w64-x86_64.cmake new file mode 100644 index 000000000..8e9f83dca --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/mingw-w64-x86_64.cmake @@ -0,0 +1,23 @@ +# Sample toolchain file for building for Windows from an Ubuntu Linux system. +# +# Typical usage: +# *) install cross compiler: `sudo apt-get install mingw-w64` +# *) cd build +# *) cmake -DCMAKE_TOOLCHAIN_FILE=~/mingw-w64-x86_64.cmake .. + +set(CMAKE_SYSTEM_NAME Windows) +set(TOOLCHAIN_PREFIX x86_64-w64-mingw32) + +# cross compilers to use for C, C++ and Fortran +set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc) +set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++) +set(CMAKE_Fortran_COMPILER ${TOOLCHAIN_PREFIX}-gfortran) +set(CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres) + +# target environment on the build host system +set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX}) + +# modify default behavior of FIND_XXX() commands +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/Engine/lib/JoltPhysics/Build/ubuntu24_install_vulkan_sdk.sh b/Engine/lib/JoltPhysics/Build/ubuntu24_install_vulkan_sdk.sh new file mode 100644 index 000000000..e107b5499 --- /dev/null +++ b/Engine/lib/JoltPhysics/Build/ubuntu24_install_vulkan_sdk.sh @@ -0,0 +1,4 @@ +wget -qO- https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo tee /etc/apt/trusted.gpg.d/lunarg.asc +sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-noble.list http://packages.lunarg.com/vulkan/lunarg-vulkan-noble.list +sudo apt update +sudo apt install vulkan-sdk