diff --git a/MODULE.bazel b/MODULE.bazel index 86f015b47fbc..41dc2e736f5c 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -92,6 +92,7 @@ bazel_dep(name = "glib", version = "2.82.2.bcr.10", repo_name = "module_glib") # implementation. bazel_dep(name = "libjpeg_turbo", version = "3.1.3.bcr.6", repo_name = "module_libjpeg") +bazel_dep(name = "libpng", version = "1.6.58", repo_name = "module_libpng") bazel_dep(name = "nanobind", version = "3.0.0", repo_name = "module_nanobind") bazel_dep(name = "nlohmann_json", version = "3.12.0.bcr.2", repo_name = "module_nlohmann_json") bazel_dep(name = "robin-map", version = "1.4.1", repo_name = "module_robin_map") @@ -190,6 +191,7 @@ use_repo( # but (unlike the prior group) these are not configurable. # "libjpeg", + "libpng", "nlohmann_json", "suitesparse", "zlib", @@ -323,7 +325,6 @@ use_repo( "ipopt_internal", "lapack_internal", "lcm_internal", - "libpng_internal", "libtiff_internal", "libzip_internal", "metis_internal", diff --git a/tools/workspace/BUILD.bazel b/tools/workspace/BUILD.bazel index 43b7824e997f..c2393f076c83 100644 --- a/tools/workspace/BUILD.bazel +++ b/tools/workspace/BUILD.bazel @@ -37,7 +37,6 @@ filegroup( "@ipopt_internal//:drake_repository_metadata.json", "@lapack_internal//:drake_repository_metadata.json", "@lcm_internal//:drake_repository_metadata.json", - "@libpng_internal//:drake_repository_metadata.json", "@libtiff_internal//:drake_repository_metadata.json", "@libzip_internal//:drake_repository_metadata.json", "@meshcat//:drake_repository_metadata.json", @@ -185,7 +184,6 @@ _DRAKE_EXTERNAL_PACKAGE_INSTALLS = ["@%s//:install" % p for p in [ "gz_math_internal", "gz_utils_internal", "ipopt_internal", - "libpng_internal", "libtiff_internal", "libzip_internal", "meshcat", @@ -216,6 +214,7 @@ _DRAKE_EXTERNAL_PACKAGE_INSTALLS = ["@%s//:install" % p for p in [ "highway_internal", "lapack", "libjpeg", + "libpng", # N.B. The nanobind install is handled by //bindings/pydrake:install. "nlohmann_json", "opencl", diff --git a/tools/workspace/default.bzl b/tools/workspace/default.bzl index 68842c11b09a..e37a311c2981 100644 --- a/tools/workspace/default.bzl +++ b/tools/workspace/default.bzl @@ -27,7 +27,6 @@ load("//tools/workspace/implib_so_internal:repository.bzl", "implib_so_internal_ load("//tools/workspace/ipopt_internal:repository.bzl", "ipopt_internal_repository") # noqa load("//tools/workspace/lapack_internal:repository.bzl", "lapack_internal_repository") # noqa load("//tools/workspace/lcm_internal:repository.bzl", "lcm_internal_repository") -load("//tools/workspace/libpng_internal:repository.bzl", "libpng_internal_repository") # noqa load("//tools/workspace/libtiff_internal:repository.bzl", "libtiff_internal_repository") # noqa load("//tools/workspace/libzip_internal:repository.bzl", "libzip_internal_repository") # noqa load("//tools/workspace/meshcat:repository.bzl", "meshcat_repository") @@ -102,7 +101,6 @@ def _add_internal_repositories(): ipopt_internal_repository(name = "ipopt_internal", mirrors = mirrors) lapack_internal_repository(name = "lapack_internal", mirrors = mirrors) lcm_internal_repository(name = "lcm_internal", mirrors = mirrors) - libpng_internal_repository(name = "libpng_internal", mirrors = mirrors) libtiff_internal_repository(name = "libtiff_internal", mirrors = mirrors) libzip_internal_repository(name = "libzip_internal", mirrors = mirrors) metis_internal_repository(name = "metis_internal", mirrors = mirrors) @@ -164,6 +162,7 @@ def _drake_dep_repositories_impl(module_ctx): }, "lapack": "lapack", "libjpeg": "libjpeg", + "libpng": "libpng", "nlohmann_json": { # We provide both aliases, since Drake first-party only needs # :singleheader-json but third-party (VTK) needs :json. diff --git a/tools/workspace/libpng/BUILD.bazel b/tools/workspace/libpng/BUILD.bazel new file mode 100644 index 000000000000..572c1bbb238f --- /dev/null +++ b/tools/workspace/libpng/BUILD.bazel @@ -0,0 +1,25 @@ +load("@drake//tools/skylark:cc_hidden.bzl", "cc_static_hidden_library") +load("//tools/install:install.bzl", "install", "install_files") +load("//tools/lint:lint.bzl", "add_lint_tests") + +package(default_visibility = ["//visibility:private"]) + +cc_static_hidden_library( + name = "libpng", + visibility = ["//visibility:public"], + deps = ["@module_libpng//:libpng"], +) + +install_files( + name = "install_license", + dest = "share/doc/libpng", + files = ["@module_libpng//:license"], +) + +install( + name = "install", + visibility = ["//tools/workspace:__pkg__"], + deps = [":install_license"], +) + +add_lint_tests() diff --git a/tools/workspace/libpng_internal/BUILD.bazel b/tools/workspace/libpng_internal/BUILD.bazel deleted file mode 100644 index 3875982e90a4..000000000000 --- a/tools/workspace/libpng_internal/BUILD.bazel +++ /dev/null @@ -1,5 +0,0 @@ -load("//tools/lint:lint.bzl", "add_lint_tests") - -exports_files(["png_drake_vendor.h"]) - -add_lint_tests() diff --git a/tools/workspace/libpng_internal/package.BUILD.bazel b/tools/workspace/libpng_internal/package.BUILD.bazel deleted file mode 100644 index 9e96ad9558d5..000000000000 --- a/tools/workspace/libpng_internal/package.BUILD.bazel +++ /dev/null @@ -1,114 +0,0 @@ -# -*- bazel -*- - -load("@drake//tools/install:install.bzl", "install") -load("@drake//tools/skylark:cc.bzl", "cc_library") - -licenses(["notice"]) # libpng-2.0 - -package(default_visibility = ["//visibility:private"]) - -# Allow Drake's linter cross-checks to use the headers. -exports_files(glob(["*.h"])) - -# This setting governs when we'll compile with Intel SIMD enabled. We don't use -# Intel SIMD on macOS (even for Apple hardware that supports it) to reduce our -# test matrix burden for the deprecated architecture. -config_setting( - name = "build_intel", - constraint_values = [ - "@platforms//cpu:x86_64", - "@platforms//os:linux", - ], -) - -_PUBLIC_HDRS = [ - "png.h", - "pngconf.h", - ":pnglibconf.h", -] - -_PRIVATE_HDRS = [ - "pngdebug.h", - "pnginfo.h", - "pngstruct.h", - "pngpriv.h", -] - -_SRCS = [ - "png.c", - "pngerror.c", - "pngget.c", - "pngmem.c", - "pngpread.c", - "pngread.c", - "pngrio.c", - "pngrtran.c", - "pngrutil.c", - "pngset.c", - "pngtrans.c", - "pngwio.c", - "pngwrite.c", - "pngwtran.c", - "pngwutil.c", -] - -_SRCS_INTEL = [ - "intel/filter_sse2_intrinsics.c", - "intel/intel_init.c", -] - -genrule( - name = "_pnglibconf.h", - srcs = [ - "scripts/pnglibconf.h.prebuilt", - "@drake//tools/workspace/libpng_internal:png_drake_vendor.h", - ], - outs = ["pnglibconf.h"], - cmd = "cat $(SRCS) > $@", -) - -cc_library( - name = "libpng", - srcs = _SRCS + _PRIVATE_HDRS + select({ - ":build_intel": _SRCS_INTEL, - "//conditions:default": [], - }), - hdrs = _PUBLIC_HDRS, - copts = [ - "-fvisibility=hidden", - "-w", - # Turn off guessing. It should be implicitly off by default, - # but it would be a disaster if the default somehow didn't work. - "-DPNG_NO_CONFIG_H=1", - # Don't allow the pngpriv.h auto-sensing of Neon to take effect. - "-DPNG_ARM_NEON_OPT=0", - "-DPNG_ARM_NEON_IMPLEMENTATION=0", - ] + select({ - ":build_intel": [ - # Use SSE4.1 (or earlier) SIMD instructions. - "-msse4.1", - "-DPNG_INTEL_SSE_OPT=1", - "-DPNG_INTEL_SSE_IMPLEMENTATION=3", - ], - "//conditions:default": [ - "-DPNG_INTEL_SSE_OPT=0", - "-DPNG_INTEL_SSE_IMPLEMENTATION=0", - ], - }), - includes = ["."], - isystem = True, - linkopts = ["-lm"], - linkstatic = True, - visibility = ["//visibility:public"], - deps = [ - "@zlib", - ], -) - -install( - name = "install", - docs = ["LICENSE"], - visibility = ["//visibility:public"], -) - -exports_files(["drake_repository_metadata.json"]) diff --git a/tools/workspace/libpng_internal/png_drake_vendor.h b/tools/workspace/libpng_internal/png_drake_vendor.h deleted file mode 100644 index 2bfd955bb315..000000000000 --- a/tools/workspace/libpng_internal/png_drake_vendor.h +++ /dev/null @@ -1,9 +0,0 @@ -#pragma once - -/* The following are Drake's adjustments to libpng. */ - -/* Always use the macros, never the slow out-of-line functions. */ -#undef PNG_READ_INT_FUNCTIONS_SUPPORTED - -/* Suppress benign eXIf warnings, as they produce unnecessary test output. */ -#undef PNG_READ_eXIf_SUPPORTED diff --git a/tools/workspace/libpng_internal/repository.bzl b/tools/workspace/libpng_internal/repository.bzl deleted file mode 100644 index b18916d94279..000000000000 --- a/tools/workspace/libpng_internal/repository.bzl +++ /dev/null @@ -1,14 +0,0 @@ -load("//tools/workspace:github.bzl", "github_archive") - -def libpng_internal_repository( - name, - mirrors = None): - github_archive( - name = name, - repository = "pnggroup/libpng", - upgrade_type = "tag", - commit = "v1.6.58", - sha256 = "a9d4df463d36a6e5f9c29bd6f4967312d17e996c1854f3511f833924eb1993cf", # noqa - build_file = ":package.BUILD.bazel", - mirrors = mirrors, - ) diff --git a/tools/workspace/vtk_internal/settings.bzl b/tools/workspace/vtk_internal/settings.bzl index dcc973cdd214..dcd275e84873 100644 --- a/tools/workspace/vtk_internal/settings.bzl +++ b/tools/workspace/vtk_internal/settings.bzl @@ -632,7 +632,7 @@ MODULE_SETTINGS = { "VTK_MODULE_USE_EXTERNAL_vtkpng=1", ], "deps_extra": [ - "@libpng_internal//:libpng", + "@libpng//:libpng", ], }, "VTK::tiff": {