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
|
var Environment = require("qbs.Environment")
var File = require("qbs.File")
var FileInfo = require("qbs.FileInfo")
function libarchiveIncludeDirSearchPaths(hostOs)
{
var libarchiveRoot = Environment.getEnv("LIBARCHIVE_INSTALL_ROOT");
if (libarchiveRoot) {
if (File.exists(libarchiveRoot)) {
var incDir = FileInfo.joinPaths(libarchiveRoot, "libarchive", "include");
if (File.exists(incDir))
return [incDir];
}
}
if (hostOs.contains("macos")) // add homebrew locations (not default)
return ["/opt/homebrew/libarchive/include", "/usr/local/opt/libarchive/include"];
return undefined;
}
function libarchiveLibDirSearchPaths(hostOs)
{
var libarchiveRoot = Environment.getEnv("LIBARCHIVE_INSTALL_ROOT");
if (libarchiveRoot) {
if (File.exists(libarchiveRoot)) {
var libDir = FileInfo.joinPaths(libarchiveRoot, "libarchive", "lib");
if (File.exists(libDir))
return [libDir];
}
}
if (hostOs.contains("macos")) // add homebrew locations (not default)
return ["/opt/homebrew/libarchive/lib", "/usr/local/opt/libarchive/lib"];
return undefined;
}
function getLibSearchNames(hostOs, toolchain)
{
if (hostOs.contains("windows"))
return ["archive_static", "archive"];
return ["archive"];
}
function getLibNameSuffixes(hostOs, toolchain) // prefer static over dynamic
{
if (hostOs.contains("windows")) {
if (toolchain.contains("mingw"))
return [".a", ".dll.a"]
else // msvc
return [".lib", ".dll"];
}
if (hostOs.contains("macos"))
return [".a", ".dylib"];
return [".a", ".so"];
}
function isStaticLib(libName)
{
if (!libName)
return false;
var dynSuffixes = [".dll", ".dylib", ".so"];
for (var i = 0; i < dynSuffixes.length; ++i) {
if (libName.endsWith(dynSuffixes[i]))
return false;
}
return true;
}
|