File: scan.py

package info (click to toggle)
idba 1.1.3-8
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 4,412 kB
  • sloc: cpp: 36,571; sh: 1,450; makefile: 203; python: 99; perl: 8
file content (130 lines) | stat: -rwxr-xr-x 4,144 bytes parent folder | download | duplicates (2)
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
121
122
123
124
125
126
127
128
129
130
#!/usr/bin/python3
##
# @file scan.py
# @brief Scan src directory recursively to build Makefile.am automatically.
# @author Yu Peng (ypeng@cs.hku.hk)
# @version 1.0.0
# @date 2011-08-02

import sys
import os
import re

params = {}
install = []
noninstall = []

def Usage():
    print("Usage: scan.py {bin, lib, test}\n")


def ParamsToString(params):
    return "".join(["%s = %s\n" % (k, v) for k, v in list(params.items())])

def Scan(paths, pattern):
    files = []
    for path in paths:
        for f in os.listdir(path):
            if re.search(pattern, f):
                files.append("$(top_srcdir)/" + path + "/" + f)
    return files

def ScanLibrary(name, paths, pattern):
    noninstall.append(name)
    files = Scan(paths, pattern)
    name = name.replace('.', '_');
    return " \\\n\t".join([name + "_SOURCES ="] + files)

def ScanBinary(paths, pattern):
    files = Scan(paths, pattern)
    sources = []
    for f in files:
        name = os.path.basename(f).rpartition('.')[0]
        name = name.replace('.', '_')
        name = name.replace('-', '_')
        noninstall.append(name)
        sources.append(name + "_SOURCES = " + f)
    return "\n".join(sources);

def SetInstall(name):
    noninstall.remove(name)
    install.append(name)

if __name__ == "__main__":
    if (len(sys.argv) < 2):
        Usage()
        exit(1)

    params["AM_CXXFLAGS"] = "-Wall -O3 -fopenmp -pthread"
    params["AM_LDFLAGS"] = "-fopenmp -pthread"
    params["INCLUDES"] = " " \
            + "-I$(top_srcdir)/src " \
            + "-I$(top_srcdir)/gtest_src "
    
    if (sys.argv[1] == "lib"):
        print(ParamsToString(params))
        #print "noinst_LIBRARIES = libcommon.a libassembly.a\n"

        #print ScanLibrary("libcommon.a", ["include/common", "src/common"], "\.cpp$|\.h$"), "\n"
        print(ScanLibrary("libassembly.a", 
                [#"src/common", "src/common", 
                    "src/basic", 
                    "src/container", 
                    "src/misc", 
                    "src/sequence", 
                    "src/graph", 
                    "src/assembly", ], 
                "\.cpp$|\.h$"), "\n")

        print("noinst_LIBRARIES = \\\n\t" + " \\\n\t".join(noninstall), "\n")

    elif (sys.argv[1] == "lib-test"):
        print(ParamsToString(params))
        #print "noinst_LIBRARIES = libcommon.a libassembly.a\n"

        #print ScanLibrary("libcommon.a", ["include/common", "src/common"], "\.cpp$|\.h$"), "\n"
        print(ScanLibrary("libassembly.a", 
                [#"src/common", "src/common", 
                    "src/basic", 
                    "src/container", 
                    "src/misc", 
                    "src/sequence", 
                    "src/graph", 
                    "src/assembly", ], 
                "\.cpp$|\.h$"), "\n")

        print(ScanLibrary("libgtest.a", 
                [ "gtest_src/gtest" ],
                "\.cpp$|\.h$|.cc$"), "\n")

        print("noinst_LIBRARIES = \\\n\t" + " \\\n\t".join(noninstall), "\n")

    elif (sys.argv[1] == "bin"):
        params["LIBS"] = "$(top_srcdir)/lib/libassembly.a @LIBS@";
        print(ParamsToString(params))
        print(ScanBinary(["src/tools"], "\.cpp$"), "\n")
        print(ScanBinary(["src/release"], "\.cpp$"), "\n")

        SetInstall("idba_hybrid")
        print("bin_PROGRAMS = \\\n\t" + " \\\n\t".join(install), "\n")
        print("noinst_PROGRAMS = \\\n\t" + " \\\n\t".join(noninstall), "\n")

    elif (sys.argv[1] == "release"):
        params["LIBS"] = "$(top_srcdir)/lib/libassembly.a @LIBS@";
        print(ParamsToString(params))
        print(ScanBinary(["src/release"], "\.cpp$"), "\n")

        SetInstall("idba_hybrid")
        print("bin_PROGRAMS = \\\n\t" + " \\\n\t".join(install), "\n")
        print("noinst_PROGRAMS = \\\n\t" + " \\\n\t".join(noninstall), "\n")

    elif (sys.argv[1] == "test"):
        params["LIBS"] = "$(top_srcdir)/lib/libassembly.a $(top_srcdir)/lib/libgtest.a @LIBS@";
        print(ParamsToString(params))
        print(ScanBinary(["src/test"], "\.cpp$"), "\n")

        print("noinst_PROGRAMS = \\\n\t" + " \\\n\t".join(noninstall), "\n")