Write generated source files to the build tree, not the source tree. (#14455)
My org, as part of its reproducible-build hygiene, builds projects with the source trees in read-only mode. I approached the protobuf build in the same way, but encountered this error (among others): ``` [ 30%] Built target statusor [ 34%] Built target libprotobuf-lite [ 45%] Built target libprotobuf Consolidate compiler generated dependencies of target libprotoc [ 62%] Built target libprotoc Consolidate compiler generated dependencies of target protoc [ 62%] Built target protoc Consolidate compiler generated dependencies of target scoped_mock_log [ 62%] Built target scoped_mock_log [ 62%] Generating /home/src/protobuf/src/google/protobuf/util/message_differencer_unittest_proto3.pb.h, /home/src/protobuf/src/google/protobuf/util/message_differencer_unittest_proto3.pb.cc /home/src/protobuf/src/google/protobuf/util/message_differencer_unittest_proto3.pb.cc: Read-only file system make[2]: *** [CMakeFiles/libtest_common.dir/build.make:387: /home/src/protobuf/src/google/protobuf/util/message_differencer_unittest_proto3.pb.h] Error 1 make[1]: *** [CMakeFiles/Makefile2:1194: CMakeFiles/libtest_common.dir/all] Error 2 make: *** [Makefile:146: all] Error 2 ``` (`/home/src` is a read-only mount) Generated source files are effectively build artifacts, and should be written to the build tree, not the source tree. This PR accordingly enables a successful build and test run (lite, full, and conformance) with read-only sources. (Beyond this, I would add that CMake usually does not need source file paths to be qualified with `CMAKE_SOURCE_DIR` or `CMAKE_BINARY_DIR`; in most cases it knows to look in both locations, favoring the latter if a file is in both. The CMake code could be simplified by relying on this behavior.) Closes #14455 COPYBARA_INTEGRATE_REVIEW=https://github.com/protocolbuffers/protobuf/pull/14455 from iskunk:feature/ro-source da7510c24a3c77ab09306647ef864a886b690587 PiperOrigin-RevId: 607031010
D
Daniel Richard G committed
a8181d9ae86657cf92069db782b6e4295a2a8814
Parent: c32c04c
Committed by Copybara-Service <copybara-worker@google.com>
on 2/14/2024, 6:32:11 PM