summaryrefslogtreecommitdiff
path: root/yosys-config.in
blob: 8f8dd06c6b46c7f2791dc5b557f57af1860068b9 (plain)
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
#!/bin/bash

help() {
	{
		echo ""
		echo "Usage: $0 [-exec] [--prefix pf] args.."
		echo ""
		echo "Replecement args:"
		echo "    --cxx         @CXX@"
		echo "    --cxxflags    $( echo '@CXXFLAGS@' | fmt -w60 | sed ':a;N;$!ba;s/\n/ \\\n                      /g' )"
		echo "    --ldflags     @LDFLAGS@"
		echo "    --ldlibs      @LDLIBS@"
		echo "    --bindir      @BINDIR@"
		echo "    --datdir      @DATDIR@"
		echo ""
		echo "All other args are passed trhough as they are."
		echo ""
		echo "Use -exec to call a command instead of generating output. Example usage:"
		echo ""
		echo "  yosys-config --exec --cxx --cxxflags --ldflags -o plugin.so -shared plugin.cc --ldlibs"
		echo ""
		echo "Use --prefix to change the prefix for the special args from '--' to"
		echo "something else. Example:"
		echo ""
		echo "  yosys-config --prefix @ bindir: @bindir"
		echo ""
		echo "The args --bindir and --datdir can be directly followed by a slash and"
		echo "additional text. Example:"
		echo ""
		echo "  yosys-config --datdir/simlib.v"
		echo ""
	} >&2
	exit 1
}

if [ $# -eq 0 ]; then
	help
fi

prefix="--"
get_prefix=false
exec_mode=false
declare -a tokens=()

for opt; do
	if $get_prefix; then
		prefix="$opt"
		get_prefix=false
		continue
	fi
	case "$opt" in
		"$prefix"cxx)
			tokens=( "${tokens[@]}"  @CXX@       ) ;;
		"$prefix"cxxflags)
			tokens=( "${tokens[@]}"  @CXXFLAGS@  ) ;;
		"$prefix"ldflags)
			tokens=( "${tokens[@]}"  @LDFLAGS@   ) ;;
		"$prefix"ldlibs)
			tokens=( "${tokens[@]}"  @LDLIBS@    ) ;;
		"$prefix"bindir)
			tokens=( "${tokens[@]}" '@BINDIR@'   ) ;;
		"$prefix"datdir)
			tokens=( "${tokens[@]}" '@DATDIR@'   ) ;;
		"$prefix"bindir/*)
			tokens=( "${tokens[@]}" '@BINDIR@'"${opt#${prefix}bindir}" ) ;;
		"$prefix"datdir/*)
			tokens=( "${tokens[@]}" '@DATDIR@'"${opt#${prefix}datdir}" ) ;;
		--help|-\?|-h)
			if [ ${#tokens[@]} -eq 0 ]; then
				help
			else
				tokens=( "${tokens[@]}" "$opt" )
			fi ;;
		--exec)
			if [ ${#tokens[@]} -eq 0 ]; then
				exec_mode=true
			else
				tokens=( "${tokens[@]}" "$opt" )
			fi ;;
		--prefix)
			if [ ${#tokens[@]} -eq 0 ]; then
				get_prefix=true
			else
				tokens=( "${tokens[@]}" "$opt" )
			fi ;;
		*)
			tokens=( "${tokens[@]}" "$opt" )
	esac
done

if $exec_mode; then
	exec "${tokens[@]}"
fi

echo "${tokens[@]}"
exit 0