#!/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