Merge pull request #992 from jberkenbilt/future

Future
This commit is contained in:
Jay Berkenbilt 2023-06-17 14:02:44 -04:00 committed by GitHub
commit 463953bc96
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 35 additions and 0 deletions

View File

@ -104,6 +104,8 @@ option(INSTALL_PKGCONFIG "Install pkgconfig file" ON)
option(INSTALL_CMAKE_PACKAGE "Install cmake package files" ON)
option(INSTALL_EXAMPLES "Install example files" ON)
option(FUTURE "Include ABI-breaking changes CONSIDERED for the next major release" OFF)
# *** END OPTIONS ***
if(NOT (BUILD_STATIC_LIBS OR BUILD_SHARED_LIBS))
@ -121,6 +123,10 @@ else()
set(ENABLE_QTC_ARG --disable-tc)
endif()
if(FUTURE)
add_compile_definitions(QPDF_FUTURE=1)
endif()
enable_testing()
set(RUN_QTEST perl ${qpdf_SOURCE_DIR}/run-qtest ${ENABLE_QTC_ARG})
@ -347,6 +353,7 @@ message(STATUS " build static libraries: ${BUILD_STATIC_LIBS}")
message(STATUS " build manual: ${BUILD_DOC}")
message(STATUS " compiler warnings are errors: ${WERROR}")
message(STATUS " QTC test coverage: ${ENABLE_QTC}")
message(STATUS " include future changes: ${FUTURE}")
message(STATUS " system: ${CPACK_SYSTEM_NAME}")
message(STATUS "")
message(STATUS "*** Options Summary ***")

View File

@ -290,6 +290,14 @@ class QPDFObjectHandle
QPDFObjectHandle(QPDFObjectHandle const&) = default;
QPDF_DLL
QPDFObjectHandle& operator=(QPDFObjectHandle const&) = default;
#ifdef QPDF_FUTURE
QPDF_DLL
QPDFObjectHandle(QPDFObjectHandle&&) = default;
QPDF_DLL
QPDFObjectHandle& operator=(QPDFObjectHandle&&) = default;
#endif
QPDF_DLL
inline bool isInitialized() const;

View File

@ -277,6 +277,16 @@ BUILD_SHARED_LIBS, BUILD_STATIC_LIBS
compiled executables can find the DLL. Updating your path is not
necessary if you build with static libraries only.
FUTURE
This option enables changes planned for the next major release to be
included. They are NOT part of the stable API. These changes are ABI
breaking and are subject to change, which means code linked against
a qpdf built with this option may not be binary compatible with
installed qpdf libraries. Set this if you want to test your code
with proposed QPDF API changes and provide feedback prior to the
inclusion of those changes in a release. Packagers should never
distribute backages built with this option.
QTEST_COLOR
Turn this on or off to control whether qtest uses color in its
output.

View File

@ -26,6 +26,12 @@ particularly useful to packagers.
combined with either ``ctest --verbose`` or ``ctest
--output-on-failure``.
- Packagers should never define the ``FUTURE`` build option. API
changes enabled by ``FUTURE`` are not stable and may be
API/ABI-breaking. That option is intended only for people who are
testing their code with a local build of qpdf to provide early
feedback or prepare for possible future changes to the API.
- qpdf's install targets do not install completion files by default
since there is no standard location for them. As a packager, it's
good if you install them wherever your distribution expects such

View File

@ -6,6 +6,10 @@ Release Notes
For a detailed list of changes, please see the file
:file:`ChangeLog` in the source distribution.
If you are a developer and want to test your code against future API
changes that are under consideration, you can build qpdf locally and
enable the ``FUTURE`` build option (see :ref:`build-options`).
Planned changes for future 12.x (subject to change):
- ``QPDFObjectHandle`` will support move construction/assignment.
This change will be invisible to most developers but may break