aboutsummaryrefslogtreecommitdiffstats
path: root/qbs/modules/libarchive_static/functions.js
blob: f29952b9e8b1e8331f32dee3712a762b69c1dda5 (plain)
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;
}