Introduction to Protobuf
        
        
          The Protobuf package contains
          utilities and libraries for using data in Google's data interchange
          format.
        
        
          This package is known to build and work properly using an LFS 12.2
          platform.
        
        
          Package Information
        
        
        
          Protobuf Dependencies
        
        
          Required
        
        
          Abseil-cpp-20240722.0 and CMake-3.30.2
        
        
          Optional
        
        
          gtest
          (for tests)
        
       
      
        
          Installation of Protobuf
        
        
          Install Protobuf by running the
          following commands:
        
        mkdir build &&
cd    build &&
cmake -D CMAKE_INSTALL_PREFIX=/usr      \
      -D CMAKE_BUILD_TYPE=Release       \
      -D CMAKE_SKIP_INSTALL_RPATH=ON    \
      -D protobuf_BUILD_TESTS=OFF       \
      -D protobuf_ABSL_PROVIDER=package \
      -D protobuf_BUILD_LIBUPB=OFF      \
      -D protobuf_BUILD_SHARED_LIBS=ON  \
      -D utf8_range_ENABLE_INSTALL=OFF  \
      -G Ninja ..                       &&
ninja
        
          This package does come with a test suite, but it requires gtest,
          which is not part of BLFS.
        
        
          Now, as the root user:
        
        sed 's/utf8_range//' -i *.pc &&
ninja install
       
      
        
          Command Explanations
        
        
          -D
          CMAKE_SKIP_INSTALL_RPATH=ON: This switch makes
          cmake remove
          hardcoded library search paths (rpath) when installing a binary
          executable file or a shared library. This package does not need
          rpath once it's installed into the standard location, and rpath may
          sometimes cause unwanted effects or even security issues.
        
        
          sed 's/utf8_range//' -i
          *.pc: This command removes a leftover reference to
          libutf8_range from the pkg-config files installed by this package.
        
        
          -D
          protobuf_BUILD_TESTS=OFF: This parameter prevents the
          tests from being built because gtest is not part of
          BLFS.
        
        
          -D
          protobuf_ABSL_PROVIDER=package: This parameter allows
          the build system to use the system-installed copy of Abseil-cpp-20240722.0.
        
        
          -D
          protobuf_BUILD_SHARED_LIBS=ON: This parameter enables
          building shared versions of the libraries provided by this package
          instead of static versions.
        
        
          -D
          utf8_range_ENABLE_INSTALL=OFF: This parameter disables
          installing the utf8_range static library. The functions provided by
          this library and used by protobuf is already embedded into
          libprotobuf.so, so installing a full
          copy of the static library is just wasting the disk space.