google / brotli

Brotli compression format
MIT License
13.3k stars 1.22k forks source link

Missing libbrotlidec-static.a in version 1.1.0 #1174

Open moravveji opened 3 weeks ago

moravveji commented 3 weeks ago

I am building the Brunsli/0.1-GCCcore-13.2.0 module from source on our HPC clusters, and it depends on libbrotlidec-static.a. The latter static library is automatically created with Brotli version 1.0.9. However, in the newer minor release 1.1.0, the static library is no longer created.

This is causing a lot of dependency resolution issues for me when building massive bundle of R packages using EasyBuild (see e.g. (this PR)[https://github.com/easybuilders/easybuild-easyconfigs/pull/20756]).

Now, I wonder how it would be possible to let the build system for version 1.1.0 consistently create libbrotlidec-static.a, so that I can compile my desired version of Brunsli by linking to it.

moravveji commented 2 weeks ago

When I diff the CMakeLists.txt between version 1.0.9 and 1.1.0, I see that the following directives are removed, resulting in not building libbrotli{dec,enc,common}-static.a.

set(BROTLI_LIBRARIES_CORE_STATIC brotlienc-static brotlidec-static brotlicommon-static)
set(BROTLI_STATIC_LIBS brotlicommon-static brotlidec-static brotlienc-static)
add_library(brotlicommon-static STATIC ${BROTLI_COMMON_C})
add_library(brotlidec-static STATIC ${BROTLI_DEC_C})
add_library(brotlienc-static STATIC ${BROTLI_ENC_C})
target_link_libraries(brotlidec-static brotlicommon-static)
target_link_libraries(brotlienc-static brotlicommon-static)

I wonder why this has happened? Also, I am thinking of patching version 1.1.0 to restore building the *-static.a libraries. Is that fine?