Commit 11e34f29cef693b34d9c125161da3864b9d6ea77

Authored by Jay Berkenbilt
Committed by Jay Berkenbilt
1 parent 96839dec

TODO: update section for cmake

Showing 1 changed file with 15 additions and 8 deletions
... ... @@ -104,24 +104,31 @@ Remaining work:
104 104 cmake
105 105 =====
106 106  
107   -* Rebase the cmake branch onto main and fast-forward over it.
108   -* Remove all "lt-" workarounds.
109 107 * DLL.h
110 108 * Remove DLL.h and QPDF_DLL* from all private library classes.
111 109 * Change DLL_EXPORT to QPDF_EXPORT. Be sure to call attention to
112 110 this in the release notes. There should be a "migrating to cmake"
113 111 in the manual, and ./configure should draw attention to it.
114   - * Remove the definition of QPDF_DLL_CLASS from DLL.h and change all
115   - occurrences of QPDF_DLL_CLASS to QPDF_DLL. This will require
116   - removing QPDF_DLL from methods inside classes that are declared
117   - with QPDF_DLL. If we want to explicit exclude private methods, we
118   - will need to mark them as not exported. See
119   - https://gcc.gnu.org/wiki/Visibility
  112 + * The effect of QPDF_DLL_CLASS is to export everything in the class,
  113 + not just the vtable. On MSVC, we don't need this as the vtable
  114 + gets exported automatically when needed. With gcc, we need it to
  115 + export typeinfo and vtable. Whenever QPDF_DLL_CLASS is defined,
  116 + also define QPDF_DLL_LOCAL to __attribute__
  117 + ((visibility("hidden"))). Then add QPDF_DLL_LOCAL to everything in
  118 + QPDF_DLL_CLASS that is not marked with QPDF_DLL. The effect is
  119 + that, with MSVC, only methods are marked QPDF_DLL are public
  120 + because QPDF_DLL_CLASS is empty. For gcc, only methods marked
  121 + QPDF_DLL are public because QPDF_DLL_LOCAL makes the other things
  122 + private. See https://gcc.gnu.org/wiki/Visibility. Make sure this
  123 + is documented.
120 124 * Nice to have:
121 125 * Split qpdf.test into multiple tests
122 126 * Rework tests so that nothing is written into the source directory.
123 127 * Ideally then the entire build could be done with a read-only
124 128 source tree.
  129 +* pikepdf
  130 + * https://github.com/pikepdf/pikepdf/pull/315 -- setup.py + docs
  131 + * https://github.com/pikepdf/pikepdf/pull/316 -- setup.py only
125 132  
126 133 Output JSON v2
127 134 ==============
... ...