mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 03:32:29 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			112 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| 
 | |
| help() {
 | |
| 	{
 | |
| 		echo ""
 | |
| 		echo "Usage: $0 [--exec] [--prefix pf] args.."
 | |
| 		echo "       $0 --build modname.so cppsources.."
 | |
| 		echo ""
 | |
| 		echo "Replacement args:"
 | |
| 		echo "    --cxx         @CXX@"
 | |
| 		echo "    --cxxflags    $( echo '@CXXFLAGS@' | fmt -w60 | sed ':a;N;$!ba;s/\n/ \\\n                      /g' )"
 | |
| 		echo "    --linkflags   @LINKFLAGS@"
 | |
| 		echo "    --ldflags     (alias of --linkflags)"
 | |
| 		echo "    --libs        @LIBS@"
 | |
| 		echo "    --ldlibs      (alias of --libs)"
 | |
| 		echo "    --bindir      @BINDIR@"
 | |
| 		echo "    --datdir      @DATDIR@"
 | |
| 		echo ""
 | |
| 		echo "All other args are passed through as they are."
 | |
| 		echo ""
 | |
| 		echo "Use --exec to call a command instead of generating output. Example usage:"
 | |
| 		echo ""
 | |
| 		echo "  $0 --exec --cxx --cxxflags --ldflags -o plugin.so -shared plugin.cc --libs"
 | |
| 		echo ""
 | |
| 		echo "The above command can be abbreviated as:"
 | |
| 		echo ""
 | |
| 		echo "  $0 --build plugin.so plugin.cc"
 | |
| 		echo ""
 | |
| 		echo "Use --prefix to change the prefix for the special args from '--' to"
 | |
| 		echo "something else. Example:"
 | |
| 		echo ""
 | |
| 		echo "  $0 --prefix @ bindir: @bindir"
 | |
| 		echo ""
 | |
| 		echo "The args --bindir and --datdir can be directly followed by a slash and"
 | |
| 		echo "additional text. Example:"
 | |
| 		echo ""
 | |
| 		echo "  $0 --datdir/simlib.v"
 | |
| 		echo ""
 | |
| 	} >&$(( $1 + 1))
 | |
| 	exit $1
 | |
| }
 | |
| 
 | |
| if [ $# -eq 0 ]; then
 | |
| 	help 1
 | |
| fi
 | |
| 
 | |
| if [ "$1" = "--build" ]; then
 | |
| 	modname="$2"; shift 2
 | |
| 	set -- --exec --cxx --cxxflags --ldflags -o "$modname" -shared "$@" --libs
 | |
| 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"linkflags)
 | |
| 			tokens=( "${tokens[@]}"  @LINKFLAGS@   ) ;;
 | |
| 		"$prefix"libs)
 | |
| 			tokens=( "${tokens[@]}"  @LIBS@    ) ;;
 | |
| 		"$prefix"ldflags)
 | |
| 			tokens=( "${tokens[@]}"  @LINKFLAGS@   ) ;;
 | |
| 		"$prefix"ldlibs)
 | |
| 			tokens=( "${tokens[@]}"  @LIBS@    ) ;;
 | |
| 		"$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 0
 | |
| 			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
 |