瀏覽代碼

PhysX Split support for PhysX4 (#240)

Updates to the PhysX 3rd Party script to support the [PhysX 4/5 Split](https://github.com/o3de/sig-simulation/issues/85).

* Support to rename `FindPhysX.cmake` -> `FindPhysX4.cmake`
* Update the `FindPhysX4.cmake` to only use static libraries instead of the shared equivalent. This is necessary to prevent collision of the same shared libraries from both versions that have the same name. This will also reduce the 3rd Party package size.
* Update the PhysX 3P package to `rev8`
---------

Signed-off-by: Steve Pham <[email protected]>
Steve Pham 1 年之前
父節點
當前提交
742fff0a3a

+ 2 - 2
Scripts/builders/vcpkgbuilder.py

@@ -226,7 +226,7 @@ class VcpkgBuilder(object):
         with (packageDir / 'PackageInfo.json').open('w') as fh:
         with (packageDir / 'PackageInfo.json').open('w') as fh:
             json.dump(settings, fh, indent=4)
             json.dump(settings, fh, indent=4)
 
 
-    def writeCMakeFindFile(self, packageDir: pathlib.Path, template, templateEnv:dict):
-        cmakeFindFile = packageDir / f'Find{self.packageName}.cmake'
+    def writeCMakeFindFile(self, packageDir: pathlib.Path, template, templateEnv:dict, overwrite_find_file:str or None):
+        cmakeFindFile = packageDir / f'Find{overwrite_find_file or self.packageName}.cmake'
         cmakeFindFile.write_text(string.Template(template).substitute(templateEnv))
         cmakeFindFile.write_text(string.Template(template).substitute(templateEnv))
 
 

+ 63 - 63
package-system/PhysX/FindPhysX.cmake.template

@@ -6,13 +6,13 @@
 #
 #
 #
 #
 
 
-set(MY_NAME "PhysX")
+set(MY_NAME "PhysX4")
 set(TARGET_WITH_NAMESPACE "3rdParty::$${MY_NAME}")
 set(TARGET_WITH_NAMESPACE "3rdParty::$${MY_NAME}")
 if (TARGET $${TARGET_WITH_NAMESPACE})
 if (TARGET $${TARGET_WITH_NAMESPACE})
     return()
     return()
 endif()
 endif()
 
 
-set(_PACKAGE_DIR $${CMAKE_CURRENT_LIST_DIR}/PhysX/$$<IF:$$<BOOL:$${LY_MONOLITHIC_GAME}>,static,shared>)
+set(_PACKAGE_DIR $${CMAKE_CURRENT_LIST_DIR}/PhysX/static)
 set(_PACKAGE_DIR_SHARED $${CMAKE_CURRENT_LIST_DIR}/PhysX/shared)
 set(_PACKAGE_DIR_SHARED $${CMAKE_CURRENT_LIST_DIR}/PhysX/shared)
 
 
 set($${MY_NAME}_INCLUDE_DIR
 set($${MY_NAME}_INCLUDE_DIR
@@ -21,7 +21,7 @@ set($${MY_NAME}_INCLUDE_DIR
     $${_PACKAGE_DIR}/include/geometry
     $${_PACKAGE_DIR}/include/geometry
 )
 )
 
 
-set($${MY_NAME}_COMPILE_DEFINITIONS $$<$$<BOOL:$${LY_MONOLITHIC_GAME}>:PX_PHYSX_STATIC_LIB>)
+set($${MY_NAME}_COMPILE_DEFINITIONS PX_PHYSX_STATIC_LIB)
 
 
 # LY_PHYSX_PROFILE_USE_CHECKED_LIBS allows to override what PhysX configuration to use on O3DE profile.
 # LY_PHYSX_PROFILE_USE_CHECKED_LIBS allows to override what PhysX configuration to use on O3DE profile.
 set(LY_PHYSX_PROFILE_USE_CHECKED_LIBS OFF CACHE BOOL "When ON it uses PhysX SDK checked libraries on O3DE profile configuration")
 set(LY_PHYSX_PROFILE_USE_CHECKED_LIBS OFF CACHE BOOL "When ON it uses PhysX SDK checked libraries on O3DE profile configuration")
@@ -33,6 +33,7 @@ endif()
 
 
 set(PATH_TO_STATIC_LIBS $${_PACKAGE_DIR}/$$<IF:$$<CONFIG:debug>,debug,$$<$$<CONFIG:profile>:$${PHYSX_PROFILE_CONFIG}>>/lib)
 set(PATH_TO_STATIC_LIBS $${_PACKAGE_DIR}/$$<IF:$$<CONFIG:debug>,debug,$$<$$<CONFIG:profile>:$${PHYSX_PROFILE_CONFIG}>>/lib)
 set(PATH_TO_SHARED_LIBS $${_PACKAGE_DIR_SHARED}/$$<IF:$$<CONFIG:debug>,debug,$$<$$<CONFIG:profile>:$${PHYSX_PROFILE_CONFIG}>>/bin)
 set(PATH_TO_SHARED_LIBS $${_PACKAGE_DIR_SHARED}/$$<IF:$$<CONFIG:debug>,debug,$$<$$<CONFIG:profile>:$${PHYSX_PROFILE_CONFIG}>>/bin)
+set(PATH_TO_ADDITIONAL_STATIC_LIBS $${_PACKAGE_DIR_SHARED}/$$<IF:$$<CONFIG:debug>,debug,$$<$$<CONFIG:profile>:$${PHYSX_PROFILE_CONFIG}>>/lib)
 
 
 if(DEFINED CMAKE_IMPORT_LIBRARY_SUFFIX)
 if(DEFINED CMAKE_IMPORT_LIBRARY_SUFFIX)
     set(PATH_TO_IMPORT_LIBS $${PATH_TO_STATIC_LIBS})
     set(PATH_TO_IMPORT_LIBS $${PATH_TO_STATIC_LIBS})
@@ -44,78 +45,77 @@ else()
     set(import_lib_suffix $${CMAKE_SHARED_LIBRARY_SUFFIX})
     set(import_lib_suffix $${CMAKE_SHARED_LIBRARY_SUFFIX})
 endif()
 endif()
 
 
-set($${MY_NAME}_LIBRARIES
-    $${PATH_TO_STATIC_LIBS}/$${CMAKE_STATIC_LIBRARY_PREFIX}PhysXCharacterKinematic_static_64$${CMAKE_STATIC_LIBRARY_SUFFIX}
-    $${PATH_TO_STATIC_LIBS}/$${CMAKE_STATIC_LIBRARY_PREFIX}PhysXVehicle_static_64$${CMAKE_STATIC_LIBRARY_SUFFIX}
-    $${PATH_TO_STATIC_LIBS}/$${CMAKE_STATIC_LIBRARY_PREFIX}PhysXExtensions_static_64$${CMAKE_STATIC_LIBRARY_SUFFIX}
-    $${PATH_TO_STATIC_LIBS}/$${CMAKE_STATIC_LIBRARY_PREFIX}PhysXPvdSDK_static_64$${CMAKE_STATIC_LIBRARY_SUFFIX}
+set(extra_static_libs
+${EXTRA_STATIC_LIBS}
 )
 )
 
 
-set(extra_static_libs ${EXTRA_STATIC_LIBS_NON_MONOLITHIC})
-set(extra_shared_libs ${EXTRA_SHARED_LIBS})
-
-if(LY_MONOLITHIC_GAME)
-    if(LY_PHYSX_PROFILE_USE_CHECKED_LIBS)
-        set(MONO_PATH_TO_STATIC_LIBS $${CMAKE_CURRENT_LIST_DIR}/PhysX/static/checked/lib)
-    else()
-        set(MONO_PATH_TO_STATIC_LIBS $${CMAKE_CURRENT_LIST_DIR}/PhysX/static/profile/lib)
-    endif()
-    # The order of PhysX 4.x static libraries is important for monolithic targets.
-    set(IMPORTED_PHYSICS_LIBS
-        PhysX_static_64
-        PhysXPvdSDK_static_64
-        PhysXVehicle_static_64
-        PhysXCharacterKinematic_static_64
-        PhysXExtensions_static_64
-        PhysXCooking_static_64
-        PhysXCommon_static_64
-        PhysXFoundation_static_64
-    )
-    foreach(PHYSICS_LIB $${IMPORTED_PHYSICS_LIBS})
-        add_library($${PHYSICS_LIB}::imported STATIC IMPORTED GLOBAL)
-        set($${PHYSICS_LIB}_PATH $${MONO_PATH_TO_STATIC_LIBS}/$${CMAKE_STATIC_LIBRARY_PREFIX}$${PHYSICS_LIB}$${CMAKE_STATIC_LIBRARY_SUFFIX})
-        set_target_properties($${PHYSICS_LIB}::imported
-            PROPERTIES
-                IMPORTED_LOCATION_DEBUG   $${$${PHYSICS_LIB}_PATH}
-                IMPORTED_LOCATION_PROFILE $${$${PHYSICS_LIB}_PATH}
-                IMPORTED_LOCATION_RELEASE $${$${PHYSICS_LIB}_PATH}
-        )
-        target_link_libraries($${PHYSICS_LIB}::imported INTERFACE 
-            $${PREVIOUS_PHYSICS_LIB}
-            $${MONO_PATH_TO_STATIC_LIBS}/$${CMAKE_STATIC_LIBRARY_PREFIX}$${PHYSICS_LIB}$${CMAKE_STATIC_LIBRARY_SUFFIX}
-        )
-        set (PREVIOUS_PHYSICS_LIB $${PHYSICS_LIB}::imported)
-    endforeach()
-
-    add_library(Physx4_STATIC_LIBS_FOR_MONOLITHIC::imported INTERFACE IMPORTED GLOBAL)
-    target_link_libraries(Physx4_STATIC_LIBS_FOR_MONOLITHIC::imported INTERFACE
-        PhysXFoundation_static_64::imported
+set(extra_shared_libs
+${EXTRA_SHARED_LIBS}
+)
+
+# The order of PhysX 5.x static libraries is important for static targets. We will loop through in order and define
+# each static library explicitly, while setting their dependency as a chain to ensure the order is preserved
+
+set(IMPORTED_PHYSICS_LIBS
+    PhysX_static_64
+    PhysXPvdSDK_static_64
+    PhysXVehicle_static_64
+    PhysXCharacterKinematic_static_64
+    PhysXExtensions_static_64
+    PhysXCooking_static_64
+    PhysXCommon_static_64
+    PhysXFoundation_static_64
+)
+
+foreach(PHYSICS_LIB $${IMPORTED_PHYSICS_LIBS})
+
+    # Set the individual target names to include a $${MY_NAME} prefix in order to prevent collisions
+    # with other 3rd party PhysX Packages of different versions while retaining the same actual
+    # filename
+
+    set(PHYSICS_LIB_NAME $${MY_NAME}$${PHYSICS_LIB})
+
+    add_library($${PHYSICS_LIB_NAME}::imported STATIC IMPORTED GLOBAL)
+
+    # Set the import location (note: generator expressions are not supported as properties here, so each config needs to be explicit for its location)
+    set_target_properties($${PHYSICS_LIB_NAME}::imported
+        PROPERTIES
+            IMPORTED_LOCATION_DEBUG   $${_PACKAGE_DIR}/debug/lib/$${CMAKE_STATIC_LIBRARY_PREFIX}$${PHYSICS_LIB}$${CMAKE_STATIC_LIBRARY_SUFFIX}
+            IMPORTED_LOCATION_PROFILE $${_PACKAGE_DIR}/$${PHYSX_PROFILE_CONFIG}/lib/$${CMAKE_STATIC_LIBRARY_PREFIX}$${PHYSICS_LIB}$${CMAKE_STATIC_LIBRARY_SUFFIX}
+            IMPORTED_LOCATION_RELEASE $${_PACKAGE_DIR}/lib/$${CMAKE_STATIC_LIBRARY_PREFIX}$${PHYSICS_LIB}$${CMAKE_STATIC_LIBRARY_SUFFIX}
     )
     )
-else()
-    list(APPEND $${MY_NAME}_LIBRARIES
-        $${PATH_TO_IMPORT_LIBS}/$${import_lib_prefix}PhysX_64$${import_lib_suffix}
-        $${PATH_TO_IMPORT_LIBS}/$${import_lib_prefix}PhysXCooking_64$${import_lib_suffix}
-        $${PATH_TO_IMPORT_LIBS}/$${import_lib_prefix}PhysXFoundation_64$${import_lib_suffix}
-        $${PATH_TO_IMPORT_LIBS}/$${import_lib_prefix}PhysXCommon_64$${import_lib_suffix}
-        $${extra_static_libs}
+
+    # Set the target libraries dependency on any previous lib to build the order chain
+    target_link_libraries($${PHYSICS_LIB_NAME}::imported INTERFACE
+        $${PREVIOUS_PHYSICS_LIB}
+        $${PATH_TO_STATIC_LIBS}/$${CMAKE_STATIC_LIBRARY_PREFIX}$${PHYSICS_LIB}$${CMAKE_STATIC_LIBRARY_SUFFIX}
     )
     )
+    set (PREVIOUS_PHYSICS_LIB $${PHYSICS_LIB_NAME}::imported)
+
+endforeach()
+
+add_library($${MY_NAME}_STATIC_LIBS::imported INTERFACE IMPORTED GLOBAL)
+
+target_link_libraries($${MY_NAME}_STATIC_LIBS::imported INTERFACE
+    $${PREVIOUS_PHYSICS_LIB}
+    $${extra_static_libs}
+)
+
+# Add any optional shared library dependency as a runtime dependency
+if(extra_shared_libs)
     set($${MY_NAME}_RUNTIME_DEPENDENCIES
     set($${MY_NAME}_RUNTIME_DEPENDENCIES
-        $${PATH_TO_SHARED_LIBS}/$${CMAKE_SHARED_LIBRARY_PREFIX}PhysX_64$${CMAKE_SHARED_LIBRARY_SUFFIX}
-        $${PATH_TO_SHARED_LIBS}/$${CMAKE_SHARED_LIBRARY_PREFIX}PhysXCooking_64$${CMAKE_SHARED_LIBRARY_SUFFIX}
-        $${PATH_TO_SHARED_LIBS}/$${CMAKE_SHARED_LIBRARY_PREFIX}PhysXFoundation_64$${CMAKE_SHARED_LIBRARY_SUFFIX}
-        $${PATH_TO_SHARED_LIBS}/$${CMAKE_SHARED_LIBRARY_PREFIX}PhysXCommon_64$${CMAKE_SHARED_LIBRARY_SUFFIX}
         $${extra_shared_libs}
         $${extra_shared_libs}
     )
     )
 endif()
 endif()
 
 
 add_library($${TARGET_WITH_NAMESPACE} INTERFACE IMPORTED GLOBAL)
 add_library($${TARGET_WITH_NAMESPACE} INTERFACE IMPORTED GLOBAL)
+
 ly_target_include_system_directories(TARGET $${TARGET_WITH_NAMESPACE} INTERFACE $${$${MY_NAME}_INCLUDE_DIR})
 ly_target_include_system_directories(TARGET $${TARGET_WITH_NAMESPACE} INTERFACE $${$${MY_NAME}_INCLUDE_DIR})
-if(LY_MONOLITHIC_GAME)
-    target_link_libraries($${TARGET_WITH_NAMESPACE} INTERFACE Physx4_STATIC_LIBS_FOR_MONOLITHIC::imported)
-else()
-    target_link_libraries($${TARGET_WITH_NAMESPACE} INTERFACE $${$${MY_NAME}_LIBRARIES})
-endif()
+
+target_link_libraries($${TARGET_WITH_NAMESPACE} INTERFACE $${MY_NAME}_STATIC_LIBS::imported)
+
 target_compile_definitions($${TARGET_WITH_NAMESPACE} INTERFACE $${$${MY_NAME}_COMPILE_DEFINITIONS})
 target_compile_definitions($${TARGET_WITH_NAMESPACE} INTERFACE $${$${MY_NAME}_COMPILE_DEFINITIONS})
+
 if(DEFINED $${MY_NAME}_RUNTIME_DEPENDENCIES)
 if(DEFINED $${MY_NAME}_RUNTIME_DEPENDENCIES)
     ly_add_target_files(TARGETS $${TARGET_WITH_NAMESPACE} FILES $${$${MY_NAME}_RUNTIME_DEPENDENCIES})
     ly_add_target_files(TARGETS $${TARGET_WITH_NAMESPACE} FILES $${$${MY_NAME}_RUNTIME_DEPENDENCIES})
 endif()
 endif()

+ 11 - 29
package-system/PhysX/FindPhysX_ios.cmake.template

@@ -6,13 +6,13 @@
 #
 #
 #
 #
 
 
-set(MY_NAME "PhysX")
+set(MY_NAME "PhysX4")
 set(TARGET_WITH_NAMESPACE "3rdParty::$${MY_NAME}")
 set(TARGET_WITH_NAMESPACE "3rdParty::$${MY_NAME}")
 if (TARGET $${TARGET_WITH_NAMESPACE})
 if (TARGET $${TARGET_WITH_NAMESPACE})
     return()
     return()
 endif()
 endif()
 
 
-set(_PACKAGE_DIR $${CMAKE_CURRENT_LIST_DIR}/PhysX/$$<IF:$$<BOOL:$${LY_MONOLITHIC_GAME}>,static,shared>)
+set(_PACKAGE_DIR $${CMAKE_CURRENT_LIST_DIR}/PhysX/static)
 
 
 set($${MY_NAME}_INCLUDE_DIR
 set($${MY_NAME}_INCLUDE_DIR
     $${_PACKAGE_DIR}/include
     $${_PACKAGE_DIR}/include
@@ -20,7 +20,7 @@ set($${MY_NAME}_INCLUDE_DIR
     $${_PACKAGE_DIR}/include/geometry
     $${_PACKAGE_DIR}/include/geometry
 )
 )
 
 
-set($${MY_NAME}_COMPILE_DEFINITIONS $$<$$<BOOL:$${LY_MONOLITHIC_GAME}>:PX_PHYSX_STATIC_LIB>)
+set($${MY_NAME}_COMPILE_DEFINITIONS PX_PHYSX_STATIC_LIB)
 
 
 # LY_PHYSX_PROFILE_USE_CHECKED_LIBS allows to override what PhysX configuration to use on O3DE profile.
 # LY_PHYSX_PROFILE_USE_CHECKED_LIBS allows to override what PhysX configuration to use on O3DE profile.
 set(LY_PHYSX_PROFILE_USE_CHECKED_LIBS OFF CACHE BOOL "When ON it uses PhysX SDK checked libraries on O3DE profile configuration")
 set(LY_PHYSX_PROFILE_USE_CHECKED_LIBS OFF CACHE BOOL "When ON it uses PhysX SDK checked libraries on O3DE profile configuration")
@@ -30,17 +30,7 @@ else()
     set(PHYSX_PROFILE_CONFIG "profile")
     set(PHYSX_PROFILE_CONFIG "profile")
 endif()
 endif()
 
 
-if(LY_MONOLITHIC_GAME)
-    set(PATH_TO_STATIC_LIBS $${_PACKAGE_DIR}/$$<IF:$$<CONFIG:debug>,debug,$$<$$<CONFIG:profile>:$${PHYSX_PROFILE_CONFIG}>>/lib)
-else()
-    # Frameworks are added and managed by XCode during the build process.
-    # At the moment $$<CONFIG> does not get replaced for "debug", "profile" or
-    # "release" for frameworks when added to XCode, so it's not able to find
-    # the frameworks since their path is wrong. To workaround this, for now it
-    # will only use the release version of the library.
-    set(PATH_TO_STATIC_LIBS $${_PACKAGE_DIR}/lib)
-    set(PATH_TO_SHARED_LIBS $${_PACKAGE_DIR}/bin)
-endif()
+set(PATH_TO_STATIC_LIBS $${_PACKAGE_DIR}/$$<IF:$$<CONFIG:debug>,debug,$$<$$<CONFIG:profile>:$${PHYSX_PROFILE_CONFIG}>>/lib)
 
 
 set($${MY_NAME}_LIBRARIES
 set($${MY_NAME}_LIBRARIES
     $${PATH_TO_STATIC_LIBS}/libPhysXCharacterKinematic_static_64.a
     $${PATH_TO_STATIC_LIBS}/libPhysXCharacterKinematic_static_64.a
@@ -48,21 +38,13 @@ set($${MY_NAME}_LIBRARIES
     $${PATH_TO_STATIC_LIBS}/libPhysXExtensions_static_64.a
     $${PATH_TO_STATIC_LIBS}/libPhysXExtensions_static_64.a
     $${PATH_TO_STATIC_LIBS}/libPhysXPvdSDK_static_64.a
     $${PATH_TO_STATIC_LIBS}/libPhysXPvdSDK_static_64.a
 )
 )
-if(LY_MONOLITHIC_GAME)
-    list(APPEND $${MY_NAME}_LIBRARIES
-        $${PATH_TO_STATIC_LIBS}/libPhysX_static_64.a
-        $${PATH_TO_STATIC_LIBS}/libPhysXCooking_static_64.a
-        $${PATH_TO_STATIC_LIBS}/libPhysXFoundation_static_64.a
-        $${PATH_TO_STATIC_LIBS}/libPhysXCommon_static_64.a
-    )
-else()
-    list(APPEND $${MY_NAME}_LIBRARIES
-        $${PATH_TO_SHARED_LIBS}/PhysX.framework
-        $${PATH_TO_SHARED_LIBS}/PhysXCooking.framework
-        $${PATH_TO_SHARED_LIBS}/PhysXFoundation.framework
-        $${PATH_TO_SHARED_LIBS}/PhysXCommon.framework
-    )
-endif()
+
+list(APPEND $${MY_NAME}_LIBRARIES
+    $${PATH_TO_STATIC_LIBS}/libPhysX_static_64.a
+    $${PATH_TO_STATIC_LIBS}/libPhysXCooking_static_64.a
+    $${PATH_TO_STATIC_LIBS}/libPhysXFoundation_static_64.a
+    $${PATH_TO_STATIC_LIBS}/libPhysXCommon_static_64.a
+)
 
 
 add_library($${TARGET_WITH_NAMESPACE} INTERFACE IMPORTED GLOBAL)
 add_library($${TARGET_WITH_NAMESPACE} INTERFACE IMPORTED GLOBAL)
 ly_target_include_system_directories(TARGET $${TARGET_WITH_NAMESPACE} INTERFACE $${$${MY_NAME}_INCLUDE_DIR})
 ly_target_include_system_directories(TARGET $${TARGET_WITH_NAMESPACE} INTERFACE $${$${MY_NAME}_INCLUDE_DIR})

+ 45 - 12
package-system/PhysX/build_package_image.py

@@ -20,6 +20,14 @@ import builders.monkeypatch_tempdir_cleanup
 
 
 def main():
 def main():
     parser = argparse.ArgumentParser()
     parser = argparse.ArgumentParser()
+    parser.add_argument(
+        '--package-name',
+        required=True
+    )
+    parser.add_argument(
+        '--package-rev',
+        required=True
+    )
     parser.add_argument(
     parser.add_argument(
         '--platform-name',
         '--platform-name',
         dest='platformName',
         dest='platformName',
@@ -53,33 +61,45 @@ def main():
     extraLibsPerPlatform = {
     extraLibsPerPlatform = {
         'linux': {
         'linux': {
             'EXTRA_SHARED_LIBS': '${PATH_TO_SHARED_LIBS}/libPhysXGpu_64.so',
             'EXTRA_SHARED_LIBS': '${PATH_TO_SHARED_LIBS}/libPhysXGpu_64.so',
-            'EXTRA_STATIC_LIBS_NON_MONOLITHIC': '',
+            'EXTRA_STATIC_LIBS': '',
+            'KEEP_LIBS': ['libPhysXGpu_64.so'],
         },
         },
         'windows': {
         'windows': {
             'EXTRA_SHARED_LIBS': '\n'.join((
             'EXTRA_SHARED_LIBS': '\n'.join((
                 '${PATH_TO_SHARED_LIBS}/PhysXDevice64.dll',
                 '${PATH_TO_SHARED_LIBS}/PhysXDevice64.dll',
                 '${PATH_TO_SHARED_LIBS}/PhysXGpu_64.dll'
                 '${PATH_TO_SHARED_LIBS}/PhysXGpu_64.dll'
             )),
             )),
-            'EXTRA_STATIC_LIBS_NON_MONOLITHIC': '\n'.join((
-                '${PATH_TO_STATIC_LIBS}/LowLevel_static_64.lib',
-                '${PATH_TO_STATIC_LIBS}/LowLevelAABB_static_64.lib',
-                '${PATH_TO_STATIC_LIBS}/LowLevelDynamics_static_64.lib',
-                '${PATH_TO_STATIC_LIBS}/PhysXTask_static_64.lib',
-                '${PATH_TO_STATIC_LIBS}/SceneQuery_static_64.lib',
-                '${PATH_TO_STATIC_LIBS}/SimulationController_static_64.lib',
+            'EXTRA_STATIC_LIBS': '\n'.join((
+                '${PATH_TO_ADDITIONAL_STATIC_LIBS}/LowLevel_static_64.lib',
+                '${PATH_TO_ADDITIONAL_STATIC_LIBS}/LowLevelAABB_static_64.lib',
+                '${PATH_TO_ADDITIONAL_STATIC_LIBS}/LowLevelDynamics_static_64.lib',
+                '${PATH_TO_ADDITIONAL_STATIC_LIBS}/PhysXTask_static_64.lib',
+                '${PATH_TO_ADDITIONAL_STATIC_LIBS}/SceneQuery_static_64.lib',
+                '${PATH_TO_ADDITIONAL_STATIC_LIBS}/SimulationController_static_64.lib',
             )),
             )),
+            'KEEP_LIBS': ['PhysXDevice64.dll', 
+                          'PhysXGpu_64.dll',
+                          'LowLevel_static_64.lib',
+                          'LowLevelAABB_static_64.lib',
+                          'LowLevelDynamics_static_64.lib',
+                          'PhysXTask_static_64.lib',
+                          'SceneQuery_static_64.lib',
+                          'SimulationController_static_64.lib'],
         },
         },
         'mac': {
         'mac': {
             'EXTRA_SHARED_LIBS': '',
             'EXTRA_SHARED_LIBS': '',
-            'EXTRA_STATIC_LIBS_NON_MONOLITHIC': '',
+            'EXTRA_STATIC_LIBS': '',
+            'KEEP_LIBS': [],
         },
         },
         'ios': {
         'ios': {
             'EXTRA_SHARED_LIBS': '',
             'EXTRA_SHARED_LIBS': '',
-            'EXTRA_STATIC_LIBS_NON_MONOLITHIC': '',
+            'EXTRA_STATIC_LIBS': '',
+            'KEEP_LIBS': [],
         },
         },
         'android': {
         'android': {
             'EXTRA_SHARED_LIBS': '',
             'EXTRA_SHARED_LIBS': '',
-            'EXTRA_STATIC_LIBS_NON_MONOLITHIC': '',
+            'EXTRA_STATIC_LIBS': '',
+            'KEEP_LIBS': [],
         },
         },
     }
     }
     with TemporaryDirectory() as tempdir:
     with TemporaryDirectory() as tempdir:
@@ -89,6 +109,8 @@ def main():
 
 
         # We package PhysX static and dynamic libraries for all supported platforms
         # We package PhysX static and dynamic libraries for all supported platforms
         for maybeStatic in (True, False):
         for maybeStatic in (True, False):
+            if not maybeStatic and vcpkg_platform not in ['windows', 'linux']:
+                continue
             builder = VcpkgBuilder(
             builder = VcpkgBuilder(
                 packageName='PhysX',
                 packageName='PhysX',
                 portName='physx',
                 portName='physx',
@@ -114,12 +136,22 @@ def main():
                 },
                 },
                 subdir=subdir
                 subdir=subdir
             )
             )
+            if not maybeStatic:
+                # Delete everything in the shared folder except for ones that are marked for keeping (static libraries)
+                # to reduce the size of the package.
+                output_shared_folder = outputDir / builder.packageName / 'shared'
+                for clear_root, clear_dirs, clear_files in os.walk(str(output_shared_folder)):
+                    keep_shared_files = extraLibsPerPlatform[vcpkg_platform]['KEEP_LIBS']
+                    for clear_filename in clear_files:
+                        if clear_filename in keep_shared_files:
+                            continue
+                        os.remove(os.path.join(clear_root, clear_filename))
 
 
             if firstTime:
             if firstTime:
                 builder.writePackageInfoFile(
                 builder.writePackageInfoFile(
                     outputDir,
                     outputDir,
                     settings={
                     settings={
-                        'PackageName': f'PhysX-4.1.2.29882248-rev6-{args.platformName}',
+                        'PackageName': f'{args.package_name}-{args.package_rev}-{args.platformName}',
                         'URL': 'https://github.com/NVIDIAGameWorks/PhysX',
                         'URL': 'https://github.com/NVIDIAGameWorks/PhysX',
                         'License': 'BSD-3-Clause',
                         'License': 'BSD-3-Clause',
                         'LicenseFile': 'PhysX/LICENSE.md'
                         'LicenseFile': 'PhysX/LICENSE.md'
@@ -130,6 +162,7 @@ def main():
                     outputDir,
                     outputDir,
                     template=cmakeFindFileTemplate,
                     template=cmakeFindFileTemplate,
                     templateEnv=extraLibsPerPlatform[vcpkg_platform],
                     templateEnv=extraLibsPerPlatform[vcpkg_platform],
+                    overwrite_find_file='PhysX4'
                 )
                 )
 
 
             firstTime = False
             firstTime = False

+ 4 - 4
package_build_list_host_darwin.json

@@ -26,8 +26,8 @@
         "OpenSSL-1.1.1o-rev1-ios": "package-system/OpenSSL/build_package_image.py --platform ios",
         "OpenSSL-1.1.1o-rev1-ios": "package-system/OpenSSL/build_package_image.py --platform ios",
         "OpenEXR-3.1.3-rev4-mac": "Scripts/extras/pull_and_build_from_git.py ../../package-system/OpenEXR --platform-name Mac --package-root ../../package-system/OpenEXR/temp --clean",
         "OpenEXR-3.1.3-rev4-mac": "Scripts/extras/pull_and_build_from_git.py ../../package-system/OpenEXR --platform-name Mac --package-root ../../package-system/OpenEXR/temp --clean",
         "openimageio-opencolorio-2.3.17-rev3-mac": "package-system/openimageio-opencolorio/build_openimageio.py --package-name=openimageio-opencolorio-2.3.17-rev3-mac --clean",
         "openimageio-opencolorio-2.3.17-rev3-mac": "package-system/openimageio-opencolorio/build_openimageio.py --package-name=openimageio-opencolorio-2.3.17-rev3-mac --clean",
-        "PhysX-4.1.2.29882248-rev5-mac": "package-system/PhysX/build_package_image.py --platform mac",
-        "PhysX-4.1.2.29882248-rev5-ios": "package-system/PhysX/build_package_image.py --platform ios",
+        "PhysX-4.1.2.29882248-rev8-mac": "package-system/PhysX/build_package_image.py --package-name PhysX-4.1.2.29882248 --package-rev rev8 --platform mac",
+        "PhysX-4.1.2.29882248-rev8-ios": "package-system/PhysX/build_package_image.py --package-name PhysX-4.1.2.29882248 --package-rev rev8 --platform ios",
         "PhysX-5.1.1-rev1-mac": "package-system/PhysX5/build_package_image.py --platform mac",
         "PhysX-5.1.1-rev1-mac": "package-system/PhysX5/build_package_image.py --platform mac",
         "PhysX-5.1.1-rev1-ios": "package-system/PhysX5/build_package_image.py --platform ios",
         "PhysX-5.1.1-rev1-ios": "package-system/PhysX5/build_package_image.py --platform ios",
         "NvCloth-v1.1.6-4-gd243404-pr58-rev1-mac": "package-system/NvCloth/build_package_image.py --platform-name mac",
         "NvCloth-v1.1.6-4-gd243404-pr58-rev1-mac": "package-system/NvCloth/build_package_image.py --platform-name mac",
@@ -81,8 +81,8 @@
         "tiff-4.2.0.15-rev3-ios": "package-system/tiff-ios",
         "tiff-4.2.0.15-rev3-ios": "package-system/tiff-ios",
         "python-3.10.5-rev2-darwin": "package-system/python/darwin_x64/package",
         "python-3.10.5-rev2-darwin": "package-system/python/darwin_x64/package",
         "asn1-0.9.27-rev2-ios": "package-system/asn1-ios",
         "asn1-0.9.27-rev2-ios": "package-system/asn1-ios",
-        "PhysX-4.1.2.29882248-rev5-mac": "package-system/PhysX-mac",
-        "PhysX-4.1.2.29882248-rev5-ios": "package-system/PhysX-ios",
+        "PhysX-4.1.2.29882248-rev8-mac": "package-system/PhysX-mac",
+        "PhysX-4.1.2.29882248-rev8-ios": "package-system/PhysX-ios",
         "PhysX-5.1.1-rev1-mac": "package-system/PhysX5/temp/PhysX5-mac",
         "PhysX-5.1.1-rev1-mac": "package-system/PhysX5/temp/PhysX5-mac",
         "PhysX-5.1.1-rev1-ios": "package-system/PhysX5/temp/PhysX5-ios",
         "PhysX-5.1.1-rev1-ios": "package-system/PhysX5/temp/PhysX5-ios",
         "NvCloth-v1.1.6-4-gd243404-pr58-rev1-mac": "package-system/NvCloth-mac",
         "NvCloth-v1.1.6-4-gd243404-pr58-rev1-mac": "package-system/NvCloth-mac",

+ 2 - 2
package_build_list_host_linux-aarch64.json

@@ -28,7 +28,7 @@
         "OpenMesh-8.1-rev3-linux-aarch64": "Scripts/extras/pull_and_build_from_git.py ../../package-system/OpenMesh --platform-name Linux-aarch64 --clean",
         "OpenMesh-8.1-rev3-linux-aarch64": "Scripts/extras/pull_and_build_from_git.py ../../package-system/OpenMesh --platform-name Linux-aarch64 --clean",
         "OpenSSL-1.1.1t-rev1-linux-aarch64": "Scripts/extras/pull_and_build_from_git.py ../../package-system/OpenSSL --platform-name Linux-aarch64 --clean",
         "OpenSSL-1.1.1t-rev1-linux-aarch64": "Scripts/extras/pull_and_build_from_git.py ../../package-system/OpenSSL --platform-name Linux-aarch64 --clean",
         "OpenXR-1.0.22-rev2-linux-aarch64": "Scripts/extras/pull_and_build_from_git.py ../../package-system/OpenXR --platform-name Linux-aarch64 --clean",
         "OpenXR-1.0.22-rev2-linux-aarch64": "Scripts/extras/pull_and_build_from_git.py ../../package-system/OpenXR --platform-name Linux-aarch64 --clean",
-        "PhysX-4.1.2.29882248-rev5-linux-aarch64": "package-system/PhysX/build_package_image.py --platform-name linux-aarch64",
+        "PhysX-4.1.2.29882248-rev8-linux-aarch64": "package-system/PhysX/build_package_image.py --package-name PhysX-4.1.2.29882248 --package-rev rev8 --platform-name linux-aarch64",
         "PhysX-5.1.1-rev1-linux-aarch64": "package-system/PhysX5/build_package_image.py --platform-name linux-aarch64",
         "PhysX-5.1.1-rev1-linux-aarch64": "package-system/PhysX5/build_package_image.py --platform-name linux-aarch64",
         "png-1.6.37-rev2-linux-aarch64": "Scripts/extras/pull_and_build_from_git.py ../../package-system/libpng --platform-name Linux-aarch64 --clean",
         "png-1.6.37-rev2-linux-aarch64": "Scripts/extras/pull_and_build_from_git.py ../../package-system/libpng --platform-name Linux-aarch64 --clean",
         "poly2tri-7f0487a-rev1-linux-aarch64": "package-system/poly2tri/build_package_image.py --platform-name linux-aarch64",
         "poly2tri-7f0487a-rev1-linux-aarch64": "package-system/poly2tri/build_package_image.py --platform-name linux-aarch64",
@@ -69,7 +69,7 @@
         "OpenMesh-8.1-rev3-linux-aarch64": "package-system/OpenMesh/temp/OpenMesh-linux-aarch64",
         "OpenMesh-8.1-rev3-linux-aarch64": "package-system/OpenMesh/temp/OpenMesh-linux-aarch64",
         "OpenSSL-1.1.1t-rev1-linux-aarch64": "package-system/OpenSSL/temp/OpenSSL-linux-aarch64",
         "OpenSSL-1.1.1t-rev1-linux-aarch64": "package-system/OpenSSL/temp/OpenSSL-linux-aarch64",
         "OpenXR-1.0.22-rev2-linux-aarch64": "package-system/OpenXR/temp/OpenXR-linux-aarch64",
         "OpenXR-1.0.22-rev2-linux-aarch64": "package-system/OpenXR/temp/OpenXR-linux-aarch64",
-        "PhysX-4.1.2.29882248-rev5-linux-aarch64": "package-system/PhysX-linux-aarch64",
+        "PhysX-4.1.2.29882248-rev8-linux-aarch64": "package-system/PhysX-linux-aarch64",
         "PhysX-5.1.1-rev1-linux-aarch64": "package-system/PhysX5/temp/PhysX5-linux-aarch64",
         "PhysX-5.1.1-rev1-linux-aarch64": "package-system/PhysX5/temp/PhysX5-linux-aarch64",
         "png-1.6.37-rev2-linux-aarch64":  "package-system/libpng/temp/png-linux-aarch64",
         "png-1.6.37-rev2-linux-aarch64":  "package-system/libpng/temp/png-linux-aarch64",
         "poly2tri-7f0487a-rev1-linux-aarch64": "package-system/poly2tri-linux-aarch64",
         "poly2tri-7f0487a-rev1-linux-aarch64": "package-system/poly2tri-linux-aarch64",

+ 2 - 2
package_build_list_host_linux.json

@@ -26,7 +26,7 @@
         "openimageio-opencolorio-2.3.17-rev2-linux": "package-system/openimageio-opencolorio/build_openimageio.py --package-name=openimageio-opencolorio-2.3.17-rev2-linux --clean",
         "openimageio-opencolorio-2.3.17-rev2-linux": "package-system/openimageio-opencolorio/build_openimageio.py --package-name=openimageio-opencolorio-2.3.17-rev2-linux --clean",
         "OpenSSL-1.1.1t-rev1-linux": "Scripts/extras/pull_and_build_from_git.py ../../package-system/OpenSSL --platform-name Linux --clean",
         "OpenSSL-1.1.1t-rev1-linux": "Scripts/extras/pull_and_build_from_git.py ../../package-system/OpenSSL --platform-name Linux --clean",
         "OpenSSL-1.1.1t-rev1-linux-aarch64": "Scripts/extras/pull_and_build_from_git.py ../../package-system/OpenSSL --platform-name Linux-aarch64 --clean",
         "OpenSSL-1.1.1t-rev1-linux-aarch64": "Scripts/extras/pull_and_build_from_git.py ../../package-system/OpenSSL --platform-name Linux-aarch64 --clean",
-        "PhysX-4.1.2.29882248-rev6-linux": "package-system/PhysX/build_package_image.py --platform-name linux",
+        "PhysX-4.1.2.29882248-rev8-linux": "package-system/PhysX/build_package_image.py --package-name PhysX-4.1.2.29882248 --package-rev rev8 --platform-name linux",
         "PhysX-5.1.1-rev1-linux": "package-system/PhysX5/build_package_image.py --platform-name linux",
         "PhysX-5.1.1-rev1-linux": "package-system/PhysX5/build_package_image.py --platform-name linux",
         "NvCloth-v1.1.6-4-gd243404-pr58-rev1-linux": "package-system/NvCloth/build_package_image.py --platform-name linux",
         "NvCloth-v1.1.6-4-gd243404-pr58-rev1-linux": "package-system/NvCloth/build_package_image.py --platform-name linux",
         "poly2tri-7f0487a-rev1-linux": "package-system/poly2tri/build_package_image.py --platform-name linux",
         "poly2tri-7f0487a-rev1-linux": "package-system/poly2tri/build_package_image.py --platform-name linux",
@@ -84,7 +84,7 @@
         "tiff-4.2.0.15-rev3-linux": "package-system/tiff-linux",
         "tiff-4.2.0.15-rev3-linux": "package-system/tiff-linux",
         "python-3.10.5-rev4-linux": "package-system/python/temp/python-linux",
         "python-3.10.5-rev4-linux": "package-system/python/temp/python-linux",
         "python-3.10.5-rev4-linux-aarch64": "package-system/python/temp/python-linux-aarch64",
         "python-3.10.5-rev4-linux-aarch64": "package-system/python/temp/python-linux-aarch64",
-        "PhysX-4.1.2.29882248-rev6-linux": "package-system/PhysX-linux",
+        "PhysX-4.1.2.29882248-rev8-linux": "package-system/PhysX-linux",
         "PhysX-5.1.1-rev1-linux": "package-system/PhysX5/temp/PhysX5-linux",
         "PhysX-5.1.1-rev1-linux": "package-system/PhysX5/temp/PhysX5-linux",
         "NvCloth-v1.1.6-4-gd243404-pr58-rev1-linux": "package-system/NvCloth-linux",
         "NvCloth-v1.1.6-4-gd243404-pr58-rev1-linux": "package-system/NvCloth-linux",
         "mikkelsen-1.0.0.4-linux": "package-system/mikkelsen-linux",
         "mikkelsen-1.0.0.4-linux": "package-system/mikkelsen-linux",

+ 4 - 4
package_build_list_host_windows.json

@@ -41,8 +41,8 @@
         "OpenSSL-1.1.1o-rev1-windows": "package-system/OpenSSL/build_package_image.py",
         "OpenSSL-1.1.1o-rev1-windows": "package-system/OpenSSL/build_package_image.py",
         "OpenXR-1.0.22-rev1-android": "Scripts/extras/pull_and_build_from_git.py ../../package-system/OpenXR --platform-name Android --package-root ../../package-system --clean",
         "OpenXR-1.0.22-rev1-android": "Scripts/extras/pull_and_build_from_git.py ../../package-system/OpenXR --platform-name Android --package-root ../../package-system --clean",
         "OpenXR-1.0.22-rev1-windows": "Scripts/extras/pull_and_build_from_git.py ../../package-system/OpenXR --platform-name Windows --package-root ../../package-system --clean",
         "OpenXR-1.0.22-rev1-windows": "Scripts/extras/pull_and_build_from_git.py ../../package-system/OpenXR --platform-name Windows --package-root ../../package-system --clean",
-        "PhysX-4.1.2.29882248-rev5-android": "package-system/PhysX/build_package_image.py --platform android",
-        "PhysX-4.1.2.29882248-rev5-windows": "package-system/PhysX/build_package_image.py --platform windows",
+        "PhysX-4.1.2.29882248-rev8-android": "package-system/PhysX/build_package_image.py --package-name PhysX-4.1.2.29882248 --package-rev rev8 --platform android",
+        "PhysX-4.1.2.29882248-rev8-windows": "package-system/PhysX/build_package_image.py --package-name PhysX-4.1.2.29882248 --package-rev rev8 --platform windows",
         "PhysX-5.1.1-rev1-android": "package-system/PhysX5/build_package_image.py --platform android",
         "PhysX-5.1.1-rev1-android": "package-system/PhysX5/build_package_image.py --platform android",
         "PhysX-5.1.1-rev2-windows": "package-system/PhysX5/build_package_image.py --platform windows",
         "PhysX-5.1.1-rev2-windows": "package-system/PhysX5/build_package_image.py --platform windows",
         "png-1.6.37-rev2-android": "Scripts/extras/pull_and_build_from_git.py ../../package-system/libpng --platform-name Android --package-root ../../package-system/libpng/temp --clean",
         "png-1.6.37-rev2-android": "Scripts/extras/pull_and_build_from_git.py ../../package-system/libpng --platform-name Android --package-root ../../package-system/libpng/temp --clean",
@@ -110,8 +110,8 @@
     "OpenSSL-1.1.1o-rev1-windows": "package-system/OpenSSL/temp/OpenSSL-windows",
     "OpenSSL-1.1.1o-rev1-windows": "package-system/OpenSSL/temp/OpenSSL-windows",
     "OpenXR-1.0.22-rev1-android": "package-system/OpenXR-android",
     "OpenXR-1.0.22-rev1-android": "package-system/OpenXR-android",
     "OpenXR-1.0.22-rev1-windows": "package-system/OpenXR-windows",
     "OpenXR-1.0.22-rev1-windows": "package-system/OpenXR-windows",
-    "PhysX-4.1.2.29882248-rev5-android": "package-system/PhysX-android",
-    "PhysX-4.1.2.29882248-rev5-windows": "package-system/PhysX-windows",
+    "PhysX-4.1.2.29882248-rev8-android": "package-system/PhysX-android",
+    "PhysX-4.1.2.29882248-rev8-windows": "package-system/PhysX-windows",
     "PhysX-5.1.1-rev1-android": "package-system/PhysX5/temp/PhysX5-android",
     "PhysX-5.1.1-rev1-android": "package-system/PhysX5/temp/PhysX5-android",
     "PhysX-5.1.1-rev2-windows": "package-system/PhysX5/temp/PhysX5-windows",
     "PhysX-5.1.1-rev2-windows": "package-system/PhysX5/temp/PhysX5-windows",
     "png-1.6.37-rev2-android": "package-system/libpng/temp/png-android",
     "png-1.6.37-rev2-android": "package-system/libpng/temp/png-android",