Commit a78f8327587c281533c591156c10e9a6d15b3896

Authored by Jay Berkenbilt
1 parent cda14581

dos line endings


git-svn-id: svn+q:///qpdf/trunk@1014 71b93d88-0707-0410-a8cf-f5a4172ac649
Showing 1 changed file with 154 additions and 154 deletions
README-windows.txt
1   -Common Setup
2   -============
3   -
4   -To be able to build qpdf and run its test suite, you must have either
5   -Cygwin or MSYS from MinGW (>= 1.0.11) installed. If you want to build
6   -with Microsoft Visual C++, either Cygwin or MSYS will do. If you want
7   -to build with MinGW, you must use MSYS rather than Cygwin.
8   -
9   -As of this writing, the image comparison tests confuse ghostscript in
10   -cygwin, but there's a chance they might work at some point. If you
11   -want to run them, you need ghostscript and tiff utils as well. Then
12   -omit --disable-test-compare-images from the configure statements given
13   -below. The image comparison tests have not been tried under MSYS.
14   -
15   -
16   -External Libraries
17   -==================
18   -
19   -In order to build qpdf, you must have copies of zlib and pcre. The
20   -easy way to get them is to download them from the qpdf download area.
21   -There are packages called external-libs-bin.zip and
22   -external-libs-src.zip. If you are building with MSVC 9 (.NET 2008) or
23   -MINGW 4.4, you can just extract the external-libs-bin.zip zip file
24   -into the top-level qpdf source tree. It will create a directory
25   -called external-libs which contains header files and precompiled
26   -libraries. Passing --enable-external-libs to ./configure (which is
27   -done automatically if you follow the instructions below) is sufficient
28   -to find them.
29   -
30   -You can also obtain pcre and zlib directly on your own and install
31   -them. If you are using mingw, you can just set CPPFLAGS, LDFLAGS, and
32   -LIBS when you run ./configure so that it can find the header files and
33   -libraries. If you are building with msvc and you want to do this, it
34   -probably won't work because ./configure doesn't know how to interpret
35   -LDFLAGS and LIBS properly for MSVC (though qpdf's own build system
36   -does). In this case, you can probably get away with cheating by
37   -passing --enable-external-libs to ./configure and then just editing
38   -CPPFLAGS, LDFLAGS, LIBS in the generated autoconf.mk file. Note that
39   -you should use UNIX-like syntax (-I, -L, -l) even though this is not
40   -what cl takes on the command line. qpdf's build rules will fix it.
41   -
42   -
43   -Building with MinGW
44   -===================
45   -
46   -QPDF is known to build and pass its test suite with MSYS-1.0.11 and
47   -gcc 4.4.0 with C++ support. If you also have ActiveState Perl in your
48   -path and the external-libs distribution described above, you can fully
49   -configure, build, and test qpdf in this environment. You will most
50   -likely not be able to build qpdf with mingw using cygwin.
51   -
52   -From your MSYS prompt, run
53   -
54   - ./config-mingw
55   -
56   -and then
57   -
58   - make
59   -
60   -Note that ./config-mingw just runs ./configure with specific
61   -arguments, so you can look at it, make adjustments, and manually run
62   -configure instead.
63   -
64   -Add the absolute path to the libqpdf/build directory to your PATH.
65   -Make sure you can run the qpdf command by typing qpdf/build/qpdf and
66   -making sure you get a help message rather than an error loading the
67   -DLL or no output at all. Run the test suite by typing
68   -
69   - make check
70   -
71   -If all goes well, you should get a passing test suite.
72   -
73   -To create an installation directory, run make install. This will
74   -create install-mingw/qpdf-VERSION and populate it. The binary
75   -download of qpdf for Windows with mingw is created from this
76   -directory.
77   -
78   -
79   -Building with MSVC .NET 2008 Express
80   -====================================
81   -
82   -These instructions would likely work with newer version of MSVC or
83   -with full version of MSVC. They may also work with .NET 2005. They
84   -have only been tested with .NET 2008 Express (VC9.0). You may follow
85   -these instructions from either Cygwin or from MSYS, though only MSYS
86   -is regularly tested.
87   -
88   -You should first set up your environment to be able to run MSVC from
89   -the command line. There is usually a batch file included with MSVC
90   -that does this. From that cmd prompt, you can start your cygwin
91   -shell.
92   -
93   -Configure as follows:
94   -
95   - ./config-msvc
96   -
97   -and then
98   -
99   - make
100   -
101   -Note that ./config-msvc just runs ./configure with specific arguments,
102   -so you can look at it, make adjustments, and manually run configure
103   -instead.
104   -
105   -NOTE: automated dependencies are not generated with the msvc build.
106   -If you're planning on making modifications, you should probably work
107   -with mingw. If there is a need, I can add dependency information to
108   -the msvc build, but since I only use it for generating release
109   -versions, I haven't bothered.
110   -
111   -Once built, add the full path to the libqpdf/build directory to your
112   -path and run
113   -
114   - make check
115   -
116   -to run the test suite.
117   -
118   -If you are building with MSVC and want to debug a crash in MSVC's
119   -debugger, first start an instance of Visual C++. Then run qpdf. When
120   -the abort/retry/ignore dialog pops up, first attach the process from
121   -within visual C++, and then click Retry in qpdf.
122   -
123   -A release version of qpdf is built by default. If you want to link
124   -against debugging libraries, you will have to change /MD to /MDd in
125   -make/msvc.mk. Note that you must redistribute the Microsoft runtime
126   -DLLs. Linking with static runtime (/MT) won't work; see "Static
127   -Runtime" below for details.
128   -
129   -
130   -Runtime DLLs
131   -============
132   -
133   -Both build methods create executables and DLLs that are dependent on
134   -the compiler's runtime DLLs. When you run make install, the
135   -installation process will automatically detect the DLLs and copy them
136   -into the installation bin directory. Look at the copy_dlls script for
137   -details on how this is accomplished.
138   -
139   -Redistribution of the runtime DLL is unavoidable as of this writing;
140   -see "Static Runtime" below for details.
141   -
142   -
143   -Static Runtime
144   -==============
145   -
146   -Building the DLL and executables with static runtime does not work
147   -with either Visual C++ .NET 2008 (a.k.a. vc9) using /MT or with mingw
148   -(at least as of 4.4.0) using -static-libgcc. The reason is that, in
149   -both cases, there is static data involved with exception handling, and
150   -when the runtime is linked in statically, exceptions cannot be thrown
151   -across the DLL to EXE boundary. Since qpdf uses exception handling
152   -extensively for error handling, we have no choice but to redistribute
153   -the C++ runtime DLLs. Maybe this will be addressed in a future
154   -version of the compilers.
  1 +Common Setup
  2 +============
  3 +
  4 +To be able to build qpdf and run its test suite, you must have either
  5 +Cygwin or MSYS from MinGW (>= 1.0.11) installed. If you want to build
  6 +with Microsoft Visual C++, either Cygwin or MSYS will do. If you want
  7 +to build with MinGW, you must use MSYS rather than Cygwin.
  8 +
  9 +As of this writing, the image comparison tests confuse ghostscript in
  10 +cygwin, but there's a chance they might work at some point. If you
  11 +want to run them, you need ghostscript and tiff utils as well. Then
  12 +omit --disable-test-compare-images from the configure statements given
  13 +below. The image comparison tests have not been tried under MSYS.
  14 +
  15 +
  16 +External Libraries
  17 +==================
  18 +
  19 +In order to build qpdf, you must have copies of zlib and pcre. The
  20 +easy way to get them is to download them from the qpdf download area.
  21 +There are packages called external-libs-bin.zip and
  22 +external-libs-src.zip. If you are building with MSVC 9 (.NET 2008) or
  23 +MINGW 4.4, you can just extract the external-libs-bin.zip zip file
  24 +into the top-level qpdf source tree. It will create a directory
  25 +called external-libs which contains header files and precompiled
  26 +libraries. Passing --enable-external-libs to ./configure (which is
  27 +done automatically if you follow the instructions below) is sufficient
  28 +to find them.
  29 +
  30 +You can also obtain pcre and zlib directly on your own and install
  31 +them. If you are using mingw, you can just set CPPFLAGS, LDFLAGS, and
  32 +LIBS when you run ./configure so that it can find the header files and
  33 +libraries. If you are building with msvc and you want to do this, it
  34 +probably won't work because ./configure doesn't know how to interpret
  35 +LDFLAGS and LIBS properly for MSVC (though qpdf's own build system
  36 +does). In this case, you can probably get away with cheating by
  37 +passing --enable-external-libs to ./configure and then just editing
  38 +CPPFLAGS, LDFLAGS, LIBS in the generated autoconf.mk file. Note that
  39 +you should use UNIX-like syntax (-I, -L, -l) even though this is not
  40 +what cl takes on the command line. qpdf's build rules will fix it.
  41 +
  42 +
  43 +Building with MinGW
  44 +===================
  45 +
  46 +QPDF is known to build and pass its test suite with MSYS-1.0.11 and
  47 +gcc 4.4.0 with C++ support. If you also have ActiveState Perl in your
  48 +path and the external-libs distribution described above, you can fully
  49 +configure, build, and test qpdf in this environment. You will most
  50 +likely not be able to build qpdf with mingw using cygwin.
  51 +
  52 +From your MSYS prompt, run
  53 +
  54 + ./config-mingw
  55 +
  56 +and then
  57 +
  58 + make
  59 +
  60 +Note that ./config-mingw just runs ./configure with specific
  61 +arguments, so you can look at it, make adjustments, and manually run
  62 +configure instead.
  63 +
  64 +Add the absolute path to the libqpdf/build directory to your PATH.
  65 +Make sure you can run the qpdf command by typing qpdf/build/qpdf and
  66 +making sure you get a help message rather than an error loading the
  67 +DLL or no output at all. Run the test suite by typing
  68 +
  69 + make check
  70 +
  71 +If all goes well, you should get a passing test suite.
  72 +
  73 +To create an installation directory, run make install. This will
  74 +create install-mingw/qpdf-VERSION and populate it. The binary
  75 +download of qpdf for Windows with mingw is created from this
  76 +directory.
  77 +
  78 +
  79 +Building with MSVC .NET 2008 Express
  80 +====================================
  81 +
  82 +These instructions would likely work with newer version of MSVC or
  83 +with full version of MSVC. They may also work with .NET 2005. They
  84 +have only been tested with .NET 2008 Express (VC9.0). You may follow
  85 +these instructions from either Cygwin or from MSYS, though only MSYS
  86 +is regularly tested.
  87 +
  88 +You should first set up your environment to be able to run MSVC from
  89 +the command line. There is usually a batch file included with MSVC
  90 +that does this. From that cmd prompt, you can start your cygwin
  91 +shell.
  92 +
  93 +Configure as follows:
  94 +
  95 + ./config-msvc
  96 +
  97 +and then
  98 +
  99 + make
  100 +
  101 +Note that ./config-msvc just runs ./configure with specific arguments,
  102 +so you can look at it, make adjustments, and manually run configure
  103 +instead.
  104 +
  105 +NOTE: automated dependencies are not generated with the msvc build.
  106 +If you're planning on making modifications, you should probably work
  107 +with mingw. If there is a need, I can add dependency information to
  108 +the msvc build, but since I only use it for generating release
  109 +versions, I haven't bothered.
  110 +
  111 +Once built, add the full path to the libqpdf/build directory to your
  112 +path and run
  113 +
  114 + make check
  115 +
  116 +to run the test suite.
  117 +
  118 +If you are building with MSVC and want to debug a crash in MSVC's
  119 +debugger, first start an instance of Visual C++. Then run qpdf. When
  120 +the abort/retry/ignore dialog pops up, first attach the process from
  121 +within visual C++, and then click Retry in qpdf.
  122 +
  123 +A release version of qpdf is built by default. If you want to link
  124 +against debugging libraries, you will have to change /MD to /MDd in
  125 +make/msvc.mk. Note that you must redistribute the Microsoft runtime
  126 +DLLs. Linking with static runtime (/MT) won't work; see "Static
  127 +Runtime" below for details.
  128 +
  129 +
  130 +Runtime DLLs
  131 +============
  132 +
  133 +Both build methods create executables and DLLs that are dependent on
  134 +the compiler's runtime DLLs. When you run make install, the
  135 +installation process will automatically detect the DLLs and copy them
  136 +into the installation bin directory. Look at the copy_dlls script for
  137 +details on how this is accomplished.
  138 +
  139 +Redistribution of the runtime DLL is unavoidable as of this writing;
  140 +see "Static Runtime" below for details.
  141 +
  142 +
  143 +Static Runtime
  144 +==============
  145 +
  146 +Building the DLL and executables with static runtime does not work
  147 +with either Visual C++ .NET 2008 (a.k.a. vc9) using /MT or with mingw
  148 +(at least as of 4.4.0) using -static-libgcc. The reason is that, in
  149 +both cases, there is static data involved with exception handling, and
  150 +when the runtime is linked in statically, exceptions cannot be thrown
  151 +across the DLL to EXE boundary. Since qpdf uses exception handling
  152 +extensively for error handling, we have no choice but to redistribute
  153 +the C++ runtime DLLs. Maybe this will be addressed in a future
  154 +version of the compilers.
... ...