| 
									
										
										
										
											2021-12-14 12:44:12 +11:00
										 |  |  | #!/usr/bin/env python | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Import("env") | 
					
						
							|  |  |  | Import("env_modules") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | env_openxr = env_modules.Clone() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ################################################# | 
					
						
							|  |  |  | # Add in our Khronos OpenXR loader | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | thirdparty_obj = [] | 
					
						
							|  |  |  | thirdparty_dir = "#thirdparty/openxr" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | env_openxr.Prepend( | 
					
						
							|  |  |  |     CPPPATH=[ | 
					
						
							|  |  |  |         thirdparty_dir, | 
					
						
							|  |  |  |         thirdparty_dir + "/include", | 
					
						
							|  |  |  |         thirdparty_dir + "/src", | 
					
						
							|  |  |  |         thirdparty_dir + "/src/common", | 
					
						
							|  |  |  |         thirdparty_dir + "/src/external/jsoncpp/include", | 
					
						
							|  |  |  |     ] | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if env["platform"] == "android": | 
					
						
							|  |  |  |     # may need to set OPENXR_ANDROID_VERSION_SUFFIX | 
					
						
							| 
									
										
										
										
											2022-09-24 13:56:00 +02:00
										 |  |  |     env_openxr.AppendUnique(CPPDEFINES=["XR_OS_ANDROID", "XR_USE_PLATFORM_ANDROID"]) | 
					
						
							|  |  |  |     env_openxr.AppendUnique(CPPDEFINES=["JSON_USE_EXCEPTION=0"]) | 
					
						
							| 
									
										
										
										
											2021-12-14 12:44:12 +11:00
										 |  |  | 
 | 
					
						
							|  |  |  |     # may need to include java parts of the openxr loader | 
					
						
							|  |  |  | elif env["platform"] == "linuxbsd": | 
					
						
							| 
									
										
										
										
											2022-09-24 13:56:00 +02:00
										 |  |  |     env_openxr.AppendUnique(CPPDEFINES=["XR_OS_LINUX"]) | 
					
						
							| 
									
										
										
										
											2022-07-20 03:42:15 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     if env["x11"]: | 
					
						
							| 
									
										
										
										
											2022-09-24 13:56:00 +02:00
										 |  |  |         env_openxr.AppendUnique(CPPDEFINES=["XR_USE_PLATFORM_XLIB"]) | 
					
						
							| 
									
										
										
										
											2022-07-20 03:42:15 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-14 12:44:12 +11:00
										 |  |  |     # FIXME: Review what needs to be set for Android and macOS. | 
					
						
							| 
									
										
										
										
											2022-09-24 13:56:00 +02:00
										 |  |  |     env_openxr.AppendUnique(CPPDEFINES=["HAVE_SECURE_GETENV"]) | 
					
						
							| 
									
										
										
										
											2021-12-14 12:44:12 +11:00
										 |  |  | elif env["platform"] == "windows": | 
					
						
							| 
									
										
										
										
											2022-09-24 13:56:00 +02:00
										 |  |  |     env_openxr.AppendUnique(CPPDEFINES=["XR_OS_WINDOWS", "NOMINMAX", "XR_USE_PLATFORM_WIN32"]) | 
					
						
							| 
									
										
										
										
											2021-12-14 12:44:12 +11:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-24 13:56:00 +02:00
										 |  |  | # may need to check and set: | 
					
						
							|  |  |  | # - XR_USE_TIMESPEC | 
					
						
							| 
									
										
										
										
											2021-12-14 12:44:12 +11:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-24 13:56:00 +02:00
										 |  |  | env_thirdparty = env_openxr.Clone() | 
					
						
							|  |  |  | env_thirdparty.disable_warnings() | 
					
						
							|  |  |  | env_thirdparty.AppendUnique(CPPDEFINES=["DISABLE_STD_FILESYSTEM"]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if "-fno-exceptions" in env_thirdparty["CXXFLAGS"]: | 
					
						
							|  |  |  |     env_thirdparty["CXXFLAGS"].remove("-fno-exceptions") | 
					
						
							|  |  |  | env_thirdparty.Append(CPPPATH=[thirdparty_dir + "/src/loader"]) | 
					
						
							| 
									
										
										
										
											2021-12-14 12:44:12 +11:00
										 |  |  | 
 | 
					
						
							|  |  |  | # add in external jsoncpp dependency | 
					
						
							|  |  |  | env_thirdparty.add_source_files(thirdparty_obj, thirdparty_dir + "/src/external/jsoncpp/src/lib_json/json_reader.cpp") | 
					
						
							|  |  |  | env_thirdparty.add_source_files(thirdparty_obj, thirdparty_dir + "/src/external/jsoncpp/src/lib_json/json_value.cpp") | 
					
						
							|  |  |  | env_thirdparty.add_source_files(thirdparty_obj, thirdparty_dir + "/src/external/jsoncpp/src/lib_json/json_writer.cpp") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # add in load | 
					
						
							| 
									
										
										
										
											2022-09-24 13:56:00 +02:00
										 |  |  | if env["platform"] != "android": | 
					
						
							|  |  |  |     # On Android the openxr_loader is provided by separate plugins for each device | 
					
						
							|  |  |  |     # Build the engine using object files | 
					
						
							|  |  |  |     khrloader_obj = [] | 
					
						
							|  |  |  |     env_thirdparty.add_source_files(khrloader_obj, thirdparty_dir + "/src/xr_generated_dispatch_table.c") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     env_thirdparty.add_source_files(khrloader_obj, thirdparty_dir + "/src/common/filesystem_utils.cpp") | 
					
						
							|  |  |  |     env_thirdparty.add_source_files(khrloader_obj, thirdparty_dir + "/src/common/object_info.cpp") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     env_thirdparty.add_source_files(khrloader_obj, thirdparty_dir + "/src/loader/api_layer_interface.cpp") | 
					
						
							|  |  |  |     env_thirdparty.add_source_files(khrloader_obj, thirdparty_dir + "/src/loader/loader_core.cpp") | 
					
						
							|  |  |  |     env_thirdparty.add_source_files(khrloader_obj, thirdparty_dir + "/src/loader/loader_instance.cpp") | 
					
						
							|  |  |  |     env_thirdparty.add_source_files(khrloader_obj, thirdparty_dir + "/src/loader/loader_logger_recorders.cpp") | 
					
						
							|  |  |  |     env_thirdparty.add_source_files(khrloader_obj, thirdparty_dir + "/src/loader/loader_logger.cpp") | 
					
						
							|  |  |  |     env_thirdparty.add_source_files(khrloader_obj, thirdparty_dir + "/src/loader/manifest_file.cpp") | 
					
						
							|  |  |  |     env_thirdparty.add_source_files(khrloader_obj, thirdparty_dir + "/src/loader/runtime_interface.cpp") | 
					
						
							|  |  |  |     env_thirdparty.add_source_files(khrloader_obj, thirdparty_dir + "/src/loader/xr_generated_loader.cpp") | 
					
						
							|  |  |  |     env.modules_sources += khrloader_obj | 
					
						
							| 
									
										
										
										
											2021-12-14 12:44:12 +11:00
										 |  |  | 
 | 
					
						
							|  |  |  | env.modules_sources += thirdparty_obj | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ################################################# | 
					
						
							|  |  |  | # And include our module source | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module_obj = [] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | env_openxr.add_source_files(module_obj, "*.cpp") | 
					
						
							|  |  |  | env_openxr.add_source_files(module_obj, "action_map/*.cpp") | 
					
						
							| 
									
										
										
										
											2022-04-17 12:58:09 +10:00
										 |  |  | env_openxr.add_source_files(module_obj, "scene/*.cpp") | 
					
						
							| 
									
										
										
										
											2021-12-14 12:44:12 +11:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-31 14:06:10 +02:00
										 |  |  | # We're a little more targeted with our extensions | 
					
						
							| 
									
										
										
										
											2021-12-14 12:44:12 +11:00
										 |  |  | if env["platform"] == "android": | 
					
						
							|  |  |  |     env_openxr.add_source_files(module_obj, "extensions/openxr_android_extension.cpp") | 
					
						
							|  |  |  | if env["vulkan"]: | 
					
						
							|  |  |  |     env_openxr.add_source_files(module_obj, "extensions/openxr_vulkan_extension.cpp") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-23 13:20:12 +10:00
										 |  |  | env_openxr.add_source_files(module_obj, "extensions/openxr_palm_pose_extension.cpp") | 
					
						
							| 
									
										
										
										
											2022-03-09 19:09:25 +11:00
										 |  |  | env_openxr.add_source_files(module_obj, "extensions/openxr_htc_vive_tracker_extension.cpp") | 
					
						
							| 
									
										
										
										
											2022-04-17 12:58:09 +10:00
										 |  |  | env_openxr.add_source_files(module_obj, "extensions/openxr_hand_tracking_extension.cpp") | 
					
						
							| 
									
										
										
										
											2022-03-09 19:09:25 +11:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-14 12:44:12 +11:00
										 |  |  | env.modules_sources += module_obj | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-17 10:24:47 +11:00
										 |  |  | if env["tools"]: | 
					
						
							|  |  |  |     SConscript("editor/SCsub") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-14 12:44:12 +11:00
										 |  |  | # Needed to force rebuilding the module files when the thirdparty library is updated. | 
					
						
							|  |  |  | env.Depends(module_obj, thirdparty_obj) |