diff --git a/ports/sdflib/add_export.patch b/ports/sdflib/add_export.patch
new file mode 100644
index 00000000000000..a469872e7744a9
--- /dev/null
+++ b/ports/sdflib/add_export.patch
@@ -0,0 +1,47 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 86b6169..bf7f532 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -59,7 +59,7 @@ add_library(${PROJECT_NAME} STATIC ${SOURCE_FILES} ${HEADER_FILES} ${PUBLIC_HEA
+ ${SDF_SOURCE_FILES} ${SDF_HEADER_FILES}
+ ${UTILS_SOURCE_FILES} ${UTILS_HEADER_FILES})
+
+-target_include_directories(${PROJECT_NAME} PUBLIC include/)
++target_include_directories(${PROJECT_NAME} PUBLIC $ $)
+ target_include_directories(${PROJECT_NAME} PRIVATE src/)
+
+ # Add shaders
+@@ -236,3 +236,20 @@ if(SDFLIB_BUILD_DEBUG_APPS)
+ # target_link_libraries(ImageQueryTime PUBLIC ${PROJECT_NAME} CGAL::CGAL OpenVDB::openvdb)
+ target_link_libraries(ImageQueryTime PUBLIC ${PROJECT_NAME})
+ endif()
++
++install(TARGETS ${PROJECT_NAME} icg EXPORT unofficial-${PROJECT_NAME}Config
++ RUNTIME DESTINATION bin
++ ARCHIVE DESTINATION lib
++ LIBRARY DESTINATION lib
++)
++
++install(EXPORT unofficial-${PROJECT_NAME}Config
++ NAMESPACE unofficial::${PROJECT_NAME}::
++ DESTINATION share/sdflib
++)
++install(
++ DIRECTORY "include/" # Trailing slash is important to copy only the contents
++ DESTINATION include # Destination folder in the install directory
++ FILES_MATCHING
++ PATTERN "*.h" # Match header files
++)
+diff --git a/libs/CMakeLists.txt b/libs/CMakeLists.txt
+index 1fa9fe7..d1f5014 100644
+--- a/libs/CMakeLists.txt
++++ b/libs/CMakeLists.txt
+@@ -139,7 +139,7 @@ if(SDFLIB_BUILD_APPS OR SDFLIB_BUILD_DEBUG_APPS)
+
+ # icg
+ add_library(icg INTERFACE)
+-target_include_directories(icg INTERFACE InteractiveComputerGraphics)
++target_include_directories(icg INTERFACE $ $)
+
+ if(SDFLIB_BUILD_APPS OR SDFLIB_BUILD_DEBUG_APPS)
+ # glfw
diff --git a/ports/sdflib/portfile.cmake b/ports/sdflib/portfile.cmake
new file mode 100644
index 00000000000000..1e9301eb1b4b1f
--- /dev/null
+++ b/ports/sdflib/portfile.cmake
@@ -0,0 +1,38 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO UPC-ViRVIG/SdfLib
+ REF c32eb7b133f8c05fee5605499b7f5bd36039dd08
+ SHA512 86c4aeb66da3f59c4110abd96ac659aadddb8f67eacb0c7a5557e3741aeb56c8f5ef464c0d7fbe5853c86b523198dd2876e87473e3903ba00e03e489684ae06f
+ PATCHES
+ add_export.patch
+)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ -DSDFLIB_USE_ASSIMP=OFF
+ -DSDFLIB_USE_OPENMP=OFF
+ -DSDFLIB_USE_ENOKI=OFF
+ -DSDFLIB_USE_SYSTEM_GLM=ON
+ -DSDFLIB_USE_SYSTEM_SPDLOG=ON
+ -DSDFLIB_USE_SYSTEM_CEREAL=ON
+)
+
+vcpkg_cmake_install()
+vcpkg_copy_pdbs()
+vcpkg_cmake_config_fixup()
+
+file(READ "${CURRENT_PACKAGES_DIR}/share/sdflib/unofficial-SdfLibConfig.cmake" SDFLIB_CONFIG)
+file(WRITE "${CURRENT_PACKAGES_DIR}/share/sdflib/unofficial-SdfLibConfig.cmake" "
+include(CMakeFindDependencyMacro)
+find_dependency(glm CONFIG)
+find_dependency(spdlog CONFIG)
+find_dependency(cereal CONFIG)
+${SDFLIB_CONFIG}
+")
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
+file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
\ No newline at end of file
diff --git a/ports/sdflib/usage b/ports/sdflib/usage
new file mode 100644
index 00000000000000..da07c68ea08d14
--- /dev/null
+++ b/ports/sdflib/usage
@@ -0,0 +1,4 @@
+sdflib provides CMake targets:
+
+ find_package(SdfLib CONFIG REQUIRED)
+ target_link_libraries(main PRIVATE unofficial::SdfLib::icg unofficial::SdfLib::SdfLib)
diff --git a/ports/sdflib/vcpkg.json b/ports/sdflib/vcpkg.json
new file mode 100644
index 00000000000000..52a8370f7848ce
--- /dev/null
+++ b/ports/sdflib/vcpkg.json
@@ -0,0 +1,20 @@
+{
+ "name": "sdflib",
+ "version-date": "2024-09-06",
+ "description": "Library for accelerating the queries of signed distance fields from triangle meshes.",
+ "homepage": "https://github.com/UPC-ViRVIG/SdfLib",
+ "license": "MIT",
+ "dependencies": [
+ "cereal",
+ "glm",
+ "spdlog",
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ }
+ ]
+}
diff --git a/versions/baseline.json b/versions/baseline.json
index c517b3bd5fb398..e110ebc61c5bd0 100644
--- a/versions/baseline.json
+++ b/versions/baseline.json
@@ -8212,6 +8212,10 @@
"baseline": "2.1.0",
"port-version": 0
},
+ "sdflib": {
+ "baseline": "2024-09-06",
+ "port-version": 0
+ },
"sdformat10": {
"baseline": "10.0.0",
"port-version": 5
diff --git a/versions/s-/sdflib.json b/versions/s-/sdflib.json
new file mode 100644
index 00000000000000..25b20bd54b90a6
--- /dev/null
+++ b/versions/s-/sdflib.json
@@ -0,0 +1,9 @@
+{
+ "versions": [
+ {
+ "git-tree": "8935bb9372e6a4de3a2f86e6421736f1840c606c",
+ "version-date": "2024-09-06",
+ "port-version": 0
+ }
+ ]
+}