-
Notifications
You must be signed in to change notification settings - Fork 2
/
README.BuildBZip2.txt
178 lines (115 loc) · 6.4 KB
/
README.BuildBZip2.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
File README.BuildBzip2.txt - BZip2 build instructions for use with Hercules
This document Copyright © 2017 by Stephen R. Orso. License at the bottom.
BUILDING the BZip2 library for use by Hercules
This repository builds a BZip2 library for use by Hercules in a
UNIX-like or Windows system (mac OS requires testing). Hercules does
not require anything but the library, and a CMake build script is
included to generate the scripts needed to compile the library.
A shared library (.so or .dll) is created; for Windows environments,
a DLL import library is created as well.
The original Bzip2 distribution, available from http://bzip.org, has
an nmake-based build process that works with VS2015CE to build both
32-bit and 64-bit versions of the libraries. Two builds are needed
to build the required libraries.
BUILDING the BZip2 library using CMake
If the Hercules build determines that the BZip2 library included on
target system is missing, does not have the development headers, or is
at a lower version than the BZip2 sources available in the
Hercules-390 repository, Hercules will automatically build the BZip2
library in the Hercules build directory; no additional steps are
needed.
If the target system has a BZip2 library version the same as or higher
than this version and the development headers and library are
installed, the Hercules build will use that library, and again, no
additional steps are required.
If you wish to test an uplevel version of BZip2 with Hercules, then
use the following steps to build the BZip2 library. There is no
need to "install" the library; Hercules can be pointed to the
uplevel BZip2 build directory.
1. If you are building on Windows, open a Visual Studio command
prompt for the bit-ness of your system. For example, on
a 64-bit Windows 10 system with Visual Studio 2017 Community
Edition installed, this would be "x64 Native Tools Command
Prompt for VS 2017"
2. Clone this repository: git clone https://hercules-390/BZip2
3. Create the directory that will be the build directory you wish
to populate with BZip2 if needed.
4. Change to that build directory
5. Create the build scripts for the BZip2 library by using the
following CMake command:
cmake <source-dir>
6. Build the BZip2 library using the following CMake command:
cmake --build .
Include the option "--config Release" if building on Windows.
7. When building Hercules using CMake, use the command line option
-DBZIP2_DIR=<build-dir>
to point the Hercules build at your BZip2 build directory.
BUILDING the BZip2 library using makefile.msc (NOT RECOMMENDED)
The following procedure builds a BZip2 library and header tree that
is compatible only with the nmake/makefile.bat build included in
earlier versions of Hercules. That build procedure is deprecated.
You will have a better experience with the CMake build procedure.
In the examples and instructions below, Visual Studio 2015 Community
Edition is presumed. This process also works with Visual Studio
2015 Community Edition, and might well work with future versions of
Visual Studio.
Create the dll target in makefile.msc
The provided bzip2 build nmake does not create a dll. Do the
following to add the target for the dll and corresponding import
library:
1. Edit makefile.msc and locate the following target on or about
line 22:
all: lib bzip2 test
Change the line to:
all: dll lib bzip2 test
2. Locate the bzip2: target on or about line 22 and change it to:
bzip2: dll lib
$(CC) $(CFLAGS) /Febzip2 bzip2.c libbz2.lib setargv.obj
$(CC) $(CFLAGS) /Febzip2recover bzip2recover.c
These changes link the executable with the dll and remove
obsolete c compiler flags.
3. Add the dll: target between the current lib: and test: targets.
Be sure to leave a blank line between the dll: target and each
of the exsting targets.
dll: $(OBJS)
$(LINK) $(LFLAGS) /dll /implib:libbz2.lib /out:libbz2.dll /def:libbz2.def $(OBJS)
4. Change the lib: target to change the static library created by
the target so that it does not conflict with the import library
created by the dll: target. When you are done, the lib: target
should look like this:
lib: $(OBJS)
lib -nologo /out:libbz2s.lib $(OBJS)
5. Add the following new files to the clean: target:
del libbz2s.lib
del libbz2.dll
del libbz2.pdb
Now you are ready to build.
Build the binaries:
1. Open a Visual Studio 2015 32-bit tools command prompt. The
start menu item is titled:
VS2015 x86 Native Tools Command Prompt
2. Issue the following command to build the 32-bit dll and
corresponding import library:
nmake -f makefile.msc all
3. Copy the 32-bit files to the winbuild directory
<source_dir>\bzip2.dll --> winbuild\bzip2
<source_dir>\bzip2.lib --> winbuild\bzip2
<source_dir>\bzip2.h --> winbuild\bzip2
4. Remove the 32-bit binaries from the source directory
nmake -f makefile.msc clean
5. Open a Visual Studio 2015 64-bit tools command prompt using the
Windows Start menu. On a 64-bit Windows machine, the start
menu item is titled:
VS2015 x64 Native Tools Command Prompt
On a 32-bit machine, look for:
VS2015 x86 x64 Cross Tools Command Prompt
6. Issue the following command to build the 64-bit dll and
corresponding import library:
nmake -f makefile.msc all
7. Copy the 64-bit files to the winbuild directory
<source_dir>\bzip2.dll --> winbuild\bzip2\x64
<source_dir>\bzip2.lib --> winbuild\bzip2\x64
This work is licensed under the Creative Commons Attribution-
ShareAlike 4.0 International License.
To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/
or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.