aboutsummaryrefslogtreecommitdiff
path: root/PxShared/buildtools
diff options
context:
space:
mode:
Diffstat (limited to 'PxShared/buildtools')
-rw-r--r--PxShared/buildtools/clang-format/clang-format-all.bat24
-rw-r--r--PxShared/buildtools/clang-format/clang-format-p4.bat24
-rw-r--r--PxShared/buildtools/clang-format/clang-format.exebin0 -> 2377728 bytes
-rw-r--r--PxShared/buildtools/clang-format/directories.txt4
-rw-r--r--PxShared/buildtools/cmake_projects_android.bat112
-rw-r--r--PxShared/buildtools/cmake_projects_ios.sh69
-rw-r--r--PxShared/buildtools/cmake_projects_linux.bat101
-rw-r--r--PxShared/buildtools/cmake_projects_linux.sh57
-rw-r--r--PxShared/buildtools/cmake_projects_mac.sh98
-rw-r--r--PxShared/buildtools/cmake_projects_vc12win.bat103
-rw-r--r--PxShared/buildtools/cmake_projects_vc14ps4.bat62
-rw-r--r--PxShared/buildtools/cmake_projects_vc14switch.bat62
-rw-r--r--PxShared/buildtools/cmake_projects_vc14uwp.bat100
-rw-r--r--PxShared/buildtools/cmake_projects_vc14win.bat104
-rw-r--r--PxShared/buildtools/cmake_projects_vc14xboxone.bat62
-rw-r--r--PxShared/buildtools/cmake_projects_vc15ps4.bat62
-rw-r--r--PxShared/buildtools/cmake_projects_vc15switch.bat62
-rw-r--r--PxShared/buildtools/cmake_projects_vc15uwp.bat101
-rw-r--r--PxShared/buildtools/cmake_projects_vc15win.bat102
-rw-r--r--PxShared/buildtools/cmake_projects_vc15xboxone.bat73
-rw-r--r--PxShared/buildtools/packman/packman80
-rw-r--r--PxShared/buildtools/packman/packman.cmd41
-rw-r--r--PxShared/buildtools/packman/packman_config.txt5
-rw-r--r--PxShared/buildtools/packman/win-bootstrap/configure.bat104
-rw-r--r--PxShared/buildtools/packman/win-bootstrap/fetch_file_from_gtl.ps143
-rw-r--r--PxShared/buildtools/packman/win-bootstrap/fetch_file_from_s3.cmd19
-rw-r--r--PxShared/buildtools/packman/win-bootstrap/fetch_file_from_s3.ps160
-rw-r--r--PxShared/buildtools/packman/win-bootstrap/fetch_file_from_url.ps137
-rw-r--r--PxShared/buildtools/packman/win-bootstrap/generate_temp_file_name.ps12
-rw-r--r--PxShared/buildtools/packman/win-bootstrap/install_package.py39
-rw-r--r--PxShared/buildtools/steps/build_all_linux.sh22
-rw-r--r--PxShared/buildtools/steps/build_all_mac.sh29
-rw-r--r--PxShared/buildtools/steps/build_all_windows.bat12
-rw-r--r--PxShared/buildtools/steps/build_all_windows_vc12.bat60
-rw-r--r--PxShared/buildtools/steps/build_all_windows_vc14.bat61
-rw-r--r--PxShared/buildtools/steps/package_all_linux.sh28
-rw-r--r--PxShared/buildtools/steps/package_all_mac.sh24
-rw-r--r--PxShared/buildtools/steps/package_all_ps4.bat20
-rw-r--r--PxShared/buildtools/steps/package_all_windows.bat26
-rw-r--r--PxShared/buildtools/steps/package_all_xboxone.bat20
-rw-r--r--PxShared/buildtools/steps/pre-build_linux.sh7
-rw-r--r--PxShared/buildtools/steps/pre-build_mac.sh7
-rw-r--r--PxShared/buildtools/steps/pre-build_ps4.bat5
-rw-r--r--PxShared/buildtools/steps/pre-build_windows.bat6
-rw-r--r--PxShared/buildtools/steps/pre-build_xboxone.bat5
-rw-r--r--PxShared/buildtools/steps/rebuild_all_ps4.bat18
-rw-r--r--PxShared/buildtools/steps/rebuild_all_xboxone.bat17
-rw-r--r--PxShared/buildtools/steps/run_tests_linux.sh11
-rw-r--r--PxShared/buildtools/steps/run_tests_windows.bat6
49 files changed, 2196 insertions, 0 deletions
diff --git a/PxShared/buildtools/clang-format/clang-format-all.bat b/PxShared/buildtools/clang-format/clang-format-all.bat
new file mode 100644
index 0000000..1006b00
--- /dev/null
+++ b/PxShared/buildtools/clang-format/clang-format-all.bat
@@ -0,0 +1,24 @@
+@echo off
+setlocal enabledelayedexpansion
+
+set BLAST_PATH=..\..
+
+set /a count=0
+set /a fail=0
+for /F %%d IN (directories.txt) do (
+ call :check %BLAST_PATH%\%%d
+)
+
+echo %fail% of %count% files reformatted.
+exit /b %fail%
+
+:check
+for /R "%1" %%f in (*.h, *.cpp, *.cu, *.hlsl) do (
+ p4 edit %%f
+ clang-format.exe -i %%f
+ if errorlevel 1 (
+ echo %%f
+ set /a fail += 1
+ )
+ set /a count += 1
+)
diff --git a/PxShared/buildtools/clang-format/clang-format-p4.bat b/PxShared/buildtools/clang-format/clang-format-p4.bat
new file mode 100644
index 0000000..0b246e3
--- /dev/null
+++ b/PxShared/buildtools/clang-format/clang-format-p4.bat
@@ -0,0 +1,24 @@
+@echo off
+setlocal
+
+set BLAST_PATH=..\..
+
+if "%*"=="" (
+ echo Usage: format-change.bat ^<p4 changelist #^>
+ exit /b
+)
+
+set change=%~1
+for /F %%d IN (directories.txt) do (
+ call :format %BLAST_PATH%\%%d
+)
+
+exit /b
+
+:format
+for /F "delims=#" %%a in ('p4 opened -c %change% %~f1\....h, %~f1\....cpp, %~f1\....cu, %~f1\....hlsl 2^> NUL') do (
+ for /F "tokens=3" %%f IN ('p4 where %%a') do (
+ echo %%f
+ clang-format.exe -i %%f
+ )
+)
diff --git a/PxShared/buildtools/clang-format/clang-format.exe b/PxShared/buildtools/clang-format/clang-format.exe
new file mode 100644
index 0000000..9c91ddf
--- /dev/null
+++ b/PxShared/buildtools/clang-format/clang-format.exe
Binary files differ
diff --git a/PxShared/buildtools/clang-format/directories.txt b/PxShared/buildtools/clang-format/directories.txt
new file mode 100644
index 0000000..1dc947f
--- /dev/null
+++ b/PxShared/buildtools/clang-format/directories.txt
@@ -0,0 +1,4 @@
+source\common
+source\extensions
+source\solver
+shared\utils
diff --git a/PxShared/buildtools/cmake_projects_android.bat b/PxShared/buildtools/cmake_projects_android.bat
new file mode 100644
index 0000000..8321e3f
--- /dev/null
+++ b/PxShared/buildtools/cmake_projects_android.bat
@@ -0,0 +1,112 @@
+@echo off
+
+echo #############################################################################################
+echo Starting %~n0 %date% %time%
+echo #############################################################################################
+
+echo PM_CMakeModules_VERSION %PM_CMakeModules_VERSION%
+echo PM_CMakeModules_PATH %PM_CMakeModules_PATH%
+echo PM_android-ndk_PATH %PM_android-ndk_PATH%
+echo PM_android-ndk_VERSION %PM_android-ndk_VERSION%
+echo PM_PATHS %PM_PATHS%
+
+if NOT DEFINED PM_CMakeModules_VERSION GOTO DONT_RUN_STEP_2
+
+IF NOT DEFINED PM_PACKAGES_ROOT GOTO PM_PACKAGES_ROOT_UNDEFINED
+
+REM Now set up the CMake command from PM_PACKAGES_ROOT
+
+SET CMAKECMD=%PM_cmake_PATH%\bin\cmake.exe
+
+echo "Cmake: %CMAKECMD%"
+
+REM Generate projects here
+
+echo.
+echo #############################################################################################
+ECHO "Creating android mingw"
+
+REM Set android compiler variables for cmake
+set ANDROID_PLATFORM=android-19
+set ANDROID_ABI="armeabi-v7a with NEON"
+
+REM Common cmd line params
+set CMAKE_CMD_LINE_PARAMS=-DTARGET_BUILD_PLATFORM=android ^
+-DCMAKE_TOOLCHAIN_FILE=%PM_CMakeModules_PATH%/android/android.toolchain.cmake ^
+-DANDROID_NATIVE_API_LEVEL=%ANDROID_PLATFORM% ^
+-DANDROID_ABI=%ANDROID_ABI% ^
+-DANDROID_STL="gnustl_static" ^
+-DCM_ANDROID_FP="softfp" ^
+-DANDROID_NDK=%PM_AndroidNDK_PATH% ^
+-DCM_ANDROID_NDK_VERSION=%PM_AndroidNDK_VERSION% ^
+-DCMAKE_MAKE_PROGRAM=%PM_android-ndk_PATH%/prebuilt/windows/bin/make.exe ^
+-DUSE_GAMEWORKS_OUTPUT_DIRS=ON ^
+-DAPPEND_CONFIG_NAME=OFF ^
+-DCMAKE_PREFIX_PATH="%PM_PATHS%" ^
+-DPX_OUTPUT_LIB_DIR=%PXSHARED_ROOT_DIR%/ ^
+-DPX_OUTPUT_BIN_DIR=%PXSHARED_ROOT_DIR%/ ^
+-DCMAKE_INSTALL_PREFIX=%PXSHARED_ROOT_DIR%/install/android19/
+
+
+REM Compiler dependend params
+set CMAKE_MINGW_CMD_LINE_PARAMS=-G "MinGW Makefiles"
+set CMAKE_MSYS_CMD_LINE_PARAMS=-G "MSYS Makefiles"
+
+SET CMAKE_OUTPUT_DIR=compiler\%ANDROID_PLATFORM%-debug
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+%CMAKECMD% %PXSHARED_ROOT_DIR%\src\compiler\cmake %CMAKE_CMD_LINE_PARAMS% -DCMAKE_BUILD_TYPE=debug %CMAKE_MINGW_CMD_LINE_PARAMS%
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+)
+
+
+SET CMAKE_OUTPUT_DIR=compiler\%ANDROID_PLATFORM%-profile
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+%CMAKECMD% %PXSHARED_ROOT_DIR%\src\compiler\cmake %CMAKE_CMD_LINE_PARAMS% -DCMAKE_BUILD_TYPE=profile %CMAKE_MINGW_CMD_LINE_PARAMS%
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+)
+
+SET CMAKE_OUTPUT_DIR=compiler\%ANDROID_PLATFORM%-checked
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+%CMAKECMD% %PXSHARED_ROOT_DIR%\src\compiler\cmake %CMAKE_CMD_LINE_PARAMS% -DCMAKE_BUILD_TYPE=checked %CMAKE_MINGW_CMD_LINE_PARAMS%
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+)
+
+SET CMAKE_OUTPUT_DIR=compiler\%ANDROID_PLATFORM%-release
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+%CMAKECMD% %PXSHARED_ROOT_DIR%\src\compiler\cmake %CMAKE_CMD_LINE_PARAMS% -DCMAKE_BUILD_TYPE=release %CMAKE_MINGW_CMD_LINE_PARAMS%
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+)
+
+GOTO :End
+
+:PM_PACKAGES_ROOT_UNDEFINED
+ECHO PM_PACKAGES_ROOT has to be defined, pointing to the root of the dependency tree.
+PAUSE
+GOTO END
+
+:DONT_RUN_STEP_2
+ECHO Don't run this batch file directly. Run generate_projects_(platform).bat instead
+PAUSE
+GOTO END
+
+:End
diff --git a/PxShared/buildtools/cmake_projects_ios.sh b/PxShared/buildtools/cmake_projects_ios.sh
new file mode 100644
index 0000000..b8c9878
--- /dev/null
+++ b/PxShared/buildtools/cmake_projects_ios.sh
@@ -0,0 +1,69 @@
+#!/bin/bash +x
+
+DATE=$(date +"%m-%d-%Y")
+TIME=$(date +"%T")
+echo "#############################################################################################"
+echo "Starting ${0##*/} $DATE $TIME "
+echo "#############################################################################################"
+
+echo "PM_CMakeModules_VERSION $PM_CMakeModules_VERSION"
+echo "PM_CMakeModules_PATH $PM_CMakeModules_PATH"
+echo "PM_PATHS $PM_PATHS"
+
+[ -z "$PM_CMakeModules_VERSION" ] && echo "Don't run this batch file directly. Run generate_projects_(platform).bat instead." && exit 1;
+
+[ -z "$PM_PACKAGES_ROOT" ] && echo "PM_PACKAGES_ROOT has to be defined, pointing to the root of the dependency tree." && exit 1;
+
+# Now set up the CMake command from PM_PACKAGES_ROOT
+
+CMAKECMD=$PM_cmake_PATH/bin/cmake
+
+echo "Cmake: $CMAKECMD"
+
+echo "#############################################################################################"
+echo "Creating Ios XCode projects"
+
+
+# Common cmd line params
+CMAKE_CMD_LINE_PARAMS="\
+-DTARGET_BUILD_PLATFORM=ios \
+-DUSE_GAMEWORKS_OUTPUT_DIRS=ON \
+-DAPPEND_CONFIG_NAME=OFF \
+-DCMAKE_PREFIX_PATH=$PM_PATHS \
+-DFORCE_64BIT_SUFFIX=ON \
+-DPX_OUTPUT_ARCH=arm \
+-DPX_OUTPUT_LIB_DIR=$PXSHARED_ROOT_DIR \
+-DPX_OUTPUT_BIN_DIR=$PXSHARED_ROOT_DIR \
+-DCMAKE_TOOLCHAIN_FILE=$PM_CMakeModules_PATH/ios/ios.toolchain.cmake \
+-DCMAKE_INSTALL_PREFIX=$PXSHARED_ROOT_DIR/install/ios \
+-DUSE_DEBUG_WINCRT=OFF"
+
+# Generate projects here
+
+IOSPLATDIR=ios
+mkdir -p compiler
+CMAKE_OUTPUT_DIR=compiler/$IOSPLATDIR-xcode/
+
+rm -r -f $CMAKE_OUTPUT_DIR
+mkdir -p $CMAKE_OUTPUT_DIR
+pushd $CMAKE_OUTPUT_DIR
+
+$CMAKECMD $PXSHARED_ROOT_DIR/src/compiler/cmake -G "Xcode" -DCMAKE_INSTALL_PREFIX=$PXSHARED_ROOT_DIR/install/$IOSPLATDIR/ $CMAKE_CMD_LINE_PARAMS || exit 1
+
+popd
+
+OSXPLATDIR=ios
+mkdir -p compiler
+for config in "debug" "profile" "checked" "release"; do
+CMAKE_OUTPUT_DIR=compiler/$IOSPLATDIR-$config/
+
+rm -r -f $CMAKE_OUTPUT_DIR
+mkdir -p $CMAKE_OUTPUT_DIR
+pushd $CMAKE_OUTPUT_DIR
+
+$CMAKECMD $PXSHARED_ROOT_DIR/src/compiler/cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=$config -DCMAKE_INSTALL_PREFIX=$PXSHARED_ROOT_DIR/install/$IOSPLATDIR/ $CMAKE_CMD_LINE_PARAMS || exit 1
+
+popd
+
+done
+
diff --git a/PxShared/buildtools/cmake_projects_linux.bat b/PxShared/buildtools/cmake_projects_linux.bat
new file mode 100644
index 0000000..e4f5417
--- /dev/null
+++ b/PxShared/buildtools/cmake_projects_linux.bat
@@ -0,0 +1,101 @@
+@echo off
+
+echo #############################################################################################
+echo Starting %~n0 %date% %time%
+echo #############################################################################################
+
+echo PM_CMakeModules_VERSION %PM_CMakeModules_VERSION%
+echo PM_CMakeModules_PATH %PM_CMakeModules_PATH%
+echo PM_PATHS %PM_PATHS%
+
+if NOT DEFINED PM_CMakeModules_VERSION GOTO DONT_RUN_STEP_2
+
+IF NOT DEFINED PM_PACKAGES_ROOT GOTO PM_PACKAGES_ROOT_UNDEFINED
+
+REM Now set up the CMake command from PM_PACKAGES_ROOT
+
+SET CMAKECMD=%PM_cmake_PATH%\bin\cmake.exe
+
+SET LINUX_ROOT=%PM_ClangCrosscompile_PATH%
+
+echo "Cmake: %CMAKECMD%"
+echo "LINUX_ROOT: %LINUX_ROOT%"
+
+echo.
+echo #############################################################################################
+ECHO "Creating linux crosscompiler makefiles"
+
+REM Common cmd line params
+set CMAKE_CMD_LINE_PARAMS= ^
+-DTARGET_BUILD_PLATFORM=linux ^
+-DUSE_GAMEWORKS_OUTPUT_DIRS=ON ^
+-DAPPEND_CONFIG_NAME=OFF ^
+-DCMAKE_PREFIX_PATH="%PM_PATHS%" ^
+-DPX_OUTPUT_ARCH=x86 ^
+-DPX_OUTPUT_LIB_DIR="%PXSHARED_ROOT_DIR%" ^
+-DPX_OUTPUT_BIN_DIR="%PXSHARED_ROOT_DIR%" ^
+-DCMAKE_INSTALL_PREFIX="%PXSHARED_ROOT_DIR%install/linux/" ^
+-DCMAKE_TOOLCHAIN_FILE="%PM_CMakeModules_PATH%\linux\LinuxCrossToolchain.x86_64-unknown-linux-gnu.cmake" ^
+-DARCHITECTURE_TRIPLE=x86_64-unknown-linux-gnu ^
+-DCMAKE_MAKE_PROGRAM:PATH="%PM_MinGW_PATH%\bin\mingw32-make.exe" ^
+-DGENERATE_STATIC_LIBRARIES=ON
+
+
+REM Generate projects here
+SET CMAKE_OUTPUT_DIR=compiler\linux-crosscompile-debug
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+%CMAKECMD% %PXSHARED_ROOT_DIR%\src\compiler\cmake --no-warn-unused-cli %CMAKE_CMD_LINE_PARAMS% -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=debug
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+)
+
+SET CMAKE_OUTPUT_DIR=compiler\linux-crosscompile-profile
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+%CMAKECMD% %PXSHARED_ROOT_DIR%\src\compiler\cmake -G "Unix Makefiles" %CMAKE_CMD_LINE_PARAMS% -DCMAKE_BUILD_TYPE=profile
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+)
+
+SET CMAKE_OUTPUT_DIR=compiler\linux-crosscompile-checked
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+%CMAKECMD% %PXSHARED_ROOT_DIR%\src\compiler\cmake -G "Unix Makefiles" %CMAKE_CMD_LINE_PARAMS% -DCMAKE_BUILD_TYPE=checked
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+)
+
+SET CMAKE_OUTPUT_DIR=compiler\linux-crosscompile-release
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+%CMAKECMD% %PXSHARED_ROOT_DIR%\src\compiler\cmake -G "Unix Makefiles" %CMAKE_CMD_LINE_PARAMS% -DCMAKE_BUILD_TYPE=release
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+)
+
+GOTO :End
+
+:PM_PACKAGES_ROOT_UNDEFINED
+ECHO PM_PACKAGES_ROOT has to be defined, pointing to the root of the dependency tree.
+PAUSE
+GOTO END
+
+:DONT_RUN_STEP_2
+ECHO Don't run this batch file directly. Run generate_projects_(platform).bat instead
+PAUSE
+GOTO END
+
+:End
diff --git a/PxShared/buildtools/cmake_projects_linux.sh b/PxShared/buildtools/cmake_projects_linux.sh
new file mode 100644
index 0000000..2fbfcb7
--- /dev/null
+++ b/PxShared/buildtools/cmake_projects_linux.sh
@@ -0,0 +1,57 @@
+#!/bin/bash +x
+
+DATE=$(date +"%m-%d-%Y")
+TIME=$(date +"%T")
+echo "#############################################################################################"
+echo "Starting ${0##*/} $DATE $TIME "
+echo "#############################################################################################"
+
+echo "PM_CMakeModules_VERSION $PM_CMakeModules_VERSION"
+echo "PM_CMakeModules_PATH $PM_CMakeModules_PATH"
+echo "PM_PATHS $PM_PATHS"
+
+[ -z "$PM_CMakeModules_VERSION" ] && echo "Don't run this batch file directly. Run generate_projects_(platform).bat instead." && exit 1;
+
+[ -z "$PM_PACKAGES_ROOT" ] && echo "PM_PACKAGES_ROOT has to be defined, pointing to the root of the dependency tree." && exit 1;
+
+# Now set up the CMake command from PM_PACKAGES_ROOT
+
+export CMAKECMD=$PM_cmake_PATH/bin/cmake
+
+echo "Cmake: $CMAKECMD"
+
+echo "PXshared Root: $PXSHARED_ROOT_DIR"
+
+# Generate projects here
+
+echo "#############################################################################################"
+echo "Creating Unix Makefiles"
+
+# Common cmd line params
+CMAKE_CMD_LINE_PARAMS="\
+-DTARGET_BUILD_PLATFORM=linux \
+-DUSE_GAMEWORKS_OUTPUT_DIRS=ON \
+-DAPPEND_CONFIG_NAME=OFF \
+-DCMAKE_PREFIX_PATH=$PM_PATHS \
+-DPX_OUTPUT_ARCH=x86 \
+-DPX_OUTPUT_LIB_DIR=$PXSHARED_ROOT_DIR \
+-DPX_OUTPUT_BIN_DIR=$PXSHARED_ROOT_DIR \
+-DCUDA_TOOLKIT_ROOT_DIR=$PM_CUDA_PATH \
+-DCMAKE_INSTALL_PREFIX=$PXSHARED_ROOT_DIR/install/linux/ \
+-DGENERATE_STATIC_LIBRARIES=ON \
+-DPX_GENERATE_GPU_PROJECTS=ON"
+
+# Compiler dependend params
+CMAKE_CLANG_CMD_LINE_PARAMS="-DCMAKE_C_COMPILER=clang-3.8 -DCMAKE_CXX_COMPILER=clang++-3.8"
+
+# Generate projects here
+mkdir -p compiler
+for config in "debug" "profile" "checked" "release"; do
+
+rm -r -f compiler/linux-$config-clang/
+mkdir -p compiler/linux-$config-clang/
+pushd compiler/linux-$config-clang/
+$CMAKECMD $PXSHARED_ROOT_DIR/src/compiler/cmake -G "Unix Makefiles" $CMAKE_CLANG_CMD_LINE_PARAMS -DCMAKE_BUILD_TYPE=$config $CMAKE_CMD_LINE_PARAMS || exit 1
+popd
+
+done
diff --git a/PxShared/buildtools/cmake_projects_mac.sh b/PxShared/buildtools/cmake_projects_mac.sh
new file mode 100644
index 0000000..de49902
--- /dev/null
+++ b/PxShared/buildtools/cmake_projects_mac.sh
@@ -0,0 +1,98 @@
+#!/bin/bash +x
+
+DATE=$(date +"%m-%d-%Y")
+TIME=$(date +"%T")
+echo "#############################################################################################"
+echo "Starting ${0##*/} $DATE $TIME "
+echo "#############################################################################################"
+
+echo "PM_CMakeModules_VERSION $PM_CMakeModules_VERSION"
+echo "PM_CMakeModules_PATH $PM_CMakeModules_PATH"
+echo "PM_PATHS $PM_PATHS"
+
+[ -z "$PM_CMakeModules_VERSION" ] && echo "Don't run this batch file directly. Run generate_projects_(platform).bat instead." && exit 1;
+
+[ -z "$PM_PACKAGES_ROOT" ] && echo "PM_PACKAGES_ROOT has to be defined, pointing to the root of the dependency tree." && exit 1;
+
+# Now set up the CMake command from PM_PACKAGES_ROOT
+
+CMAKECMD=$PM_cmake_PATH/bin/cmake
+
+echo "Cmake: $CMAKECMD"
+
+echo "#############################################################################################"
+echo "Creating Mac XCode projects"
+
+
+# Common cmd line params
+CMAKE_CMD_LINE_PARAMS="\
+-DTARGET_BUILD_PLATFORM=mac \
+-DUSE_GAMEWORKS_OUTPUT_DIRS=ON \
+-DAPPEND_CONFIG_NAME=OFF \
+-DCMAKE_PREFIX_PATH=$PM_PATHS \
+-DPX_OUTPUT_ARCH=x86 \
+-DPX_OUTPUT_LIB_DIR=$PXSHARED_ROOT_DIR \
+-DPX_OUTPUT_BIN_DIR=$PXSHARED_ROOT_DIR \
+-DGENERATE_STATIC_LIBRARIES=ON \
+-DUSE_DEBUG_WINCRT=OFF"
+
+# Compiler dependend params
+CMAKE_MAC32_CMD_LINE_PARAMS="-DFORCE_32BIT_SUFFIX=ON"
+
+CMAKE_MAC64_CMD_LINE_PARAMS="-DFORCE_64BIT_SUFFIX=ON"
+
+# Generate projects here
+
+MACPLATDIR=mac32
+mkdir -p compiler
+for config in "debug" "profile" "checked" "release"; do
+CMAKE_OUTPUT_DIR=compiler/$MACPLATDIR-$config/
+
+rm -r -f $CMAKE_OUTPUT_DIR
+mkdir -p $CMAKE_OUTPUT_DIR
+pushd $CMAKE_OUTPUT_DIR
+
+$CMAKECMD $PXSHARED_ROOT_DIR/src/compiler/cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=$config -DCMAKE_INSTALL_PREFIX=$PXSHARED_ROOT_DIR/install/$MACPLATDIR/ $CMAKE_CMD_LINE_PARAMS $CMAKE_MAC32_CMD_LINE_PARAMS || exit 1
+
+popd
+
+done
+
+MACPLATDIR=mac64
+mkdir -p compiler
+for config in "debug" "profile" "checked" "release"; do
+CMAKE_OUTPUT_DIR=compiler/$MACPLATDIR-$config/
+
+rm -r -f $CMAKE_OUTPUT_DIR
+mkdir -p $CMAKE_OUTPUT_DIR
+pushd $CMAKE_OUTPUT_DIR
+
+$CMAKECMD $PXSHARED_ROOT_DIR/src/compiler/cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=$config -DCMAKE_INSTALL_PREFIX=$PXSHARED_ROOT_DIR/install/$MACPLATDIR/ $CMAKE_CMD_LINE_PARAMS $CMAKE_MAC64_CMD_LINE_PARAMS || exit 1
+
+popd
+
+done
+
+MACPLATDIR=mac32
+mkdir -p compiler
+CMAKE_OUTPUT_DIR=compiler/$MACPLATDIR-xcode/
+
+rm -r -f $CMAKE_OUTPUT_DIR
+mkdir -p $CMAKE_OUTPUT_DIR
+pushd $CMAKE_OUTPUT_DIR
+
+$CMAKECMD $PXSHARED_ROOT_DIR/src/compiler/cmake -G "Xcode" -DCMAKE_BUILD_TYPE=$config -DCMAKE_INSTALL_PREFIX=$PXSHARED_ROOT_DIR/install/$MACPLATDIR/ $CMAKE_CMD_LINE_PARAMS $CMAKE_MAC32_CMD_LINE_PARAMS || exit 1
+
+popd
+
+MACPLATDIR=mac64
+mkdir -p compiler
+CMAKE_OUTPUT_DIR=compiler/$MACPLATDIR-xcode/
+
+rm -r -f $CMAKE_OUTPUT_DIR
+mkdir -p $CMAKE_OUTPUT_DIR
+pushd $CMAKE_OUTPUT_DIR
+
+$CMAKECMD $PXSHARED_ROOT_DIR/src/compiler/cmake -G "Xcode" -DCMAKE_BUILD_TYPE=$config -DCMAKE_INSTALL_PREFIX=$PXSHARED_ROOT_DIR/install/$MACPLATDIR/ $CMAKE_CMD_LINE_PARAMS $CMAKE_MAC64_CMD_LINE_PARAMS || exit 1
+
+popd
diff --git a/PxShared/buildtools/cmake_projects_vc12win.bat b/PxShared/buildtools/cmake_projects_vc12win.bat
new file mode 100644
index 0000000..27a489e
--- /dev/null
+++ b/PxShared/buildtools/cmake_projects_vc12win.bat
@@ -0,0 +1,103 @@
+@echo off
+
+echo #############################################################################################
+echo Starting %~n0 %date% %time%
+echo #############################################################################################
+
+echo PM_CMakeModules_VERSION %PM_CMakeModules_VERSION%
+echo PM_CMakeModules_PATH %PM_CMakeModules_PATH%
+echo PM_PATHS %PM_PATHS%
+
+if NOT DEFINED PM_CMakeModules_VERSION GOTO DONT_RUN_STEP_2
+
+IF NOT DEFINED PM_PACKAGES_ROOT GOTO PM_PACKAGES_ROOT_UNDEFINED
+
+REM Now set up the CMake command from PM_PACKAGES_ROOT
+
+SET CMAKECMD=%PM_cmake_PATH%\bin\cmake.exe
+
+echo "Cmake: %CMAKECMD%"
+
+REM Common cmd line params
+set CMAKE_CMD_LINE_PARAMS=-DTARGET_BUILD_PLATFORM=windows ^
+-DUSE_GAMEWORKS_OUTPUT_DIRS=ON ^
+-DAPPEND_CONFIG_NAME=OFF ^
+-DCMAKE_PREFIX_PATH="%PM_PATHS%" ^
+-DPX_OUTPUT_ARCH=x86 ^
+-DPX_OUTPUT_LIB_DIR="%PXSHARED_ROOT_DIR%" ^
+-DPX_OUTPUT_BIN_DIR="%PXSHARED_ROOT_DIR%" ^
+-DUSE_DEBUG_WINCRT=OFF
+
+REM Compiler dependend params
+set CMAKE_VC12WIN32_CMD_LINE_PARAMS= ^
+-G "Visual Studio 12 2013" -AWin32 ^
+-DPX_GENERATE_GPU_PROJECTS=ON ^
+-DCUDA_TOOLKIT_ROOT_DIR=%PM_CUDA_PATH%
+
+set CMAKE_VC12WIN64_CMD_LINE_PARAMS= ^
+-G "Visual Studio 12 2013" -Ax64 ^
+-DPX_GENERATE_GPU_PROJECTS=ON ^
+-DCUDA_TOOLKIT_ROOT_DIR=%PM_CUDA_PATH%
+
+echo.
+echo #############################################################################################
+ECHO "Creating VC12 VS2013"
+
+SET VCPLATDIR=vc12win64-md
+SET CMAKE_OUTPUT_DIR=compiler\%VCPLATDIR%\
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+%CMAKECMD% "%PXSHARED_ROOT_DIR%src/compiler/cmake" -DUSE_STATIC_WINCRT=OFF -DCMAKE_INSTALL_PREFIX="%PXSHARED_ROOT_DIR%install/%VCPLATDIR%/" %CMAKE_CMD_LINE_PARAMS% %CMAKE_VC12WIN64_CMD_LINE_PARAMS%
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+
+SET VCPLATDIR=vc12win64-mt
+SET CMAKE_OUTPUT_DIR=compiler\%VCPLATDIR%\
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+%CMAKECMD% "%PXSHARED_ROOT_DIR%src/compiler/cmake" -DUSE_STATIC_WINCRT=ON -DCMAKE_INSTALL_PREFIX="%PXSHARED_ROOT_DIR%install/%VCPLATDIR%/" %CMAKE_CMD_LINE_PARAMS% %CMAKE_VC12WIN64_CMD_LINE_PARAMS%
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+
+SET VCPLATDIR=vc12win32-mt
+SET CMAKE_OUTPUT_DIR=compiler\%VCPLATDIR%\
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+%CMAKECMD% "%PXSHARED_ROOT_DIR%src/compiler/cmake" -DUSE_STATIC_WINCRT=ON -DCMAKE_INSTALL_PREFIX="%PXSHARED_ROOT_DIR%install/%VCPLATDIR%/" %CMAKE_CMD_LINE_PARAMS% %CMAKE_VC12WIN32_CMD_LINE_PARAMS%
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+
+SET VCPLATDIR=vc12win32-md
+SET CMAKE_OUTPUT_DIR=compiler\%VCPLATDIR%\
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+%CMAKECMD% "%PXSHARED_ROOT_DIR%src/compiler/cmake" -DUSE_STATIC_WINCRT=OFF -DCMAKE_INSTALL_PREFIX="%PXSHARED_ROOT_DIR%install/%VCPLATDIR%/" %CMAKE_CMD_LINE_PARAMS% %CMAKE_VC12WIN32_CMD_LINE_PARAMS%
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+
+
+GOTO :End
+
+:PM_PACKAGES_ROOT_UNDEFINED
+ECHO PM_PACKAGES_ROOT has to be defined, pointing to the root of the dependency tree.
+PAUSE
+GOTO END
+
+:DONT_RUN_STEP_2
+ECHO Don't run this batch file directly. Run generate_projects_(platform).bat instead
+PAUSE
+GOTO END
+
+:End
diff --git a/PxShared/buildtools/cmake_projects_vc14ps4.bat b/PxShared/buildtools/cmake_projects_vc14ps4.bat
new file mode 100644
index 0000000..716f8b5
--- /dev/null
+++ b/PxShared/buildtools/cmake_projects_vc14ps4.bat
@@ -0,0 +1,62 @@
+@echo off
+
+echo #############################################################################################
+echo Starting %~n0 %date% %time%
+echo #############################################################################################
+
+echo PM_CMakeModules_VERSION %PM_CMakeModules_VERSION%
+echo PM_CMakeModules_PATH %PM_CMakeModules_PATH%
+echo PM_PATHS %PM_PATHS%
+
+if NOT DEFINED PM_CMakeModules_VERSION GOTO DONT_RUN_STEP_2
+
+IF NOT DEFINED PM_PACKAGES_ROOT GOTO PM_PACKAGES_ROOT_UNDEFINED
+
+REM Now set up the CMake command from PM_PACKAGES_ROOT
+
+SET CMAKECMD=%PM_cmake_PATH%\bin\cmake.exe
+
+echo "Cmake: %CMAKECMD%"
+
+
+REM Generate projects here
+
+echo.
+echo #############################################################################################
+ECHO "Creating VC14 VS2015 Ps4"
+
+SET CMAKE_OUTPUT_DIR=compiler\vc14ps4\
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+
+%CMAKECMD% %PXSHARED_ROOT_DIR%\src\compiler\cmake ^
+-G "Visual Studio 14 2015" ^
+-DTARGET_BUILD_PLATFORM=ps4 ^
+-DCMAKE_TOOLCHAIN_FILE="%PM_CMakeModules_PATH%\ps4\PS4Toolchain.txt" ^
+-DCMAKE_GENERATOR_PLATFORM=ORBIS ^
+-DPX_OUTPUT_LIB_DIR=%PXSHARED_ROOT_DIR%\ ^
+-DPX_OUTPUT_BIN_DIR=%PXSHARED_ROOT_DIR%\ ^
+-DAPPEND_CONFIG_NAME=OFF ^
+-DCMAKE_PREFIX_PATH="%PM_PATHS%" ^
+-DUSE_GAMEWORKS_OUTPUT_DIRS=ON ^
+-DCMAKE_INSTALL_PREFIX=%PXSHARED_ROOT_DIR%\install\clangps4\
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+
+
+GOTO :End
+
+:PM_PACKAGES_ROOT_UNDEFINED
+ECHO PM_PACKAGES_ROOT has to be defined, pointing to the root of the dependency tree.
+PAUSE
+GOTO END
+
+:DONT_RUN_STEP_2
+ECHO Don't run this batch file directly. Run generate_projects_(platform).bat instead
+PAUSE
+GOTO END
+
+:End
diff --git a/PxShared/buildtools/cmake_projects_vc14switch.bat b/PxShared/buildtools/cmake_projects_vc14switch.bat
new file mode 100644
index 0000000..1b496a5
--- /dev/null
+++ b/PxShared/buildtools/cmake_projects_vc14switch.bat
@@ -0,0 +1,62 @@
+@echo off
+
+echo #############################################################################################
+echo Starting %~n0 %date% %time%
+echo #############################################################################################
+
+echo PM_CMakeModules_VERSION %PM_CMakeModules_VERSION%
+echo PM_CMakeModules_PATH %PM_CMakeModules_PATH%
+echo PM_PATHS %PM_PATHS%
+
+if NOT DEFINED PM_CMakeModules_VERSION GOTO DONT_RUN_STEP_2
+
+IF NOT DEFINED PM_PACKAGES_ROOT GOTO PM_PACKAGES_ROOT_UNDEFINED
+
+REM Now set up the CMake command from PM_PACKAGES_ROOT
+
+SET CMAKECMD=%PM_cmake_PATH%\bin\cmake.exe
+
+echo "Cmake: %CMAKECMD%"
+
+
+REM Generate projects here
+
+echo.
+echo #############################################################################################
+ECHO "Creating VC14 VS2015 Switch"
+
+SET CMAKE_OUTPUT_DIR=compiler\vc14switch\
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+
+%CMAKECMD% %PXSHARED_ROOT_DIR%\src\compiler\cmake ^
+-G "Visual Studio 14 2015" ^
+-DTARGET_BUILD_PLATFORM=switch ^
+-DCMAKE_TOOLCHAIN_FILE="%PM_CMakeModules_PATH%\switch\NX64Toolchain.txt" ^
+-DCMAKE_GENERATOR_PLATFORM=NX64 ^
+-DPX_OUTPUT_LIB_DIR=%PXSHARED_ROOT_DIR%\ ^
+-DPX_OUTPUT_BIN_DIR=%PXSHARED_ROOT_DIR%\ ^
+-DAPPEND_CONFIG_NAME=OFF ^
+-DCMAKE_PREFIX_PATH="%PM_PATHS%" ^
+-DUSE_GAMEWORKS_OUTPUT_DIRS=ON ^
+-DCMAKE_INSTALL_PREFIX=%PXSHARED_ROOT_DIR%\install\clangswitch\
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+
+
+GOTO :End
+
+:PM_PACKAGES_ROOT_UNDEFINED
+ECHO PM_PACKAGES_ROOT has to be defined, pointing to the root of the dependency tree.
+PAUSE
+GOTO END
+
+:DONT_RUN_STEP_2
+ECHO Don't run this batch file directly. Run generate_projects_(platform).bat instead
+PAUSE
+GOTO END
+
+:End
diff --git a/PxShared/buildtools/cmake_projects_vc14uwp.bat b/PxShared/buildtools/cmake_projects_vc14uwp.bat
new file mode 100644
index 0000000..5f43473
--- /dev/null
+++ b/PxShared/buildtools/cmake_projects_vc14uwp.bat
@@ -0,0 +1,100 @@
+@echo off
+
+echo #############################################################################################
+echo Starting %~n0 %date% %time%
+echo #############################################################################################
+
+echo PM_CMakeModules_VERSION %PM_CMakeModules_VERSION%
+echo PM_CMakeModules_PATH %PM_CMakeModules_PATH%
+echo PM_PATHS %PM_PATHS%
+
+if NOT DEFINED PM_CMakeModules_VERSION GOTO DONT_RUN_STEP_2
+
+IF NOT DEFINED PM_PACKAGES_ROOT GOTO PM_PACKAGES_ROOT_UNDEFINED
+
+REM Now set up the CMake command from PM_PACKAGES_ROOT
+
+SET CMAKECMD=%PM_cmake_PATH%\bin\cmake.exe
+
+echo "Cmake: %CMAKECMD%"
+
+REM Common cmd line params
+set CMAKE_CMD_LINE_PARAMS=-DTARGET_BUILD_PLATFORM=uwp ^
+-DUSE_GAMEWORKS_OUTPUT_DIRS=ON ^
+-DAPPEND_CONFIG_NAME=OFF ^
+-DCMAKE_PREFIX_PATH="%PM_PATHS%" ^
+-DPX_OUTPUT_LIB_DIR=%PXSHARED_ROOT_DIR%\ ^
+-DPX_OUTPUT_BIN_DIR=%PXSHARED_ROOT_DIR%\ ^
+-DUSE_DEBUG_WINCRT=OFF ^
+-DCMAKE_SYSTEM_NAME=WindowsStore ^
+-DCMAKE_SYSTEM_VERSION=10.0
+
+REM Compiler dependend params
+set CMAKE_VC14WIN32_CMD_LINE_PARAMS= ^
+-G "Visual Studio 14" -AWin32 ^
+-DPX_OUTPUT_ARCH=x86 ^
+-DPX_GENERATE_GPU_PROJECTS=OFF
+
+
+set CMAKE_VC14WIN64_CMD_LINE_PARAMS= ^
+-G "Visual Studio 14" -Ax64 ^
+-DPX_OUTPUT_ARCH=x86 ^
+-DPX_GENERATE_GPU_PROJECTS=OFF
+
+set CMAKE_VC14ARM_CMD_LINE_PARAMS= ^
+-G "Visual Studio 14" -Aarm ^
+-DPX_OUTPUT_ARCH=arm ^
+-DPX_GENERATE_GPU_PROJECTS=OFF
+
+echo.
+echo #############################################################################################
+ECHO "Creating VC14 VS2015"
+
+SET VCPLATDIR=vc14uwp64
+SET CMAKE_OUTPUT_DIR=compiler\%VCPLATDIR%\
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+%CMAKECMD% %PXSHARED_ROOT_DIR%\src\compiler\cmake -DCMAKE_INSTALL_PREFIX=%PXSHARED_ROOT_DIR%\install\%VCPLATDIR%\ %CMAKE_CMD_LINE_PARAMS% %CMAKE_VC14WIN64_CMD_LINE_PARAMS%
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+
+SET VCPLATDIR=vc14uwp32
+SET CMAKE_OUTPUT_DIR=compiler\%VCPLATDIR%\
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+%CMAKECMD% %PXSHARED_ROOT_DIR%\src\compiler\cmake -DCMAKE_INSTALL_PREFIX=%PXSHARED_ROOT_DIR%\install\%VCPLATDIR%\ %CMAKE_CMD_LINE_PARAMS% %CMAKE_VC14WIN32_CMD_LINE_PARAMS%
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+
+GOTO :End
+
+SET VCPLATDIR=vc14uwparm
+SET CMAKE_OUTPUT_DIR=compiler\%VCPLATDIR%\
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+%CMAKECMD% %PXSHARED_ROOT_DIR%\src\compiler\cmake -DCMAKE_INSTALL_PREFIX=%PXSHARED_ROOT_DIR%\install\%VCPLATDIR%\ %CMAKE_CMD_LINE_PARAMS% %CMAKE_VC14ARM_CMD_LINE_PARAMS%
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+
+GOTO :End
+
+:PM_PACKAGES_ROOT_UNDEFINED
+ECHO PM_PACKAGES_ROOT has to be defined, pointing to the root of the dependency tree.
+PAUSE
+GOTO END
+
+:DONT_RUN_STEP_2
+ECHO Don't run this batch file directly. Run generate_projects_(platform).bat instead
+PAUSE
+GOTO END
+
+:End
diff --git a/PxShared/buildtools/cmake_projects_vc14win.bat b/PxShared/buildtools/cmake_projects_vc14win.bat
new file mode 100644
index 0000000..af70161
--- /dev/null
+++ b/PxShared/buildtools/cmake_projects_vc14win.bat
@@ -0,0 +1,104 @@
+@echo off
+
+echo #############################################################################################
+echo Starting %~n0 %date% %time%
+echo #############################################################################################
+
+echo PM_CMakeModules_VERSION %PM_CMakeModules_VERSION%
+echo PM_CMakeModules_PATH %PM_CMakeModules_PATH%
+echo PM_PATHS %PM_PATHS%
+
+if NOT DEFINED PM_CMakeModules_VERSION GOTO DONT_RUN_STEP_2
+
+IF NOT DEFINED PM_PACKAGES_ROOT GOTO PM_PACKAGES_ROOT_UNDEFINED
+
+REM Now set up the CMake command from PM_PACKAGES_ROOT
+
+SET CMAKECMD=%PM_cmake_PATH%\bin\cmake.exe
+
+echo "Cmake: %CMAKECMD%"
+
+REM Common cmd line params
+set CMAKE_CMD_LINE_PARAMS=-DTARGET_BUILD_PLATFORM=windows ^
+-DUSE_GAMEWORKS_OUTPUT_DIRS=ON ^
+-DAPPEND_CONFIG_NAME=OFF ^
+-DCMAKE_PREFIX_PATH="%PM_PATHS%" ^
+-DPX_OUTPUT_ARCH=x86 ^
+-DPX_OUTPUT_LIB_DIR="%PXSHARED_ROOT_DIR%" ^
+-DPX_OUTPUT_BIN_DIR="%PXSHARED_ROOT_DIR%" ^
+-DUSE_DEBUG_WINCRT=OFF
+
+REM Compiler dependend params
+set CMAKE_VC14WIN32_CMD_LINE_PARAMS= ^
+-G "Visual Studio 14 2015" -AWin32 ^
+-DPX_GENERATE_GPU_PROJECTS=ON ^
+-DCUDA_TOOLKIT_ROOT_DIR=%PM_CUDA_PATH%
+
+
+set CMAKE_VC14WIN64_CMD_LINE_PARAMS= ^
+-G "Visual Studio 14 2015" -Ax64 ^
+-DPX_GENERATE_GPU_PROJECTS=ON ^
+-DCUDA_TOOLKIT_ROOT_DIR=%PM_CUDA_PATH%
+
+echo.
+echo #############################################################################################
+ECHO "Creating VC14 VS2015"
+
+SET VCPLATDIR=vc14win64-md
+SET CMAKE_OUTPUT_DIR=compiler\%VCPLATDIR%\
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+%CMAKECMD% "%PXSHARED_ROOT_DIR%src/compiler/cmake" -DUSE_STATIC_WINCRT=OFF -DCMAKE_INSTALL_PREFIX="%PXSHARED_ROOT_DIR%install/%VCPLATDIR%/" %CMAKE_CMD_LINE_PARAMS% %CMAKE_VC14WIN64_CMD_LINE_PARAMS%
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+
+SET VCPLATDIR=vc14win64-mt
+SET CMAKE_OUTPUT_DIR=compiler\%VCPLATDIR%\
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+%CMAKECMD% "%PXSHARED_ROOT_DIR%src/compiler/cmake" -DUSE_STATIC_WINCRT=ON -DCMAKE_INSTALL_PREFIX="%PXSHARED_ROOT_DIR%install/%VCPLATDIR%/" %CMAKE_CMD_LINE_PARAMS% %CMAKE_VC14WIN64_CMD_LINE_PARAMS%
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+
+SET VCPLATDIR=vc14win32-md
+SET CMAKE_OUTPUT_DIR=compiler\%VCPLATDIR%\
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+%CMAKECMD% "%PXSHARED_ROOT_DIR%src/compiler/cmake" -DUSE_STATIC_WINCRT=OFF -DCMAKE_INSTALL_PREFIX="%PXSHARED_ROOT_DIR%install/%VCPLATDIR%/" %CMAKE_CMD_LINE_PARAMS% %CMAKE_VC14WIN32_CMD_LINE_PARAMS%
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+
+SET VCPLATDIR=vc14win32-mt
+SET CMAKE_OUTPUT_DIR=compiler\%VCPLATDIR%\
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+%CMAKECMD% "%PXSHARED_ROOT_DIR%src/compiler/cmake" -DUSE_STATIC_WINCRT=ON -DCMAKE_INSTALL_PREFIX="%PXSHARED_ROOT_DIR%install/%VCPLATDIR%/" %CMAKE_CMD_LINE_PARAMS% %CMAKE_VC14WIN32_CMD_LINE_PARAMS%
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+
+
+GOTO :End
+
+:PM_PACKAGES_ROOT_UNDEFINED
+ECHO PM_PACKAGES_ROOT has to be defined, pointing to the root of the dependency tree.
+PAUSE
+GOTO END
+
+:DONT_RUN_STEP_2
+ECHO Don't run this batch file directly. Run generate_projects_(platform).bat instead
+PAUSE
+GOTO END
+
+:End
diff --git a/PxShared/buildtools/cmake_projects_vc14xboxone.bat b/PxShared/buildtools/cmake_projects_vc14xboxone.bat
new file mode 100644
index 0000000..771737f
--- /dev/null
+++ b/PxShared/buildtools/cmake_projects_vc14xboxone.bat
@@ -0,0 +1,62 @@
+@echo off
+
+echo #############################################################################################
+echo Starting %~n0 %date% %time%
+echo #############################################################################################
+
+echo PM_CMakeModules_VERSION %PM_CMakeModules_VERSION%
+echo PM_CMakeModules_PATH %PM_CMakeModules_PATH%
+echo PM_PATHS %PM_PATHS%
+
+if NOT DEFINED PM_CMakeModules_VERSION GOTO DONT_RUN_STEP_2
+
+IF NOT DEFINED PM_PACKAGES_ROOT GOTO PM_PACKAGES_ROOT_UNDEFINED
+
+REM Now set up the CMake command from PM_PACKAGES_ROOT
+
+SET CMAKECMD=%PM_cmake_PATH%\bin\cmake.exe
+
+echo "Cmake: %CMAKECMD%"
+
+
+REM Generate projects here
+
+echo.
+echo #############################################################################################
+ECHO "Creating VC14 VS2015 XboxOne"
+
+SET CMAKE_OUTPUT_DIR=compiler\vc14xboxone\
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+
+%CMAKECMD% %PXSHARED_ROOT_DIR%\src\compiler\cmake ^
+-G "Visual Studio 14 2015" ^
+-DTARGET_BUILD_PLATFORM=xboxone ^
+-DCMAKE_TOOLCHAIN_FILE="%PM_CMakeModules_PATH%\xboxone\XboxOneToolchain.txt" ^
+-DCMAKE_GENERATOR_PLATFORM=Durango ^
+-DPX_OUTPUT_LIB_DIR=%PXSHARED_ROOT_DIR% ^
+-DPX_OUTPUT_BIN_DIR=%PXSHARED_ROOT_DIR% ^
+-DAPPEND_CONFIG_NAME=OFF ^
+-DCMAKE_PREFIX_PATH="%PM_PATHS%" ^
+-DUSE_GAMEWORKS_OUTPUT_DIRS=ON ^
+-DCMAKE_INSTALL_PREFIX=%PXSHARED_ROOT_DIR%\install\vc14xboxone\
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+
+
+GOTO :End
+
+:PM_PACKAGES_ROOT_UNDEFINED
+ECHO PM_PACKAGES_ROOT has to be defined, pointing to the root of the dependency tree.
+PAUSE
+GOTO END
+
+:DONT_RUN_STEP_2
+ECHO Don't run this batch file directly. Run generate_projects_(platform).bat instead
+PAUSE
+GOTO END
+
+:End
diff --git a/PxShared/buildtools/cmake_projects_vc15ps4.bat b/PxShared/buildtools/cmake_projects_vc15ps4.bat
new file mode 100644
index 0000000..5538859
--- /dev/null
+++ b/PxShared/buildtools/cmake_projects_vc15ps4.bat
@@ -0,0 +1,62 @@
+@echo off
+
+echo #############################################################################################
+echo Starting %~n0 %date% %time%
+echo #############################################################################################
+
+echo PM_CMakeModules_VERSION %PM_CMakeModules_VERSION%
+echo PM_CMakeModules_PATH %PM_CMakeModules_PATH%
+echo PM_PATHS %PM_PATHS%
+
+if NOT DEFINED PM_CMakeModules_VERSION GOTO DONT_RUN_STEP_2
+
+IF NOT DEFINED PM_PACKAGES_ROOT GOTO PM_PACKAGES_ROOT_UNDEFINED
+
+REM Now set up the CMake command from PM_PACKAGES_ROOT
+
+SET CMAKECMD=%PM_cmake_PATH%\bin\cmake.exe
+
+echo "Cmake: %CMAKECMD%"
+
+
+REM Generate projects here
+
+echo.
+echo #############################################################################################
+ECHO "Creating VC15 VS2017 Ps4"
+
+SET CMAKE_OUTPUT_DIR=compiler\vc15ps4\
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+
+%CMAKECMD% %PXSHARED_ROOT_DIR%\src\compiler\cmake ^
+-G "Visual Studio 15 2017" ^
+-DTARGET_BUILD_PLATFORM=ps4 ^
+-DCMAKE_TOOLCHAIN_FILE="%PM_CMakeModules_PATH%\ps4\PS4Toolchain.txt" ^
+-DCMAKE_GENERATOR_PLATFORM=ORBIS ^
+-DPX_OUTPUT_LIB_DIR=%PXSHARED_ROOT_DIR%\ ^
+-DPX_OUTPUT_BIN_DIR=%PXSHARED_ROOT_DIR%\ ^
+-DAPPEND_CONFIG_NAME=OFF ^
+-DCMAKE_PREFIX_PATH="%PM_PATHS%" ^
+-DUSE_GAMEWORKS_OUTPUT_DIRS=ON ^
+-DCMAKE_INSTALL_PREFIX=%PXSHARED_ROOT_DIR%\install\clangps4\
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+
+
+GOTO :End
+
+:PM_PACKAGES_ROOT_UNDEFINED
+ECHO PM_PACKAGES_ROOT has to be defined, pointing to the root of the dependency tree.
+PAUSE
+GOTO END
+
+:DONT_RUN_STEP_2
+ECHO Don't run this batch file directly. Run generate_projects_(platform).bat instead
+PAUSE
+GOTO END
+
+:End
diff --git a/PxShared/buildtools/cmake_projects_vc15switch.bat b/PxShared/buildtools/cmake_projects_vc15switch.bat
new file mode 100644
index 0000000..0e0c60a
--- /dev/null
+++ b/PxShared/buildtools/cmake_projects_vc15switch.bat
@@ -0,0 +1,62 @@
+@echo off
+
+echo #############################################################################################
+echo Starting %~n0 %date% %time%
+echo #############################################################################################
+
+echo PM_CMakeModules_VERSION %PM_CMakeModules_VERSION%
+echo PM_CMakeModules_PATH %PM_CMakeModules_PATH%
+echo PM_PATHS %PM_PATHS%
+
+if NOT DEFINED PM_CMakeModules_VERSION GOTO DONT_RUN_STEP_2
+
+IF NOT DEFINED PM_PACKAGES_ROOT GOTO PM_PACKAGES_ROOT_UNDEFINED
+
+REM Now set up the CMake command from PM_PACKAGES_ROOT
+
+SET CMAKECMD=%PM_cmake_PATH%\bin\cmake.exe
+
+echo "Cmake: %CMAKECMD%"
+
+
+REM Generate projects here
+
+echo.
+echo #############################################################################################
+ECHO "Creating VC15 VS2017 Switch"
+
+SET CMAKE_OUTPUT_DIR=compiler\vc15switch\
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+%CMAKECMD% %PXSHARED_ROOT_DIR%\src\compiler\cmake ^
+-G "Visual Studio 15" ^
+-T v141 ^
+-DTARGET_BUILD_PLATFORM=switch ^
+-DCMAKE_TOOLCHAIN_FILE="%PM_CMakeModules_PATH%\switch\NX64Toolchain.txt" ^
+-DCMAKE_GENERATOR_PLATFORM=NX64 ^
+-DPX_OUTPUT_LIB_DIR=%PXSHARED_ROOT_DIR%\ ^
+-DPX_OUTPUT_BIN_DIR=%PXSHARED_ROOT_DIR%\ ^
+-DAPPEND_CONFIG_NAME=OFF ^
+-DCMAKE_PREFIX_PATH="%PM_PATHS%" ^
+-DUSE_GAMEWORKS_OUTPUT_DIRS=ON ^
+-DCMAKE_INSTALL_PREFIX=%PXSHARED_ROOT_DIR%\install\clangswitch\
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+
+
+GOTO :End
+
+:PM_PACKAGES_ROOT_UNDEFINED
+ECHO PM_PACKAGES_ROOT has to be defined, pointing to the root of the dependency tree.
+PAUSE
+GOTO END
+
+:DONT_RUN_STEP_2
+ECHO Don't run this batch file directly. Run generate_projects_(platform).bat instead
+PAUSE
+GOTO END
+
+:End
diff --git a/PxShared/buildtools/cmake_projects_vc15uwp.bat b/PxShared/buildtools/cmake_projects_vc15uwp.bat
new file mode 100644
index 0000000..8065781
--- /dev/null
+++ b/PxShared/buildtools/cmake_projects_vc15uwp.bat
@@ -0,0 +1,101 @@
+@echo off
+
+echo #############################################################################################
+echo Starting %~n0 %date% %time%
+echo #############################################################################################
+
+echo PM_CMakeModules_VERSION %PM_CMakeModules_VERSION%
+echo PM_CMakeModules_PATH %PM_CMakeModules_PATH%
+echo PM_PATHS %PM_PATHS%
+
+if NOT DEFINED PM_CMakeModules_VERSION GOTO DONT_RUN_STEP_2
+
+IF NOT DEFINED PM_PACKAGES_ROOT GOTO PM_PACKAGES_ROOT_UNDEFINED
+
+REM Now set up the CMake command from PM_PACKAGES_ROOT
+
+SET CMAKECMD=%PM_cmake_PATH%\bin\cmake.exe
+
+echo "Cmake: %CMAKECMD%"
+
+REM Common cmd line params
+set CMAKE_CMD_LINE_PARAMS=-DTARGET_BUILD_PLATFORM=uwp ^
+-DUSE_GAMEWORKS_OUTPUT_DIRS=ON ^
+-DAPPEND_CONFIG_NAME=OFF ^
+-DCMAKE_PREFIX_PATH="%PM_PATHS%" ^
+-DPX_OUTPUT_LIB_DIR=%PXSHARED_ROOT_DIR%\ ^
+-DPX_OUTPUT_BIN_DIR=%PXSHARED_ROOT_DIR%\ ^
+-DUSE_DEBUG_WINCRT=OFF ^
+-DCMAKE_SYSTEM_NAME=WindowsStore ^
+-DCMAKE_SYSTEM_VERSION=10.0
+
+REM Compiler dependend params
+set CMAKE_VC15WIN32_CMD_LINE_PARAMS= ^
+-G "Visual Studio 15 2017" -AWin32 ^
+-DPX_OUTPUT_ARCH=x86 ^
+-DPX_GENERATE_GPU_PROJECTS=OFF
+
+
+set CMAKE_VC15WIN64_CMD_LINE_PARAMS= ^
+-G "Visual Studio 15 2017" -Ax64 ^
+-DPX_OUTPUT_ARCH=x86 ^
+-DPX_GENERATE_GPU_PROJECTS=OFF
+
+set CMAKE_VC15ARM_CMD_LINE_PARAMS= ^
+-G "Visual Studio 15 2017" -Aarm ^
+-DPX_OUTPUT_ARCH=arm ^
+-DPX_GENERATE_GPU_PROJECTS=OFF
+
+echo.
+echo #############################################################################################
+ECHO "Creating VC15 VS2017"
+
+SET VCPLATDIR=vc15uwp64
+SET CMAKE_OUTPUT_DIR=compiler\%VCPLATDIR%\
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+%CMAKECMD% %PXSHARED_ROOT_DIR%\src\compiler\cmake -DCMAKE_INSTALL_PREFIX=%PXSHARED_ROOT_DIR%\install\%VCPLATDIR%\ %CMAKE_CMD_LINE_PARAMS% %CMAKE_VC15WIN64_CMD_LINE_PARAMS%
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+
+SET VCPLATDIR=vc15uwp32
+SET CMAKE_OUTPUT_DIR=compiler\%VCPLATDIR%\
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+%CMAKECMD% %PXSHARED_ROOT_DIR%\src\compiler\cmake -DCMAKE_INSTALL_PREFIX=%PXSHARED_ROOT_DIR%\install\%VCPLATDIR%\ %CMAKE_CMD_LINE_PARAMS% %CMAKE_VC15WIN32_CMD_LINE_PARAMS%
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+
+GOTO :End
+
+SET VCPLATDIR=vc15uwparm
+SET CMAKE_OUTPUT_DIR=compiler\%VCPLATDIR%\
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+%CMAKECMD% %PXSHARED_ROOT_DIR%\src\compiler\cmake -DCMAKE_INSTALL_PREFIX=%PXSHARED_ROOT_DIR%\install\%VCPLATDIR%\ %CMAKE_CMD_LINE_PARAMS% %CMAKE_VC15ARM_CMD_LINE_PARAMS%
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+
+
+GOTO :End
+
+:PM_PACKAGES_ROOT_UNDEFINED
+ECHO PM_PACKAGES_ROOT has to be defined, pointing to the root of the dependency tree.
+PAUSE
+GOTO END
+
+:DONT_RUN_STEP_2
+ECHO Don't run this batch file directly. Run generate_projects_(platform).bat instead
+PAUSE
+GOTO END
+
+:End
diff --git a/PxShared/buildtools/cmake_projects_vc15win.bat b/PxShared/buildtools/cmake_projects_vc15win.bat
new file mode 100644
index 0000000..f1b07bc
--- /dev/null
+++ b/PxShared/buildtools/cmake_projects_vc15win.bat
@@ -0,0 +1,102 @@
+@echo off
+
+echo #############################################################################################
+echo Starting %~n0 %date% %time%
+echo #############################################################################################
+
+echo PM_CMakeModules_VERSION %PM_CMakeModules_VERSION%
+echo PM_CMakeModules_PATH %PM_CMakeModules_PATH%
+echo PM_PATHS %PM_PATHS%
+
+if NOT DEFINED PM_CMakeModules_VERSION GOTO DONT_RUN_STEP_2
+
+IF NOT DEFINED PM_PACKAGES_ROOT GOTO PM_PACKAGES_ROOT_UNDEFINED
+
+REM Now set up the CMake command from PM_PACKAGES_ROOT
+
+SET CMAKECMD=%PM_cmake_PATH%\bin\cmake.exe
+
+echo "Cmake: %CMAKECMD%"
+
+REM Common cmd line params
+set CMAKE_CMD_LINE_PARAMS=-DTARGET_BUILD_PLATFORM=windows ^
+-DUSE_GAMEWORKS_OUTPUT_DIRS=ON ^
+-DAPPEND_CONFIG_NAME=OFF ^
+-DCMAKE_PREFIX_PATH="%PM_PATHS%" ^
+-DPX_OUTPUT_ARCH=x86 ^
+-DPX_OUTPUT_LIB_DIR=%PXSHARED_ROOT_DIR%\ ^
+-DPX_OUTPUT_BIN_DIR=%PXSHARED_ROOT_DIR%\ ^
+-DUSE_DEBUG_WINCRT=OFF
+
+REM Compiler dependend params
+set CMAKE_VC15WIN32_CMD_LINE_PARAMS= ^
+-G "Visual Studio 15 2017" -AWin32 ^
+-DPX_GENERATE_GPU_PROJECTS=OFF
+
+
+set CMAKE_VC15WIN64_CMD_LINE_PARAMS= ^
+-G "Visual Studio 15 2017" -Ax64 ^
+-DPX_GENERATE_GPU_PROJECTS=OFF
+
+echo.
+echo #############################################################################################
+ECHO "Creating VC15 VS2017"
+
+SET VCPLATDIR=vc15win64-md
+SET CMAKE_OUTPUT_DIR=compiler\%VCPLATDIR%\
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+%CMAKECMD% %PXSHARED_ROOT_DIR%\src\compiler\cmake -DUSE_STATIC_WINCRT=OFF -DCMAKE_INSTALL_PREFIX=%PXSHARED_ROOT_DIR%\install\%VCPLATDIR%\ %CMAKE_CMD_LINE_PARAMS% %CMAKE_VC15WIN64_CMD_LINE_PARAMS%
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+
+SET VCPLATDIR=vc15win64-mt
+SET CMAKE_OUTPUT_DIR=compiler\%VCPLATDIR%\
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+%CMAKECMD% %PXSHARED_ROOT_DIR%\src\compiler\cmake -DUSE_STATIC_WINCRT=ON -DCMAKE_INSTALL_PREFIX=%PXSHARED_ROOT_DIR%\install\%VCPLATDIR%\ %CMAKE_CMD_LINE_PARAMS% %CMAKE_VC15WIN64_CMD_LINE_PARAMS%
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+
+SET VCPLATDIR=vc15win32-md
+SET CMAKE_OUTPUT_DIR=compiler\%VCPLATDIR%\
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+%CMAKECMD% %PXSHARED_ROOT_DIR%\src\compiler\cmake -DUSE_STATIC_WINCRT=OFF -DCMAKE_INSTALL_PREFIX=%PXSHARED_ROOT_DIR%\install\%VCPLATDIR%\ %CMAKE_CMD_LINE_PARAMS% %CMAKE_VC15WIN32_CMD_LINE_PARAMS%
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+
+SET VCPLATDIR=vc15win32-mt
+SET CMAKE_OUTPUT_DIR=compiler\%VCPLATDIR%\
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+%CMAKECMD% %PXSHARED_ROOT_DIR%\src\compiler\cmake -DUSE_STATIC_WINCRT=ON -DCMAKE_INSTALL_PREFIX=%PXSHARED_ROOT_DIR%\install\%VCPLATDIR%\ %CMAKE_CMD_LINE_PARAMS% %CMAKE_VC15WIN32_CMD_LINE_PARAMS%
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+
+
+GOTO :End
+
+:PM_PACKAGES_ROOT_UNDEFINED
+ECHO PM_PACKAGES_ROOT has to be defined, pointing to the root of the dependency tree.
+PAUSE
+GOTO END
+
+:DONT_RUN_STEP_2
+ECHO Don't run this batch file directly. Run generate_projects_(platform).bat instead
+PAUSE
+GOTO END
+
+:End
diff --git a/PxShared/buildtools/cmake_projects_vc15xboxone.bat b/PxShared/buildtools/cmake_projects_vc15xboxone.bat
new file mode 100644
index 0000000..0e4e8de
--- /dev/null
+++ b/PxShared/buildtools/cmake_projects_vc15xboxone.bat
@@ -0,0 +1,73 @@
+@echo off
+
+echo #############################################################################################
+echo Starting %~n0 %date% %time%
+echo #############################################################################################
+
+echo PM_CMakeModules_VERSION %PM_CMakeModules_VERSION%
+echo PM_CMakeModules_PATH %PM_CMakeModules_PATH%
+echo PM_PATHS %PM_PATHS%
+
+if NOT DEFINED PM_CMakeModules_VERSION GOTO DONT_RUN_STEP_2
+
+IF NOT DEFINED PM_PACKAGES_ROOT GOTO PM_PACKAGES_ROOT_UNDEFINED
+
+REM Now set up the CMake command from PM_PACKAGES_ROOT
+
+SET CMAKECMD=%PM_cmake_PATH%\bin\cmake.exe
+
+SET VSWHERE=%PM_vswhere_PATH%\VsWhere.exe
+
+echo "Cmake: %CMAKECMD%"
+
+rem ## Try to get the VS 15 path using vswhere (see https://github.com/Microsoft/vswhere)
+for /f "delims=" %%i in ('%VSWHERE% -latest -property installationPath') do (
+ if exist "%%i" (
+ set VS150PATH="%%i"
+ )
+)
+
+echo "VS150PATH: %VS150PATH%"
+
+REM Generate projects here
+
+echo.
+echo #############################################################################################
+ECHO "Creating VC15 VS2017 XboxOne"
+
+SET CMAKE_OUTPUT_DIR=compiler\vc15xboxone\
+IF EXIST %CMAKE_OUTPUT_DIR% rmdir /S /Q %CMAKE_OUTPUT_DIR%
+mkdir %CMAKE_OUTPUT_DIR%
+pushd %CMAKE_OUTPUT_DIR%
+
+
+%CMAKECMD% %PXSHARED_ROOT_DIR%\src\compiler\cmake ^
+-G "Visual Studio 15 2017" ^
+-DTARGET_BUILD_PLATFORM=xboxone ^
+-DCMAKE_TOOLCHAIN_FILE="%PM_CMakeModules_PATH%\xboxone\XboxOneToolchainVC15.txt" ^
+-DCMAKE_GENERATOR_PLATFORM=Durango ^
+-DPX_OUTPUT_LIB_DIR=%PXSHARED_ROOT_DIR% ^
+-DPX_OUTPUT_BIN_DIR=%PXSHARED_ROOT_DIR% ^
+-DAPPEND_CONFIG_NAME=OFF ^
+-DCMAKE_PREFIX_PATH="%PM_PATHS%" ^
+-DUSE_GAMEWORKS_OUTPUT_DIRS=ON ^
+-DCMAKE_VS150PATH=%VS150PATH% ^
+-DCMAKE_INSTALL_PREFIX=%PXSHARED_ROOT_DIR%\install\vc15xboxone\
+
+popd
+if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
+
+
+GOTO :End
+
+:PM_PACKAGES_ROOT_UNDEFINED
+ECHO PM_PACKAGES_ROOT has to be defined, pointing to the root of the dependency tree.
+PAUSE
+GOTO END
+
+:DONT_RUN_STEP_2
+ECHO Don't run this batch file directly. Run generate_projects_(platform).bat instead
+PAUSE
+GOTO END
+
+:End
diff --git a/PxShared/buildtools/packman/packman b/PxShared/buildtools/packman/packman
new file mode 100644
index 0000000..4d0c292
--- /dev/null
+++ b/PxShared/buildtools/packman/packman
@@ -0,0 +1,80 @@
+#!/bin/bash
+
+PM_PACKMAN_VERSION=4.2-rc2
+
+# Specify where configuration file could exist
+export PM_CONFIG_PATH=$(dirname ${BASH_SOURCE})/packman_config.txt
+
+# The packages root may already be configured by the user
+if [ -z "$PM_PACKAGES_ROOT" ]; then
+ # Set variable permanently using .profile for this user
+ echo "export PM_PACKAGES_ROOT=\$HOME/packman-repo" >> ~/.profile
+ # Set variable temporarily in this process so that the following execution will work
+ export PM_PACKAGES_ROOT="${HOME}/packman-repo"
+fi
+
+# Ensure the packages root path exists:
+if [ ! -d "$PM_PACKAGES_ROOT" ]; then
+ echo "Creating packman packages repository at $PM_PACKAGES_ROOT"
+ mkdir -p "$PM_PACKAGES_ROOT"
+fi
+
+# The packman module may be externally configured
+if [ -z "$PM_MODULE_EXT" ]; then
+ PM_MODULE_DIR="$PM_PACKAGES_ROOT/packman-common/$PM_PACKMAN_VERSION"
+ export PM_MODULE="$PM_MODULE_DIR/packman.py"
+else
+ export PM_MODULE="$PM_MODULE_EXT"
+fi
+
+fetch_file_from_s3()
+{
+ SOURCE=$1
+ SOURCE_URL=http://packman.s3.amazonaws.com/$SOURCE
+ TARGET=$2
+ echo "Fetching $SOURCE from S3 ..."
+ if command -v wget >/dev/null 2>&1; then
+ wget --quiet -O$TARGET $SOURCE_URL
+ else
+ curl -o $TARGET $SOURCE_URL -s -S
+ fi
+}
+
+# Ensure the packman package exists:
+if [ ! -f "$PM_MODULE" ]; then
+ PM_MODULE_PACKAGE="packman-common@$PM_PACKMAN_VERSION.zip"
+ TARGET="/tmp/$PM_MODULE_PACKAGE"
+ # We always fetch packman from S3:
+ fetch_file_from_s3 $PM_MODULE_PACKAGE $TARGET
+ if [ "$?" -eq "0" ]; then
+ echo "Unpacking ..."
+ mkdir -p "$PM_MODULE_DIR"
+ unzip -q $TARGET -d "$PM_MODULE_DIR"
+ rm $TARGET
+ else
+ echo "Failure while fetching packman module from S3!"
+ exit 1
+ fi
+fi
+
+# Generate temporary file name for environment variables:
+PM_VAR_PATH=`mktemp -u -t tmp.XXXXX.$$.pmvars`
+
+python "$PM_MODULE" $* --var-path="$PM_VAR_PATH"
+exit_code=$?
+
+# Export the variables if the file was used and remove the file:
+if [ -f "$PM_VAR_PATH" ]; then
+ while read -r line
+ do
+ if [ ${#line} -gt 0 ]; then
+ export "$line"
+ fi
+ done < "$PM_VAR_PATH"
+ rm -f "$PM_VAR_PATH"
+fi
+
+# Return the exit code from python
+if [ "$exit_code" != 0 ]; then
+ exit $exit_code
+fi
diff --git a/PxShared/buildtools/packman/packman.cmd b/PxShared/buildtools/packman/packman.cmd
new file mode 100644
index 0000000..8e98015
--- /dev/null
+++ b/PxShared/buildtools/packman/packman.cmd
@@ -0,0 +1,41 @@
+:: Reset errorlevel status so we are not inheriting this state from the calling process:
+@call :RESET_ERROR
+:: You can remove the call below if you do your own manual configuration of the dev machines
+@call "%~dp0\win-bootstrap\configure.bat"
+@if errorlevel 1 exit /b 1
+:: Everything below is mandatory
+@if not defined PM_PYTHON goto :PYTHON_ENV_ERROR
+@if not defined PM_MODULE goto :MODULE_ENV_ERROR
+
+:: Generate temporary path for variable file
+:TEMP_VAR_PATH_LOOP
+@set "PM_VAR_PATH=%tmp%\tmp.%RANDOM%.pmvars"
+@if exist "%PM_VAR_PATH%" goto :TEMP_VAR_PATH_LOOP
+
+@"%PM_PYTHON%" "%PM_MODULE%" %* --var-path="%PM_VAR_PATH%"
+@if errorlevel 1 goto :eof
+
+:: Marshall environment variables into the current environment if they have been generated and remove temporary file
+@if exist "%PM_VAR_PATH%" (
+ @for /F "usebackq tokens=*" %%A in ("%PM_VAR_PATH%") do @set "%%A"
+ @if errorlevel 1 goto :VAR_ERROR
+ @del /F "%PM_VAR_PATH%"
+)
+@set PM_VAR_PATH=
+@goto :eof
+
+:: Subroutines below
+:PYTHON_ENV_ERROR
+@echo User environment variable PM_PYTHON is not set! Please configure machine for packman or call configure.bat.
+@exit /b 1
+
+:MODULE_ENV_ERROR
+@echo User environment variable PM_MODULE is not set! Please configure machine for packman or call configure.bat.
+@exit /b 1
+
+:VAR_ERROR
+@echo Error while processing and setting environment variables!
+@exit /b 1
+
+:RESET_ERROR
+@exit /b 0 \ No newline at end of file
diff --git a/PxShared/buildtools/packman/packman_config.txt b/PxShared/buildtools/packman/packman_config.txt
new file mode 100644
index 0000000..dafaf9a
--- /dev/null
+++ b/PxShared/buildtools/packman/packman_config.txt
@@ -0,0 +1,5 @@
+PM_PACKAGES_SOURCE=gtl
+PM_GTL_USER=svcgtlautomate
+PM_GTL_KEY=QHV0ME1AdDNHVEwkY3IxcHQk
+PM_S3_READ_KEY_ID=AKIAJHPSPBMWMTZS6TJA
+PM_S3_READ_SECRET_KEY=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
diff --git a/PxShared/buildtools/packman/win-bootstrap/configure.bat b/PxShared/buildtools/packman/win-bootstrap/configure.bat
new file mode 100644
index 0000000..d21a7d1
--- /dev/null
+++ b/PxShared/buildtools/packman/win-bootstrap/configure.bat
@@ -0,0 +1,104 @@
+@set PM_PACKMAN_VERSION=4.2-rc2
+
+:: Specify where config file could exist
+@set PM_CONFIG_PATH=%~dp0..\packman_config.txt
+
+:: The external root may already be configured and we should do minimal work in that case
+@if defined PM_PACKAGES_ROOT goto ENSURE_DIR
+
+:: If the folder isn't set we assume that the best place for it is on the drive that we are currently
+:: running from
+@set PM_DRIVE=%CD:~0,2%
+
+@set PM_PACKAGES_ROOT=%PM_DRIVE%\packman-repo
+
+:: We use *setx* here so that the variable is persisted in the user environment
+@echo Setting user environment variable PM_PACKAGES_ROOT to %PM_PACKAGES_ROOT%
+@setx PM_PACKAGES_ROOT %PM_PACKAGES_ROOT%
+@if errorlevel 1 goto ERROR
+
+:: The above doesn't work properly from a build step in VisualStudio because a separate process is
+:: spawned for it so it will be lost for subsequent compilation steps - VisualStudio must
+:: be launched from a new process. We catch this odd-ball case here:
+@if defined PM_DISABLE_VS_WARNING goto ENSURE_DIR
+@if not defined VSLANG goto ENSURE_DIR
+@echo The above is a once-per-computer operation. Unfortunately VisualStudio cannot pick up environment change
+@echo unless *VisualStudio is RELAUNCHED*.
+@echo If you are launching VisualStudio from command line or command line utility make sure
+@echo you have a fresh launch environment (relaunch the command line or utility).
+@echo If you are using 'linkPath' and referring to packages via local folder links you can safely ignore this warning.
+@echo You can disable this warning by setting the environment variable PM_DISABLE_VS_WARNING.
+@echo.
+
+:: Check for the directory that we need. Note that mkdir will create any directories
+:: that may be needed in the path
+:ENSURE_DIR
+@if not exist "%PM_PACKAGES_ROOT%" (
+ @echo Creating directory %PM_PACKAGES_ROOT%
+ @mkdir "%PM_PACKAGES_ROOT%"
+ @if errorlevel 1 goto ERROR_MKDIR_PACKAGES_ROOT
+)
+
+:: The Python interpreter may already be externally configured
+@if defined PM_PYTHON_EXT (
+ @set PM_PYTHON=%PM_PYTHON_EXT%
+ @goto PACKMAN
+)
+
+@set PM_PYTHON_DIR=%PM_PACKAGES_ROOT%\python\2.7.6-windows-x86
+@set PM_PYTHON=%PM_PYTHON_DIR%\python.exe
+
+@if exist "%PM_PYTHON%" goto PACKMAN
+
+@for /f "delims=" %%a in ('powershell -ExecutionPolicy ByPass -NoLogo -NoProfile -File "%~dp0\generate_temp_file_name.ps1"') do @set TEMP_FILE_NAME=%%a
+@set TARGET=%TEMP_FILE_NAME%.exe
+@call "%~dp0fetch_file_from_s3.cmd" %PM_PYTHON_PACKAGE% %TARGET%
+@if errorlevel 1 goto ERROR
+
+@echo Unpacking ...
+@%TARGET% -o"%PM_PYTHON_DIR%" -y 1> nul
+@if errorlevel 1 goto ERROR
+
+@del %TARGET%
+
+:PACKMAN
+:: The packman module may already be externally configured
+@if defined PM_MODULE_EXT (
+ @set PM_MODULE=%PM_MODULE_EXT%
+ @goto END
+)
+
+@set PM_MODULE_DIR=%PM_PACKAGES_ROOT%\packman-common\%PM_PACKMAN_VERSION%
+@set PM_MODULE=%PM_MODULE_DIR%\packman.py
+
+@if exist "%PM_MODULE%" goto END
+
+@set PM_MODULE_PACKAGE=packman-common@%PM_PACKMAN_VERSION%.zip
+@for /f "delims=" %%a in ('powershell -ExecutionPolicy ByPass -NoLogo -NoProfile -File "%~dp0\generate_temp_file_name.ps1"') do @set TEMP_FILE_NAME=%%a
+@set TARGET=%TEMP_FILE_NAME%
+@call "%~dp0fetch_file_from_s3.cmd" %PM_MODULE_PACKAGE% %TARGET%
+@if errorlevel 1 goto ERROR
+
+@echo Unpacking ...
+@"%PM_PYTHON%" "%~dp0\install_package.py" %TARGET% "%PM_MODULE_DIR%"
+@if errorlevel 1 goto ERROR
+
+@del %TARGET%
+
+@goto END
+
+:ERROR_MKDIR_PACKAGES_ROOT
+@echo Failed to automatically create packman packages repo at %PM_PACKAGES_ROOT%.
+@echo Please set a location explicitly that packman has permission to write to, by issuing:
+@echo.
+@echo setx PM_PACKAGES_ROOT {path-you-choose-for-storing-packman-packages-locally}
+@echo.
+@echo Then launch a new command console for the changes to take effect and run packman command again.
+@exit /B 1
+
+:ERROR
+@echo !!! Failure while configuring local machine :( !!!
+@exit /B 1
+
+:END
diff --git a/PxShared/buildtools/packman/win-bootstrap/fetch_file_from_gtl.ps1 b/PxShared/buildtools/packman/win-bootstrap/fetch_file_from_gtl.ps1
new file mode 100644
index 0000000..d4ae86b
--- /dev/null
+++ b/PxShared/buildtools/packman/win-bootstrap/fetch_file_from_gtl.ps1
@@ -0,0 +1,43 @@
+param(
+[Parameter(Mandatory=$true)][string]$sourceGUID=$null,
+[string]$output="out.exe"
+)
+$source = "http://nvgtl/download/" + $sourceGUID
+$filename = $output
+$key64 = 'QHV0ME1AdDNHVEwkY3IxcHQk'
+$key = [System.Text.Encoding]::GetEncoding(1252).GetString([Convert]::FromBase64String($key64))
+$key = $key | ConvertTo-SecureString -asPlainText -Force
+$credential = New-Object System.Management.Automation.PSCredential('svcgtlautomate', $key)
+$cache = New-Object System.Net.CredentialCache
+$cache.Add( "http://sso.nvidia.com", "NTLM", $credential)
+
+$req = [System.Net.httpwebrequest]::Create($source)
+$req.cookiecontainer = New-Object System.net.CookieContainer
+$req.Credentials = $cache
+Write-Host "Connecting to NVGTL ..."
+$res = $req.GetResponse()
+
+if($res.StatusCode -eq "OK") {
+ Write-Host "Downloading ..."
+ [int]$goal = $res.ContentLength
+ $reader = $res.GetResponseStream()
+ $writer = new-object System.IO.FileStream $fileName, "Create"
+ [byte[]]$buffer = new-object byte[] 4096
+ [int]$total = [int]$count = 0
+ do
+ {
+ $count = $reader.Read($buffer, 0, $buffer.Length);
+ $writer.Write($buffer, 0, $count);
+ $total += $count
+ if($goal -gt 0) {
+ Write-Progress "Downloading $url" "Saving $total of $goal" -id 0 -percentComplete (($total/$goal)*100)
+ } else {
+ Write-Progress "Downloading $url" "Saving $total bytes..." -id 0
+ }
+ } while ($count -gt 0)
+
+ $reader.Close()
+ $writer.Flush()
+ $writer.Close()
+}
+
diff --git a/PxShared/buildtools/packman/win-bootstrap/fetch_file_from_s3.cmd b/PxShared/buildtools/packman/win-bootstrap/fetch_file_from_s3.cmd
new file mode 100644
index 0000000..550040f
--- /dev/null
+++ b/PxShared/buildtools/packman/win-bootstrap/fetch_file_from_s3.cmd
@@ -0,0 +1,19 @@
+:: You need to specify <package-name> <target-name> as input to this command
+
+@set PACKAGE_NAME=%1
+@set TARGET=%2
+
+@echo Fetching %PACKAGE_NAME% from s3 ...
+
+@powershell -ExecutionPolicy ByPass -NoLogo -NoProfile -File "%~dp0fetch_file_from_s3.ps1" -sourceName %PACKAGE_NAME% -output %TARGET%
+:: A bug in powershell prevents the errorlevel code from being set when using the -File execution option
+:: We must therefore do our own failure analysis, basically make sure the file exists and is larger than 0 bytes:
+@if not exist %TARGET% goto ERROR_DOWNLOAD_FAILED
+@if %~z2==0 goto ERROR_DOWNLOAD_FAILED
+
+@exit /b 0
+
+:ERROR_DOWNLOAD_FAILED
+@echo Failed to download file from %1
+@echo Most likely because endpoint cannot be reached (VPN connection down?)
+@exit /b 1 \ No newline at end of file
diff --git a/PxShared/buildtools/packman/win-bootstrap/fetch_file_from_s3.ps1 b/PxShared/buildtools/packman/win-bootstrap/fetch_file_from_s3.ps1
new file mode 100644
index 0000000..ad4c7d4
--- /dev/null
+++ b/PxShared/buildtools/packman/win-bootstrap/fetch_file_from_s3.ps1
@@ -0,0 +1,60 @@
+param(
+[Parameter(Mandatory=$true)][string]$sourceName=$null,
+[string]$output="out.exe"
+)
+$source = "http://packman.s3.amazonaws.com/" + $sourceName
+$filename = $output
+
+$triesLeft = 3
+
+do
+{
+ $triesLeft -= 1
+ $req = [System.Net.httpwebrequest]::Create($source)
+ $req.cookiecontainer = New-Object System.net.CookieContainer
+
+ try
+ {
+ Write-Host "Connecting to S3 ..."
+ $res = $req.GetResponse()
+ if($res.StatusCode -eq "OK") {
+ Write-Host "Downloading ..."
+ [int]$goal = $res.ContentLength
+ $reader = $res.GetResponseStream()
+ $writer = new-object System.IO.FileStream $fileName, "Create"
+ [byte[]]$buffer = new-object byte[] 4096
+ [int]$total = [int]$count = 0
+ do
+ {
+ $count = $reader.Read($buffer, 0, $buffer.Length);
+ $writer.Write($buffer, 0, $count);
+ $total += $count
+ if($goal -gt 0) {
+ Write-Progress "Downloading $url" "Saving $total of $goal" -id 0 -percentComplete (($total/$goal)*100)
+ } else {
+ Write-Progress "Downloading $url" "Saving $total bytes..." -id 0
+ }
+ } while ($count -gt 0)
+
+ $triesLeft = 0
+ }
+ }
+ catch
+ {
+ Write-Host "Error connecting to S3!"
+ Write-Host $_.Exception|format-list -force
+ }
+ finally
+ {
+ if ($reader)
+ {
+ $reader.Close()
+ }
+ if ($writer)
+ {
+ $writer.Flush()
+ $writer.Close()
+ }
+ }
+} while ($triesLeft -gt 0)
+
diff --git a/PxShared/buildtools/packman/win-bootstrap/fetch_file_from_url.ps1 b/PxShared/buildtools/packman/win-bootstrap/fetch_file_from_url.ps1
new file mode 100644
index 0000000..9abaa46
--- /dev/null
+++ b/PxShared/buildtools/packman/win-bootstrap/fetch_file_from_url.ps1
@@ -0,0 +1,37 @@
+param(
+[Parameter(Mandatory=$true)][string]$sourceUrl=$null,
+[Parameter(Mandatory=$true)][string]$output=$null
+)
+$source = $sourceUrl
+$filename = $output
+
+$req = [System.Net.httpwebrequest]::Create($source)
+$req.cookiecontainer = New-Object System.net.CookieContainer
+
+Write-Host "Connecting to $source ..."
+$res = $req.GetResponse()
+
+if($res.StatusCode -eq "OK") {
+ Write-Host "Downloading ..."
+ [int]$goal = $res.ContentLength
+ $reader = $res.GetResponseStream()
+ $writer = new-object System.IO.FileStream $fileName, "Create"
+ [byte[]]$buffer = new-object byte[] 4096
+ [int]$total = [int]$count = 0
+ do
+ {
+ $count = $reader.Read($buffer, 0, $buffer.Length);
+ $writer.Write($buffer, 0, $count);
+ $total += $count
+ if($goal -gt 0) {
+ Write-Progress "Downloading $url" "Saving $total of $goal" -id 0 -percentComplete (($total/$goal)*100)
+ } else {
+ Write-Progress "Downloading $url" "Saving $total bytes..." -id 0
+ }
+ } while ($count -gt 0)
+
+ $reader.Close()
+ $writer.Flush()
+ $writer.Close()
+}
+
diff --git a/PxShared/buildtools/packman/win-bootstrap/generate_temp_file_name.ps1 b/PxShared/buildtools/packman/win-bootstrap/generate_temp_file_name.ps1
new file mode 100644
index 0000000..896cf14
--- /dev/null
+++ b/PxShared/buildtools/packman/win-bootstrap/generate_temp_file_name.ps1
@@ -0,0 +1,2 @@
+$out = [System.IO.Path]::GetTempFileName()
+Write-Host $out \ No newline at end of file
diff --git a/PxShared/buildtools/packman/win-bootstrap/install_package.py b/PxShared/buildtools/packman/win-bootstrap/install_package.py
new file mode 100644
index 0000000..ce50a3e
--- /dev/null
+++ b/PxShared/buildtools/packman/win-bootstrap/install_package.py
@@ -0,0 +1,39 @@
+import logging
+import zipfile
+import tempfile
+import sys
+import shutil
+
+__author__ = 'hfannar'
+logging.basicConfig(level=logging.WARNING, format="%(message)s")
+logger = logging.getLogger('install_package')
+
+
+class TemporaryDirectory:
+ def __init__(self):
+ self.path = None
+
+ def __enter__(self):
+ self.path = tempfile.mkdtemp()
+ return self.path
+
+ def __exit__(self, type, value, traceback ):
+ # Remove temporary data created
+ shutil.rmtree(self.path)
+
+
+def install_package(package_src_path, package_dst_path):
+ with zipfile.ZipFile(package_src_path, allowZip64=True) as zip_file, TemporaryDirectory() as temp_dir:
+ zip_file.extractall(temp_dir)
+ # Recursively copy (temp_dir will be automatically cleaned up on exit)
+ try:
+ # Recursive copy is needed because both package name and version folder could be missing in
+ # target directory:
+ shutil.copytree(temp_dir, package_dst_path)
+ except OSError, exc:
+ logger.warning("Directory %s already present, packaged installation aborted" % package_dst_path)
+ else:
+ logger.info("Package successfully installed to %s" % package_dst_path)
+
+
+install_package(sys.argv[1], sys.argv[2]) \ No newline at end of file
diff --git a/PxShared/buildtools/steps/build_all_linux.sh b/PxShared/buildtools/steps/build_all_linux.sh
new file mode 100644
index 0000000..167912f
--- /dev/null
+++ b/PxShared/buildtools/steps/build_all_linux.sh
@@ -0,0 +1,22 @@
+#!/bin/bash +x
+
+set -e
+
+# get number of CPU cores
+if [ -f /proc/cpuinfo ]; then
+ CPUS=`grep processor /proc/cpuinfo | wc -l`
+else
+ CPUS=1
+fi
+
+# Stackoverflow suggests jobs count of (CPU cores + 1) as a respctively good number!
+JOBS=`expr $CPUS + 1`
+
+# run make for all configs
+pushd "$(dirname "$0")/../../compiler/linux-debug-clang"
+make -j$JOBS || exit 1
+popd
+
+pushd "$(dirname "$0")/../../compiler/linux-release-clang"
+make -j$JOBS || exit 1
+popd
diff --git a/PxShared/buildtools/steps/build_all_mac.sh b/PxShared/buildtools/steps/build_all_mac.sh
new file mode 100644
index 0000000..57437a0
--- /dev/null
+++ b/PxShared/buildtools/steps/build_all_mac.sh
@@ -0,0 +1,29 @@
+#!/bin/bash +x
+
+# exit script on first error
+set -e
+
+# get number of CPU cores
+CPUS=`sysctl -n hw.ncpu`
+
+# Stackoverflow suggests jobs count of (CPU cores + 1) as a respctively good number!
+JOBS=`expr $CPUS + 1`
+
+build_config()
+{
+ CONFIG=$1
+ echo "*** Building: $CONFIG ***"
+ pushd "$(dirname "$0")/../../compiler/$CONFIG"
+ make -j$JOBS install
+ popd
+}
+
+# run make for all configs
+build_config "osx32-checked"
+build_config "osx32-debug"
+build_config "osx32-profile"
+build_config "osx32-release"
+build_config "osx64-checked"
+build_config "osx64-debug"
+build_config "osx64-profile"
+build_config "osx64-release"
diff --git a/PxShared/buildtools/steps/build_all_windows.bat b/PxShared/buildtools/steps/build_all_windows.bat
new file mode 100644
index 0000000..5708927
--- /dev/null
+++ b/PxShared/buildtools/steps/build_all_windows.bat
@@ -0,0 +1,12 @@
+@cmd /c "%~dp0build_all_windows_vc12.bat"
+@if %ERRORLEVEL% neq 0 goto ERROR
+
+@cmd /c "%~dp0build_all_windows_vc14.bat"
+@if %ERRORLEVEL% neq 0 goto ERROR
+
+:: Success
+@exit /B 0
+
+:ERROR
+@echo !!! Failure while building for Windows!!!
+@exit /B 1
diff --git a/PxShared/buildtools/steps/build_all_windows_vc12.bat b/PxShared/buildtools/steps/build_all_windows_vc12.bat
new file mode 100644
index 0000000..695c20c
--- /dev/null
+++ b/PxShared/buildtools/steps/build_all_windows_vc12.bat
@@ -0,0 +1,60 @@
+:: Setup VS2013 build environment
+@call "%VS120COMNTOOLS%VsdevCmd.bat"
+
+:: Note that we use /build rather than /rebuild because cmake cleans the directories when we
+:: generate the projects (making /rebuild redundant since it's basically /clean + /build).
+:: By using /build these bat files can be useful during regular development (to verify changes)
+:: Will rename them from rebuild to build at a future point in time.
+
+@set ROOT_PATH=%~dp0..\..\compiler
+
+@set SOLUTION_PATH=vc12win32-mt\PxShared.sln
+@call :BUILD
+@if %ERRORLEVEL% neq 0 goto ERROR
+
+@set SOLUTION_PATH=vc12win32-md\PxShared.sln
+@call :BUILD
+@if %ERRORLEVEL% neq 0 goto ERROR
+
+@set SOLUTION_PATH=vc12win64-mt\PxShared.sln
+@call :BUILD
+@if %ERRORLEVEL% neq 0 goto ERROR
+
+@set SOLUTION_PATH=vc12win64-md\PxShared.sln
+@call :BUILD
+@if %ERRORLEVEL% neq 0 goto ERROR
+
+:: Success
+@exit /B 0
+
+:ERROR
+@echo Failure while building *Windows vc12* targets!
+@exit /B 1
+
+:BUILD
+@echo | set /p dummyName=** Building %SOLUTION_PATH% debug ... **
+@devenv "%ROOT_PATH%\%SOLUTION_PATH%" /build "debug" /Project INSTALL
+@echo ** End of %SOLUTION_PATH% debug **
+@echo.
+@if %ERRORLEVEL% neq 0 goto ERROR
+
+@echo | set /p dummyName=** Building %SOLUTION_PATH% profile ... **
+@devenv "%ROOT_PATH%\%SOLUTION_PATH%" /build "profile" /Project INSTALL
+@echo ** End of %SOLUTION_PATH% profile **
+@echo.
+@if %ERRORLEVEL% neq 0 goto ERROR
+
+@echo | set /p dummyName=** Building %SOLUTION_PATH% profile ... **
+@devenv "%ROOT_PATH%\%SOLUTION_PATH%" /build "checked" /Project INSTALL
+@echo ** End of %SOLUTION_PATH% checked **
+@echo.
+@if %ERRORLEVEL% neq 0 goto ERROR
+
+@echo | set /p dummyName=** Building %SOLUTION_PATH% profile ... **
+@devenv "%ROOT_PATH%\%SOLUTION_PATH%" /build "release" /Project INSTALL
+@echo ** End of %SOLUTION_PATH% release **
+@echo.
+@if %ERRORLEVEL% neq 0 goto ERROR
+
+
+@exit /B \ No newline at end of file
diff --git a/PxShared/buildtools/steps/build_all_windows_vc14.bat b/PxShared/buildtools/steps/build_all_windows_vc14.bat
new file mode 100644
index 0000000..3baec1d
--- /dev/null
+++ b/PxShared/buildtools/steps/build_all_windows_vc14.bat
@@ -0,0 +1,61 @@
+:: Setup VS2015 build environment
+@call "%VS140COMNTOOLS%VsdevCmd.bat"
+
+:: Note that we use /build rather than /rebuild because cmake cleans the directories when we
+:: generate the projects (making /rebuild redundant since it's basically /clean + /build).
+:: By using /build these bat files can be useful during regular development (to verify changes)
+:: Will rename them from rebuild to build at a future point in time.
+
+@set ROOT_PATH=%~dp0..\..\compiler
+
+:: Windows 'all'
+@set SOLUTION_PATH=vc14win32-mt\PxShared.sln
+@call :BUILD
+@if %ERRORLEVEL% neq 0 goto ERROR
+
+@set SOLUTION_PATH=vc14win32-md\PxShared.sln
+@call :BUILD
+@if %ERRORLEVEL% neq 0 goto ERROR
+
+@set SOLUTION_PATH=vc14win64-mt\PxShared.sln
+@call :BUILD
+@if %ERRORLEVEL% neq 0 goto ERROR
+
+@set SOLUTION_PATH=vc14win64-md\PxShared.sln
+@call :BUILD
+@if %ERRORLEVEL% neq 0 goto ERROR
+
+:: Success
+@exit /B 0
+
+:ERROR
+@echo Failure while building *Windows vc14* targets!
+@exit /B 1
+
+:BUILD
+@echo | set /p dummyName=** Building %SOLUTION_PATH% debug ... **
+@devenv "%ROOT_PATH%\%SOLUTION_PATH%" /build "debug" /Project INSTALL
+@echo ** End of %SOLUTION_PATH% debug **
+@echo.
+@if %ERRORLEVEL% neq 0 goto ERROR
+
+@echo | set /p dummyName=** Building %SOLUTION_PATH% profile ... **
+@devenv "%ROOT_PATH%\%SOLUTION_PATH%" /build "profile" /Project INSTALL
+@echo ** End of %SOLUTION_PATH% profile **
+@echo.
+@if %ERRORLEVEL% neq 0 goto ERROR
+
+@echo | set /p dummyName=** Building %SOLUTION_PATH% profile ... **
+@devenv "%ROOT_PATH%\%SOLUTION_PATH%" /build "checked" /Project INSTALL
+@echo ** End of %SOLUTION_PATH% checked **
+@echo.
+@if %ERRORLEVEL% neq 0 goto ERROR
+
+@echo | set /p dummyName=** Building %SOLUTION_PATH% profile ... **
+@devenv "%ROOT_PATH%\%SOLUTION_PATH%" /build "release" /Project INSTALL
+@echo ** End of %SOLUTION_PATH% release **
+@echo.
+@if %ERRORLEVEL% neq 0 goto ERROR
+
+
+@exit /B \ No newline at end of file
diff --git a/PxShared/buildtools/steps/package_all_linux.sh b/PxShared/buildtools/steps/package_all_linux.sh
new file mode 100644
index 0000000..2b3d7af
--- /dev/null
+++ b/PxShared/buildtools/steps/package_all_linux.sh
@@ -0,0 +1,28 @@
+#!/bin/bash +x
+
+set -e
+
+# build docs
+pushd "$(dirname "$0")/../../docs/_compile"
+./build_all.sh
+popd
+
+# remove all zips
+pushd "$(dirname "$0")/../.."
+rm -f *.zip
+popd
+
+# replace packman's config file to use s3 instead of gtl
+echo "s3" > "$(dirname "$0")/../packman/source.conf"
+
+# run packager
+if [ -z $1 ] ; then
+ OPTIONS=""
+else
+ OPTIONS="-v $1"
+ shift
+fi
+
+pushd "$(dirname "$0")/../packager/"
+./create_packages.sh linux $OPTIONS $@
+popd \ No newline at end of file
diff --git a/PxShared/buildtools/steps/package_all_mac.sh b/PxShared/buildtools/steps/package_all_mac.sh
new file mode 100644
index 0000000..e7566bc
--- /dev/null
+++ b/PxShared/buildtools/steps/package_all_mac.sh
@@ -0,0 +1,24 @@
+#!/bin/bash +x
+
+# exit script on first error
+set -e
+
+#@set ROOT_PATH=%~dp0..\..
+
+#::Remove old builds to keep things clean (important on build agents so we don't fill them up)
+#@del /q /f "%ROOT_PATH%\pxshared*.zip"
+
+# run packager
+if [ -z $1 ] ; then
+ VERSION=0
+else
+ VERSION=$1
+fi
+
+ROOT_PATH=$(dirname ${BASH_SOURCE})/../..
+PACKMAN_CMD=$ROOT_PATH/buildtools/packman/packman
+echo $PACKMAN_CMD
+
+source "$PACKMAN_CMD" install packman-packager 1.0.3
+echo "Launching create_packman_packages"
+python "$PM_packman_packager_PATH/create_packman_packages.py" "$ROOT_PATH/install" --output-dir="$ROOT_PATH" osx pxshared $VERSION "$PM_packman_packager_PATH/templates/CMakeConfigWrapperNIX.cmake" "$PM_packman_packager_PATH/templates/CMakeConfigVersionTemplate.cmake"
diff --git a/PxShared/buildtools/steps/package_all_ps4.bat b/PxShared/buildtools/steps/package_all_ps4.bat
new file mode 100644
index 0000000..87455e9
--- /dev/null
+++ b/PxShared/buildtools/steps/package_all_ps4.bat
@@ -0,0 +1,20 @@
+@set ROOT_PATH=%~dp0..\..
+
+::Remove old builds to keep things clean (important on build agents so we don't fill them up)
+@del /q /f "%ROOT_PATH%\blast_*.zip"
+
+@pushd "%ROOT_PATH%\docs\_compile"
+@call build_all.bat
+@popd
+@if %errorlevel% NEQ 0 goto :ERROR
+
+@set VERSION=%1
+@set OPTIONS=
+@if ["%VERSION%"] NEQ [""] set OPTIONS=-v %VERSION%
+
+@call "%ROOT_PATH%\buildtools\packager\create_packages.bat" %OPTIONS% ps4
+@if %ERRORLEVEL% EQU 0 goto :eof
+
+:ERROR
+@echo Failure during packaging for PS4!!!
+@exit /b 1 \ No newline at end of file
diff --git a/PxShared/buildtools/steps/package_all_windows.bat b/PxShared/buildtools/steps/package_all_windows.bat
new file mode 100644
index 0000000..e55cb1b
--- /dev/null
+++ b/PxShared/buildtools/steps/package_all_windows.bat
@@ -0,0 +1,26 @@
+@set ROOT_PATH=%~dp0..\..
+
+::Remove old builds to keep things clean (important on build agents so we don't fill them up)
+@del /q /f "%ROOT_PATH%\pxshared*.zip"
+
+@set VERSION=%1
+@set OPTIONS=
+@if ["%VERSION%"] EQU [""] set VERSION=0
+
+@call "%ROOT_PATH%\buildtools\packman\packman" install python 2.7.6-windows-x86
+@if %ERRORLEVEL% NEQ 0 goto :ERROR
+
+@call "%ROOT_PATH%\buildtools\packman\packman" install packman-packager 1.0
+@if %ERRORLEVEL% NEQ 0 goto :ERROR
+
+%PM_PYTHON% "%PM_packman_packager_PATH%/create_packman_packages.py" "%ROOT_PATH%\install" --output-dir="%ROOT_PATH%" vc14win pxshared %VERSION% "%PM_packman_packager_PATH%/templates/CMakeConfigWrapperWindows.cmake" "%PM_packman_packager_PATH%/templates/CMakeConfigVersionTemplate.cmake"
+@if %ERRORLEVEL% NEQ 0 goto :ERROR
+
+%PM_PYTHON% "%PM_packman_packager_PATH%/create_packman_packages.py" "%ROOT_PATH%\install" --output-dir="%ROOT_PATH%" vc12win pxshared %VERSION% "%PM_packman_packager_PATH%/templates/CMakeConfigWrapperWindows.cmake" "%PM_packman_packager_PATH%/templates/CMakeConfigVersionTemplate.cmake"
+@if %ERRORLEVEL% NEQ 0 goto :ERROR
+
+@goto :eof
+
+:ERROR
+@echo Failure during packaging for Windows!!!
+@exit /b 1
diff --git a/PxShared/buildtools/steps/package_all_xboxone.bat b/PxShared/buildtools/steps/package_all_xboxone.bat
new file mode 100644
index 0000000..86d5ff0
--- /dev/null
+++ b/PxShared/buildtools/steps/package_all_xboxone.bat
@@ -0,0 +1,20 @@
+@set ROOT_PATH=%~dp0..\..
+
+::Remove old builds to keep things clean (important on build agents so we don't fill them up)
+@del /q /f "%ROOT_PATH%\blast_*.zip"
+
+@pushd "%ROOT_PATH%\docs\_compile"
+@call build_all.bat
+@popd
+@if %errorlevel% NEQ 0 goto :ERROR
+
+@set VERSION=%1
+@set OPTIONS=
+@if ["%VERSION%"] NEQ [""] set OPTIONS=-v %VERSION%
+
+@call "%ROOT_PATH%\buildtools\packager\create_packages.bat" %OPTIONS% xboxone
+@if %ERRORLEVEL% EQU 0 goto :eof
+
+:ERROR
+@echo Failure during packaging for xboxone!!!
+@exit /b 1 \ No newline at end of file
diff --git a/PxShared/buildtools/steps/pre-build_linux.sh b/PxShared/buildtools/steps/pre-build_linux.sh
new file mode 100644
index 0000000..c6c3160
--- /dev/null
+++ b/PxShared/buildtools/steps/pre-build_linux.sh
@@ -0,0 +1,7 @@
+#!/bin/bash +x
+
+set -e
+pushd "$(dirname "$0")/../.."
+./generate_projects_linux.sh
+popd
+
diff --git a/PxShared/buildtools/steps/pre-build_mac.sh b/PxShared/buildtools/steps/pre-build_mac.sh
new file mode 100644
index 0000000..3094938
--- /dev/null
+++ b/PxShared/buildtools/steps/pre-build_mac.sh
@@ -0,0 +1,7 @@
+#!/bin/bash +x
+
+set -e
+pushd "$(dirname "$0")/../.."
+./generate_projects_mac.sh
+popd
+
diff --git a/PxShared/buildtools/steps/pre-build_ps4.bat b/PxShared/buildtools/steps/pre-build_ps4.bat
new file mode 100644
index 0000000..7be0ba8
--- /dev/null
+++ b/PxShared/buildtools/steps/pre-build_ps4.bat
@@ -0,0 +1,5 @@
+@pushd "%~dp0..\.."
+@call generate_projects_vc14ps4.bat
+@popd
+@if %errorlevel% NEQ 0 exit /b 1
+
diff --git a/PxShared/buildtools/steps/pre-build_windows.bat b/PxShared/buildtools/steps/pre-build_windows.bat
new file mode 100644
index 0000000..cd80520
--- /dev/null
+++ b/PxShared/buildtools/steps/pre-build_windows.bat
@@ -0,0 +1,6 @@
+@pushd "%~dp0..\.."
+@call generate_projects_win.bat vc12
+@call generate_projects_win.bat vc14
+@popd
+@if %errorlevel% NEQ 0 exit /b 1
+
diff --git a/PxShared/buildtools/steps/pre-build_xboxone.bat b/PxShared/buildtools/steps/pre-build_xboxone.bat
new file mode 100644
index 0000000..2e9c950
--- /dev/null
+++ b/PxShared/buildtools/steps/pre-build_xboxone.bat
@@ -0,0 +1,5 @@
+@pushd "%~dp0..\.."
+@call generate_projects_vc14xboxone.bat
+@popd
+@if %errorlevel% NEQ 0 exit /b 1
+
diff --git a/PxShared/buildtools/steps/rebuild_all_ps4.bat b/PxShared/buildtools/steps/rebuild_all_ps4.bat
new file mode 100644
index 0000000..405b4ea
--- /dev/null
+++ b/PxShared/buildtools/steps/rebuild_all_ps4.bat
@@ -0,0 +1,18 @@
+:: Setup VS2015 build environment
+@call "%VS140COMNTOOLS%VsdevCmd.bat"
+
+@set ROOT_PATH=%~dp0..\..\compiler
+:: Xbox targets
+@devenv "%ROOT_PATH%\vc14ps4-cmake\BlastAll.sln" /rebuild "debug"
+@if %ERRORLEVEL% neq 0 goto ERROR
+
+@devenv "%ROOT_PATH%\vc14ps4-cmake\BlastAll.sln" /rebuild "profile"
+@if %ERRORLEVEL% neq 0 goto ERROR
+
+
+:: Success
+@exit /B 0
+
+:ERROR
+@echo Failure while building *PS4* targets!
+@exit /B 1
diff --git a/PxShared/buildtools/steps/rebuild_all_xboxone.bat b/PxShared/buildtools/steps/rebuild_all_xboxone.bat
new file mode 100644
index 0000000..7c2d3f1
--- /dev/null
+++ b/PxShared/buildtools/steps/rebuild_all_xboxone.bat
@@ -0,0 +1,17 @@
+:: Setup VS2015 build environment
+@call "%VS140COMNTOOLS%VsdevCmd.bat"
+
+@set ROOT_PATH=%~dp0..\..\compiler
+:: Xbox targets
+@devenv "%ROOT_PATH%\vc14xboxone-cmake\BlastAll.sln" /rebuild "debug"
+@if %ERRORLEVEL% neq 0 goto ERROR
+
+@devenv "%ROOT_PATH%\vc14xboxone-cmake\BlastAll.sln" /rebuild "profile"
+@if %ERRORLEVEL% neq 0 goto ERROR
+
+:: Success
+@exit /B 0
+
+:ERROR
+@echo Failure while building *Xbox One* targets!
+@exit /B 1
diff --git a/PxShared/buildtools/steps/run_tests_linux.sh b/PxShared/buildtools/steps/run_tests_linux.sh
new file mode 100644
index 0000000..8770e39
--- /dev/null
+++ b/PxShared/buildtools/steps/run_tests_linux.sh
@@ -0,0 +1,11 @@
+#!/bin/bash +x
+
+set -e
+
+# run tests
+pushd "$(dirname "$0")/../../bin/linux64-gcc"
+./BlastUnitTestsDEBUG.elf --gtest_output=xml:BlastUnitTestsDEBUG.xml
+echo \#\#teamcity[importData type=\'gtest\' parseOutOfDate=\'true\' file=\'bin/linux64-gcc/BlastUnitTestsDEBUG.xml\']
+./BlastUnitTests.elf --gtest_output=xml:BlastUnitTests.xml
+echo \#\#teamcity[importData type=\'gtest\' parseOutOfDate=\'true\' file=\'bin/linux64-gcc/BlastUnitTests.xml\']
+popd
diff --git a/PxShared/buildtools/steps/run_tests_windows.bat b/PxShared/buildtools/steps/run_tests_windows.bat
new file mode 100644
index 0000000..b18e2b0
--- /dev/null
+++ b/PxShared/buildtools/steps/run_tests_windows.bat
@@ -0,0 +1,6 @@
+@set BIN_PATH=%~dp0..\..\bin\vc14win64-cmake
+@pushd "%BIN_PATH%"
+@call BlastUnitTestsDEBUG_x64.exe --gtest_output=xml:BlastUnitTestsDEBUG_x64.xml
+@echo ##teamcity[importData type='gtest' parseOutOfDate='true' file='%BIN_PATH%\BlastUnitTestsDEBUG_x64.xml']
+@popd
+@if %errorlevel% NEQ 0 exit /b 1 \ No newline at end of file