Commit ae4c6166a1d35e89fc7409045ce23837aaa89082

Authored by Jay Berkenbilt
1 parent 6e7e9be9

notes

git-svn-id: svn+q:///qpdf/trunk@866 71b93d88-0707-0410-a8cf-f5a4172ac649
Showing 2 changed files with 36 additions and 64 deletions
README.windows
... ... @@ -16,24 +16,23 @@ Building with MinGW
16 16 ===================
17 17  
18 18 QPDF is known to build and pass its test suite with MSYS-1.0.11 and
19   -gcc 4.4.0 with C++ support. You can fully configure and build qpdf in
20   -this environment, though cygwin is required to run the test suite.
21   -You will most likely not be able to build qpdf with mingw using
22   -cygwin, though it's possible that it could be made to work with gcc
23   --mno-cygwin.
  19 +gcc 4.4.0 with C++ support. If you also have ActiveState Perl in your
  20 +path, you can fully configure, build, and test qpdf in this
  21 +environment. You will most likely not be able to build qpdf with
  22 +mingw using cygwin.
24 23  
25 24 From your MSYS prompt, run
26 25  
27   - ./configure --disable-test-compare-images --enable-build-external-libs --with-buildrules=mingw
28   -
29   -or
30   -
31 26 ./config-mingw
32 27  
33 28 and then
34 29  
35 30 make
36 31  
  32 +Note that ./config-mingw just runs ./configure with specific
  33 +arguments, so you can look at it, make adjustments, and manually run
  34 +configure instead.
  35 +
37 36 Add the absolute path to the libqpdf/build directory to your PATH.
38 37 Make sure you can run the qpdf command by typing qpdf/build/qpdf and
39 38 making sure you get a help message rather than an error loading the
... ... @@ -43,13 +42,20 @@ DLL or no output at all. Run the test suite by typing
43 42  
44 43 If all goes well, you should get a passing test suite.
45 44  
  45 +To create an installation directory, run make install. This will
  46 +create install-mingw/qpdf-VERSION and populate it. The binary
  47 +download of qpdf for Windows with mingw is created from this
  48 +directory.
  49 +
  50 +
46 51 Building with MSVC .NET 2008 Express
47 52 ====================================
48 53  
49 54 These instructions would likely work with newer version of MSVC or
50 55 with full version of MSVC. They may also work with .NET 2005. They
51   -have only been tested with .NET 2008 Express. You may follow these
52   -instructions from either Cygwin or from MSYS.
  56 +have only been tested with .NET 2008 Express (VC9.0). You may follow
  57 +these instructions from either Cygwin or from MSYS, though only MSYS
  58 +is regularly tested.
53 59  
54 60 You should first set up your environment to be able to run MSVC from
55 61 the command line. There is usually a batch file included with MSVC
... ... @@ -58,27 +64,22 @@ shell.
58 64  
59 65 Configure as follows:
60 66  
61   - CC=cl CXX="cl /TP /GR" CPPFLAGS=-DHAVE_VSNPRINTF ./configure --disable-test-compare-images --enable-build-external-libs --with-buildrules=msvc
62   -
63   -or
64   -
65 67 ./config-msvc
66 68  
67 69 and then
68 70  
69 71 make
70 72  
  73 +Note that ./config-msvc just runs ./configure with specific arguments,
  74 +so you can look at it, make adjustments, and manually run configure
  75 +instead.
  76 +
71 77 NOTE: automated dependencies are not generated with the msvc build.
72 78 If you're planning on making modifications, you should probably work
73 79 with mingw. If there is a need, I can add dependency information to
74 80 the msvc build, but since I only use it for generating release
75 81 versions, I haven't bothered.
76 82  
77   -The -DHAVE_VSNPRINTF is really only required for things that include
78   -zutil.h from zlib. You don't have to worry about this when compiling
79   -against qpdf with MSVC -- only when building zlib. It's harmless to
80   -include with the rest of the qpdf build.
81   -
82 83 Once built, add the full path to the libqpdf/build directory to your
83 84 path and run
84 85  
... ... @@ -91,53 +92,25 @@ debugger, first start an instance of Visual C++. Then run qpdf. When
91 92 the abort/retry/ignore dialog pops up, first attach the process from
92 93 within visual C++, and then click Retry in qpdf.
93 94  
94   -A release version of qpdf is built by default. You will probably have
95   -to edit msvc.mk to change /MD to /MDd to build a debugging version.
96   -Note that you must redistribute the Microsoft runtime DLLs. Linking
97   -with static runtime won't work; see "Static Runtime" below for
98   -details.
  95 +A release version of qpdf is built by default. If you want to link
  96 +against debugging libraries, you will have to change /MD to /MDd in
  97 +make/msvc.mk. Note that you must redistribute the Microsoft runtime
  98 +DLLs. Linking with static runtime (/MT) won't work; see "Static
  99 +Runtime" below for details.
  100 +
99 101  
100 102 Runtime DLLs
101 103 ============
102 104  
103 105 Both build methods create executables and DLLs that are dependent on
104   -the compiler's runtime DLLs. You can find out which DLLs are required
105   -by using objdump. For any DLLs that are not standard on any Windows
106   -system, you will need to copy those into the directory with the exe
107   -and the qpdf DLL in order for the application to work outside the
108   -development environment. You don't need KERNEL32.dll, or msvcrt.dll
109   -as those are standard.
110   -
111   -To discover which DLLs you need, you can run
112   -
113   - objdump -p qpdf/build/qpdf.exe | grep DLL
114   -
115   -To find the path to the DLL, you can use type -P, as in
116   -
117   - type -P libgcc_s_dw2-1.dll
118   -
119   -replacing libgcc_s_dw2-1.dll with whatever gcc DLL is shown, if
120   -different. For MSVC, you will probably need two DLLs. Keep in mind
121   -that Microsoft does not allow redistribution of the debugging DLLs.
122   -qpdf's build does not depend on them by default, however.
  106 +the compiler's runtime DLLs. When you run make install, the
  107 +installation process will automatically detect the DLLs and copy them
  108 +into the installation bin directory. Look at the copy_dlls script for
  109 +details on how this is accomplished.
123 110  
124 111 Redistribution of the runtime DLL is unavoidable as of this writing;
125 112 see "Static Runtime" below for details.
126 113  
127   -Installing
128   -==========
129   -
130   -As of this writing, make install doesn't work with Windows since it is
131   -hard-coded to use libtool. Until that time, you can install manually
132   -by looking at the install target in Makefile and gathering up the
133   -appropriate pieces by hand. If building with mingw, be sure to run
134   -strip on the DLL and EXE files to make them much smaller. This is not
135   -necessary with msvc since it stores debugging information in a
136   -separate file. Note that, in both cases, compiling with debugging
137   -flags adds extra data to the symbol table and not to the resulting
138   -executables. (Compiling with debugging flags, with msvc, is distinct
139   -from directing the compiler to use debugging runtime libraries, which
140   -does make a difference.)
141 114  
142 115 Static Runtime
143 116 ==============
... ...
... ... @@ -8,17 +8,16 @@
8 8 * Write documentation section on source-level API changes between 2.0
9 9 and 2.1.
10 10  
  11 + * Really need to get rid of embedded external libs. We can either
  12 + provide them separately for Windows or provide instructions for
  13 + building them. Remember to remove -DHAVE_VSNPRINTF from
  14 + config-msvc and to remove --enable-build-external-libs from both.
  15 +
11 16 * Windows release: config for both compilers, make install. Create
12 17 zip files. Probably should put the compiler name somewhere in the
13 18 directory (qpdf-version-compiler?). Need some kind of "what to
14 19 download" file.
15 20  
16   - * Make install for windows: copy system DLLs as needed excluding
17   - msvcrt and kernel32. Update README.windows in this case including
18   - taking out the mention of strip since it should be handled by the
19   - install step. Make sure it works to link with the static library
20   - when the dll is not in the same directory.
21   -
22 21 * Add comments for the security functions that map them back to the
23 22 items in Adobe's products.
24 23  
... ...