aboutsummaryrefslogtreecommitdiffstats
path: root/TODO
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2022-03-13 23:55:04 +0100
committerJay Berkenbilt <jberkenbilt@users.noreply.github.com>2022-03-19 00:53:18 +0100
commit11e34f29cef693b34d9c125161da3864b9d6ea77 (patch)
treeae96fa2f3beb492124dc83969cd3bf1fdb8c6326 /TODO
parent96839decd0768f04406287efeb1c74d6039fd8f7 (diff)
downloadqpdf-11e34f29cef693b34d9c125161da3864b9d6ea77.tar.zst
TODO: update section for cmake
Diffstat (limited to 'TODO')
-rw-r--r--TODO23
1 files changed, 15 insertions, 8 deletions
diff --git a/TODO b/TODO
index 9394ec08..f3d96266 100644
--- a/TODO
+++ b/TODO
@@ -104,24 +104,31 @@ Remaining work:
cmake
=====
-* Rebase the cmake branch onto main and fast-forward over it.
-* Remove all "lt-" workarounds.
* DLL.h
* Remove DLL.h and QPDF_DLL* from all private library classes.
* Change DLL_EXPORT to QPDF_EXPORT. Be sure to call attention to
this in the release notes. There should be a "migrating to cmake"
in the manual, and ./configure should draw attention to it.
- * Remove the definition of QPDF_DLL_CLASS from DLL.h and change all
- occurrences of QPDF_DLL_CLASS to QPDF_DLL. This will require
- removing QPDF_DLL from methods inside classes that are declared
- with QPDF_DLL. If we want to explicit exclude private methods, we
- will need to mark them as not exported. See
- https://gcc.gnu.org/wiki/Visibility
+ * The effect of QPDF_DLL_CLASS is to export everything in the class,
+ not just the vtable. On MSVC, we don't need this as the vtable
+ gets exported automatically when needed. With gcc, we need it to
+ export typeinfo and vtable. Whenever QPDF_DLL_CLASS is defined,
+ also define QPDF_DLL_LOCAL to __attribute__
+ ((visibility("hidden"))). Then add QPDF_DLL_LOCAL to everything in
+ QPDF_DLL_CLASS that is not marked with QPDF_DLL. The effect is
+ that, with MSVC, only methods are marked QPDF_DLL are public
+ because QPDF_DLL_CLASS is empty. For gcc, only methods marked
+ QPDF_DLL are public because QPDF_DLL_LOCAL makes the other things
+ private. See https://gcc.gnu.org/wiki/Visibility. Make sure this
+ is documented.
* Nice to have:
* Split qpdf.test into multiple tests
* Rework tests so that nothing is written into the source directory.
* Ideally then the entire build could be done with a read-only
source tree.
+* pikepdf
+ * https://github.com/pikepdf/pikepdf/pull/315 -- setup.py + docs
+ * https://github.com/pikepdf/pikepdf/pull/316 -- setup.py only
Output JSON v2
==============