Import framework to build base clang (version 3.8.0)
[dragonfly.git] / tools / tools / llvm_generator / scrape_library.awk
1 # must set SRCDIR externally
2
3 BEGIN {
4   scanning=0;
5   headers=0;
6   depends=0;
7   linklibs=0;
8   x86=0;
9   srcs=0;
10   print "# Automatically generated.  Do not edit!";
11   print
12 }
13
14 {
15   if (scanning) {
16      keep_going = (NF > 0);
17      if (!keep_going) {
18         linklibs = 0;
19      }
20      if (keep_going && ($1 == "#")) {
21         keep_going = 0;
22      }
23      if (keep_going && ($1 == ")")) {
24         keep_going = 0;
25         scanning = 0;
26      }
27      if (keep_going && ($1 == "ADDITIONAL_HEADER_DIRS")) {
28         keep_going = 0;
29         headers = 1;
30         print "";
31      }
32      if (keep_going && ($1 == "ADDITIONAL_HEADERS")) {
33         keep_going = 0;
34         headers = 1;
35         print "";
36      }
37      if (keep_going && ($1 == "DEPENDS")) {
38         keep_going = 0;
39         headers = 0;
40         depends = 1;
41      }
42      if (keep_going && ($1 == "LINK_LIBS")) {
43         keep_going = 0;
44         headers = 0;
45         linklibs = 1;
46      }
47      if (keep_going && headers) {
48         if (substr($1,2,24) == "{LLVM_MAIN_INCLUDE_DIR}/") {
49            srcdir=substr($1,26)
50            print "HDRDIR=\t" srcdir
51         }
52         keep_going = 0;
53      }
54      if (keep_going && depends) {
55         keep_going = 0;
56      }
57      if (keep_going && linklibs) {
58         keep_going = 0;
59      }
60      if (keep_going) {
61         if (srcs) {
62            print "\t" $1 " \\";
63         } else {
64            srcs=1;
65            print "SRCS=\t" $1 " \\";
66         }
67      }
68   } else if (substr($1,1,18) ==  "add_clang_library(") {
69        scanning=1;
70        libname=substr($1,19)
71        print "LIB=\t" libname "\n"
72   } else if (substr($1,1,17) ==  "add_llvm_library(") {
73        scanning=1;
74        libname=substr($1,18)
75        print "LIB=\t" libname "\n"
76   } else if (substr($1,1,16) ==  "add_llvm_target(") {
77        libname=substr($1,17)
78        if (x86 == 1) {
79           # X86 code generator
80           print "\nLIB=\tLLVM" libname
81        } else {
82           # AArch64, ARM, AMDGPU, Mips, PowerPC code generators
83           scanning=1;
84           print "LIB=\tLLVM" libname "\n"
85        }
86   } else if (substr($1,1,11) ==  "set(sources") {
87        scanning=1
88        x86=1;
89   }
90 }
91
92 END {
93   print "\nSRCDIR= " SRCDIR
94 }