summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile3
-rw-r--r--manual/FILES_Prog/Makefile3
-rw-r--r--yosys-config.in95
3 files changed, 84 insertions, 17 deletions
diff --git a/Makefile b/Makefile
index 6160e4c6..37e507fe 100644
--- a/Makefile
+++ b/Makefile
@@ -90,7 +90,8 @@ kernel/version_$(GIT_REV).cc: Makefile
echo "extern const char *yosys_version_str; const char *yosys_version_str=\"Yosys $(YOSYS_VER) (git sha1 $(GIT_REV))\";" > kernel/version_$(GIT_REV).cc
yosys-config: yosys-config.in
- sed 's,@CXX@,$(CXX),; s,@CXXFLAGS@,$(CXXFLAGS),; s,@LDFLAGS@,$(LDFLAGS),; s,@LDLIBS@,$(LDLIBS),;' < yosys-config.in > yosys-config
+ sed -e 's,@CXX@,$(CXX),;' -e 's,@CXXFLAGS@,$(CXXFLAGS),;' -e 's,@LDFLAGS@,$(LDFLAGS),;' -e 's,@LDLIBS@,$(LDLIBS),;' \
+ -e 's,@BINDIR@,$(DESTDIR)/bin,;' -e 's,@DATDIR@,$(DESTDIR)/share/yosys,;' < yosys-config.in > yosys-config
chmod +x yosys-config
yosys-svgviewer: libs/svgviewer/*.h libs/svgviewer/*.cpp
diff --git a/manual/FILES_Prog/Makefile b/manual/FILES_Prog/Makefile
index 1afde80f..8e326bdc 100644
--- a/manual/FILES_Prog/Makefile
+++ b/manual/FILES_Prog/Makefile
@@ -5,8 +5,7 @@ test: stubnets.so
tail test1.log test2.log test3.log
stubnets.so: stubnets.cc
- $(shell yosys-config --cxx --cxxflags --ldflags -o stubnets.so \
- -shared stubnets.cc --ldlibs )
+ yosys-config --exec --cxx --cxxflags --ldflags -o $@ -shared $^ --ldlibs
clean:
rm -f test1.log test2.log test3.log
diff --git a/yosys-config.in b/yosys-config.in
index d67d881c..8f8dd06c 100644
--- a/yosys-config.in
+++ b/yosys-config.in
@@ -1,7 +1,35 @@
-#!/bin/sh
+#!/bin/bash
help() {
- { echo; echo "Usage: $0 { --cxx | --cxxflags | --ldflags | --ldlibs }"; } >&2
+ {
+ 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
}
@@ -9,22 +37,61 @@ 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
- --cxx)
- echo -n '@CXX@ ' ;;
- --cxxflags)
- echo -n '@CXXFLAGS@ ' ;;
- --ldflags)
- echo -n '@LDFLAGS@ ' ;;
- --ldlibs)
- echo -n '@LDLIBS@ ' ;;
- --help|-\?)
- help ;;
+ "$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 ;;
*)
- echo -n "$opt "
+ tokens=( "${tokens[@]}" "$opt" )
esac
done
-echo
+if $exec_mode; then
+ exec "${tokens[@]}"
+fi
+
+echo "${tokens[@]}"
exit 0
+