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