Large improvements in yosys-config
authorClifford Wolf <clifford@clifford.at>
Tue, 19 Nov 2013 21:48:48 +0000 (22:48 +0100)
committerClifford Wolf <clifford@clifford.at>
Tue, 19 Nov 2013 22:04:27 +0000 (23:04 +0100)
Makefile
manual/FILES_Prog/Makefile
yosys-config.in

index 6160e4c66dc1786f561167822dafeb990a1e2f91..37e507fedbb509d395d1c3e3d958bc0d60a80e2e 100644 (file)
--- 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
index 1afde80fd34f48228b405904ddc83b821c98e789..8e326bdc266536534292a525567fe6feff28eb39 100644 (file)
@@ -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
index d67d881c3b0ca3a19b1e5e25334eb221b75fc05e..8f8dd06c6b46c7f2791dc5b557f57af1860068b9 100644 (file)
@@ -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
+