Commit 11e34f29cef693b34d9c125161da3864b9d6ea77
Committed by
Jay Berkenbilt
1 parent
96839dec
TODO: update section for cmake
Showing
1 changed file
with
15 additions
and
8 deletions
TODO
| @@ -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 | ============== |