File: build.zig

package info (click to toggle)
kalign 1%3A3.5.1-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,060 kB
  • sloc: ansic: 16,129; python: 10,759; cpp: 636; sh: 65; makefile: 57
file content (120 lines) | stat: -rw-r--r-- 3,801 bytes parent folder | download
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
const std = @import("std");
const builtin = @import("builtin");
const ArrayList = std.ArrayList;

const kalignPackageVersion = "3.5.1";

const targets: []const std.Target.Query = &.{
    .{ .cpu_arch = .aarch64, .os_tag = .macos },
    .{ .cpu_arch = .aarch64, .os_tag = .linux },
    .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .gnu },
    .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .musl },
    // .{ .cpu_arch = .x86_64, .os_tag = .windows },
};

const cflags = [_][]const u8{
    "-DKALIGN_PACKAGE_VERSION=\"3.5.0\"",
    "-DKALIGN_PACKAGE_NAME=\"kalign\"",
    "-DKALIGN_ALN_SERIAL_THRESHOLD=250",
    "-DKALIGN_KMEANS_UPGMA_THRESHOLD=50",
};

pub fn build(b: *std.Build) !void {
    // const target = b.standardTargetOptions(.{});
    const optimize = b.standardOptimizeOption(.{});

    for (targets) |t| {
        const lib = b.addStaticLibrary(.{
            .name = "tldevel",
            .target = b.resolveTargetQuery(t),
            .optimize = optimize,
        });
        lib.linkLibC();
        lib.addIncludePath(.{ .path = "./lib/src" });
        lib.addCSourceFiles(.{ .files = &kalign_lib_sources, .flags = &cflags });
        lib.addIncludePath(.{ .path = "./lib/include" });
        b.installArtifact(lib);

        const kalign_bin = b.addExecutable(.{
            .name = "kalign",
            .target = b.resolveTargetQuery(t),
            .optimize = optimize,
        });

        lib.addCSourceFiles(.{ .files = &kalign_sources, .flags = &cflags });
        kalign_bin.addIncludePath(.{ .path = "./lib/src" });
        kalign_bin.addIncludePath(.{ .path = "./lib/include" });
        kalign_bin.linkLibrary(lib);
        b.installArtifact(kalign_bin);

        const target_output = b.addInstallArtifact(kalign_bin, .{
            .dest_dir = .{
                .override = .{
                    .custom = try t.zigTriple(b.allocator),
                },
            },
        });

        b.getInstallStep().dependOn(&target_output.step);
    }

    // const exe = b.addExecutable(.{
    //     .name = "zig_test",
    //     .target = target,
    //     .optimize = optimize,
    // });
    // exe.addCSourceFile(.{ .file = .{ .path = "./tests/zig_test.c" }, .flags = &[_][]const u8{"-std=c99"} });

    // // exe.addCSourceFiles(.{ .files = &kalign_lib_sources, .flags = &[_][]const u8{"-std=c99"} });
    // // exe.addCSourceFile(&.{"./tests/zig_test.c"}, cflags.items);
    // // exe.addCSourceFile("./lib/src/strnlen_compat.c", cflags.items);
    // exe.addIncludePath(.{ .path = "./lib/src" });
    // // exe.linkLibrary(lib);
    // exe.linkLibC();
    // b.installArtifact(exe);
}

const kalign_lib_sources = [_][]const u8{
    // "lib/src/strnlen_compat.c",
    "lib/src/test.c",
    "lib/src/tldevel.c",
    "lib/src/tlmisc.c",
    "lib/src/tlrng.c",
    "lib/src/esl_stopwatch.c",
    "lib/src/msa_alloc.c",
    "lib/src/msa_op.c",
    "lib/src/msa_io.c",
    "lib/src/msa_misc.c",
    "lib/src/msa_check.c",
    "lib/src/msa_cmp.c",
    "lib/src/msa_sort.c",
    "lib/src/alphabet.c",
    "lib/src/task.c",
    "lib/src/bisectingKmeans.c",
    "lib/src/sequence_distance.c",
    "lib/src/bpm.c",
    "lib/src/euclidean_dist.c",
    "lib/src/pick_anchor.c",
    "lib/src/aln_wrap.c",
    "lib/src/aln_apair_dist.c",
    "lib/src/aln_param.c",
    "lib/src/aln_run.c",
    "lib/src/aln_mem.c",
    "lib/src/aln_setup.c",
    "lib/src/aln_controller.c",
    "lib/src/aln_seqseq.c",
    "lib/src/aln_seqprofile.c",
    "lib/src/aln_profileprofile.c",
    "lib/src/aln_refine.c",
    "lib/src/sp_score.c",
    "lib/src/weave_alignment.c",
    "lib/src/poar.c",
    "lib/src/consensus_msa.c",
    "lib/src/anchor_consistency.c",
    "lib/src/ensemble.c",
};

const kalign_sources = [_][]const u8{
    "./src/run_kalign.c",
    "./src/parameters.c",
};