Merge pull request #3310 from robinsonb5-PRs/master
[yosys.git] / misc / yosys-config.in
1 #!/bin/bash
2
3 help() {
4 {
5 echo ""
6 echo "Usage: $0 [--exec] [--prefix pf] args.."
7 echo " $0 --build modname.so cppsources.."
8 echo ""
9 echo "Replacement args:"
10 echo " --cxx @CXX@"
11 echo " --cxxflags $( echo '@CXXFLAGS@' | fmt -w60 | sed ':a;N;$!ba;s/\n/ \\\n /g' )"
12 echo " --ldflags @LDFLAGS@"
13 echo " --ldlibs @LDLIBS@"
14 echo " --bindir @BINDIR@"
15 echo " --datdir @DATDIR@"
16 echo ""
17 echo "All other args are passed through as they are."
18 echo ""
19 echo "Use --exec to call a command instead of generating output. Example usage:"
20 echo ""
21 echo " $0 --exec --cxx --cxxflags --ldflags -o plugin.so -shared plugin.cc --ldlibs"
22 echo ""
23 echo "The above command can be abbreviated as:"
24 echo ""
25 echo " $0 --build plugin.so plugin.cc"
26 echo ""
27 echo "Use --prefix to change the prefix for the special args from '--' to"
28 echo "something else. Example:"
29 echo ""
30 echo " $0 --prefix @ bindir: @bindir"
31 echo ""
32 echo "The args --bindir and --datdir can be directly followed by a slash and"
33 echo "additional text. Example:"
34 echo ""
35 echo " $0 --datdir/simlib.v"
36 echo ""
37 } >&2
38 exit 1
39 }
40
41 if [ $# -eq 0 ]; then
42 help
43 fi
44
45 if [ "$1" == "--build" ]; then
46 modname="$2"; shift 2
47 set -- --exec --cxx --cxxflags --ldflags -o "$modname" -shared "$@" --ldlibs
48 fi
49
50 prefix="--"
51 get_prefix=false
52 exec_mode=false
53 declare -a tokens=()
54
55 for opt; do
56 if $get_prefix; then
57 prefix="$opt"
58 get_prefix=false
59 continue
60 fi
61 case "$opt" in
62 "$prefix"cxx)
63 tokens=( "${tokens[@]}" @CXX@ ) ;;
64 "$prefix"cxxflags)
65 tokens=( "${tokens[@]}" @CXXFLAGS@ ) ;;
66 "$prefix"ldflags)
67 tokens=( "${tokens[@]}" @LDFLAGS@ ) ;;
68 "$prefix"ldlibs)
69 tokens=( "${tokens[@]}" @LDLIBS@ ) ;;
70 "$prefix"bindir)
71 tokens=( "${tokens[@]}" '@BINDIR@' ) ;;
72 "$prefix"datdir)
73 tokens=( "${tokens[@]}" '@DATDIR@' ) ;;
74 "$prefix"bindir/*)
75 tokens=( "${tokens[@]}" '@BINDIR@'"${opt#${prefix}bindir}" ) ;;
76 "$prefix"datdir/*)
77 tokens=( "${tokens[@]}" '@DATDIR@'"${opt#${prefix}datdir}" ) ;;
78 --help|-\?|-h)
79 if [ ${#tokens[@]} -eq 0 ]; then
80 help
81 else
82 tokens=( "${tokens[@]}" "$opt" )
83 fi ;;
84 --exec)
85 if [ ${#tokens[@]} -eq 0 ]; then
86 exec_mode=true
87 else
88 tokens=( "${tokens[@]}" "$opt" )
89 fi ;;
90 --prefix)
91 if [ ${#tokens[@]} -eq 0 ]; then
92 get_prefix=true
93 else
94 tokens=( "${tokens[@]}" "$opt" )
95 fi ;;
96 *)
97 tokens=( "${tokens[@]}" "$opt" )
98 esac
99 done
100
101 if $exec_mode; then
102 exec "${tokens[@]}"
103 fi
104
105 echo "${tokens[@]}"
106 exit 0
107