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,24 +104,31 @@ Remaining work:
104 cmake 104 cmake
105 ===== 105 =====
106 106
107 -* Rebase the cmake branch onto main and fast-forward over it.  
108 -* Remove all "lt-" workarounds.  
109 * DLL.h 107 * DLL.h
110 * Remove DLL.h and QPDF_DLL* from all private library classes. 108 * Remove DLL.h and QPDF_DLL* from all private library classes.
111 * Change DLL_EXPORT to QPDF_EXPORT. Be sure to call attention to 109 * Change DLL_EXPORT to QPDF_EXPORT. Be sure to call attention to
112 this in the release notes. There should be a "migrating to cmake" 110 this in the release notes. There should be a "migrating to cmake"
113 in the manual, and ./configure should draw attention to it. 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 * Nice to have: 124 * Nice to have:
121 * Split qpdf.test into multiple tests 125 * Split qpdf.test into multiple tests
122 * Rework tests so that nothing is written into the source directory. 126 * Rework tests so that nothing is written into the source directory.
123 * Ideally then the entire build could be done with a read-only 127 * Ideally then the entire build could be done with a read-only
124 source tree. 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 Output JSON v2 133 Output JSON v2
127 ============== 134 ==============