in build/generator/gen_win_dependencies.py [0:0]
def _find_apr(self):
"Find the APR library and version"
minimal_apr_version = (1, 4, 0)
if not self.apr_path:
sys.stderr.write("ERROR: Use '--with-apr' option to configure APR " + \
"location.\n")
sys.exit(1)
inc_base = os.path.join(self.apr_path, 'include')
if os.path.isfile(os.path.join(inc_base, 'apr-1', 'apr_version.h')):
inc_path = os.path.join(inc_base, 'apr-1')
elif os.path.isfile(os.path.join(inc_base, 'apr_version.h')):
inc_path = inc_base
else:
sys.stderr.write("ERROR: 'apr_version' not found.\n")
sys.stderr.write("Use '--with-apr' option to configure APR location.\n")
sys.exit(1)
version_file_path = os.path.join(inc_path, 'apr_version.h')
txt = open(version_file_path).read()
vermatch = re.search(r'^\s*#define\s+APR_MAJOR_VERSION\s+(\d+)', txt, re.M)
major = int(vermatch.group(1))
vermatch = re.search(r'^\s*#define\s+APR_MINOR_VERSION\s+(\d+)', txt, re.M)
minor = int(vermatch.group(1))
vermatch = re.search(r'^\s*#define\s+APR_PATCH_VERSION\s+(\d+)', txt, re.M)
patch = int(vermatch.group(1))
version = (major, minor, patch)
self.apr_version = apr_version = '%d.%d.%d' % version
if version < minimal_apr_version:
sys.stderr.write("ERROR: apr %s or higher is required "
"(%s found)\n" % (
'.'.join(str(v) for v in minimal_apr_version),
self.apr_version))
sys.exit(1)
suffix = ''
if major > 0:
suffix = '-%d' % major
defines = []
if self.static_apr:
lib_name = 'apr%s.lib' % suffix
lib_dir = os.path.join(self.apr_path, 'LibR')
dll_dir = None
debug_dll_dir = None
dll_name = None
defines.extend(["APR_DECLARE_STATIC"])
if not os.path.isdir(lib_dir) and \
os.path.isfile(os.path.join(self.apr_path, 'lib', lib_name)):
# Installed APR instead of APR-Source
lib_dir = os.path.join(self.apr_path, 'lib')
debug_lib_dir = None
else:
debug_lib_dir = os.path.join(self.apr_path, 'LibD')
else:
lib_name = 'libapr%s.lib' % suffix
if os.path.isfile(os.path.join(self.apr_path, 'lib', lib_name)):
# Installed APR instead of APR-Source
lib_dir = os.path.join(self.apr_path, 'lib')
debug_lib_dir = None
else:
lib_dir = os.path.join(self.apr_path, 'Release')
if os.path.isfile(os.path.join(self.apr_path, 'Debug', lib_name)):
debug_lib_dir = os.path.join(self.apr_path, 'Debug')
else:
debug_lib_dir = None
dll_name = 'libapr%s.dll' % suffix
if os.path.isfile(os.path.join(lib_dir, dll_name)):
dll_dir = lib_dir
debug_dll_dir = debug_lib_dir
else:
dll_dir = os.path.join(self.apr_path, 'bin')
debug_dll_dir = None
extra_bin = []
if dll_dir:
bin_files = os.listdir(dll_dir)
if debug_dll_dir and os.path.isdir(debug_dll_dir):
debug_bin_files = os.listdir(debug_dll_dir)
else:
debug_bin_files = bin_files
for bin in bin_files:
if bin in debug_bin_files:
if re.match('^(lib)?apr[-_].*' + suffix + '(d)?.dll$', bin):
extra_bin.append(bin)
self._libraries['apr'] = SVNCommonLibrary('apr', inc_path, lib_dir, lib_name,
apr_version,
debug_lib_dir=debug_lib_dir,
dll_dir=dll_dir,
dll_name=dll_name,
debug_dll_dir=debug_dll_dir,
defines=defines,
extra_bin=extra_bin)