1
1

Compare commits

...

16 Commits

43 changed files with 3547 additions and 90 deletions

0
attached) Normal file
View File

View File

@@ -0,0 +1,823 @@
# This is the CMakeCache file.
# For build in directory: e:/code/blender-git/blender/cmake-build-debug
# It was generated by CMake: C:/Program Files/JetBrains/CLion 2020.1.1/bin/cmake/win/bin/cmake.exe
# You can edit this file to change values found and used by cmake.
# If you do not want to change any of the values, simply exit the editor.
# If you do want to change a value, simply edit, save, and exit the editor.
# The syntax for the file is as follows:
# KEY:TYPE=VALUE
# KEY is the name of a variable in the cache.
# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
# VALUE is the current value for the KEY.
########################
# EXTERNAL cache entries
########################
//Use instead of the current date for reproducible builds (empty
// string disables this option)
BUILDINFO_OVERRIDE_DATE:STRING=
//Use instead of the current time for reproducible builds (empty
// string disables this option)
BUILDINFO_OVERRIDE_TIME:STRING=
//Value Computed by CMake
Blender_BINARY_DIR:STATIC=E:/code/blender-git/blender/cmake-build-debug
//Value Computed by CMake
Blender_SOURCE_DIR:STATIC=E:/code/blender-git/blender
//Choose the type of build, options are: None Debug Release RelWithDebInfo
// MinSizeRel ...
CMAKE_BUILD_TYPE:STRING=Debug
//Id string of the compiler for the CodeBlocks IDE. Automatically
// detected when left empty
CMAKE_CODEBLOCKS_COMPILER_ID:STRING=
//The CodeBlocks executable
CMAKE_CODEBLOCKS_EXECUTABLE:FILEPATH=CMAKE_CODEBLOCKS_EXECUTABLE-NOTFOUND
//Additional command line arguments when CodeBlocks invokes make.
// Enter e.g. -j<some_number> to get parallel builds
CMAKE_CODEBLOCKS_MAKE_ARGUMENTS:STRING=
//Enable/Disable color output during build.
CMAKE_COLOR_MAKEFILE:BOOL=ON
//CXX compiler
CMAKE_CXX_COMPILER:FILEPATH=C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.25.28610/bin/Hostx86/x86/cl.exe
//Flags used by the CXX compiler during all build types.
CMAKE_CXX_FLAGS:STRING=/DWIN32 /D_WINDOWS /W3 /GR /EHsc
//Flags used by the CXX compiler during DEBUG builds.
CMAKE_CXX_FLAGS_DEBUG:STRING=/MDd /Zi /Ob0 /Od /RTC1
//Flags used by the CXX compiler during MINSIZEREL builds.
CMAKE_CXX_FLAGS_MINSIZEREL:STRING=/MD /O1 /Ob1 /DNDEBUG
CMAKE_CXX_FLAGS_RELEASE:STRING=/MD /O2 /Ob2 /DNDEBUG
//Flags used by the CXX compiler during RELWITHDEBINFO builds.
CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=/MD /Zi /O2 /Ob1 /DNDEBUG
//Libraries linked by default with all C++ applications.
CMAKE_CXX_STANDARD_LIBRARIES:STRING=kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib
//C compiler
CMAKE_C_COMPILER:FILEPATH=C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.25.28610/bin/Hostx86/x86/cl.exe
//Flags used by the C compiler during all build types.
CMAKE_C_FLAGS:STRING=/DWIN32 /D_WINDOWS /W3
//Flags used by the C compiler during DEBUG builds.
CMAKE_C_FLAGS_DEBUG:STRING=/MDd /Zi /Ob0 /Od /RTC1
//Flags used by the C compiler during MINSIZEREL builds.
CMAKE_C_FLAGS_MINSIZEREL:STRING=/MD /O1 /Ob1 /DNDEBUG
CMAKE_C_FLAGS_RELEASE:STRING=/MD /O2 /Ob2 /DNDEBUG
//Flags used by the C compiler during RELWITHDEBINFO builds.
CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=/MD /Zi /O2 /Ob1 /DNDEBUG
//Libraries linked by default with all C applications.
CMAKE_C_STANDARD_LIBRARIES:STRING=kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib
//Flags used by the linker during all build types.
CMAKE_EXE_LINKER_FLAGS:STRING=/machine:X86
//Flags used by the linker during DEBUG builds.
CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=/debug /INCREMENTAL
//Flags used by the linker during MINSIZEREL builds.
CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=/INCREMENTAL:NO
//Flags used by the linker during RELEASE builds.
CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=/INCREMENTAL:NO
//Flags used by the linker during RELWITHDEBINFO builds.
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=/debug /INCREMENTAL
//default install path
CMAKE_INSTALL_PREFIX:PATH=E:/code/blender-git/blender/cmake-build-debug/bin/${BUILD_TYPE}
//Path to a program.
CMAKE_LINKER:FILEPATH=C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.25.28610/bin/Hostx86/x86/link.exe
//Program used to build from makefiles.
CMAKE_MAKE_PROGRAM:STRING=nmake
//Flags used by the linker during the creation of modules during
// all build types.
CMAKE_MODULE_LINKER_FLAGS:STRING=/machine:X86
//Flags used by the linker during the creation of modules during
// DEBUG builds.
CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=/debug /INCREMENTAL
//Flags used by the linker during the creation of modules during
// MINSIZEREL builds.
CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=/INCREMENTAL:NO
//Flags used by the linker during the creation of modules during
// RELEASE builds.
CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=/INCREMENTAL:NO
//Flags used by the linker during the creation of modules during
// RELWITHDEBINFO builds.
CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=/debug /INCREMENTAL
//Path to a program.
CMAKE_MT:FILEPATH=C:/Program Files (x86)/Windows Kits/10/bin/10.0.18362.0/x86/mt.exe
//Value Computed by CMake
CMAKE_PROJECT_DESCRIPTION:STATIC=
//Value Computed by CMake
CMAKE_PROJECT_HOMEPAGE_URL:STATIC=
//Value Computed by CMake
CMAKE_PROJECT_NAME:STATIC=Blender
//RC compiler
CMAKE_RC_COMPILER:FILEPATH=C:/Program Files (x86)/Windows Kits/10/bin/10.0.18362.0/x86/rc.exe
//Flags for Windows Resource Compiler during all build types.
CMAKE_RC_FLAGS:STRING=-DWIN32
//Flags for Windows Resource Compiler during DEBUG builds.
CMAKE_RC_FLAGS_DEBUG:STRING=-D_DEBUG
//Flags for Windows Resource Compiler during MINSIZEREL builds.
CMAKE_RC_FLAGS_MINSIZEREL:STRING=
//Flags for Windows Resource Compiler during RELEASE builds.
CMAKE_RC_FLAGS_RELEASE:STRING=
//Flags for Windows Resource Compiler during RELWITHDEBINFO builds.
CMAKE_RC_FLAGS_RELWITHDEBINFO:STRING=
//Flags used by the linker during the creation of shared libraries
// during all build types.
CMAKE_SHARED_LINKER_FLAGS:STRING=/machine:X86
//Flags used by the linker during the creation of shared libraries
// during DEBUG builds.
CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=/debug /INCREMENTAL
//Flags used by the linker during the creation of shared libraries
// during MINSIZEREL builds.
CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=/INCREMENTAL:NO
//Flags used by the linker during the creation of shared libraries
// during RELEASE builds.
CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=/INCREMENTAL:NO
//Flags used by the linker during the creation of shared libraries
// during RELWITHDEBINFO builds.
CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=/debug /INCREMENTAL
//If set, runtime paths are not added when installing shared libraries,
// but are added when building.
CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
//If set, runtime paths are not added when using shared libraries.
CMAKE_SKIP_RPATH:BOOL=NO
//Flags used by the linker during the creation of static libraries
// during all build types.
CMAKE_STATIC_LINKER_FLAGS:STRING=/machine:X86
//Flags used by the linker during the creation of static libraries
// during DEBUG builds.
CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
//Flags used by the linker during the creation of static libraries
// during MINSIZEREL builds.
CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
//Flags used by the linker during the creation of static libraries
// during RELEASE builds.
CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
//Flags used by the linker during the creation of static libraries
// during RELWITHDEBINFO builds.
CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
//If this value is on, makefiles will be generated without the
// .SILENT directive, and all commands will be echoed to the console
// during the make. This is useful for debugging only. With Visual
// Studio IDE projects all commands are done without /nologo.
CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
//Use instead of the standard packagename (empty string disables
// this option)
CPACK_OVERRIDE_PACKAGENAME:STRING=
//CUDA architectures to build binaries for
CYCLES_CUDA_BINARIES_ARCH:STRING=sm_30;sm_35;sm_37;sm_50;sm_52;sm_60;sm_61;sm_70;sm_75;compute_75
//Git command line client
GIT_EXECUTABLE:FILEPATH=C:/Program Files/Git/cmd/git.exe
//Link with LLVM static libraries
LLVM_STATIC:BOOL=OFF
//Path to a file.
MSVC_REDIST_DIR:PATH=C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Redist/MSVC/14.25.28508
//Run given CMake script after installation process
POSTINSTALL_SCRIPT:BOOL=OFF
//Python executable to run unit tests
TEST_PYTHON_EXE:PATH=
//Path to a file.
WINDOWS_KITS_DIR:PATH=C:/Program Files (x86)/Windows Kits/10
//Include the files needed for debugging python scripts with visual
// studio 2017+.
WINDOWS_PYTHON_DEBUG:BOOL=OFF
//Organize the visual studio projects according to source folder
// structure.
WINDOWS_USE_VISUAL_STUDIO_PROJECT_FOLDERS:BOOL=ON
//Organize the source files in filters matching the source folders.
WINDOWS_USE_VISUAL_STUDIO_SOURCE_FOLDERS:BOOL=ON
//Enable Alembic Support
WITH_ALEMBIC:BOOL=ON
//Call abort() when raising an assertion through BLI_assert()
WITH_ASSERT_ABORT:BOOL=ON
//Build with blenders audio library (only disable if you know what
// you're doing!)
WITH_AUDASPACE:BOOL=ON
//Build blender (disable to build only the blender player)
WITH_BLENDER:BOOL=ON
//Enable features depending on boost
WITH_BOOST:BOOL=ON
//Include extra build details (only disable for development & faster
// builds)
WITH_BUILDINFO:BOOL=ON
//Enable Bullet (Physics Engine)
WITH_BULLET:BOOL=ON
//Enable Blenders own AVI file support (raw/jpeg)
WITH_CODEC_AVI:BOOL=ON
//Enable FFMPeg Support (http://ffmpeg.org)
WITH_CODEC_FFMPEG:BOOL=ON
//Enable libsndfile Support (http://www.mega-nerd.com/libsndfile)
WITH_CODEC_SNDFILE:BOOL=ON
//Enable the tile based nodal compositor
WITH_COMPOSITOR:BOOL=ON
//Enable SIMD instruction if they're detected on the host machine
WITH_CPU_SSE:BOOL=ON
//Dynamically load CUDA libraries at runtime
WITH_CUDA_DYNLOAD:BOOL=ON
//Enable GuardedAlloc for C++ memory allocation tracking (only
// enable for development)
WITH_CXX_GUARDEDALLOC:BOOL=OFF
//Enable Cycles Render Engine
WITH_CYCLES:BOOL=ON
//Build cubins with nvrtc based compiler instead of nvcc
WITH_CYCLES_CUBIN_COMPILER:BOOL=OFF
//Build Cycles CUDA binaries
WITH_CYCLES_CUDA_BINARIES:BOOL=OFF
//Build cubins one after another (useful on machines with limited
// RAM)
WITH_CYCLES_CUDA_BUILD_SERIAL:BOOL=OFF
//Build Cycles with extra debug capabilities
WITH_CYCLES_DEBUG:BOOL=OFF
//Enable Cycles CUDA compute support
WITH_CYCLES_DEVICE_CUDA:BOOL=ON
//Enable Cycles OpenCL compute support
WITH_CYCLES_DEVICE_OPENCL:BOOL=ON
//Enable Cycles OptiX support
WITH_CYCLES_DEVICE_OPTIX:BOOL=OFF
//Build Cycles with Embree support
WITH_CYCLES_EMBREE:BOOL=ON
//Build Cycles kernels with address sanitizer when WITH_COMPILER_ASAN
// is on, even if it's very slow
WITH_CYCLES_KERNEL_ASAN:BOOL=OFF
//Build Cycles with logging support
WITH_CYCLES_LOGGING:BOOL=ON
//Build Cycles with native kernel only (which fits current CPU,
// use for development only)
WITH_CYCLES_NATIVE_ONLY:BOOL=OFF
//Enable Cycles compute over network support (EXPERIMENTAL and
// unfinished)
WITH_CYCLES_NETWORK:BOOL=OFF
//Build Cycles with OSL support
WITH_CYCLES_OSL:BOOL=ON
//Build Cycles standalone application
WITH_CYCLES_STANDALONE:BOOL=OFF
//Build Cycles standalone with GUI
WITH_CYCLES_STANDALONE_GUI:BOOL=OFF
//Enable Draco mesh compression Python module (used for glTF)
WITH_DRACO:BOOL=ON
//Enable FFTW3 support (Used for smoke, ocean sim, and audio effects)
WITH_FFTW3:BOOL=ON
//Enable Freestyle (advanced edges rendering)
WITH_FREESTYLE:BOOL=ON
//Enable debugging output for the GHOST library
WITH_GHOST_DEBUG:BOOL=OFF
//Enable building Blender against SDL for windowing rather than
// the native APIs
WITH_GHOST_SDL:BOOL=OFF
//Switches to experimental copy of GLEW that has support for OpenGL
// ES. (temporary option for development purposes)
WITH_GLEW_ES:BOOL=OFF
//Link with the ANGLE library, an OpenGL ES 2.0 implementation
// based on Direct3D, instead of the system OpenGL library.
WITH_GL_ANGLE:BOOL=OFF
//Use the EGL OpenGL system library instead of the platform specific
// OpenGL system library (CGL, glX, or WGL)
WITH_GL_EGL:BOOL=OFF
//Support using OpenGL ES 2.0. (through either EGL or the AGL/WGL/XGL
// 'es20' profile)
WITH_GL_PROFILE_ES20:BOOL=OFF
//Enable GTest unit testing
WITH_GTESTS:BOOL=OFF
//Build without graphical support (renderfarm, server mode only)
WITH_HEADLESS:BOOL=OFF
//Enable ITASC IK solver (only disable for development & for incompatible
// C++ compilers)
WITH_IK_ITASC:BOOL=ON
//Enable Legacy IK solver (only disable for development)
WITH_IK_SOLVER:BOOL=ON
//Enable CINEON and DPX Image Support
WITH_IMAGE_CINEON:BOOL=ON
//Enable DDS Image Support
WITH_IMAGE_DDS:BOOL=ON
//Enable HDR Image Support
WITH_IMAGE_HDR:BOOL=ON
//Enable OpenEXR Support (http://www.openexr.com)
WITH_IMAGE_OPENEXR:BOOL=ON
//Enable OpenJpeg Support (http://www.openjpeg.org)
WITH_IMAGE_OPENJPEG:BOOL=ON
//Enable LibTIFF Support
WITH_IMAGE_TIFF:BOOL=ON
//Enable Input Method Editor (IME) for complex Asian character
// input
WITH_INPUT_IME:BOOL=ON
//Enable NDOF input devices (SpaceNavigator and friends)
WITH_INPUT_NDOF:BOOL=ON
//Enable I18N (International fonts and text)
WITH_INTERNATIONAL:BOOL=ON
//Enable Libmv structure from motion library
WITH_LIBMV:BOOL=ON
//Enable fixed-size schur specializations.
WITH_LIBMV_SCHUR_SPECIALIZATIONS:BOOL=ON
WITH_LLVM:BOOL=ON
//Enable best LZMA compression, (used for pointcache)
WITH_LZMA:BOOL=ON
//Enable fast LZO compression (used for pointcache)
WITH_LZO:BOOL=ON
//Enable malloc replacement (http://www.canonware.com/jemalloc)
WITH_MEM_JEMALLOC:BOOL=ON
//Enable extended valgrind support for better reporting
WITH_MEM_VALGRIND:BOOL=OFF
//Enable Mantaflow Fluid Simulation Framework
WITH_MOD_FLUID:BOOL=ON
//Enable Ocean Modifier
WITH_MOD_OCEANSIM:BOOL=ON
//Enable Remesh Modifier
WITH_MOD_REMESH:BOOL=ON
//Enable OpenAL Support (http://www.openal.org)
WITH_OPENAL:BOOL=ON
//Enable OpenCollada Support (http://www.opencollada.org)
WITH_OPENCOLLADA:BOOL=ON
//Enable OpenColorIO color management
WITH_OPENCOLORIO:BOOL=ON
//When off limits visibility of the opengl headers to just bf_gpu
// and gawain (temporary option for development purposes)
WITH_OPENGL:BOOL=ON
//Enable OpenGL UI drawing related unit testing (Experimental)
WITH_OPENGL_DRAW_TESTS:BOOL=OFF
//Enable OpenGL render related unit testing (Experimental)
WITH_OPENGL_RENDER_TESTS:BOOL=OFF
//Enable the OpenImageDenoise compositing node
WITH_OPENIMAGEDENOISE:BOOL=ON
//Enable OpenImageIO Support (http://www.openimageio.org)
WITH_OPENIMAGEIO:BOOL=ON
//Enable OpenMP (has to be supported by the compiler)
WITH_OPENMP:BOOL=ON
//Enable OpenSubdiv for surface subdivision
WITH_OPENSUBDIV:BOOL=ON
//Enable features relying on OpenVDB
WITH_OPENVDB:BOOL=ON
//Assume OpenVDB library has been compiled with version 3 ABI compatibility
WITH_OPENVDB_3_ABI_COMPATIBLE:BOOL=OFF
//Enable blosc compression for OpenVDB, only enable if OpenVDB
// was built with blosc support
WITH_OPENVDB_BLOSC:BOOL=ON
//Enable Embedded Python API (only disable for development)
WITH_PYTHON:BOOL=ON
//Copy system python into the blender install folder
WITH_PYTHON_INSTALL:BOOL=ON
//Copy system numpy into the blender install folder
WITH_PYTHON_INSTALL_NUMPY:BOOL=ON
//Enable building as a python module which runs without a user
// interface, like running regular blender in background mode (experimental,
// only enable for development), installs to PYTHON_SITE_PACKAGES
// (or CMAKE_INSTALL_PREFIX if WITH_INSTALL_PORTABLE is enabled).
WITH_PYTHON_MODULE:BOOL=OFF
//Enable internal API error checking to track invalid data to prevent
// crash on access (at the expense of some efficiency, only enable
// for development).
WITH_PYTHON_SAFETY:BOOL=OFF
//Disables execution of scripts within blend files by default
WITH_PYTHON_SECURITY:BOOL=ON
//Build with quadriflow remesher support
WITH_QUADRIFLOW:BOOL=ON
//Enable SDL for sound and joystick support
WITH_SDL:BOOL=ON
//Build with external audaspace library installed on the system
// (only enable if you know what you're doing!)
WITH_SYSTEM_AUDASPACE:BOOL=OFF
//Use the systems bullet library (currently unsupported due to
// missing features in upstream!)
WITH_SYSTEM_BULLET:BOOL=OFF
//Use system-wide Gflags instead of a bundled one
WITH_SYSTEM_GFLAGS:BOOL=OFF
//Use system-wide Glog instead of a bundled one
WITH_SYSTEM_GLOG:BOOL=OFF
//Enable features depending on TBB (OpenVDB, OpenImageDenoise,
// sculpt multithreading)
WITH_TBB:BOOL=ON
//Enable the TBB malloc replacement
WITH_TBB_MALLOC_PROXY:BOOL=ON
//Enable Universal Scene Description (USD) Support
WITH_USD:BOOL=ON
//Bundle the C runtime for install free distribution.
WITH_WINDOWS_BUNDLE_CRT:BOOL=ON
//Use find_package to locate libraries
WITH_WINDOWS_FIND_MODULES:BOOL=OFF
//Generate a pdb file for client side stacktraces
WITH_WINDOWS_PDB:BOOL=ON
//Use sccache to speed up builds (Ninja builder only)
WITH_WINDOWS_SCCACHE:BOOL=OFF
//Use a stripped PDB file
WITH_WINDOWS_STRIPPED_PDB:BOOL=ON
//Enable VR features through the OpenXR specification
WITH_XR_OPENXR:BOOL=ON
########################
# INTERNAL cache entries
########################
//ADVANCED property for variable: BUILDINFO_OVERRIDE_DATE
BUILDINFO_OVERRIDE_DATE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: BUILDINFO_OVERRIDE_TIME
BUILDINFO_OVERRIDE_TIME-ADVANCED:INTERNAL=1
//This is the directory where this CMakeCache.txt was created
CMAKE_CACHEFILE_DIR:INTERNAL=e:/code/blender-git/blender/cmake-build-debug
//Major version of cmake used to create the current loaded cache
CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
//Minor version of cmake used to create the current loaded cache
CMAKE_CACHE_MINOR_VERSION:INTERNAL=16
//Patch version of cmake used to create the current loaded cache
CMAKE_CACHE_PATCH_VERSION:INTERNAL=5
//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE
CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1
//Path to CMake executable.
CMAKE_COMMAND:INTERNAL=C:/Program Files/JetBrains/CLion 2020.1.1/bin/cmake/win/bin/cmake.exe
//Path to cpack program executable.
CMAKE_CPACK_COMMAND:INTERNAL=C:/Program Files/JetBrains/CLion 2020.1.1/bin/cmake/win/bin/cpack.exe
//Path to ctest program executable.
CMAKE_CTEST_COMMAND:INTERNAL=C:/Program Files/JetBrains/CLion 2020.1.1/bin/cmake/win/bin/ctest.exe
//ADVANCED property for variable: CMAKE_CXX_COMPILER
CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_FLAGS
CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG
CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL
CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE
CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO
CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_STANDARD_LIBRARIES
CMAKE_CXX_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_COMPILER
CMAKE_C_COMPILER-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_FLAGS
CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES
CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1
//Executable file format
CMAKE_EXECUTABLE_FORMAT:INTERNAL=Unknown
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//Name of external makefile project generator.
CMAKE_EXTRA_GENERATOR:INTERNAL=CodeBlocks
//CXX compiler system include directories
CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_INCLUDE_DIRS:INTERNAL=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\ATLMFC\include;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include;C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt;C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared;C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um;C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\winrt;C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\cppwinrt
//C compiler system include directories
CMAKE_EXTRA_GENERATOR_C_SYSTEM_INCLUDE_DIRS:INTERNAL=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\ATLMFC\include;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include;C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt;C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared;C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um;C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\winrt;C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\cppwinrt
//Name of generator.
CMAKE_GENERATOR:INTERNAL=NMake Makefiles
//Generator instance identifier.
CMAKE_GENERATOR_INSTANCE:INTERNAL=
//Name of generator platform.
CMAKE_GENERATOR_PLATFORM:INTERNAL=
//Name of generator toolset.
CMAKE_GENERATOR_TOOLSET:INTERNAL=
//Source directory with the top level CMakeLists.txt file for this
// project
CMAKE_HOME_DIRECTORY:INTERNAL=E:/code/blender-git/blender
//ADVANCED property for variable: CMAKE_LINKER
CMAKE_LINKER-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MAKE_PROGRAM
CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MT
CMAKE_MT-ADVANCED:INTERNAL=1
//number of local generators
CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
//Platform information initialized
CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
//ADVANCED property for variable: CMAKE_RC_COMPILER
CMAKE_RC_COMPILER-ADVANCED:INTERNAL=1
CMAKE_RC_COMPILER_WORKS:INTERNAL=1
//ADVANCED property for variable: CMAKE_RC_FLAGS
CMAKE_RC_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_RC_FLAGS_DEBUG
CMAKE_RC_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_RC_FLAGS_MINSIZEREL
CMAKE_RC_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_RC_FLAGS_RELEASE
CMAKE_RC_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_RC_FLAGS_RELWITHDEBINFO
CMAKE_RC_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//Path to CMake installation.
CMAKE_ROOT:INTERNAL=C:/Program Files/JetBrains/CLion 2020.1.1/bin/cmake/win/share/cmake-3.16
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SKIP_RPATH
CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CPACK_OVERRIDE_PACKAGENAME
CPACK_OVERRIDE_PACKAGENAME-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CYCLES_CUDA_BINARIES_ARCH
CYCLES_CUDA_BINARIES_ARCH-ADVANCED:INTERNAL=1
EXECUTABLE_OUTPUT_PATH:INTERNAL=E:/code/blender-git/blender/cmake-build-debug/bin
//Details about finding Git
FIND_PACKAGE_MESSAGE_DETAILS_Git:INTERNAL=[C:/Program Files/Git/cmd/git.exe][v2.26.0.windows.1()]
//ADVANCED property for variable: GIT_EXECUTABLE
GIT_EXECUTABLE-ADVANCED:INTERNAL=1
LIBRARY_OUTPUT_PATH:INTERNAL=E:/code/blender-git/blender/cmake-build-debug/lib
//ADVANCED property for variable: LLVM_STATIC
LLVM_STATIC-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MSVC_REDIST_DIR
MSVC_REDIST_DIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: POSTINSTALL_SCRIPT
POSTINSTALL_SCRIPT-ADVANCED:INTERNAL=1
//Test SUPPORT_SSE2_BUILD
SUPPORT_SSE2_BUILD:INTERNAL=1
//Result of TRY_COMPILE
SUPPORT_SSE2_BUILD_COMPILED:INTERNAL=TRUE
//Result of TRY_RUN
SUPPORT_SSE2_BUILD_EXITCODE:INTERNAL=0
//Test SUPPORT_SSE_BUILD
SUPPORT_SSE_BUILD:INTERNAL=1
//Result of TRY_COMPILE
SUPPORT_SSE_BUILD_COMPILED:INTERNAL=TRUE
//Result of TRY_RUN
SUPPORT_SSE_BUILD_EXITCODE:INTERNAL=0
TESTS_OUTPUT_DIR:INTERNAL=E:/code/blender-git/blender/cmake-build-debug/bin/tests/$<CONFIG>/
//ADVANCED property for variable: TEST_PYTHON_EXE
TEST_PYTHON_EXE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WINDOWS_KITS_DIR
WINDOWS_KITS_DIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WINDOWS_PYTHON_DEBUG
WINDOWS_PYTHON_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WINDOWS_USE_VISUAL_STUDIO_PROJECT_FOLDERS
WINDOWS_USE_VISUAL_STUDIO_PROJECT_FOLDERS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WINDOWS_USE_VISUAL_STUDIO_SOURCE_FOLDERS
WINDOWS_USE_VISUAL_STUDIO_SOURCE_FOLDERS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_ASSERT_ABORT
WITH_ASSERT_ABORT-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_AUDASPACE
WITH_AUDASPACE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_BLENDER
WITH_BLENDER-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_CPU_SSE
WITH_CPU_SSE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_CUDA_DYNLOAD
WITH_CUDA_DYNLOAD-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_CXX_GUARDEDALLOC
WITH_CXX_GUARDEDALLOC-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_CYCLES_CUBIN_COMPILER
WITH_CYCLES_CUBIN_COMPILER-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_CYCLES_CUDA_BUILD_SERIAL
WITH_CYCLES_CUDA_BUILD_SERIAL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_CYCLES_DEBUG
WITH_CYCLES_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_CYCLES_DEVICE_CUDA
WITH_CYCLES_DEVICE_CUDA-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_CYCLES_DEVICE_OPENCL
WITH_CYCLES_DEVICE_OPENCL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_CYCLES_KERNEL_ASAN
WITH_CYCLES_KERNEL_ASAN-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_CYCLES_LOGGING
WITH_CYCLES_LOGGING-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_CYCLES_NATIVE_ONLY
WITH_CYCLES_NATIVE_ONLY-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_CYCLES_NETWORK
WITH_CYCLES_NETWORK-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_GHOST_DEBUG
WITH_GHOST_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_GHOST_SDL
WITH_GHOST_SDL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_GLEW_ES
WITH_GLEW_ES-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_GL_ANGLE
WITH_GL_ANGLE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_GL_EGL
WITH_GL_EGL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_GL_PROFILE_ES20
WITH_GL_PROFILE_ES20-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_HEADLESS
WITH_HEADLESS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_LIBMV_SCHUR_SPECIALIZATIONS
WITH_LIBMV_SCHUR_SPECIALIZATIONS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_MEM_JEMALLOC
WITH_MEM_JEMALLOC-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_MEM_VALGRIND
WITH_MEM_VALGRIND-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_OPENGL
WITH_OPENGL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_OPENVDB_3_ABI_COMPATIBLE
WITH_OPENVDB_3_ABI_COMPATIBLE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_PYTHON
WITH_PYTHON-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_PYTHON_SAFETY
WITH_PYTHON_SAFETY-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_PYTHON_SECURITY
WITH_PYTHON_SECURITY-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_SYSTEM_AUDASPACE
WITH_SYSTEM_AUDASPACE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_SYSTEM_BULLET
WITH_SYSTEM_BULLET-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_SYSTEM_GFLAGS
WITH_SYSTEM_GFLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_SYSTEM_GLOG
WITH_SYSTEM_GLOG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_WINDOWS_BUNDLE_CRT
WITH_WINDOWS_BUNDLE_CRT-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_WINDOWS_FIND_MODULES
WITH_WINDOWS_FIND_MODULES-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_WINDOWS_PDB
WITH_WINDOWS_PDB-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_WINDOWS_SCCACHE
WITH_WINDOWS_SCCACHE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: WITH_WINDOWS_STRIPPED_PDB
WITH_WINDOWS_STRIPPED_PDB-ADVANCED:INTERNAL=1

View File

@@ -0,0 +1,76 @@
set(CMAKE_C_COMPILER "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.25.28610/bin/Hostx86/x86/cl.exe")
set(CMAKE_C_COMPILER_ARG1 "")
set(CMAKE_C_COMPILER_ID "MSVC")
set(CMAKE_C_COMPILER_VERSION "19.25.28614.0")
set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
set(CMAKE_C_COMPILER_WRAPPER "")
set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "90")
set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_std_99;c_std_11;c_function_prototypes;c_variadic_macros")
set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_variadic_macros")
set(CMAKE_C11_COMPILE_FEATURES "c_std_11")
set(CMAKE_C_PLATFORM_ID "Windows")
set(CMAKE_C_SIMULATE_ID "")
set(CMAKE_C_COMPILER_FRONTEND_VARIANT "")
set(CMAKE_C_SIMULATE_VERSION "")
set(CMAKE_C_COMPILER_ARCHITECTURE_ID X86)
set(MSVC_C_ARCHITECTURE_ID X86)
set(CMAKE_AR "")
set(CMAKE_C_COMPILER_AR "")
set(CMAKE_RANLIB "")
set(CMAKE_C_COMPILER_RANLIB "")
set(CMAKE_LINKER "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.25.28610/bin/Hostx86/x86/link.exe")
set(CMAKE_MT "C:/Program Files (x86)/Windows Kits/10/bin/10.0.18362.0/x86/mt.exe")
set(CMAKE_COMPILER_IS_GNUCC )
set(CMAKE_C_COMPILER_LOADED 1)
set(CMAKE_C_COMPILER_WORKS TRUE)
set(CMAKE_C_ABI_COMPILED TRUE)
set(CMAKE_COMPILER_IS_MINGW )
set(CMAKE_COMPILER_IS_CYGWIN )
if(CMAKE_COMPILER_IS_CYGWIN)
set(CYGWIN 1)
set(UNIX 1)
endif()
set(CMAKE_C_COMPILER_ENV_VAR "CC")
if(CMAKE_COMPILER_IS_MINGW)
set(MINGW 1)
endif()
set(CMAKE_C_COMPILER_ID_RUN 1)
set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
set(CMAKE_C_LINKER_PREFERENCE 10)
# Save compiler ABI information.
set(CMAKE_C_SIZEOF_DATA_PTR "4")
set(CMAKE_C_COMPILER_ABI "")
set(CMAKE_C_LIBRARY_ARCHITECTURE "")
if(CMAKE_C_SIZEOF_DATA_PTR)
set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
endif()
if(CMAKE_C_COMPILER_ABI)
set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
endif()
if(CMAKE_C_LIBRARY_ARCHITECTURE)
set(CMAKE_LIBRARY_ARCHITECTURE "")
endif()
set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
endif()
set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "")
set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "")
set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "")
set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")

View File

@@ -0,0 +1,88 @@
set(CMAKE_CXX_COMPILER "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.25.28610/bin/Hostx86/x86/cl.exe")
set(CMAKE_CXX_COMPILER_ARG1 "")
set(CMAKE_CXX_COMPILER_ID "MSVC")
set(CMAKE_CXX_COMPILER_VERSION "19.25.28614.0")
set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "")
set(CMAKE_CXX_COMPILER_WRAPPER "")
set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "14")
set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20")
set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters")
set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates")
set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates")
set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17")
set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20")
set(CMAKE_CXX_PLATFORM_ID "Windows")
set(CMAKE_CXX_SIMULATE_ID "")
set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "")
set(CMAKE_CXX_SIMULATE_VERSION "")
set(CMAKE_CXX_COMPILER_ARCHITECTURE_ID X86)
set(MSVC_CXX_ARCHITECTURE_ID X86)
set(CMAKE_AR "")
set(CMAKE_CXX_COMPILER_AR "")
set(CMAKE_RANLIB "")
set(CMAKE_CXX_COMPILER_RANLIB "")
set(CMAKE_LINKER "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.25.28610/bin/Hostx86/x86/link.exe")
set(CMAKE_MT "C:/Program Files (x86)/Windows Kits/10/bin/10.0.18362.0/x86/mt.exe")
set(CMAKE_COMPILER_IS_GNUCXX )
set(CMAKE_CXX_COMPILER_LOADED 1)
set(CMAKE_CXX_COMPILER_WORKS TRUE)
set(CMAKE_CXX_ABI_COMPILED TRUE)
set(CMAKE_COMPILER_IS_MINGW )
set(CMAKE_COMPILER_IS_CYGWIN )
if(CMAKE_COMPILER_IS_CYGWIN)
set(CYGWIN 1)
set(UNIX 1)
endif()
set(CMAKE_CXX_COMPILER_ENV_VAR "CXX")
if(CMAKE_COMPILER_IS_MINGW)
set(MINGW 1)
endif()
set(CMAKE_CXX_COMPILER_ID_RUN 1)
set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;CPP)
set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC)
foreach (lang C OBJC OBJCXX)
if (CMAKE_${lang}_COMPILER_ID_RUN)
foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS)
list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension})
endforeach()
endif()
endforeach()
set(CMAKE_CXX_LINKER_PREFERENCE 30)
set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1)
# Save compiler ABI information.
set(CMAKE_CXX_SIZEOF_DATA_PTR "4")
set(CMAKE_CXX_COMPILER_ABI "")
set(CMAKE_CXX_LIBRARY_ARCHITECTURE "")
if(CMAKE_CXX_SIZEOF_DATA_PTR)
set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}")
endif()
if(CMAKE_CXX_COMPILER_ABI)
set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}")
endif()
if(CMAKE_CXX_LIBRARY_ARCHITECTURE)
set(CMAKE_LIBRARY_ARCHITECTURE "")
endif()
set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "")
if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX)
set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}")
endif()
set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "")
set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "")
set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "")
set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")

View File

@@ -0,0 +1,6 @@
set(CMAKE_RC_COMPILER "C:/Program Files (x86)/Windows Kits/10/bin/10.0.18362.0/x86/rc.exe")
set(CMAKE_RC_COMPILER_ARG1 "")
set(CMAKE_RC_COMPILER_LOADED 1)
set(CMAKE_RC_SOURCE_FILE_EXTENSIONS rc;RC)
set(CMAKE_RC_OUTPUT_EXTENSION .res)
set(CMAKE_RC_COMPILER_ENV_VAR "RC")

View File

@@ -0,0 +1,15 @@
set(CMAKE_HOST_SYSTEM "Windows-10.0.18363")
set(CMAKE_HOST_SYSTEM_NAME "Windows")
set(CMAKE_HOST_SYSTEM_VERSION "10.0.18363")
set(CMAKE_HOST_SYSTEM_PROCESSOR "AMD64")
set(CMAKE_SYSTEM "Windows-10.0.18363")
set(CMAKE_SYSTEM_NAME "Windows")
set(CMAKE_SYSTEM_VERSION "10.0.18363")
set(CMAKE_SYSTEM_PROCESSOR "AMD64")
set(CMAKE_CROSSCOMPILING "FALSE")
set(CMAKE_SYSTEM_LOADED 1)

View File

@@ -0,0 +1,671 @@
#ifdef __cplusplus
# error "A C++ compiler has been selected for C."
#endif
#if defined(__18CXX)
# define ID_VOID_MAIN
#endif
#if defined(__CLASSIC_C__)
/* cv-qualifiers did not exist in K&R C */
# define const
# define volatile
#endif
/* Version number components: V=Version, R=Revision, P=Patch
Version date components: YYYY=Year, MM=Month, DD=Day */
#if defined(__INTEL_COMPILER) || defined(__ICC)
# define COMPILER_ID "Intel"
# if defined(_MSC_VER)
# define SIMULATE_ID "MSVC"
# endif
# if defined(__GNUC__)
# define SIMULATE_ID "GNU"
# endif
/* __INTEL_COMPILER = VRP */
# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
# if defined(__INTEL_COMPILER_UPDATE)
# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE)
# else
# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10)
# endif
# if defined(__INTEL_COMPILER_BUILD_DATE)
/* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
# endif
# if defined(_MSC_VER)
/* _MSC_VER = VVRR */
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
# endif
# if defined(__GNUC__)
# define SIMULATE_VERSION_MAJOR DEC(__GNUC__)
# elif defined(__GNUG__)
# define SIMULATE_VERSION_MAJOR DEC(__GNUG__)
# endif
# if defined(__GNUC_MINOR__)
# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__)
# endif
# if defined(__GNUC_PATCHLEVEL__)
# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
# endif
#elif defined(__PATHCC__)
# define COMPILER_ID "PathScale"
# define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
# if defined(__PATHCC_PATCHLEVEL__)
# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
# endif
#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__)
# define COMPILER_ID "Embarcadero"
# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF)
# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF)
# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF)
#elif defined(__BORLANDC__)
# define COMPILER_ID "Borland"
/* __BORLANDC__ = 0xVRR */
# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8)
# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF)
#elif defined(__WATCOMC__) && __WATCOMC__ < 1200
# define COMPILER_ID "Watcom"
/* __WATCOMC__ = VVRR */
# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100)
# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
# if (__WATCOMC__ % 10) > 0
# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
# endif
#elif defined(__WATCOMC__)
# define COMPILER_ID "OpenWatcom"
/* __WATCOMC__ = VVRP + 1100 */
# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100)
# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
# if (__WATCOMC__ % 10) > 0
# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
# endif
#elif defined(__SUNPRO_C)
# define COMPILER_ID "SunPro"
# if __SUNPRO_C >= 0x5100
/* __SUNPRO_C = 0xVRRP */
# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12)
# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF)
# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF)
# else
/* __SUNPRO_CC = 0xVRP */
# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8)
# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF)
# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF)
# endif
#elif defined(__HP_cc)
# define COMPILER_ID "HP"
/* __HP_cc = VVRRPP */
# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000)
# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100)
# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100)
#elif defined(__DECC)
# define COMPILER_ID "Compaq"
/* __DECC_VER = VVRRTPPPP */
# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000)
# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100)
# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000)
#elif defined(__IBMC__) && defined(__COMPILER_VER__)
# define COMPILER_ID "zOS"
/* __IBMC__ = VRP */
# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10)
#elif defined(__ibmxl__) && defined(__clang__)
# define COMPILER_ID "XLClang"
# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__)
# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__)
# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__)
# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__)
#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800
# define COMPILER_ID "XL"
/* __IBMC__ = VRP */
# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10)
#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800
# define COMPILER_ID "VisualAge"
/* __IBMC__ = VRP */
# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10)
#elif defined(__PGI)
# define COMPILER_ID "PGI"
# define COMPILER_VERSION_MAJOR DEC(__PGIC__)
# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
# if defined(__PGIC_PATCHLEVEL__)
# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
# endif
#elif defined(_CRAYC)
# define COMPILER_ID "Cray"
# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR)
# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
#elif defined(__TI_COMPILER_VERSION__)
# define COMPILER_ID "TI"
/* __TI_COMPILER_VERSION__ = VVVRRRPPP */
# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000)
# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000)
# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000)
#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version)
# define COMPILER_ID "Fujitsu"
#elif defined(__ghs__)
# define COMPILER_ID "GHS"
/* __GHS_VERSION_NUMBER = VVVVRP */
# ifdef __GHS_VERSION_NUMBER
# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100)
# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10)
# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10)
# endif
#elif defined(__TINYC__)
# define COMPILER_ID "TinyCC"
#elif defined(__BCC__)
# define COMPILER_ID "Bruce"
#elif defined(__SCO_VERSION__)
# define COMPILER_ID "SCO"
#elif defined(__ARMCC_VERSION) && !defined(__clang__)
# define COMPILER_ID "ARMCC"
#if __ARMCC_VERSION >= 1000000
/* __ARMCC_VERSION = VRRPPPP */
# define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000)
# define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100)
# define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
#else
/* __ARMCC_VERSION = VRPPPP */
# define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000)
# define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10)
# define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
#endif
#elif defined(__clang__) && defined(__apple_build_version__)
# define COMPILER_ID "AppleClang"
# if defined(_MSC_VER)
# define SIMULATE_ID "MSVC"
# endif
# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
# if defined(_MSC_VER)
/* _MSC_VER = VVRR */
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
# endif
# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__)
#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION)
# define COMPILER_ID "ARMClang"
# define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000)
# define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100)
# define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000)
# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION)
#elif defined(__clang__)
# define COMPILER_ID "Clang"
# if defined(_MSC_VER)
# define SIMULATE_ID "MSVC"
# endif
# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
# if defined(_MSC_VER)
/* _MSC_VER = VVRR */
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
# endif
#elif defined(__GNUC__)
# define COMPILER_ID "GNU"
# define COMPILER_VERSION_MAJOR DEC(__GNUC__)
# if defined(__GNUC_MINOR__)
# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
# endif
# if defined(__GNUC_PATCHLEVEL__)
# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
# endif
#elif defined(_MSC_VER)
# define COMPILER_ID "MSVC"
/* _MSC_VER = VVRR */
# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100)
# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100)
# if defined(_MSC_FULL_VER)
# if _MSC_VER >= 1400
/* _MSC_FULL_VER = VVRRPPPPP */
# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000)
# else
/* _MSC_FULL_VER = VVRRPPPP */
# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000)
# endif
# endif
# if defined(_MSC_BUILD)
# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD)
# endif
#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)
# define COMPILER_ID "ADSP"
#if defined(__VISUALDSPVERSION__)
/* __VISUALDSPVERSION__ = 0xVVRRPP00 */
# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24)
# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF)
# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF)
#endif
#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
# define COMPILER_ID "IAR"
# if defined(__VER__) && defined(__ICCARM__)
# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000)
# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000)
# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000)
# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__)
# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__))
# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100)
# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100))
# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__)
# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__)
# endif
#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC)
# define COMPILER_ID "SDCC"
# if defined(__SDCC_VERSION_MAJOR)
# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR)
# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR)
# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH)
# else
/* SDCC = VRP */
# define COMPILER_VERSION_MAJOR DEC(SDCC/100)
# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10)
# define COMPILER_VERSION_PATCH DEC(SDCC % 10)
# endif
/* These compilers are either not known or too old to define an
identification macro. Try to identify the platform and guess that
it is the native compiler. */
#elif defined(__hpux) || defined(__hpua)
# define COMPILER_ID "HP"
#else /* unknown compiler */
# define COMPILER_ID ""
#endif
/* Construct the string literal in pieces to prevent the source from
getting matched. Store it in a pointer rather than an array
because some compilers will just produce instructions to fill the
array rather than assigning a pointer to a static array. */
char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
#ifdef SIMULATE_ID
char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
#endif
#ifdef __QNXNTO__
char const* qnxnto = "INFO" ":" "qnxnto[]";
#endif
#if defined(__CRAYXE) || defined(__CRAYXC)
char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]";
#endif
#define STRINGIFY_HELPER(X) #X
#define STRINGIFY(X) STRINGIFY_HELPER(X)
/* Identify known platforms by name. */
#if defined(__linux) || defined(__linux__) || defined(linux)
# define PLATFORM_ID "Linux"
#elif defined(__CYGWIN__)
# define PLATFORM_ID "Cygwin"
#elif defined(__MINGW32__)
# define PLATFORM_ID "MinGW"
#elif defined(__APPLE__)
# define PLATFORM_ID "Darwin"
#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
# define PLATFORM_ID "Windows"
#elif defined(__FreeBSD__) || defined(__FreeBSD)
# define PLATFORM_ID "FreeBSD"
#elif defined(__NetBSD__) || defined(__NetBSD)
# define PLATFORM_ID "NetBSD"
#elif defined(__OpenBSD__) || defined(__OPENBSD)
# define PLATFORM_ID "OpenBSD"
#elif defined(__sun) || defined(sun)
# define PLATFORM_ID "SunOS"
#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
# define PLATFORM_ID "AIX"
#elif defined(__hpux) || defined(__hpux__)
# define PLATFORM_ID "HP-UX"
#elif defined(__HAIKU__)
# define PLATFORM_ID "Haiku"
#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
# define PLATFORM_ID "BeOS"
#elif defined(__QNX__) || defined(__QNXNTO__)
# define PLATFORM_ID "QNX"
#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
# define PLATFORM_ID "Tru64"
#elif defined(__riscos) || defined(__riscos__)
# define PLATFORM_ID "RISCos"
#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
# define PLATFORM_ID "SINIX"
#elif defined(__UNIX_SV__)
# define PLATFORM_ID "UNIX_SV"
#elif defined(__bsdos__)
# define PLATFORM_ID "BSDOS"
#elif defined(_MPRAS) || defined(MPRAS)
# define PLATFORM_ID "MP-RAS"
#elif defined(__osf) || defined(__osf__)
# define PLATFORM_ID "OSF1"
#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
# define PLATFORM_ID "SCO_SV"
#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
# define PLATFORM_ID "ULTRIX"
#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
# define PLATFORM_ID "Xenix"
#elif defined(__WATCOMC__)
# if defined(__LINUX__)
# define PLATFORM_ID "Linux"
# elif defined(__DOS__)
# define PLATFORM_ID "DOS"
# elif defined(__OS2__)
# define PLATFORM_ID "OS2"
# elif defined(__WINDOWS__)
# define PLATFORM_ID "Windows3x"
# else /* unknown platform */
# define PLATFORM_ID
# endif
#elif defined(__INTEGRITY)
# if defined(INT_178B)
# define PLATFORM_ID "Integrity178"
# else /* regular Integrity */
# define PLATFORM_ID "Integrity"
# endif
#else /* unknown platform */
# define PLATFORM_ID
#endif
/* For windows compilers MSVC and Intel we can determine
the architecture of the compiler being used. This is because
the compilers do not have flags that can change the architecture,
but rather depend on which compiler is being used
*/
#if defined(_WIN32) && defined(_MSC_VER)
# if defined(_M_IA64)
# define ARCHITECTURE_ID "IA64"
# elif defined(_M_X64) || defined(_M_AMD64)
# define ARCHITECTURE_ID "x64"
# elif defined(_M_IX86)
# define ARCHITECTURE_ID "X86"
# elif defined(_M_ARM64)
# define ARCHITECTURE_ID "ARM64"
# elif defined(_M_ARM)
# if _M_ARM == 4
# define ARCHITECTURE_ID "ARMV4I"
# elif _M_ARM == 5
# define ARCHITECTURE_ID "ARMV5I"
# else
# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM)
# endif
# elif defined(_M_MIPS)
# define ARCHITECTURE_ID "MIPS"
# elif defined(_M_SH)
# define ARCHITECTURE_ID "SHx"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
#elif defined(__WATCOMC__)
# if defined(_M_I86)
# define ARCHITECTURE_ID "I86"
# elif defined(_M_IX86)
# define ARCHITECTURE_ID "X86"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
# if defined(__ICCARM__)
# define ARCHITECTURE_ID "ARM"
# elif defined(__ICCRX__)
# define ARCHITECTURE_ID "RX"
# elif defined(__ICCRH850__)
# define ARCHITECTURE_ID "RH850"
# elif defined(__ICCRL78__)
# define ARCHITECTURE_ID "RL78"
# elif defined(__ICCRISCV__)
# define ARCHITECTURE_ID "RISCV"
# elif defined(__ICCAVR__)
# define ARCHITECTURE_ID "AVR"
# elif defined(__ICC430__)
# define ARCHITECTURE_ID "MSP430"
# elif defined(__ICCV850__)
# define ARCHITECTURE_ID "V850"
# elif defined(__ICC8051__)
# define ARCHITECTURE_ID "8051"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
#elif defined(__ghs__)
# if defined(__PPC64__)
# define ARCHITECTURE_ID "PPC64"
# elif defined(__ppc__)
# define ARCHITECTURE_ID "PPC"
# elif defined(__ARM__)
# define ARCHITECTURE_ID "ARM"
# elif defined(__x86_64__)
# define ARCHITECTURE_ID "x64"
# elif defined(__i386__)
# define ARCHITECTURE_ID "X86"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
#else
# define ARCHITECTURE_ID
#endif
/* Convert integer to decimal digit literals. */
#define DEC(n) \
('0' + (((n) / 10000000)%10)), \
('0' + (((n) / 1000000)%10)), \
('0' + (((n) / 100000)%10)), \
('0' + (((n) / 10000)%10)), \
('0' + (((n) / 1000)%10)), \
('0' + (((n) / 100)%10)), \
('0' + (((n) / 10)%10)), \
('0' + ((n) % 10))
/* Convert integer to hex digit literals. */
#define HEX(n) \
('0' + ((n)>>28 & 0xF)), \
('0' + ((n)>>24 & 0xF)), \
('0' + ((n)>>20 & 0xF)), \
('0' + ((n)>>16 & 0xF)), \
('0' + ((n)>>12 & 0xF)), \
('0' + ((n)>>8 & 0xF)), \
('0' + ((n)>>4 & 0xF)), \
('0' + ((n) & 0xF))
/* Construct a string literal encoding the version number components. */
#ifdef COMPILER_VERSION_MAJOR
char const info_version[] = {
'I', 'N', 'F', 'O', ':',
'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
COMPILER_VERSION_MAJOR,
# ifdef COMPILER_VERSION_MINOR
'.', COMPILER_VERSION_MINOR,
# ifdef COMPILER_VERSION_PATCH
'.', COMPILER_VERSION_PATCH,
# ifdef COMPILER_VERSION_TWEAK
'.', COMPILER_VERSION_TWEAK,
# endif
# endif
# endif
']','\0'};
#endif
/* Construct a string literal encoding the internal version number. */
#ifdef COMPILER_VERSION_INTERNAL
char const info_version_internal[] = {
'I', 'N', 'F', 'O', ':',
'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_',
'i','n','t','e','r','n','a','l','[',
COMPILER_VERSION_INTERNAL,']','\0'};
#endif
/* Construct a string literal encoding the version number components. */
#ifdef SIMULATE_VERSION_MAJOR
char const info_simulate_version[] = {
'I', 'N', 'F', 'O', ':',
's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[',
SIMULATE_VERSION_MAJOR,
# ifdef SIMULATE_VERSION_MINOR
'.', SIMULATE_VERSION_MINOR,
# ifdef SIMULATE_VERSION_PATCH
'.', SIMULATE_VERSION_PATCH,
# ifdef SIMULATE_VERSION_TWEAK
'.', SIMULATE_VERSION_TWEAK,
# endif
# endif
# endif
']','\0'};
#endif
/* Construct the string literal in pieces to prevent the source from
getting matched. Store it in a pointer rather than an array
because some compilers will just produce instructions to fill the
array rather than assigning a pointer to a static array. */
char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
#if !defined(__STDC__)
# if (defined(_MSC_VER) && !defined(__clang__)) \
|| (defined(__ibmxl__) || defined(__IBMC__))
# define C_DIALECT "90"
# else
# define C_DIALECT
# endif
#elif __STDC_VERSION__ >= 201000L
# define C_DIALECT "11"
#elif __STDC_VERSION__ >= 199901L
# define C_DIALECT "99"
#else
# define C_DIALECT "90"
#endif
const char* info_language_dialect_default =
"INFO" ":" "dialect_default[" C_DIALECT "]";
/*--------------------------------------------------------------------------*/
#ifdef ID_VOID_MAIN
void main() {}
#else
# if defined(__CLASSIC_C__)
int main(argc, argv) int argc; char *argv[];
# else
int main(int argc, char* argv[])
# endif
{
int require = 0;
require += info_compiler[argc];
require += info_platform[argc];
require += info_arch[argc];
#ifdef COMPILER_VERSION_MAJOR
require += info_version[argc];
#endif
#ifdef COMPILER_VERSION_INTERNAL
require += info_version_internal[argc];
#endif
#ifdef SIMULATE_ID
require += info_simulate[argc];
#endif
#ifdef SIMULATE_VERSION_MAJOR
require += info_simulate_version[argc];
#endif
#if defined(__CRAYXE) || defined(__CRAYXC)
require += info_cray[argc];
#endif
require += info_language_dialect_default[argc];
(void)argv;
return require;
}
#endif

View File

@@ -0,0 +1,660 @@
/* This source file must have a .cpp extension so that all C++ compilers
recognize the extension without flags. Borland does not know .cxx for
example. */
#ifndef __cplusplus
# error "A C compiler has been selected for C++."
#endif
/* Version number components: V=Version, R=Revision, P=Patch
Version date components: YYYY=Year, MM=Month, DD=Day */
#if defined(__COMO__)
# define COMPILER_ID "Comeau"
/* __COMO_VERSION__ = VRR */
# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100)
# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100)
#elif defined(__INTEL_COMPILER) || defined(__ICC)
# define COMPILER_ID "Intel"
# if defined(_MSC_VER)
# define SIMULATE_ID "MSVC"
# endif
# if defined(__GNUC__)
# define SIMULATE_ID "GNU"
# endif
/* __INTEL_COMPILER = VRP */
# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
# if defined(__INTEL_COMPILER_UPDATE)
# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE)
# else
# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10)
# endif
# if defined(__INTEL_COMPILER_BUILD_DATE)
/* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
# endif
# if defined(_MSC_VER)
/* _MSC_VER = VVRR */
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
# endif
# if defined(__GNUC__)
# define SIMULATE_VERSION_MAJOR DEC(__GNUC__)
# elif defined(__GNUG__)
# define SIMULATE_VERSION_MAJOR DEC(__GNUG__)
# endif
# if defined(__GNUC_MINOR__)
# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__)
# endif
# if defined(__GNUC_PATCHLEVEL__)
# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
# endif
#elif defined(__PATHCC__)
# define COMPILER_ID "PathScale"
# define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
# if defined(__PATHCC_PATCHLEVEL__)
# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
# endif
#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__)
# define COMPILER_ID "Embarcadero"
# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF)
# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF)
# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF)
#elif defined(__BORLANDC__)
# define COMPILER_ID "Borland"
/* __BORLANDC__ = 0xVRR */
# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8)
# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF)
#elif defined(__WATCOMC__) && __WATCOMC__ < 1200
# define COMPILER_ID "Watcom"
/* __WATCOMC__ = VVRR */
# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100)
# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
# if (__WATCOMC__ % 10) > 0
# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
# endif
#elif defined(__WATCOMC__)
# define COMPILER_ID "OpenWatcom"
/* __WATCOMC__ = VVRP + 1100 */
# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100)
# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
# if (__WATCOMC__ % 10) > 0
# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
# endif
#elif defined(__SUNPRO_CC)
# define COMPILER_ID "SunPro"
# if __SUNPRO_CC >= 0x5100
/* __SUNPRO_CC = 0xVRRP */
# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12)
# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF)
# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF)
# else
/* __SUNPRO_CC = 0xVRP */
# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8)
# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF)
# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF)
# endif
#elif defined(__HP_aCC)
# define COMPILER_ID "HP"
/* __HP_aCC = VVRRPP */
# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000)
# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100)
# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100)
#elif defined(__DECCXX)
# define COMPILER_ID "Compaq"
/* __DECCXX_VER = VVRRTPPPP */
# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000)
# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100)
# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000)
#elif defined(__IBMCPP__) && defined(__COMPILER_VER__)
# define COMPILER_ID "zOS"
/* __IBMCPP__ = VRP */
# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10)
#elif defined(__ibmxl__) && defined(__clang__)
# define COMPILER_ID "XLClang"
# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__)
# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__)
# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__)
# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__)
#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800
# define COMPILER_ID "XL"
/* __IBMCPP__ = VRP */
# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10)
#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800
# define COMPILER_ID "VisualAge"
/* __IBMCPP__ = VRP */
# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10)
#elif defined(__PGI)
# define COMPILER_ID "PGI"
# define COMPILER_VERSION_MAJOR DEC(__PGIC__)
# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
# if defined(__PGIC_PATCHLEVEL__)
# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
# endif
#elif defined(_CRAYC)
# define COMPILER_ID "Cray"
# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR)
# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
#elif defined(__TI_COMPILER_VERSION__)
# define COMPILER_ID "TI"
/* __TI_COMPILER_VERSION__ = VVVRRRPPP */
# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000)
# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000)
# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000)
#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version)
# define COMPILER_ID "Fujitsu"
#elif defined(__ghs__)
# define COMPILER_ID "GHS"
/* __GHS_VERSION_NUMBER = VVVVRP */
# ifdef __GHS_VERSION_NUMBER
# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100)
# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10)
# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10)
# endif
#elif defined(__SCO_VERSION__)
# define COMPILER_ID "SCO"
#elif defined(__ARMCC_VERSION) && !defined(__clang__)
# define COMPILER_ID "ARMCC"
#if __ARMCC_VERSION >= 1000000
/* __ARMCC_VERSION = VRRPPPP */
# define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000)
# define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100)
# define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
#else
/* __ARMCC_VERSION = VRPPPP */
# define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000)
# define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10)
# define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
#endif
#elif defined(__clang__) && defined(__apple_build_version__)
# define COMPILER_ID "AppleClang"
# if defined(_MSC_VER)
# define SIMULATE_ID "MSVC"
# endif
# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
# if defined(_MSC_VER)
/* _MSC_VER = VVRR */
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
# endif
# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__)
#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION)
# define COMPILER_ID "ARMClang"
# define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000)
# define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100)
# define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000)
# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION)
#elif defined(__clang__)
# define COMPILER_ID "Clang"
# if defined(_MSC_VER)
# define SIMULATE_ID "MSVC"
# endif
# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
# if defined(_MSC_VER)
/* _MSC_VER = VVRR */
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
# endif
#elif defined(__GNUC__) || defined(__GNUG__)
# define COMPILER_ID "GNU"
# if defined(__GNUC__)
# define COMPILER_VERSION_MAJOR DEC(__GNUC__)
# else
# define COMPILER_VERSION_MAJOR DEC(__GNUG__)
# endif
# if defined(__GNUC_MINOR__)
# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
# endif
# if defined(__GNUC_PATCHLEVEL__)
# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
# endif
#elif defined(_MSC_VER)
# define COMPILER_ID "MSVC"
/* _MSC_VER = VVRR */
# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100)
# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100)
# if defined(_MSC_FULL_VER)
# if _MSC_VER >= 1400
/* _MSC_FULL_VER = VVRRPPPPP */
# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000)
# else
/* _MSC_FULL_VER = VVRRPPPP */
# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000)
# endif
# endif
# if defined(_MSC_BUILD)
# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD)
# endif
#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)
# define COMPILER_ID "ADSP"
#if defined(__VISUALDSPVERSION__)
/* __VISUALDSPVERSION__ = 0xVVRRPP00 */
# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24)
# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF)
# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF)
#endif
#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
# define COMPILER_ID "IAR"
# if defined(__VER__) && defined(__ICCARM__)
# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000)
# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000)
# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000)
# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__)
# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__))
# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100)
# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100))
# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__)
# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__)
# endif
/* These compilers are either not known or too old to define an
identification macro. Try to identify the platform and guess that
it is the native compiler. */
#elif defined(__hpux) || defined(__hpua)
# define COMPILER_ID "HP"
#else /* unknown compiler */
# define COMPILER_ID ""
#endif
/* Construct the string literal in pieces to prevent the source from
getting matched. Store it in a pointer rather than an array
because some compilers will just produce instructions to fill the
array rather than assigning a pointer to a static array. */
char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
#ifdef SIMULATE_ID
char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
#endif
#ifdef __QNXNTO__
char const* qnxnto = "INFO" ":" "qnxnto[]";
#endif
#if defined(__CRAYXE) || defined(__CRAYXC)
char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]";
#endif
#define STRINGIFY_HELPER(X) #X
#define STRINGIFY(X) STRINGIFY_HELPER(X)
/* Identify known platforms by name. */
#if defined(__linux) || defined(__linux__) || defined(linux)
# define PLATFORM_ID "Linux"
#elif defined(__CYGWIN__)
# define PLATFORM_ID "Cygwin"
#elif defined(__MINGW32__)
# define PLATFORM_ID "MinGW"
#elif defined(__APPLE__)
# define PLATFORM_ID "Darwin"
#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
# define PLATFORM_ID "Windows"
#elif defined(__FreeBSD__) || defined(__FreeBSD)
# define PLATFORM_ID "FreeBSD"
#elif defined(__NetBSD__) || defined(__NetBSD)
# define PLATFORM_ID "NetBSD"
#elif defined(__OpenBSD__) || defined(__OPENBSD)
# define PLATFORM_ID "OpenBSD"
#elif defined(__sun) || defined(sun)
# define PLATFORM_ID "SunOS"
#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
# define PLATFORM_ID "AIX"
#elif defined(__hpux) || defined(__hpux__)
# define PLATFORM_ID "HP-UX"
#elif defined(__HAIKU__)
# define PLATFORM_ID "Haiku"
#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
# define PLATFORM_ID "BeOS"
#elif defined(__QNX__) || defined(__QNXNTO__)
# define PLATFORM_ID "QNX"
#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
# define PLATFORM_ID "Tru64"
#elif defined(__riscos) || defined(__riscos__)
# define PLATFORM_ID "RISCos"
#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
# define PLATFORM_ID "SINIX"
#elif defined(__UNIX_SV__)
# define PLATFORM_ID "UNIX_SV"
#elif defined(__bsdos__)
# define PLATFORM_ID "BSDOS"
#elif defined(_MPRAS) || defined(MPRAS)
# define PLATFORM_ID "MP-RAS"
#elif defined(__osf) || defined(__osf__)
# define PLATFORM_ID "OSF1"
#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
# define PLATFORM_ID "SCO_SV"
#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
# define PLATFORM_ID "ULTRIX"
#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
# define PLATFORM_ID "Xenix"
#elif defined(__WATCOMC__)
# if defined(__LINUX__)
# define PLATFORM_ID "Linux"
# elif defined(__DOS__)
# define PLATFORM_ID "DOS"
# elif defined(__OS2__)
# define PLATFORM_ID "OS2"
# elif defined(__WINDOWS__)
# define PLATFORM_ID "Windows3x"
# else /* unknown platform */
# define PLATFORM_ID
# endif
#elif defined(__INTEGRITY)
# if defined(INT_178B)
# define PLATFORM_ID "Integrity178"
# else /* regular Integrity */
# define PLATFORM_ID "Integrity"
# endif
#else /* unknown platform */
# define PLATFORM_ID
#endif
/* For windows compilers MSVC and Intel we can determine
the architecture of the compiler being used. This is because
the compilers do not have flags that can change the architecture,
but rather depend on which compiler is being used
*/
#if defined(_WIN32) && defined(_MSC_VER)
# if defined(_M_IA64)
# define ARCHITECTURE_ID "IA64"
# elif defined(_M_X64) || defined(_M_AMD64)
# define ARCHITECTURE_ID "x64"
# elif defined(_M_IX86)
# define ARCHITECTURE_ID "X86"
# elif defined(_M_ARM64)
# define ARCHITECTURE_ID "ARM64"
# elif defined(_M_ARM)
# if _M_ARM == 4
# define ARCHITECTURE_ID "ARMV4I"
# elif _M_ARM == 5
# define ARCHITECTURE_ID "ARMV5I"
# else
# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM)
# endif
# elif defined(_M_MIPS)
# define ARCHITECTURE_ID "MIPS"
# elif defined(_M_SH)
# define ARCHITECTURE_ID "SHx"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
#elif defined(__WATCOMC__)
# if defined(_M_I86)
# define ARCHITECTURE_ID "I86"
# elif defined(_M_IX86)
# define ARCHITECTURE_ID "X86"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
# if defined(__ICCARM__)
# define ARCHITECTURE_ID "ARM"
# elif defined(__ICCRX__)
# define ARCHITECTURE_ID "RX"
# elif defined(__ICCRH850__)
# define ARCHITECTURE_ID "RH850"
# elif defined(__ICCRL78__)
# define ARCHITECTURE_ID "RL78"
# elif defined(__ICCRISCV__)
# define ARCHITECTURE_ID "RISCV"
# elif defined(__ICCAVR__)
# define ARCHITECTURE_ID "AVR"
# elif defined(__ICC430__)
# define ARCHITECTURE_ID "MSP430"
# elif defined(__ICCV850__)
# define ARCHITECTURE_ID "V850"
# elif defined(__ICC8051__)
# define ARCHITECTURE_ID "8051"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
#elif defined(__ghs__)
# if defined(__PPC64__)
# define ARCHITECTURE_ID "PPC64"
# elif defined(__ppc__)
# define ARCHITECTURE_ID "PPC"
# elif defined(__ARM__)
# define ARCHITECTURE_ID "ARM"
# elif defined(__x86_64__)
# define ARCHITECTURE_ID "x64"
# elif defined(__i386__)
# define ARCHITECTURE_ID "X86"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
#else
# define ARCHITECTURE_ID
#endif
/* Convert integer to decimal digit literals. */
#define DEC(n) \
('0' + (((n) / 10000000)%10)), \
('0' + (((n) / 1000000)%10)), \
('0' + (((n) / 100000)%10)), \
('0' + (((n) / 10000)%10)), \
('0' + (((n) / 1000)%10)), \
('0' + (((n) / 100)%10)), \
('0' + (((n) / 10)%10)), \
('0' + ((n) % 10))
/* Convert integer to hex digit literals. */
#define HEX(n) \
('0' + ((n)>>28 & 0xF)), \
('0' + ((n)>>24 & 0xF)), \
('0' + ((n)>>20 & 0xF)), \
('0' + ((n)>>16 & 0xF)), \
('0' + ((n)>>12 & 0xF)), \
('0' + ((n)>>8 & 0xF)), \
('0' + ((n)>>4 & 0xF)), \
('0' + ((n) & 0xF))
/* Construct a string literal encoding the version number components. */
#ifdef COMPILER_VERSION_MAJOR
char const info_version[] = {
'I', 'N', 'F', 'O', ':',
'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
COMPILER_VERSION_MAJOR,
# ifdef COMPILER_VERSION_MINOR
'.', COMPILER_VERSION_MINOR,
# ifdef COMPILER_VERSION_PATCH
'.', COMPILER_VERSION_PATCH,
# ifdef COMPILER_VERSION_TWEAK
'.', COMPILER_VERSION_TWEAK,
# endif
# endif
# endif
']','\0'};
#endif
/* Construct a string literal encoding the internal version number. */
#ifdef COMPILER_VERSION_INTERNAL
char const info_version_internal[] = {
'I', 'N', 'F', 'O', ':',
'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_',
'i','n','t','e','r','n','a','l','[',
COMPILER_VERSION_INTERNAL,']','\0'};
#endif
/* Construct a string literal encoding the version number components. */
#ifdef SIMULATE_VERSION_MAJOR
char const info_simulate_version[] = {
'I', 'N', 'F', 'O', ':',
's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[',
SIMULATE_VERSION_MAJOR,
# ifdef SIMULATE_VERSION_MINOR
'.', SIMULATE_VERSION_MINOR,
# ifdef SIMULATE_VERSION_PATCH
'.', SIMULATE_VERSION_PATCH,
# ifdef SIMULATE_VERSION_TWEAK
'.', SIMULATE_VERSION_TWEAK,
# endif
# endif
# endif
']','\0'};
#endif
/* Construct the string literal in pieces to prevent the source from
getting matched. Store it in a pointer rather than an array
because some compilers will just produce instructions to fill the
array rather than assigning a pointer to a static array. */
char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L
# if defined(__INTEL_CXX11_MODE__)
# if defined(__cpp_aggregate_nsdmi)
# define CXX_STD 201402L
# else
# define CXX_STD 201103L
# endif
# else
# define CXX_STD 199711L
# endif
#elif defined(_MSC_VER) && defined(_MSVC_LANG)
# define CXX_STD _MSVC_LANG
#else
# define CXX_STD __cplusplus
#endif
const char* info_language_dialect_default = "INFO" ":" "dialect_default["
#if CXX_STD > 201703L
"20"
#elif CXX_STD >= 201703L
"17"
#elif CXX_STD >= 201402L
"14"
#elif CXX_STD >= 201103L
"11"
#else
"98"
#endif
"]";
/*--------------------------------------------------------------------------*/
int main(int argc, char* argv[])
{
int require = 0;
require += info_compiler[argc];
require += info_platform[argc];
#ifdef COMPILER_VERSION_MAJOR
require += info_version[argc];
#endif
#ifdef COMPILER_VERSION_INTERNAL
require += info_version_internal[argc];
#endif
#ifdef SIMULATE_ID
require += info_simulate[argc];
#endif
#ifdef SIMULATE_VERSION_MAJOR
require += info_simulate_version[argc];
#endif
#if defined(__CRAYXE) || defined(__CRAYXC)
require += info_cray[argc];
#endif
require += info_language_dialect_default[argc];
(void)argv;
return require;
}

View File

@@ -0,0 +1,137 @@
The system is: Windows - 10.0.18363 - AMD64
Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded.
Compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.25.28610/bin/Hostx86/x86/cl.exe
Build flags:
Id flags:
The output was:
0
Microsoft (R) C/C++ Optimizing Compiler Version 19.25.28614 for x86
Copyright (C) Microsoft Corporation. All rights reserved.
CMakeCCompilerId.c
Microsoft (R) Incremental Linker Version 14.25.28614.0
Copyright (C) Microsoft Corporation. All rights reserved.
/out:CMakeCCompilerId.exe
CMakeCCompilerId.obj
Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CMakeCCompilerId.exe"
Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CMakeCCompilerId.obj"
The C compiler identification is MSVC, found in "E:/code/blender-git/blender/cmake-build-debug/CMakeFiles/3.16.5/CompilerIdC/CMakeCCompilerId.exe"
Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded.
Compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.25.28610/bin/Hostx86/x86/cl.exe
Build flags:
Id flags:
The output was:
0
Microsoft (R) C/C++ Optimizing Compiler Version 19.25.28614 for x86
Copyright (C) Microsoft Corporation. All rights reserved.
CMakeCXXCompilerId.cpp
Microsoft (R) Incremental Linker Version 14.25.28614.0
Copyright (C) Microsoft Corporation. All rights reserved.
/out:CMakeCXXCompilerId.exe
CMakeCXXCompilerId.obj
Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "CMakeCXXCompilerId.exe"
Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "CMakeCXXCompilerId.obj"
The CXX compiler identification is MSVC, found in "E:/code/blender-git/blender/cmake-build-debug/CMakeFiles/3.16.5/CompilerIdCXX/CMakeCXXCompilerId.exe"
Determining if the C compiler works passed with the following output:
Change Dir: E:/code/blender-git/blender/cmake-build-debug/CMakeFiles/CMakeTmp
Run Build Command(s):nmake /nologo cmTC_657d4\fast && "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\bin\HostX86\x86\nmake.exe" -f CMakeFiles\cmTC_657d4.dir\build.make /nologo -L CMakeFiles\cmTC_657d4.dir\build
Building C object CMakeFiles/cmTC_657d4.dir/testCCompiler.c.obj
C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1425~1.286\bin\Hostx86\x86\cl.exe @C:\Users\peter\AppData\Local\Temp\nm8154.tmp
testCCompiler.c
Linking C executable cmTC_657d4.exe
"C:\Program Files\JetBrains\CLion 2020.1.1\bin\cmake\win\bin\cmake.exe" -E vs_link_exe --intdir=CMakeFiles\cmTC_657d4.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100183~1.0\x86\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100183~1.0\x86\mt.exe --manifests -- C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1425~1.286\bin\Hostx86\x86\link.exe /nologo @CMakeFiles\cmTC_657d4.dir\objects1.rsp @C:\Users\peter\AppData\Local\Temp\nm82AD.tmp
Detecting C compiler ABI info compiled with the following output:
Change Dir: E:/code/blender-git/blender/cmake-build-debug/CMakeFiles/CMakeTmp
Run Build Command(s):nmake /nologo cmTC_63ba1\fast && "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\bin\HostX86\x86\nmake.exe" -f CMakeFiles\cmTC_63ba1.dir\build.make /nologo -L CMakeFiles\cmTC_63ba1.dir\build
Building C object CMakeFiles/cmTC_63ba1.dir/CMakeCCompilerABI.c.obj
C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1425~1.286\bin\Hostx86\x86\cl.exe @C:\Users\peter\AppData\Local\Temp\nm84CF.tmp
CMakeCCompilerABI.c
Linking C executable cmTC_63ba1.exe
"C:\Program Files\JetBrains\CLion 2020.1.1\bin\cmake\win\bin\cmake.exe" -E vs_link_exe --intdir=CMakeFiles\cmTC_63ba1.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100183~1.0\x86\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100183~1.0\x86\mt.exe --manifests -- C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1425~1.286\bin\Hostx86\x86\link.exe /nologo @CMakeFiles\cmTC_63ba1.dir\objects1.rsp @C:\Users\peter\AppData\Local\Temp\nm851E.tmp
Determining if the CXX compiler works passed with the following output:
Change Dir: E:/code/blender-git/blender/cmake-build-debug/CMakeFiles/CMakeTmp
Run Build Command(s):nmake /nologo cmTC_ad8ea\fast && "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\bin\HostX86\x86\nmake.exe" -f CMakeFiles\cmTC_ad8ea.dir\build.make /nologo -L CMakeFiles\cmTC_ad8ea.dir\build
Building CXX object CMakeFiles/cmTC_ad8ea.dir/testCXXCompiler.cxx.obj
C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1425~1.286\bin\Hostx86\x86\cl.exe @C:\Users\peter\AppData\Local\Temp\nm8730.tmp
testCXXCompiler.cxx
Linking CXX executable cmTC_ad8ea.exe
"C:\Program Files\JetBrains\CLion 2020.1.1\bin\cmake\win\bin\cmake.exe" -E vs_link_exe --intdir=CMakeFiles\cmTC_ad8ea.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100183~1.0\x86\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100183~1.0\x86\mt.exe --manifests -- C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1425~1.286\bin\Hostx86\x86\link.exe /nologo @CMakeFiles\cmTC_ad8ea.dir\objects1.rsp @C:\Users\peter\AppData\Local\Temp\nm879F.tmp
Detecting CXX compiler ABI info compiled with the following output:
Change Dir: E:/code/blender-git/blender/cmake-build-debug/CMakeFiles/CMakeTmp
Run Build Command(s):nmake /nologo cmTC_0b66f\fast && "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\bin\HostX86\x86\nmake.exe" -f CMakeFiles\cmTC_0b66f.dir\build.make /nologo -L CMakeFiles\cmTC_0b66f.dir\build
Building CXX object CMakeFiles/cmTC_0b66f.dir/CMakeCXXCompilerABI.cpp.obj
C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1425~1.286\bin\Hostx86\x86\cl.exe @C:\Users\peter\AppData\Local\Temp\nm8953.tmp
CMakeCXXCompilerABI.cpp
Linking CXX executable cmTC_0b66f.exe
"C:\Program Files\JetBrains\CLion 2020.1.1\bin\cmake\win\bin\cmake.exe" -E vs_link_exe --intdir=CMakeFiles\cmTC_0b66f.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100183~1.0\x86\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100183~1.0\x86\mt.exe --manifests -- C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1425~1.286\bin\Hostx86\x86\link.exe /nologo @CMakeFiles\cmTC_0b66f.dir\objects1.rsp @C:\Users\peter\AppData\Local\Temp\nm89B2.tmp
Performing C SOURCE FILE Test SUPPORT_SSE_BUILD succeeded with the following compile output:
Change Dir: E:/code/blender-git/blender/cmake-build-debug/CMakeFiles/CMakeTmp
Run Build Command(s):nmake /nologo cmTC_dfa41\fast && "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\bin\HostX86\x86\nmake.exe" -f CMakeFiles\cmTC_dfa41.dir\build.make /nologo -L CMakeFiles\cmTC_dfa41.dir\build
Building C object CMakeFiles/cmTC_dfa41.dir/src.c.obj
C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1425~1.286\bin\Hostx86\x86\cl.exe @C:\Users\peter\AppData\Local\Temp\nm8B95.tmp
cl : Command line warning D9025 : overriding '/arch:SSE' with '/arch:SSE2'
src.c
E:\code\blender-git\blender\cmake-build-debug\CMakeFiles\CMakeTmp\src.c(3): warning C4101: 'v': unreferenced local variable
Linking C executable cmTC_dfa41.exe

View File

@@ -0,0 +1,4 @@
ToolSet: 16.0 (local)@C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
Options:
Options:

View File

@@ -0,0 +1,32 @@
"C:\Program Files\JetBrains\CLion 2020.1.1\bin\cmake\win\bin\cmake.exe" -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - NMake Makefiles" E:\code\blender-git\blender
-- The C compiler identification is MSVC 19.25.28614.0
-- The CXX compiler identification is MSVC 19.25.28614.0
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.25.28610/bin/Hostx86/x86/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.25.28610/bin/Hostx86/x86/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.25.28610/bin/Hostx86/x86/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.25.28610/bin/Hostx86/x86/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Performing Test SUPPORT_SSE_BUILD
-- Performing Test SUPPORT_SSE_BUILD - Success
-- SSE Support: detected.
-- Performing Test SUPPORT_SSE2_BUILD
-- Performing Test SUPPORT_SSE2_BUILD - Success
-- SSE2 Support: detected.
-- Found Git: C:/Program Files/Git/cmd/git.exe (found version "2.26.0.windows.1")
CMake Error at build_files/cmake/platform/platform_win32.cmake:219 (message):
32 bit compiler detected, blender no longer provides pre-build libraries
for 32 bit windows, please set the LIBDIR cmake variable to your own
library folder
Call Stack (most recent call first):
CMakeLists.txt:832 (include)
-- Configuring incomplete, errors occurred!
See also "E:/code/blender-git/blender/cmake-build-debug/CMakeFiles/CMakeOutput.log".

View File

@@ -0,0 +1 @@
# This file is generated by cmake for dependency checking of the CMakeCache.txt file

View File

@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32" name="Blender.CRT" version="1.0.0.0" />
<file name="msvcp140.dll" hash="8106f2dd4665aec0d1c652e29378ef46ea4e5801" hashalg="SHA1" />
<file name="msvcp140_1.dll" hash="6ba029a7c545d64c044aaad93a3dd00702bdf44e" hashalg="SHA1" />
<file name="msvcp140_2.dll" hash="40be57a54102ea5af3d3173c8815bdf35761e5f5" hashalg="SHA1" />
<file name="msvcp140_codecvt_ids.dll" hash="d34e3f579507f23c6b3378da44e666b85fff6e3b" hashalg="SHA1" />
<file name="vcruntime140.dll" hash="20a2e66fd577293b33ba1c9d01ef04582deaf3a5" hashalg="SHA1" />
<file name="concrt140.dll" hash="70bcb3c04ddf9a07f4fa65e94fc6997e58606699" hashalg="SHA1" />
<file name="API-MS-Win-core-xstate-l2-1-0.dll" hash="28f0ff95c64faa31eafdc4e5e95cd7dbeb54ca22" hashalg="SHA1" />
<file name="api-ms-win-core-console-l1-1-0.dll" hash="2d2e5e097ba5d92e6977cbb23afcc60b2e1d1c8c" hashalg="SHA1" />
<file name="api-ms-win-core-console-l1-2-0.dll" hash="b5e00a0516b6c8c6f6a51ea40fae1beba3dd49ba" hashalg="SHA1" />
<file name="api-ms-win-core-datetime-l1-1-0.dll" hash="8e0fcc170f5d66beea796b38cd544a045375204b" hashalg="SHA1" />
<file name="api-ms-win-core-debug-l1-1-0.dll" hash="505b7e21e237d7f8c454bdfb37b19932ae6980d3" hashalg="SHA1" />
<file name="api-ms-win-core-errorhandling-l1-1-0.dll" hash="1cb405eb7339ef121df51f5eba44e0b0177a76d3" hashalg="SHA1" />
<file name="api-ms-win-core-file-l1-1-0.dll" hash="e0fa94d72626531aa971c3f1385f03ded6bde6a0" hashalg="SHA1" />
<file name="api-ms-win-core-file-l1-2-0.dll" hash="c4643779a0f0f377323503f2db8d2e4d74c738ca" hashalg="SHA1" />
<file name="api-ms-win-core-file-l2-1-0.dll" hash="1aadbbd43eff2df7bab51c6f3bda2eb2623b281a" hashalg="SHA1" />
<file name="api-ms-win-core-handle-l1-1-0.dll" hash="8b3a44beceb81727071337a9c9e7d0f3b1370455" hashalg="SHA1" />
<file name="api-ms-win-core-heap-l1-1-0.dll" hash="deb18c79ab7def1f7ce1b22f90d21b3f6c5d8ef3" hashalg="SHA1" />
<file name="api-ms-win-core-interlocked-l1-1-0.dll" hash="2acb3bdfb7209323d586866e276e152d540d5ae3" hashalg="SHA1" />
<file name="api-ms-win-core-libraryloader-l1-1-0.dll" hash="f6fbe3fe91884d3aa19ce93156423da55bdd6ced" hashalg="SHA1" />
<file name="api-ms-win-core-localization-l1-2-0.dll" hash="7833ac2c20263c8be42f67151f9234eb8e4a5515" hashalg="SHA1" />
<file name="api-ms-win-core-memory-l1-1-0.dll" hash="fa1609389caea2192f37017a23ec66e0c7f21d65" hashalg="SHA1" />
<file name="api-ms-win-core-namedpipe-l1-1-0.dll" hash="52c9bf4137e466124eab9aa639671795d05125f1" hashalg="SHA1" />
<file name="api-ms-win-core-processenvironment-l1-1-0.dll" hash="05727b747b29845e025d2efde0e43ee36927439e" hashalg="SHA1" />
<file name="api-ms-win-core-processthreads-l1-1-0.dll" hash="2fdf383c24a697a0cc29231dab4d0a77207a29f1" hashalg="SHA1" />
<file name="api-ms-win-core-processthreads-l1-1-1.dll" hash="83a8fcc777c7e8c42fa4c59ee627baf6cbed1969" hashalg="SHA1" />
<file name="api-ms-win-core-profile-l1-1-0.dll" hash="f6e3da76e7de8a0d5f2e254b080ba973c92ba817" hashalg="SHA1" />
<file name="api-ms-win-core-rtlsupport-l1-1-0.dll" hash="14c89f2ade657eb9249b95f9290fb4284908c9c6" hashalg="SHA1" />
<file name="api-ms-win-core-string-l1-1-0.dll" hash="4a902cf7e4500c736ab4830e762cc1e18bb224ec" hashalg="SHA1" />
<file name="api-ms-win-core-synch-l1-1-0.dll" hash="6e8a961767f5ac308d569fd57e84b56b145c6c53" hashalg="SHA1" />
<file name="api-ms-win-core-synch-l1-2-0.dll" hash="5a60eebe67ed90f3171970f8339e1404ca1bb311" hashalg="SHA1" />
<file name="api-ms-win-core-sysinfo-l1-1-0.dll" hash="4c83bd868c963c3afa29d92f75d185ad612c9b11" hashalg="SHA1" />
<file name="api-ms-win-core-timezone-l1-1-0.dll" hash="2f0fe3eb94fa90577846d49c03c4fd08ef9d3fb2" hashalg="SHA1" />
<file name="api-ms-win-core-util-l1-1-0.dll" hash="c063a309aeff016f0a7d728c44fe169ce6da12c5" hashalg="SHA1" />
<file name="api-ms-win-crt-conio-l1-1-0.dll" hash="e025b0afc3b9a8046f83e5df718bac4ad05c9c2c" hashalg="SHA1" />
<file name="api-ms-win-crt-convert-l1-1-0.dll" hash="8ada489b9ff33530a3fb7161cc07b5b11dfb8909" hashalg="SHA1" />
<file name="api-ms-win-crt-environment-l1-1-0.dll" hash="4051c6eb37a4c0dba47b58301e63df76bff347dd" hashalg="SHA1" />
<file name="api-ms-win-crt-filesystem-l1-1-0.dll" hash="5516de099c49e0e6d1224286c3dc9b4d7985e913" hashalg="SHA1" />
<file name="api-ms-win-crt-heap-l1-1-0.dll" hash="cdb6d8bd1fbd1c71d85437cff55ddeb76139dbe7" hashalg="SHA1" />
<file name="api-ms-win-crt-locale-l1-1-0.dll" hash="f35b3157818d4a5af3486b5e2e70bb510ac05eff" hashalg="SHA1" />
<file name="api-ms-win-crt-math-l1-1-0.dll" hash="935b00c88c2065f98746e2b4353d4369216f1812" hashalg="SHA1" />
<file name="api-ms-win-crt-multibyte-l1-1-0.dll" hash="18fee669be0aa8a1839a75a167980f3f246c93a4" hashalg="SHA1" />
<file name="api-ms-win-crt-private-l1-1-0.dll" hash="bcfb984771542970488bd6132dfa2746267b7fbc" hashalg="SHA1" />
<file name="api-ms-win-crt-process-l1-1-0.dll" hash="ba58c577311e39ff7e92a6be0dd6b80abfee6edc" hashalg="SHA1" />
<file name="api-ms-win-crt-runtime-l1-1-0.dll" hash="40cf36e07b738aa8bba58bc5587643326ff412a9" hashalg="SHA1" />
<file name="api-ms-win-crt-stdio-l1-1-0.dll" hash="6913bf1624599e55680a0292e22c89cab559db81" hashalg="SHA1" />
<file name="api-ms-win-crt-string-l1-1-0.dll" hash="5899230b0d7ad96121c3be0df99235ddd8a47dc6" hashalg="SHA1" />
<file name="api-ms-win-crt-time-l1-1-0.dll" hash="8396e1e02dace6ae4dde33b3e432a3581bc38f5d" hashalg="SHA1" />
<file name="api-ms-win-crt-utility-l1-1-0.dll" hash="5da1d02b764917b38fdc34f4b41fb9a599105dd9" hashalg="SHA1" />
<file name="ucrtbase.dll" hash="918bc19f55e656f6d6b1e4713604483eb997ea15" hashalg="SHA1" />
<file name="vcomp140.dll" hash="eda3a7cd19d4bb362be37ec06290c1309962d4d4" hashalg="SHA1" />
</assembly>

View File

@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
<!-- Windows 8.1 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
<!-- Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
<!-- Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<!-- Windows Vista -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
</application>
</compatibility>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
<dependency><dependentAssembly><assemblyIdentity type="win32" name="blender.crt" version="1.0.0.0" /></dependentAssembly></dependency>
</assembly>

View File

@@ -0,0 +1,58 @@
/*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef __BKE_BLENDER_VERSION_H__
#define __BKE_BLENDER_VERSION_H__
#ifdef __cplusplus
extern "C" {
#endif
/** \file
* \ingroup bke
*/
/**
* The lines below use regex from scripts to extract their values,
* Keep this in mind when modifying this file and keep this comment above the defines.
*
* \note Use #STRINGIFY() rather than defining with quotes.
*/
/* Blender major and minor version. */
#define BLENDER_VERSION 291
/* Blender patch version for bugfix releases. */
#define BLENDER_VERSION_PATCH 0
/** Blender release cycle stage: alpha/beta/rc/release. */
#define BLENDER_VERSION_CYCLE alpha
/* Blender file format version. */
#define BLENDER_FILE_VERSION BLENDER_VERSION
#define BLENDER_FILE_SUBVERSION 0
/* Minimum Blender version that supports reading file written with the current
* version. Older Blender versions will test this and show a warning if the file
* was written with too new a version. */
#define BLENDER_FILE_MIN_VERSION 280
#define BLENDER_FILE_MIN_SUBVERSION 0
/** User readable version string. */
const char *BKE_blender_version_string(void);
#ifdef __cplusplus
}
#endif
#endif /* __BKE_BLENDER_VERSION_H__ */

View File

@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
<!-- Windows 8.1 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
<!-- Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
<!-- Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<!-- Windows Vista -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
</application>
</compatibility>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>

0
git Normal file
View File

View File

@@ -1059,6 +1059,7 @@ int GHOST_XrSessionIsRunning(const GHOST_XrContextHandle xr_context);
*/
int GHOST_XrSessionNeedsUpsideDownDrawing(const GHOST_XrContextHandle xr_context);
GHOST_XrPose GHOST_XrGetSpacePose(const GHOST_XrContextHandle xr_contexthandle, GHOST_XrSpace space);
/* events */
/**
* Invoke handling of all OpenXR events for \a xr_context. Should be called on every main-loop

View File

@@ -39,6 +39,8 @@ class GHOST_IXrContext {
virtual void setDrawViewFunc(GHOST_XrDrawViewFn draw_view_fn) = 0;
virtual bool needsUpsideDownDrawing() const = 0;
virtual GHOST_XrPose getSpacePose(GHOST_XrSpace space) const = 0;
};
#endif // __GHOST_IXRCONTEXT_H__

View File

@@ -17,29 +17,32 @@
* All rights reserved.
*/
#include <stdbool.h>
#include <stdint.h>
/** \file
* \ingroup GHOST
*/
#ifndef __GHOST_TYPES_H__
#define __GHOST_TYPES_H__
# define __GHOST_TYPES_H__
#ifdef WITH_CXX_GUARDEDALLOC
# include "MEM_guardedalloc.h"
#endif
# ifdef WITH_CXX_GUARDEDALLOC
# include "MEM_guardedalloc.h"
# endif
#if defined(WITH_CXX_GUARDEDALLOC) && defined(__cplusplus)
# define GHOST_DECLARE_HANDLE(name) \
typedef struct name##__ { \
int unused; \
MEM_CXX_CLASS_ALLOC_FUNCS(#name) \
} * name
#else
# define GHOST_DECLARE_HANDLE(name) \
typedef struct name##__ { \
int unused; \
} * name
#endif
# if defined(WITH_CXX_GUARDEDALLOC) && defined(__cplusplus)
# define GHOST_DECLARE_HANDLE(name) \
typedef struct name##__ { \
int unused; \
MEM_CXX_CLASS_ALLOC_FUNCS(#name) \
} * name
# else
# define GHOST_DECLARE_HANDLE(name) \
typedef struct name##__ { \
int unused; \
} * name
# endif
/**
* Creates a "handle" for a C++ GHOST object.
@@ -57,6 +60,9 @@ GHOST_DECLARE_HANDLE(GHOST_EventConsumerHandle);
GHOST_DECLARE_HANDLE(GHOST_ContextHandle);
GHOST_DECLARE_HANDLE(GHOST_XrContextHandle);
GHOST_DECLARE_HANDLE(GHOST_XrActionSetHandle);
GHOST_DECLARE_HANDLE(GHOST_XrActionHandle);
typedef char GHOST_TInt8;
typedef unsigned char GHOST_TUns8;
typedef short GHOST_TInt16;
@@ -79,13 +85,13 @@ typedef enum GHOST_DialogOptions {
GHOST_DialogError = (1 << 1),
} GHOST_DialogOptions;
#ifdef _MSC_VER
# ifdef _MSC_VER
typedef __int64 GHOST_TInt64;
typedef unsigned __int64 GHOST_TUns64;
#else
# else
typedef long long GHOST_TInt64;
typedef unsigned long long GHOST_TUns64;
#endif
# endif
typedef void *GHOST_TUserDataPtr;
@@ -157,9 +163,9 @@ typedef enum { GHOST_kWindowOrderTop = 0, GHOST_kWindowOrderBottom } GHOST_TWind
typedef enum {
GHOST_kDrawingContextTypeNone = 0,
GHOST_kDrawingContextTypeOpenGL,
#ifdef WIN32
# ifdef WIN32
GHOST_kDrawingContextTypeD3D,
#endif
# endif
} GHOST_TDrawingContextType;
typedef enum {
@@ -183,10 +189,10 @@ typedef enum {
GHOST_kEventWheel, /// Mouse wheel event
GHOST_kEventTrackpad, /// Trackpad event
#ifdef WITH_INPUT_NDOF
# ifdef WITH_INPUT_NDOF
GHOST_kEventNDOFMotion, /// N degree of freedom device motion event
GHOST_kEventNDOFButton, /// N degree of freedom device button event
#endif
# endif
GHOST_kEventKeyDown,
GHOST_kEventKeyUp,
@@ -519,7 +525,7 @@ typedef enum {
GHOST_kFinished
} GHOST_TProgress;
#ifdef WITH_INPUT_NDOF
# ifdef WITH_INPUT_NDOF
typedef struct {
/** N-degree of freedom device data v3 [GSoC 2010] */
// Each component normally ranges from -1 to +1, but can exceed that.
@@ -539,7 +545,7 @@ typedef struct {
GHOST_TButtonAction action;
short button;
} GHOST_TEventNDOFButtonData;
#endif // WITH_INPUT_NDOF
# endif // WITH_INPUT_NDOF
typedef struct {
/** The key code. */
@@ -574,29 +580,29 @@ typedef struct {
GHOST_TUns32 frequency;
} GHOST_DisplaySetting;
#ifdef _WIN32
# ifdef _WIN32
typedef void *GHOST_TEmbedderWindowID;
#endif // _WIN32
# endif // _WIN32
#ifndef _WIN32
# ifndef _WIN32
// I can't use "Window" from "<X11/Xlib.h>" because it conflits with Window defined in winlay.h
typedef int GHOST_TEmbedderWindowID;
#endif // _WIN32
# endif // _WIN32
/**
* A timer task callback routine.
* \param task The timer task object.
* \param time The current time.
*/
#ifdef __cplusplus
# ifdef __cplusplus
class GHOST_ITimerTask;
typedef void (*GHOST_TimerProcPtr)(GHOST_ITimerTask *task, GHOST_TUns64 time);
#else
# else
struct GHOST_TimerTaskHandle__;
typedef void (*GHOST_TimerProcPtr)(struct GHOST_TimerTaskHandle__ *task, GHOST_TUns64 time);
#endif
# endif
#ifdef WITH_XR_OPENXR
# ifdef WITH_XR_OPENXR
struct GHOST_XrDrawViewInfo;
struct GHOST_XrError;
@@ -610,9 +616,9 @@ struct GHOST_XrError;
typedef enum GHOST_TXrGraphicsBinding {
GHOST_kXrGraphicsUnknown = 0,
GHOST_kXrGraphicsOpenGL,
# ifdef WIN32
# ifdef WIN32
GHOST_kXrGraphicsD3D11,
# endif
# endif
/* For later */
// GHOST_kXrGraphicsVulkan,
} GHOST_TXrGraphicsBinding;
@@ -668,6 +674,10 @@ typedef struct GHOST_XrDrawViewInfo {
/** Set if the buffer should be submitted with a srgb transfer applied. */
char expects_srgb_buffer;
GHOST_XrPose world_pose;
float world_scale;
} GHOST_XrDrawViewInfo;
typedef struct GHOST_XrError {
@@ -676,6 +686,37 @@ typedef struct GHOST_XrError {
void *customdata;
} GHOST_XrError;
#endif
/* Nanoseconds */
typedef int64_t GHOST_XrTime;
typedef struct GHOST_XrActionStateBoolean {
bool currentState;
GHOST_XrTime lastChangeTime;
bool changedSinceSync;
bool isActive;
} GHOST_XrActionStateBool;
typedef struct GHOST_XrActionStateFloat {
float currentState;
GHOST_XrTime lastChangeTime;
bool changedSinceSync;
bool isActive;
} GHOST_XrActionStateFloat;
typedef struct GHOST_XrActionStateVector2f {
float currentX;
float currentY;
GHOST_XrTime lastChangeTime;
bool changedSinceSync;
bool isActive;
} GHOST_XrActionStateVector2f;
typedef enum GHOST_XrSpace {
GHOST_SPACE_VIEW,
GHOST_SPACE_LEFT_HAND,
GHOST_SPACE_RIGHT_HAND,
} GHOST_XrSpace;
# endif
#endif // __GHOST_TYPES_H__

View File

@@ -967,4 +967,12 @@ int GHOST_XrSessionNeedsUpsideDownDrawing(const GHOST_XrContextHandle xr_context
return 0; /* Only reached if exception is thrown. */
}
GHOST_XrPose GHOST_XrGetSpacePose(const GHOST_XrContextHandle xr_contexthandle, GHOST_XrSpace space)
{
GHOST_IXrContext *xr_context = (GHOST_IXrContext *)xr_contexthandle;
GHOST_XR_CAPI_CALL_RET(xr_context->getSpacePose(space), xr_context);
return GHOST_XrPose{};
}
#endif

View File

@@ -527,6 +527,12 @@ bool GHOST_XrContext::needsUpsideDownDrawing() const
return m_session->needsUpsideDownDrawing();
}
GHOST_XrPose GHOST_XrContext::getSpacePose(GHOST_XrSpace space) const
{
assert(m_session);
return m_session->getSpacePose(space);
}
/** \} */ /* Public Accessors and Mutators */
/* -------------------------------------------------------------------- */

View File

@@ -81,6 +81,8 @@ class GHOST_XrContext : public GHOST_IXrContext {
void setDrawViewFunc(GHOST_XrDrawViewFn draw_view_fn) override;
bool needsUpsideDownDrawing() const override;
GHOST_XrPose getSpacePose(GHOST_XrSpace space) const override;
void handleSessionStateChange(const XrEventDataSessionStateChanged *lifecycle);
GHOST_TXrOpenXRRuntimeID getOpenXRRuntimeID() const;

View File

@@ -22,8 +22,11 @@
#include <cassert>
#include <chrono>
#include <cstdio>
#include <inttypes.h>
#include <iterator>
#include <list>
#include <sstream>
#include <tuple>
#include "GHOST_C-api.h"
@@ -35,6 +38,37 @@
#include "GHOST_XrSession.h"
struct GHOST_XrActionCreateInfo {
std::string name;
std::string localizedName;
XrActionType actionType;
};
struct GHOST_XrSubactionInfo {
std::string path;
std::string name;
};
struct GHOST_XrSubactionsCreateInfo {
std::string parentName;
std::string localizedParentName;
XrActionType actionType;
std::vector<GHOST_XrSubactionInfo> subactions;
};
struct OpenXRActionData {
/* Has the lifecycle of the session gone past attaching action sets? */
bool attached;
GHOST_XrActionSetMap actionSetMap;
GHOST_XrInteractionMap interactionMap;
XrSpace handSpaces[2];
XrPosef handPoses[2];
XrPosef viewPose;
};
struct OpenXRSessionData {
XrSystemId system_id = XR_NULL_SYSTEM_ID;
XrSession session = XR_NULL_HANDLE;
@@ -46,12 +80,332 @@ struct OpenXRSessionData {
XrSpace view_space;
std::vector<XrView> views;
std::vector<GHOST_XrSwapchain> swapchains;
OpenXRActionData actionData;
};
GHOST_XrAction::GHOST_XrAction(XrSession xrSession,
XrInstance xrInstance,
XrAction handle,
XrPath subpath)
: xrSession(xrSession), xrInstance(xrInstance), handle(handle), subPath(subpath)
{
}
GHOST_XrActionSet::~GHOST_XrActionSet()
{
xrDestroyActionSet(handle);
}
XrPath stringToPath(XrInstance xrInstance, const std::string &path)
{
XrPath xrPath;
CHECK_XR(xrStringToPath(xrInstance, path.c_str(), &xrPath), "Failed to convert string to path.");
return xrPath;
}
void GHOST_XrSession::suggestBinding(XrAction handle,
const std::string &profile,
const std::string &binding)
{
assert(!m_oxr->actionData.attached);
XrPath profilePath = stringToPath(m_context->getInstance(), profile);
XrPath bindingPath = stringToPath(m_context->getInstance(), binding);
m_oxr->actionData.interactionMap[profilePath].push_back(
XrActionSuggestedBinding{handle, bindingPath});
}
/* Once action sets are attached, action sets and bindings are necessarily immutable. */
/* Loading additional actions requires recreating the session. */
void GHOST_XrSession::bindAndAttachActions()
{
OpenXRActionData &actionData = m_oxr->actionData;
assert(!actionData.attached);
GHOST_XrActionSetMap &actionSetMap = actionData.actionSetMap;
GHOST_XrInteractionMap &interactionMap = actionData.interactionMap;
for (GHOST_XrInteractionMap::iterator it = interactionMap.begin(); it != interactionMap.end();
it++) {
XrInteractionProfileSuggestedBinding suggestedBindings = {
XR_TYPE_INTERACTION_PROFILE_SUGGESTED_BINDING};
suggestedBindings.interactionProfile = it->first;
suggestedBindings.countSuggestedBindings = it->second.size();
suggestedBindings.suggestedBindings = it->second.data();
CHECK_XR(xrSuggestInteractionProfileBindings(m_context->getInstance(), &suggestedBindings),
"Failed to suggest profile bindings.");
}
/* Push all action sets in the action set hashmap to a vector. */
std::vector<XrActionSet> actionSets;
for (GHOST_XrActionSetMap::iterator it = actionSetMap.begin(); it != actionSetMap.end(); it++) {
actionSets.push_back(it->second.handle);
}
/* Attach the aforementioned action sets to the XrSession. */
XrSessionActionSetsAttachInfo attachInfo = {XR_TYPE_SESSION_ACTION_SETS_ATTACH_INFO};
attachInfo.countActionSets = actionSets.size();
attachInfo.actionSets = actionSets.data();
CHECK_XR(xrAttachSessionActionSets(m_oxr->session, &attachInfo), "Failed to attach action sets.");
actionData.attached = true;
}
GHOST_XrAction &GHOST_XrActionSet::createAction(GHOST_XrActionCreateInfo info)
{
XrActionCreateInfo actionInfo = {XR_TYPE_ACTION_CREATE_INFO};
actionInfo.actionType = info.actionType;
strncpy(actionInfo.actionName, info.name.c_str(), XR_MAX_ACTION_NAME_SIZE);
strncpy(actionInfo.localizedActionName,
info.localizedName.c_str(),
XR_MAX_LOCALIZED_ACTION_NAME_SIZE);
XrAction action;
CHECK_XR(xrCreateAction(handle, &actionInfo, &action), "Action creation failed.");
actionMap.emplace(std::piecewise_construct,
std::forward_as_tuple(info.name),
std::forward_as_tuple(xrSession, xrInstance, action, XR_NULL_PATH));
return actionMap.at(info.name);
}
GHOST_XrAction &GHOST_XrActionSet::createSubactions(GHOST_XrSubactionsCreateInfo info)
{
XrActionCreateInfo actionInfo = {XR_TYPE_ACTION_CREATE_INFO};
actionInfo.actionType = info.actionType;
actionInfo.countSubactionPaths = info.subactions.size();
strncpy(actionInfo.actionName, info.parentName.c_str(), XR_MAX_ACTION_NAME_SIZE);
strncpy(actionInfo.localizedActionName,
info.localizedParentName.c_str(),
XR_MAX_LOCALIZED_ACTION_NAME_SIZE);
/* Create a vector of XrPath handles out of the subaction path strings */
std::vector<XrPath> subactionPaths;
for (int i = 0; i < info.subactions.size(); i++) {
XrPath path = stringToPath(xrInstance, info.subactions[i].path.c_str());
subactionPaths.push_back(path);
}
actionInfo.subactionPaths = subactionPaths.data();
XrAction action;
CHECK_XR(xrCreateAction(handle, &actionInfo, &action), "Subactions creation failed.");
/* Create the parent action GHOST_XrAction (same handle, no subpath). */
actionMap.emplace(std::piecewise_construct,
std::forward_as_tuple(info.parentName),
std::forward_as_tuple(xrSession, xrInstance, action, XR_NULL_PATH));
/* Create a GHOST_XrAction object for each subaction path (duplicate XrAction handle). */
for (int i = 0; i < info.subactions.size(); i++) {
actionMap.emplace(std::piecewise_construct,
std::forward_as_tuple(info.subactions[i].name),
std::forward_as_tuple(xrSession, xrInstance, action, subactionPaths[i]));
}
return actionMap.at(info.parentName);
}
GHOST_XrActionSet::GHOST_XrActionSet(XrSession xrSession,
XrInstance xrInstance,
XrActionSet handle)
: xrSession(xrSession), xrInstance(xrInstance), handle(handle)
{
}
GHOST_XrActionSet &GHOST_XrSession::createActionSet(const std::string &name,
const std::string &localizedName)
{
XrInstance xrInstance = m_context->getInstance();
XrSession xrSession = m_oxr->session;
XrActionSetCreateInfo actionSetInfo = {XR_TYPE_ACTION_SET_CREATE_INFO};
actionSetInfo.priority = 0;
strncpy(actionSetInfo.actionSetName, name.c_str(), XR_MAX_ACTION_SET_NAME_SIZE);
strncpy(actionSetInfo.localizedActionSetName,
localizedName.c_str(),
XR_MAX_LOCALIZED_ACTION_SET_NAME_SIZE);
XrActionSet set;
CHECK_XR(xrCreateActionSet(xrInstance, &actionSetInfo, &set), "Action set creation failed.");
GHOST_XrActionSetMap &setMap = m_oxr->actionData.actionSetMap;
setMap.emplace(std::piecewise_construct,
std::forward_as_tuple(name),
std::forward_as_tuple(xrSession, xrInstance, set));
return setMap.at(name);
}
// void GHOST_XrSession::applyVibration(const std::string &setID,
// const std::string &actionID,
// int64_t duration,
// float amplitude,
// float frequency)
//{
// GHOST_XrAction action = get_action(setID, actionID);
//
// XrHapticVibration vibration = {0};
// vibration.type = XR_TYPE_HAPTIC_VIBRATION;
// vibration.amplitude = amplitude;
// vibration.duration = duration;
// vibration.frequency = frequency;
//
// if (action.subpath != XR_NULL_PATH) {
// CHECK_XR(xrApplyHapticFeedback(
// action.handle, 1, &action.subpath, (const XrHapticBaseHeader *)&vibration),
// "Application of haptic feedback failed.");
// }
//
// else {
// CHECK_XR(xrApplyHapticFeedback(action.handle, 0, NULL, (const XrHapticBaseHeader
// *)&vibration),
// "Application of haptic feedback failed.");
// }
//}
GHOST_XrActionSet &GHOST_XrSession::getActionSet(const std::string &setID)
{
return m_oxr->actionData.actionSetMap.at(setID);
}
GHOST_XrAction &GHOST_XrActionSet::getAction(const std::string &actionID)
{
return actionMap.at(actionID);
}
bool GHOST_XrAction::isPoseActive()
{
XrActionStatePose state;
XrActionStateGetInfo getActionStateInfo{XR_TYPE_ACTION_STATE_GET_INFO};
getActionStateInfo.action = handle;
getActionStateInfo.subactionPath = subPath;
CHECK_XR(xrGetActionStatePose(xrSession, &getActionStateInfo, &state),
"Failed to read action state.");
return state.isActive;
}
GHOST_XrActionStateBoolean GHOST_XrAction::getActionStateBoolean()
{
XrActionStateBoolean state;
XrActionStateGetInfo getActionStateInfo{XR_TYPE_ACTION_STATE_GET_INFO};
getActionStateInfo.action = handle;
getActionStateInfo.subactionPath = subPath;
CHECK_XR(xrGetActionStateBoolean(xrSession, &getActionStateInfo, &state),
"Failed to read action state.");
return GHOST_XrActionStateBoolean{(bool)state.currentState,
state.lastChangeTime,
(bool)state.changedSinceLastSync,
(bool)state.isActive};
}
GHOST_XrActionStateFloat GHOST_XrAction::getActionStateFloat()
{
XrActionStateFloat state;
XrActionStateGetInfo getActionStateInfo{XR_TYPE_ACTION_STATE_GET_INFO};
getActionStateInfo.action = handle;
getActionStateInfo.subactionPath = subPath;
CHECK_XR(xrGetActionStateFloat(xrSession, &getActionStateInfo, &state),
"Failed to read action state.");
return GHOST_XrActionStateFloat{state.currentState,
state.lastChangeTime,
(bool)state.changedSinceLastSync,
(bool)state.isActive};
}
GHOST_XrActionStateVector2f GHOST_XrAction::getActionStateVector2f()
{
XrActionStateVector2f state;
XrActionStateGetInfo getActionStateInfo{XR_TYPE_ACTION_STATE_GET_INFO};
getActionStateInfo.action = handle;
getActionStateInfo.subactionPath = subPath;
CHECK_XR(xrGetActionStateVector2f(xrSession, &getActionStateInfo, &state),
"Failed to read action state.");
return GHOST_XrActionStateVector2f{state.currentState.x,
state.currentState.y,
state.lastChangeTime,
(bool)state.changedSinceLastSync,
(bool)state.isActive};
}
XrSpace GHOST_XrSession::createSpace(GHOST_XrAction &action, XrPosef poseInSpace)
{
XrActionSpaceCreateInfo actionSpaceInfo{XR_TYPE_ACTION_SPACE_CREATE_INFO};
actionSpaceInfo.action = action.handle;
actionSpaceInfo.subactionPath = action.subPath;
actionSpaceInfo.poseInActionSpace = poseInSpace;
XrSpace xrSpace;
CHECK_XR(xrCreateActionSpace(m_oxr->session, &actionSpaceInfo, &xrSpace),
"Creation of action space failed.");
return xrSpace;
}
void GHOST_XrSession::initXrActionsDefault()
{
/* Create default action set. */
GHOST_XrActionSet &set = createActionSet("default_action_set", "Default Action Set");
/* Create hand poses. */
std::vector<GHOST_XrSubactionInfo> subactions;
subactions.push_back(GHOST_XrSubactionInfo{"/user/hand/left", "hand_pose_left"});
subactions.push_back(GHOST_XrSubactionInfo{"/user/hand/right", "hand_pose_right"});
GHOST_XrSubactionsCreateInfo createInfo = {
"hand_pose", "Hand Pose", XR_ACTION_TYPE_POSE_INPUT, subactions};
GHOST_XrAction &pose_action = set.createSubactions(createInfo);
suggestBinding(pose_action.handle,
"/interaction_profiles/oculus/touch_controller",
"/user/hand/left/input/grip/pose");
suggestBinding(pose_action.handle,
"/interaction_profiles/oculus/touch_controller",
"/user/hand/right/input/grip/pose");
/* Create hand spaces. */
XrPosef poseInSpace = {};
poseInSpace.orientation.w = 1.f;
m_oxr->actionData.handSpaces[0] = createSpace(set.getAction("hand_pose_left"), poseInSpace);
m_oxr->actionData.handSpaces[1] = createSpace(set.getAction("hand_pose_right"), poseInSpace);
/* Create haptic actions. */
// subactions.clear();
// subactions.push_back(Ghost_XrSubactionInfo{"/user/hand/left", "haptic_left"});
// subactions.push_back(Ghost_XrSubactionInfo{"/user/hand/right", "haptic_right"});
// GHOST_XrSubactionsCreateInfo createInfo = {
// "haptic_action", "Haptic Action", XR_OUTPUT_ACTION_TYPE_VIBRATION, subactions};
// createAction("default_action_set", &createInfo);
/* TODO: Figure out when this can be done (e.g. so python addons can suggest bindings */
bindAndAttachActions();
}
struct GHOST_XrDrawInfo {
XrFrameState frame_state;
/** Time at frame start to benchmark frame render durations. */
/* Time at frame start to benchmark frame render durations. */
std::chrono::high_resolution_clock::time_point frame_begin_time;
/* Time previous frames took for rendering (in ms). */
std::list<double> last_frame_times;
@@ -119,28 +473,6 @@ static void create_reference_spaces(OpenXRSessionData *oxr, const GHOST_XrPose *
create_info.poseInReferenceSpace.orientation.w = 1.0f;
create_info.referenceSpaceType = XR_REFERENCE_SPACE_TYPE_LOCAL;
#if 0
/* TODO
*
* Proper reference space set up is not supported yet. We simply hand OpenXR
* the global space as reference space and apply its pose onto the active
* camera matrix to get a basic viewing experience going. If there's no active
* camera with stick to the world origin.
*
* Once we have proper reference space set up (i.e. a way to define origin, up-
* direction and an initial view rotation perpendicular to the up-direction),
* we can hand OpenXR a proper reference pose/space.
*/
create_info.poseInReferenceSpace.position.x = base_pose->position[0];
create_info.poseInReferenceSpace.position.y = base_pose->position[1];
create_info.poseInReferenceSpace.position.z = base_pose->position[2];
create_info.poseInReferenceSpace.orientation.x = base_pose->orientation_quat[1];
create_info.poseInReferenceSpace.orientation.y = base_pose->orientation_quat[2];
create_info.poseInReferenceSpace.orientation.z = base_pose->orientation_quat[3];
create_info.poseInReferenceSpace.orientation.w = base_pose->orientation_quat[0];
#else
(void)base_pose;
#endif
CHECK_XR(xrCreateReferenceSpace(oxr->session, &create_info, &oxr->reference_space),
"Failed to create reference space.");
@@ -196,6 +528,8 @@ void GHOST_XrSession::start(const GHOST_XrSessionBeginInfo *begin_info)
prepareDrawing();
create_reference_spaces(m_oxr.get(), &begin_info->base_pose);
initXrActionsDefault();
}
void GHOST_XrSession::requestEnd()
@@ -275,13 +609,73 @@ void GHOST_XrSession::prepareDrawing()
m_draw_info = std::unique_ptr<GHOST_XrDrawInfo>(new GHOST_XrDrawInfo());
}
XrPosef GHOST_XrSession::locateSpace(GHOST_XrSpace space, GHOST_XrTime time)
{
XrSpace xrSpace;
switch (space) {
case GHOST_SPACE_VIEW:
xrSpace = m_oxr->view_space;
break;
case GHOST_SPACE_LEFT_HAND:
xrSpace = m_oxr->actionData.handSpaces[0];
break;
case GHOST_SPACE_RIGHT_HAND:
xrSpace = m_oxr->actionData.handSpaces[1];
break;
default:
throw GHOST_XrException("Invalid GHOST_XrSpace passed to locateSpace.");
}
XrSpaceLocation spaceLocation = {XR_TYPE_SPACE_LOCATION};
CHECK_XR(xrLocateSpace(xrSpace, m_oxr->reference_space, time, &spaceLocation),
"Failed to locate space.");
return spaceLocation.pose;
}
static void copy_openxr_pose_to_ghost_pose(const XrPosef &oxr_pose, GHOST_XrPose &r_ghost_pose)
{
/* Set and convert to Blender coodinate space. */
r_ghost_pose.position[0] = oxr_pose.position.x;
r_ghost_pose.position[1] = oxr_pose.position.y;
r_ghost_pose.position[2] = oxr_pose.position.z;
r_ghost_pose.orientation_quat[0] = oxr_pose.orientation.w;
r_ghost_pose.orientation_quat[1] = oxr_pose.orientation.x;
r_ghost_pose.orientation_quat[2] = oxr_pose.orientation.y;
r_ghost_pose.orientation_quat[3] = oxr_pose.orientation.z;
}
GHOST_XrPose GHOST_XrSession::getSpacePose(GHOST_XrSpace space)
{
XrPosef xrPose;
switch (space) {
case GHOST_SPACE_VIEW:
xrPose = m_oxr->actionData.viewPose;
break;
case GHOST_SPACE_LEFT_HAND:
xrPose = m_oxr->actionData.handPoses[0];
break;
case GHOST_SPACE_RIGHT_HAND:
xrPose = m_oxr->actionData.handPoses[1];
break;
default:
throw GHOST_XrException("Invalid GHOST_XrSpace passed to getSpacePose.");
break;
}
GHOST_XrPose ghostPose;
copy_openxr_pose_to_ghost_pose(xrPose, ghostPose);
return ghostPose;
}
void GHOST_XrSession::beginFrameDrawing()
{
XrFrameWaitInfo wait_info = {XR_TYPE_FRAME_WAIT_INFO};
XrFrameBeginInfo begin_info = {XR_TYPE_FRAME_BEGIN_INFO};
XrFrameState frame_state = {XR_TYPE_FRAME_STATE};
/* TODO Blocking call. Drawing should run on a separate thread to avoid interferences. */
CHECK_XR(xrWaitFrame(m_oxr->session, &wait_info, &frame_state),
"Failed to synchronize frame rates between Blender and the device.");
@@ -293,6 +687,32 @@ void GHOST_XrSession::beginFrameDrawing()
if (m_context->isDebugTimeMode()) {
m_draw_info->frame_begin_time = std::chrono::high_resolution_clock::now();
}
//TODO: MOVE ELSEWHERE (SYNCING ACTIONS)
GHOST_XrActionSetMap &actionSetMap = m_oxr->actionData.actionSetMap;
std::vector<XrActiveActionSet> activeSets;
for (GHOST_XrActionSetMap::iterator it = actionSetMap.begin(); it != actionSetMap.end(); it++) {
XrActiveActionSet activeActionSet{it->second.handle, XR_NULL_PATH};
activeSets.push_back(activeActionSet);
}
XrActionsSyncInfo syncInfo{XR_TYPE_ACTIONS_SYNC_INFO};
syncInfo.countActiveActionSets = activeSets.size();
syncInfo.activeActionSets = activeSets.data();
CHECK_XR(xrSyncActions(m_oxr->session, &syncInfo), "Failed to sync actions.");
// TODO: Temporary controller state query, should go elsewhere
updateActions(frame_state.predictedDisplayTime);
}
void GHOST_XrSession::updateActions(XrTime displayTime)
{
m_oxr->actionData.viewPose = locateSpace(GHOST_SPACE_VIEW, displayTime);
m_oxr->actionData.handPoses[0] = locateSpace(GHOST_SPACE_LEFT_HAND, displayTime);
m_oxr->actionData.handPoses[1] = locateSpace(GHOST_SPACE_RIGHT_HAND, displayTime);
}
static void print_debug_timings(GHOST_XrDrawInfo *draw_info)
@@ -352,18 +772,6 @@ void GHOST_XrSession::draw(void *draw_customdata)
endFrameDrawing(&layers);
}
static void copy_openxr_pose_to_ghost_pose(const XrPosef &oxr_pose, GHOST_XrPose &r_ghost_pose)
{
/* Set and convert to Blender coodinate space. */
r_ghost_pose.position[0] = oxr_pose.position.x;
r_ghost_pose.position[1] = oxr_pose.position.y;
r_ghost_pose.position[2] = oxr_pose.position.z;
r_ghost_pose.orientation_quat[0] = oxr_pose.orientation.w;
r_ghost_pose.orientation_quat[1] = oxr_pose.orientation.x;
r_ghost_pose.orientation_quat[2] = oxr_pose.orientation.y;
r_ghost_pose.orientation_quat[3] = oxr_pose.orientation.z;
}
static void ghost_xr_draw_view_info_from_view(const XrView &view, GHOST_XrDrawViewInfo &r_info)
{
/* Set and convert to Blender coodinate space. */

View File

@@ -23,13 +23,65 @@
#include <map>
#include <memory>
#include <string>
#include "GHOST_Types.h"
#include "GHOST_Xr_intern.h"
class GHOST_XrContext;
class GHOST_XrSwapchain;
struct GHOST_XrDrawInfo;
struct OpenXRSessionData;
struct GHOST_XrActionCreateInfo;
struct GHOST_XrSubactionInfo;
struct GHOST_XrSubactionsCreateInfo;
struct GHOST_XrSpaceCreateInfo;
struct GHOST_XrSpaceLocation;
class GHOST_XrAction {
private:
XrSession xrSession;
XrInstance xrInstance;
public:
GHOST_XrAction(const GHOST_XrAction&) = delete;
void operator=(const GHOST_XrAction&) = delete;
XrAction handle;
XrPath subPath;
GHOST_XrAction(XrSession xrSession, XrInstance xrInstance, XrAction handle, XrPath subPath);
GHOST_XrActionStateBoolean getActionStateBoolean();
GHOST_XrActionStateFloat getActionStateFloat();
GHOST_XrActionStateVector2f getActionStateVector2f();
bool isPoseActive();
};
using GHOST_XrActionMap = std::map<std::string, GHOST_XrAction>;
class GHOST_XrActionSet {
private:
GHOST_XrActionMap actionMap;
XrSession xrSession;
XrInstance xrInstance;
public:
GHOST_XrActionSet(const GHOST_XrActionSet&) = delete;
void operator=(const GHOST_XrActionSet&) = delete;
XrActionSet handle;
GHOST_XrAction &getAction(const std::string &actionID);
GHOST_XrAction &createSubactions(GHOST_XrSubactionsCreateInfo info);
GHOST_XrAction &createAction(GHOST_XrActionCreateInfo info);
GHOST_XrActionSet(XrSession xrSession, XrInstance xrInstance, XrActionSet handle);
~GHOST_XrActionSet();
};
using GHOST_XrActionSetMap = std::map<std::string, GHOST_XrActionSet>;
using GHOST_XrInteractionMap = std::map<XrPath, std::vector<XrActionSuggestedBinding>>;
class GHOST_XrSession {
public:
@@ -41,6 +93,15 @@ class GHOST_XrSession {
GHOST_XrSession(GHOST_XrContext *xr_context);
~GHOST_XrSession();
GHOST_XrActionSet &createActionSet(const std::string &name, const std::string &localizedName);
GHOST_XrActionSet &getActionSet(const std::string &setID);
GHOST_XrPose getSpacePose(GHOST_XrSpace space);
void initXrActionsDefault();
void suggestBinding(XrAction handle, const std::string &profile, const std::string &binding);
void bindAndAttachActions();
void start(const GHOST_XrSessionBeginInfo *begin_info);
void requestEnd();
@@ -57,7 +118,6 @@ class GHOST_XrSession {
/** Pointer back to context managing this session. Would be nice to avoid, but needed to access
* custom callbacks set before session start. */
class GHOST_XrContext *m_context;
std::unique_ptr<OpenXRSessionData> m_oxr; /* Could use stack, but PImpl is preferable. */
/** Active Ghost graphic context. Owned by Blender, not GHOST. */
@@ -71,6 +131,8 @@ class GHOST_XrSession {
void beginSession();
void endSession();
void init_xr_action_default();
void bindGraphicsContext();
void prepareDrawing();
@@ -83,6 +145,10 @@ class GHOST_XrSession {
void *draw_customdata);
void beginFrameDrawing();
void endFrameDrawing(std::vector<XrCompositionLayerBaseHeader *> *layers);
XrPosef locateSpace(GHOST_XrSpace space, GHOST_XrTime time);
XrSpace createSpace(GHOST_XrAction &action, XrPosef poseInSpace);
void updateActions(XrTime displayTime);
};
#endif /* GHOST_XRSESSION_H__ */

View File

@@ -38,6 +38,7 @@ struct PointerRNA;
* For handling jobs (which may in turn cause other handlers to be called).
*/
typedef enum {
// BKE_CB_EVT_XR_SESSION_PRE,
BKE_CB_EVT_FRAME_CHANGE_PRE,
BKE_CB_EVT_FRAME_CHANGE_POST,
BKE_CB_EVT_RENDER_PRE,

View File

@@ -1544,6 +1544,8 @@ static void draw_frustum_bound_sphere_calc(const BoundBox *bbox,
/* just use median point */
mid_v3_v3v3(bsphere->center, farpoint, nearpoint);
mul_m4_v3(viewinv, farpoint);
bsphere->radius = len_v3v3(bsphere->center, farpoint);
}
else if (projmat[2][0] == 0.0f && projmat[2][1] == 0.0f) {

View File

@@ -0,0 +1,88 @@
///*
// * This program is free software; you can redistribute it and/or
// * modify it under the terms of the GNU General Public License
// * as published by the Free Software Foundation; either version 2
// * of the License, or (at your option) any later version.
// *
// * This program is distributed in the hope that it will be useful,
// * but WITHOUT ANY WARRANTY; without even the implied warranty of
// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// * GNU General Public License for more details.
// *
// * You should have received a copy of the GNU General Public License
// * along with this program; if not, write to the Free Software Foundation,
// * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
// */
//
///** \file
// * \ingroup RNA
// */
//
//#include "DNA_view3d_types.h"
//#include "DNA_xr_types.h"
//
//#include "RNA_define.h"
//#include "RNA_enum_types.h"
//
//#include "WM_types.h"
//
//#include "rna_internal.h"
//
//#ifdef RNA_RUNTIME
//
//# include "BLI_math.h"
//
//# include "WM_api.h"
//
//#else /* RNA_RUNTIME */
//
//static void rna_def_xr_action_set(BlenderRNA *brna)
//{
// StructRNA *srna;
// PropertyRNA *prop;
// PropertyRNA *parm;
//
// srna = RNA_def_struct(brna, "XrActionSet", NULL);
// RNA_def_struct_ui_text(srna, "XrActionSet", "Xr Action Set");
//
// //Static function to create an action set (should be part of the session struct)
// //TODO: merge with session struct and rna_xr.
//
// func = RNA_def_function(srna, "create_set", "rna_XrAction_create_set");
// RNA_def_function_ui_description(func, "Create an action set.");
// RNA_def_function_flag(func, FUNC_NO_SELF);
// parm = RNA_def_string(func, "action_set_name", NULL, 0, "", "Name of the action set.");
// RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
// parm = RNA_def_pointer(func, "action_set", "ActionSet", "", "Created GHOST_OpenXr Action Set.");
// RNA_def_function_return(func, parm);
//
// //Function to create an action.
// func = RNA_def_function(srna, "create_action", "rna_XrAction_create_action");
// RNA_def_function_ui_description(func, "Create an action.");
// parm = RNA_def_string(func, "action_name", NULL, 0, "", "Name of the action.");
// RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
// parm = RNA_def_pointer(func, "action", "Action", "", "Created GHOST_OpenXr Action.");
// RNA_def_function_return(func, parm);
//}
//
//static void rna_def_xr_action(BlenderRNA *brna) {
// StructRNA *srna;
// PropertyRNA *prop;
//
// srna = RNA_def_struct(brna, "XrAction", NULL);
// RNA_def_struct_ui_text(srna, "XrAction", "Xr Action");
//
// func = RNA_def_function(srna, "create_set", "rna_XrAction_create_set");
// RNA_def_function_ui_description(func, "Create an action set.");
//
// //TODO: How do we map bindings to 'operators'?
// //TODO: Probably need a way of mapping callbacks and operators.
//}
//
//
//void RNA_def_xr_actions(BlenderRNA *brna)
//{
// rna_def_xr_action_set(brna);
//}
//
//#endif /* RNA_RUNTIME */

View File

@@ -40,6 +40,8 @@
#include "wm_surface.h"
#include "wm_xr_intern.h"
#include "BLI_math_rotation.h"
typedef struct {
wmWindowManager *wm;
} wmXrErrorHandlerData;
@@ -105,6 +107,12 @@ bool wm_xr_init(wmWindowManager *wm)
if (!wm->xr.runtime) {
wm->xr.runtime = wm_xr_runtime_data_create();
wm->xr.runtime->context = context;
unit_qt(wm->xr.runtime->session_state.world_pose.orientation_quat);
wm->xr.runtime->session_state.world_pose.position[0] = 0.f;
wm->xr.runtime->session_state.world_pose.position[1] = 0.f;
wm->xr.runtime->session_state.world_pose.position[2] = 0.f;
wm->xr.runtime->session_state.world_scale = 1.f;
}
}
BLI_assert(wm->xr.runtime && wm->xr.runtime->context);

View File

@@ -30,6 +30,9 @@
#include "GHOST_C-api.h"
#include "GPU_immediate.h"
#include "GPU_immediate_util.h"
#include "GPU_matrix.h"
#include "GPU_viewport.h"
#include "WM_api.h"
@@ -37,7 +40,7 @@
#include "wm_surface.h"
#include "wm_xr_intern.h"
void wm_xr_pose_to_viewmat(const GHOST_XrPose *pose, float r_viewmat[4][4])
void wm_xr_pose_to_viewmat(float r_viewmat[4][4], const GHOST_XrPose *pose)
{
float iquat[4];
invert_qt_qt_normalized(iquat, pose->orientation_quat);
@@ -48,6 +51,7 @@ void wm_xr_pose_to_viewmat(const GHOST_XrPose *pose, float r_viewmat[4][4])
static void wm_xr_draw_matrices_create(const wmXrDrawData *draw_data,
const GHOST_XrDrawViewInfo *draw_view,
const XrSessionSettings *session_settings,
float scale,
float r_view_mat[4][4],
float r_proj_mat[4][4])
{
@@ -65,15 +69,15 @@ static void wm_xr_draw_matrices_create(const wmXrDrawData *draw_data,
draw_view->fov.angle_right,
draw_view->fov.angle_up,
draw_view->fov.angle_down,
session_settings->clip_start,
session_settings->clip_end);
session_settings->clip_start * scale,
session_settings->clip_end * scale);
float eye_mat[4][4];
float base_mat[4][4];
wm_xr_pose_to_viewmat(&eye_pose, eye_mat);
wm_xr_pose_to_viewmat(eye_mat, &eye_pose);
/* Calculate the base pose matrix (in world space!). */
wm_xr_pose_to_viewmat(&draw_data->base_pose, base_mat);
wm_xr_pose_to_viewmat(base_mat, &draw_data->base_pose);
mul_m4_m4m4(r_view_mat, eye_mat, base_mat);
}
@@ -95,12 +99,41 @@ static void wm_xr_draw_viewport_buffers_to_active_framebuffer(
GPU_viewport_draw_to_screen_ex(surface_data->viewport, 0, &rect, draw_view->expects_srgb_buffer);
}
void apply_world_transform(float viewmat[4][4], GHOST_XrPose world_pose, float scale)
{
float world[4][4];
float scalev[3] = {scale, scale, scale};
loc_quat_size_to_mat4(world, world_pose.position, world_pose.orientation_quat, scalev);
mul_m4_m4m4(viewmat, viewmat, world);
}
/**
* \brief Draw a viewport for a single eye.
*
* This is the main viewport drawing function for VR sessions. It's assigned to Ghost-XR as a
* callback (see GHOST_XrDrawViewFunc()) and executed for each view (read: eye).
*/
void wm_xr_session_controller_transform_update(GHOST_XrPose *dst_pose,
const GHOST_XrPose *base_pose,
const GHOST_XrPose *pose)
{
copy_v3_v3(dst_pose->position, base_pose->position);
dst_pose->position[0] = base_pose->position[0] + pose->position[0];
dst_pose->position[1] = base_pose->position[1] - pose->position[2];
dst_pose->position[2] = base_pose->position[2] + pose->position[1];
mul_qt_qtqt(dst_pose->orientation_quat, base_pose->orientation_quat, pose->orientation_quat);
float invBaseRotation[4];
copy_qt_qt(invBaseRotation, base_pose->orientation_quat);
invert_qt(invBaseRotation);
mul_qt_qtqt(dst_pose->orientation_quat, dst_pose->orientation_quat, invBaseRotation);
}
void wm_xr_draw_view(const GHOST_XrDrawViewInfo *draw_view, void *customdata)
{
wmXrDrawData *draw_data = customdata;
@@ -116,8 +149,12 @@ void wm_xr_draw_view(const GHOST_XrDrawViewInfo *draw_view, void *customdata)
BLI_assert(WM_xr_session_is_ready(xr_data));
wm_xr_session_draw_data_update(session_state, settings, draw_view, draw_data);
wm_xr_draw_matrices_create(draw_data, draw_view, settings, viewmat, winmat);
wm_xr_session_state_update(settings, draw_data, draw_view, session_state);
wm_xr_draw_matrices_create(
draw_data, draw_view, settings, session_state->world_scale, viewmat, winmat);
apply_world_transform(viewmat, session_state->world_pose, session_state->world_scale);
wm_xr_session_state_update(settings, draw_data, draw_view, session_state, viewmat);
if (!wm_xr_session_surface_offscreen_ensure(surface_data, draw_view)) {
return;
@@ -138,8 +175,8 @@ void wm_xr_draw_view(const GHOST_XrDrawViewInfo *draw_view, void *customdata)
display_flags,
viewmat,
winmat,
settings->clip_start,
settings->clip_end,
settings->clip_start * session_state->world_scale,
settings->clip_end * session_state->world_scale,
false,
true,
true,
@@ -148,6 +185,20 @@ void wm_xr_draw_view(const GHOST_XrDrawViewInfo *draw_view, void *customdata)
surface_data->offscreen,
surface_data->viewport);
GHOST_XrPose leftPoseStatic = GHOST_XrGetSpacePose(xr_data->runtime->context, GHOST_SPACE_LEFT_HAND);
GHOST_XrPose rightPoseStatic = GHOST_XrGetSpacePose(xr_data->runtime->context, GHOST_SPACE_RIGHT_HAND);
GHOST_XrPose leftPose;
GHOST_XrPose rightPose;
wm_xr_session_controller_transform_update(&leftPose,
&draw_data->base_pose,
&leftPoseStatic);
wm_xr_session_controller_transform_update(&rightPose,
&draw_data->base_pose,
&rightPoseStatic);
/* The draw-manager uses both GPUOffscreen and GPUViewport to manage frame and texture buffers. A
* call to GPU_viewport_draw_to_screen() is still needed to get the final result from the
* viewport buffers composited together and potentially color managed for display on screen.
@@ -157,6 +208,40 @@ void wm_xr_draw_view(const GHOST_XrDrawViewInfo *draw_view, void *customdata)
* to be submitted to the OpenXR swap-chain. So do not un-bind the off-screen yet! */
GPU_offscreen_bind(surface_data->offscreen, false);
wm_xr_draw_viewport_buffers_to_active_framebuffer(xr_data->runtime, surface_data, draw_view);
GPU_matrix_push_projection();
GPU_matrix_push();
GPU_matrix_projection_set(winmat);
GPU_matrix_set(viewmat);
GPU_blend(true);
uint pos = GPU_vertformat_attr_add(immVertexFormat(), "pos", GPU_COMP_F32, 3, GPU_FETCH_FLOAT);
immBindBuiltinProgram(GPU_SHADER_3D_UNIFORM_COLOR);
immUniformColor4fv((const float[4]){1, 1, 1, 0.5f});
immBegin(GPU_PRIM_LINES, 2);
immVertex3f(pos, leftPose.position[0], leftPose.position[1], leftPose.position[2]);
immVertex3f(
pos, leftPose.position[0] + 5.0f, leftPose.position[1] + 5.0f, leftPose.position[2] + 5.0f);
immEnd();
immBegin(GPU_PRIM_LINES, 2);
immVertex3f(pos, rightPose.position[0], rightPose.position[1], rightPose.position[2]);
immVertex3f(pos,
rightPose.position[0] + 5.0f,
rightPose.position[1] + 5.0f,
rightPose.position[2] + 5.0f);
immEnd();
immUnbindProgram();
GPU_blend(false);
GPU_matrix_pop();
GPU_matrix_pop_projection();
}

View File

@@ -45,6 +45,9 @@ typedef struct wmXrSessionState {
bool force_reset_to_base_pose;
bool is_view_data_set;
GHOST_XrPose world_pose;
float world_scale;
} wmXrSessionState;
typedef struct wmXrRuntimeData {
@@ -81,10 +84,13 @@ void wm_xr_session_draw_data_update(const wmXrSessionState *state,
const XrSessionSettings *settings,
const GHOST_XrDrawViewInfo *draw_view,
wmXrDrawData *draw_data);
void wm_xr_session_state_update(const XrSessionSettings *settings,
const wmXrDrawData *draw_data,
const GHOST_XrDrawViewInfo *draw_view,
wmXrSessionState *state);
wmXrSessionState *state,
float viewmat[4][4]);
bool wm_xr_session_surface_offscreen_ensure(wmXrSurfaceData *surface_data,
const GHOST_XrDrawViewInfo *draw_view);
void *wm_xr_session_gpu_binding_context_create(void);
@@ -92,5 +98,8 @@ void wm_xr_session_gpu_binding_context_destroy(GHOST_ContextHandle context);
void wm_xr_pose_to_viewmat(const GHOST_XrPose *pose, float r_viewmat[4][4]);
void wm_xr_draw_view(const GHOST_XrDrawViewInfo *draw_view, void *customdata);
void wm_xr_session_controller_transform_update(GHOST_XrPose *dst_pose,
const GHOST_XrPose *base_pose,
const GHOST_XrPose *pose);
#endif

View File

@@ -136,6 +136,12 @@ static void wm_xr_session_base_pose_calc(const Scene *scene,
tmp_eul[0] = M_PI_2;
tmp_eul[1] = 0;
eul_to_quat(r_base_pose->orientation_quat, tmp_eul);
/* TODO: copied code from ubisoft guys, temporary fix. */
tmp_eul[0] = M_PI_2;
tmp_eul[1] = 0;
tmp_eul[2] = 0;
eul_to_quat(r_base_pose->orientation_quat, tmp_eul);
}
else {
copy_v3_fl(r_base_pose->position, 0.0f);
@@ -245,7 +251,8 @@ void wm_xr_session_draw_data_update(const wmXrSessionState *state,
void wm_xr_session_state_update(const XrSessionSettings *settings,
const wmXrDrawData *draw_data,
const GHOST_XrDrawViewInfo *draw_view,
wmXrSessionState *state)
wmXrSessionState *state,
float viewmat[4][4])
{
GHOST_XrPose viewer_pose;
const bool use_position_tracking = settings->flag & XR_SESSION_USE_POSITION_TRACKING;
@@ -267,7 +274,10 @@ void wm_xr_session_state_update(const XrSessionSettings *settings,
copy_v3_v3(state->viewer_pose.position, viewer_pose.position);
copy_qt_qt(state->viewer_pose.orientation_quat, viewer_pose.orientation_quat);
wm_xr_pose_to_viewmat(&viewer_pose, state->viewer_viewmat);
/* Viewmat transform. */
memcpy(state->viewer_viewmat, viewmat, 16 * sizeof(float));
/* No idea why, but multiplying by two seems to make it match the VR view more. */
state->focal_len = 2.0f *
fov_to_focallength(draw_view->fov.angle_right - draw_view->fov.angle_left,
@@ -278,10 +288,31 @@ void wm_xr_session_state_update(const XrSessionSettings *settings,
state->prev_base_pose_type = settings->base_pose_type;
state->prev_base_pose_object = settings->base_pose_object;
state->is_view_data_set = true;
/* Assume this was already done through wm_xr_session_draw_data_update(). */
state->force_reset_to_base_pose = false;
}
bool WM_xr_session_state_world_matrix_get(const wmXrData *xr,
float world_matrix[4][4])
{
if (!WM_xr_session_is_ready(xr)) {
unit_m4(world_matrix);
return false;
}
float scale[3] = {xr->runtime->session_state.world_scale,
xr->runtime->session_state.world_scale,
xr->runtime->session_state.world_scale};
loc_quat_size_to_mat4(world_matrix,
xr->runtime->session_state.world_pose.position,
xr->runtime->session_state.world_pose.orientation_quat,
scale);
return true;
}
wmXrSessionState *WM_xr_session_state_handle_get(const wmXrData *xr)
{
return xr->runtime ? &xr->runtime->session_state : NULL;