162
156
self.disable_shared = 1
163
157
elif opt == '--with-static-apr':
164
158
self.static_apr = 1
159
elif opt == '--with-static-openssl':
160
self.static_openssl = 1
165
161
elif opt == '--vsnet-version':
166
if val == '2002' or re.match('7(\.\d+)?', val):
162
if val == '2002' or re.match('7(\.\d+)?$', val):
167
163
self.vs_version = '2002'
168
164
self.sln_version = '7.00'
169
165
self.vcproj_version = '7.00'
170
166
self.vcproj_extension = '.vcproj'
171
elif val == '2003' or re.match('8(\.\d+)?', val):
167
elif val == '2003' or re.match('8(\.\d+)?$', val):
172
168
self.vs_version = '2003'
173
169
self.sln_version = '8.00'
174
170
self.vcproj_version = '7.10'
175
171
self.vcproj_extension = '.vcproj'
176
elif val == '2005' or re.match('9(\.\d+)?', val):
172
elif val == '2005' or re.match('9(\.\d+)?$', val):
177
173
self.vs_version = '2005'
178
174
self.sln_version = '9.00'
179
175
self.vcproj_version = '8.00'
180
176
self.vcproj_extension = '.vcproj'
181
elif val == '2008' or re.match('10(\.\d+)?', val):
177
elif val == '2008' or re.match('10(\.\d+)?$', val):
182
178
self.vs_version = '2008'
183
179
self.sln_version = '10.00'
184
180
self.vcproj_version = '9.00'
1147
1171
if not self.zlib_path:
1149
1173
zlib_path = os.path.abspath(self.zlib_path)
1174
zlib_sources = map(lambda x : os.path.relpath(x, self.projfilesdir),
1175
glob.glob(os.path.join(zlib_path, '*.c')) +
1176
glob.glob(os.path.join(zlib_path,
1177
'contrib/masmx86/*.c')) +
1178
glob.glob(os.path.join(zlib_path,
1179
'contrib/masmx86/*.asm')))
1180
zlib_headers = map(lambda x : os.path.relpath(x, self.projfilesdir),
1181
glob.glob(os.path.join(zlib_path, '*.h')))
1150
1183
self.move_proj_file(self.projfilesdir, name,
1151
(('zlib_path', zlib_path),
1153
glob.glob(os.path.join(zlib_path, '*.c'))
1154
+ glob.glob(os.path.join(zlib_path,
1155
'contrib/masmx86/*.c'))
1156
+ glob.glob(os.path.join(zlib_path,
1157
'contrib/masmx86/*.asm'))),
1159
glob.glob(os.path.join(zlib_path, '*.h'))),
1184
(('zlib_path', os.path.relpath(zlib_path,
1185
self.projfilesdir)),
1186
('zlib_sources', zlib_sources),
1187
('zlib_headers', zlib_headers),
1160
1188
('zlib_version', self.zlib_version),
1161
1189
('project_guid', self.makeguid('zlib')),
1162
1190
('use_ml', self.have_ml and 1 or None),
1165
def write_neon_project_file(self, name):
1166
if self.without_neon:
1169
neon_path = os.path.abspath(self.neon_path)
1170
self.move_proj_file(self.neon_path, name,
1172
glob.glob(os.path.join(neon_path, 'src', '*.c'))),
1174
glob.glob(os.path.join(neon_path, 'src', '*.h'))),
1176
os.path.join(os.path.abspath(self.apr_util_path),
1177
'xml', 'expat', 'lib')),
1178
('zlib_path', self.zlib_path
1179
and os.path.abspath(self.zlib_path)),
1182
and os.path.abspath(self.openssl_path)),
1183
('project_guid', self.makeguid('neon')),
1186
1193
def write_serf_project_file(self, name):
1187
1194
if not self.serf_lib:
1190
1197
serf_path = os.path.abspath(self.serf_path)
1191
if self.serf_ver_maj == 1:
1192
serflib = 'serf-1.lib'
1198
serf_sources = map(lambda x : os.path.relpath(x, self.serf_path),
1199
glob.glob(os.path.join(serf_path, '*.c'))
1200
+ glob.glob(os.path.join(serf_path, 'auth', '*.c'))
1201
+ glob.glob(os.path.join(serf_path, 'buckets',
1203
serf_headers = map(lambda x : os.path.relpath(x, self.serf_path),
1204
glob.glob(os.path.join(serf_path, '*.h'))
1205
+ glob.glob(os.path.join(serf_path, 'auth', '*.h'))
1206
+ glob.glob(os.path.join(serf_path, 'buckets', '*.h')))
1207
if self.serf_ver_maj != 0:
1208
serflib = 'serf-%d.lib' % self.serf_ver_maj
1194
1210
serflib = 'serf.lib'
1212
apr_static = self.static_apr and 'APR_STATIC=1' or ''
1213
openssl_static = self.static_openssl and 'OPENSSL_STATIC=1' or ''
1196
1214
self.move_proj_file(self.serf_path, name,
1198
glob.glob(os.path.join(serf_path, '*.c'))
1199
+ glob.glob(os.path.join(serf_path, 'auth', '*.c'))
1200
+ glob.glob(os.path.join(serf_path, 'buckets',
1203
glob.glob(os.path.join(serf_path, '*.h'))
1204
+ glob.glob(os.path.join(serf_path, 'auth', '*.h'))
1205
+ glob.glob(os.path.join(serf_path, 'buckets',
1207
('zlib_path', self.zlib_path
1208
and os.path.abspath(self.zlib_path)),
1211
and os.path.abspath(self.openssl_path)),
1212
('apr_path', os.path.abspath(self.apr_path)),
1213
('apr_util_path', os.path.abspath(self.apr_util_path)),
1215
(('serf_sources', serf_sources),
1216
('serf_headers', serf_headers),
1217
('zlib_path', os.path.relpath(self.zlib_path,
1219
('openssl_path', os.path.relpath(self.openssl_path,
1221
('apr_path', os.path.relpath(self.apr_path,
1223
('apr_util_path', os.path.relpath(self.apr_util_path,
1214
1225
('project_guid', self.makeguid('serf')),
1215
('apr_static', self.static_apr),
1226
('apr_static', apr_static),
1227
('openssl_static', openssl_static),
1216
1228
('serf_lib', serflib),
1219
1231
def move_proj_file(self, path, name, params=()):
1220
1232
### Move our slightly templatized pre-built project files into place --
1221
### these projects include zlib, neon, serf, locale, config, etc.
1233
### these projects include zlib, serf, locale, config, etc.
1223
1235
dest_file = os.path.join(path, name)
1224
1236
source_template = os.path.join('templates', name + '.ezt')
1226
1238
'version' : self.vcproj_version,
1227
1239
'configs' : self.configs,
1228
'platforms' : self.platforms
1240
'platforms' : self.platforms,
1241
'toolset_version' : 'v' + self.vcproj_version.replace('.',''),
1230
1243
for key, val in params:
1231
1244
data[key] = val
1523
1531
fp = open(version_file_path)
1524
1532
txt = fp.read()
1526
1535
vermatch = re.search(r'^\s*#define\s+APR_MAJOR_VERSION\s+(\d+)', txt, re.M)
1528
major_ver = int(vermatch.group(1))
1536
major = int(vermatch.group(1))
1538
vermatch = re.search(r'^\s*#define\s+APR_MINOR_VERSION\s+(\d+)', txt, re.M)
1539
minor = int(vermatch.group(1))
1541
vermatch = re.search(r'^\s*#define\s+APR_PATCH_VERSION\s+(\d+)', txt, re.M)
1542
patch = int(vermatch.group(1))
1544
version = (major, minor, patch)
1545
self.apr_version = '%d.%d.%d' % version
1532
suffix = '-%d' % major_ver
1549
suffix = '-%d' % major
1534
1551
if self.static_apr:
1535
1552
self.apr_lib = 'apr%s.lib' % suffix
1537
1554
self.apr_lib = 'libapr%s.lib' % suffix
1556
if version < minimal_apr_version:
1557
sys.stderr.write("ERROR: apr %s or higher is required "
1559
'.'.join(str(v) for v in minimal_apr_version),
1563
print('Found apr %s' % self.apr_version)
1539
1565
def _find_apr_util(self):
1540
1566
"Find the APR-util library and version"
1568
minimal_aprutil_version = (0, 9, 0)
1542
1569
version_file_path = os.path.join(self.apr_util_path, 'include',
1543
1570
'apu_version.h')
1550
1577
fp = open(version_file_path)
1551
1578
txt = fp.read()
1553
1581
vermatch = re.search(r'^\s*#define\s+APU_MAJOR_VERSION\s+(\d+)', txt, re.M)
1555
major_ver = int(vermatch.group(1))
1582
major = int(vermatch.group(1))
1584
vermatch = re.search(r'^\s*#define\s+APU_MINOR_VERSION\s+(\d+)', txt, re.M)
1585
minor = int(vermatch.group(1))
1587
vermatch = re.search(r'^\s*#define\s+APU_PATCH_VERSION\s+(\d+)', txt, re.M)
1588
patch = int(vermatch.group(1))
1590
version = (major, minor, patch)
1591
self.aprutil_version = '%d.%d.%d' % version
1559
suffix = '-%d' % major_ver
1595
suffix = '-%d' % major
1561
1597
if self.static_apr:
1562
1598
self.aprutil_lib = 'aprutil%s.lib' % suffix
1564
1600
self.aprutil_lib = 'libaprutil%s.lib' % suffix
1602
if version < minimal_aprutil_version:
1603
sys.stderr.write("ERROR: aprutil %s or higher is required "
1605
'.'.join(str(v) for v in minimal_aprutil_version),
1606
self.aprutil_version))
1609
print('Found aprutil %s' % self.aprutil_version)
1566
1611
def _find_sqlite(self):
1567
1612
"Find the Sqlite library and version"
1614
minimal_sqlite_version = (3, 7, 12)
1569
1616
header_file = os.path.join(self.sqlite_path, 'inc', 'sqlite3.h')
1571
1618
# First check for compiled version of SQLite.
1590
1637
fp = open(header_file)
1591
1638
txt = fp.read()
1593
vermatch = re.search(r'^\s*#define\s+SQLITE_VERSION\s+"(\d+)\.(\d+)\.(\d+)(?:\.\d)?"', txt, re.M)
1595
version = tuple(map(int, vermatch.groups()))
1598
self.sqlite_version = '%d.%d.%d' % version
1600
msg = 'Found SQLite version %s\n'
1602
major, minor, patch = version
1603
if major < 3 or (major == 3 and minor < 6) \
1604
or (major == 3 and minor == 6 and patch < 18):
1605
sys.stderr.write("ERROR: SQLite 3.6.18 or higher is required "
1606
"(%s found)\n" % self.sqlite_version);
1640
vermatch = re.search(r'^\s*#define\s+SQLITE_VERSION\s+"(\d+)\.(\d+)\.(\d+)(?:\.(\d))?"', txt, re.M)
1642
version = vermatch.groups()
1644
# Sqlite doesn't add patch numbers for their ordinary releases
1646
version = version[0:3]
1648
version = tuple(map(int, version))
1650
self.sqlite_version = '.'.join(str(v) for v in version)
1652
if version < minimal_sqlite_version:
1653
sys.stderr.write("ERROR: sqlite %s or higher is required "
1655
'.'.join(str(v) for v in minimal_sqlite_version),
1656
self.sqlite_version))
1609
print(msg % self.sqlite_version)
1659
print('Found SQLite %s' % self.sqlite_version)
1611
1661
def _find_zlib(self):
1612
1662
"Find the ZLib library and version"