forked from xt-sys/xtchain
		
	Import scripts and wrappers.
This commit is contained in:
		
							
								
								
									
										42
									
								
								scripts/clang-target-wrapper
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										42
									
								
								scripts/clang-target-wrapper
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,42 @@ | ||||
| #!/bin/sh | ||||
| # PROJECT:     XTchain | ||||
| # LICENSE:     See the COPYING.md in the top level directory | ||||
| # FILE:        scripts/clang-target-wrapper | ||||
| # DESCRIPTION: CLANG Wrapper | ||||
| # DEVELOPERS:  Martin Storsjo <martin@martin.st> | ||||
| #              Rafal Kupiec <belliash@codingworkshop.eu.org> | ||||
|  | ||||
|  | ||||
| # Set basic variables | ||||
| DIR="$(cd $(dirname $0) && pwd)" | ||||
| CLANG="$DIR/clang" | ||||
| BASENAME="$(basename $0)" | ||||
| TARGET="${BASENAME%-*}" | ||||
| EXECUTABLE="${BASENAME##*-}" | ||||
| DEFAULT_TARGET="x86_64-w64-mingw32" | ||||
| ARCH="${TARGET%%-*}" | ||||
|  | ||||
| # Set proper target | ||||
| if [ "${TARGET}" = "${BASENAME}" ]; then | ||||
|     TARGET="${DEFAULT_TARGET}" | ||||
| fi | ||||
|  | ||||
| # Set lang-specific flags | ||||
| case ${EXECUTABLE} in | ||||
|     "clang++"|"g++"|"c++") | ||||
|         FLAGS="$FLAGS --driver-mode=g++" | ||||
|         ;; | ||||
|     *) | ||||
|         FLAGS="" | ||||
|         ;; | ||||
| esac | ||||
|  | ||||
| # Set compiler flags | ||||
| FLAGS="${FLAGS} -target ${TARGET}" | ||||
| FLAGS="${FLAGS} -rtlib=compiler-rt" | ||||
| FLAGS="${FLAGS} -stdlib=libc++" | ||||
| FLAGS="${FLAGS} -fuse-ld=lld" | ||||
| FLAGS="${FLAGS} -Qunused-arguments" | ||||
|  | ||||
| # Launch the compiler | ||||
| $CLANG $FLAGS "$@" | ||||
							
								
								
									
										42
									
								
								scripts/dlltool-wrapper
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										42
									
								
								scripts/dlltool-wrapper
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,42 @@ | ||||
| #!/bin/sh | ||||
| # PROJECT:     XTchain | ||||
| # LICENSE:     See the COPYING.md in the top level directory | ||||
| # FILE:        scripts/dlltool-wrapper | ||||
| # DESCRIPTION: DLLTOOL Wrapper | ||||
| # DEVELOPERS:  Martin Storsjo <martin@martin.st> | ||||
| #              Rafal Kupiec <belliash@codingworkshop.eu.org> | ||||
|  | ||||
|  | ||||
| # Set basic variables | ||||
| DIR="$(cd $(dirname $0) && pwd)" | ||||
| BASENAME="$(basename $0)" | ||||
| TARGET="${BASENAME%-*}" | ||||
| DEFAULT_TARGET="x86_64-w64-mingw32" | ||||
|  | ||||
| # Update PATH | ||||
| export PATH="$DIR":"$PATH" | ||||
|  | ||||
| # Set proper target | ||||
| if [ "${TARGET}" = "${BASENAME}" ]; then | ||||
|     TARGET="${DEFAULT_TARGET}" | ||||
| fi | ||||
|  | ||||
| # Set target machine | ||||
| ARCH="${TARGET%%-*}" | ||||
| case $ARCH in | ||||
|     aarch64) | ||||
|         M="arm64" | ||||
|         ;; | ||||
|     armv7) | ||||
|         M="arm" | ||||
|         ;; | ||||
|     i686) | ||||
|         M="i386" | ||||
|         ;; | ||||
|     x86_64) | ||||
|         M="i386:x86-64" | ||||
|         ;; | ||||
| esac | ||||
|  | ||||
| # Launch the utility | ||||
| llvm-dlltool -m ${M} "$@" | ||||
							
								
								
									
										42
									
								
								scripts/ld-wrapper
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										42
									
								
								scripts/ld-wrapper
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,42 @@ | ||||
| #!/bin/sh | ||||
| # PROJECT:     XTchain | ||||
| # LICENSE:     See the COPYING.md in the top level directory | ||||
| # FILE:        scripts/ld-wrapper | ||||
| # DESCRIPTION: LLD Wrapper | ||||
| # DEVELOPERS:  Martin Storsjo <martin@martin.st> | ||||
| #              Rafal Kupiec <belliash@codingworkshop.eu.org> | ||||
|  | ||||
|  | ||||
| # Set basic variables | ||||
| DIR="$(cd $(dirname $0) && pwd)" | ||||
| BASENAME="$(basename $0)" | ||||
| TARGET="${BASENAME%-*}" | ||||
| DEFAULT_TARGET="x86_64-w64-mingw32" | ||||
|  | ||||
| # Update PATH | ||||
| export PATH="${DIR}":"${PATH}" | ||||
|  | ||||
| # Set proper target | ||||
| if [ "${TARGET}" = "${BASENAME}" ]; then | ||||
|     TARGET="${DEFAULT_TARGET}" | ||||
| fi | ||||
|  | ||||
| # Set target machine | ||||
| ARCH="${TARGET%%-*}" | ||||
| case ${ARCH} in | ||||
|     aarch64) | ||||
|         M="arm64pe" | ||||
|         ;; | ||||
|     armv7) | ||||
|         M="thumb2pe" | ||||
|         ;; | ||||
|     i686) | ||||
|         M="i386pe" | ||||
|         ;; | ||||
|     x86_64) | ||||
|         M="i386pep" | ||||
|         ;; | ||||
| esac | ||||
|  | ||||
| # Launch the linker | ||||
| ld.lld -m ${M} "$@" | ||||
							
								
								
									
										46
									
								
								scripts/objdump-wrapper
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										46
									
								
								scripts/objdump-wrapper
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,46 @@ | ||||
| #!/bin/sh | ||||
| # PROJECT:     XTchain | ||||
| # LICENSE:     See the COPYING.md in the top level directory | ||||
| # FILE:        scripts/objdump-wrapper | ||||
| # DESCRIPTION: OBJDUMP Wrapper | ||||
| # DEVELOPERS:  Martin Storsjo <martin@martin.st> | ||||
| #              Rafal Kupiec <belliash@codingworkshop.eu.org> | ||||
|  | ||||
|  | ||||
| # Set basic variables | ||||
| DIR="$(cd $(dirname $0) && pwd)" | ||||
|  | ||||
| # Update PATH | ||||
| export PATH="$DIR":"$PATH" | ||||
|  | ||||
| # Libtool can try to run objdump -f and wants to see certain strings in | ||||
| # the output, to accept it being a valid windows (import) library | ||||
| if [ "$1" = "-f" ]; then | ||||
|     llvm-readobj $2 | while read -r line; do | ||||
|         case $line in | ||||
|         File:*) | ||||
|             file=$(echo $line | awk '{print $2}') | ||||
|             ;; | ||||
|         Format:*) | ||||
|             format=$(echo $line | awk '{print $2}') | ||||
|             case $format in | ||||
|             COFF-i386) | ||||
|                 format=pe-i386 | ||||
|                 ;; | ||||
|             COFF-x86-64) | ||||
|                 format=pe-x86-64 | ||||
|                 ;; | ||||
|             COFF-ARM*) | ||||
|                 # This is wrong; modern COFF armv7 isn't pe-arm-wince, and | ||||
|                 # arm64 definitely isn't, but libtool wants to see this | ||||
|                 # string (or some of the others) in order to accept it. | ||||
|                 format=pe-arm-wince | ||||
|                 ;; | ||||
|             esac | ||||
|             echo $file: file format $format | ||||
|             ;; | ||||
|         esac | ||||
|     done | ||||
| else | ||||
|     llvm-objdump "$@" | ||||
| fi | ||||
							
								
								
									
										50
									
								
								scripts/xtchain
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										50
									
								
								scripts/xtchain
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,50 @@ | ||||
| #!/usr/bin/env bash | ||||
| # PROJECT:     XTchain | ||||
| # LICENSE:     See the COPYING.md in the top level directory | ||||
| # FILE:        scripts/xtchain | ||||
| # DESCRIPTION: XTchain Entry Script | ||||
| # DEVELOPERS:  Rafal Kupiec <belliash@codingworkshop.eu.org> | ||||
|  | ||||
|  | ||||
| # Check if script launched as root | ||||
| if [ "$(whoami)" = "root" ]; then | ||||
|     echo "This script cannot be run as root!" | ||||
|     exit 1 | ||||
| fi | ||||
|  | ||||
| # Get the absolute path to the XTchain | ||||
| export XTCDIR="$(realpath $(dirname ${0}))" | ||||
|  | ||||
| # Read the XTchain version | ||||
| export XTCVER="$(cat ${XTCDIR}/Version)" | ||||
|  | ||||
| # Load the library | ||||
| source ${XTCDIR}/lib/xtchain/xtclib | ||||
|  | ||||
| # Set the target architecture | ||||
| : ${TARGET:=${1}} | ||||
| : ${TARGET:=amd64} | ||||
|  | ||||
| # Save the source directory | ||||
| export SRCDIR="${2:-${PWD}}" | ||||
|  | ||||
| # Make sure the compiler flags are clean | ||||
| export HOST= | ||||
| export CFLAGS= | ||||
| export CXXFLAGS= | ||||
| export LDFLAGS= | ||||
|  | ||||
| # Update PATH | ||||
| export PATH="${XTCDIR}/bin:${PATH}" | ||||
|  | ||||
| # Display banner | ||||
| version | ||||
|  | ||||
| # Invoke shell with fancy prompt | ||||
| export PFMAT1="\[\033[0;1;97;44m\]" | ||||
| export PFMAT2="\[\033[0;34;104m\]" | ||||
| export PFMAT3="\[\033[0;1;97;104m\]" | ||||
| export PFMAT4="\[\033[0;94;49m\]" | ||||
| export PFMAT5="\[\033[1;38;5;74m\]" | ||||
| export PROMPT="\n${PFMAT1} XT Toolchain ${PFMAT2}${PFMAT3} \w ${PFMAT4}${PFMAT5} " | ||||
| bash --rcfile <(echo 'source ~/.bashrc && export PS1="${PROMPT}" && cd ${SRCDIR}') | ||||
							
								
								
									
										55
									
								
								scripts/xtclib
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										55
									
								
								scripts/xtclib
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,55 @@ | ||||
| #!/usr/bin/env bash | ||||
| # PROJECT:     XTchain | ||||
| # LICENSE:     See the COPYING.md in the top level directory | ||||
| # FILE:        scripts/xtclib | ||||
| # DESCRIPTION: XTchain library | ||||
| # DEVELOPERS:  Rafal Kupiec <belliash@codingworkshop.eu.org> | ||||
|  | ||||
|  | ||||
| # Sets the target architecture | ||||
| charch() | ||||
| { | ||||
|     if [ "x${1}" == "x" ]; then | ||||
|         echo "Syntax: charch [architecture]" | ||||
|         return | ||||
|     fi | ||||
|     case ${1} in | ||||
|         "aarch64"|"arm64") | ||||
|             export TARGET="aarch64" | ||||
|             ;; | ||||
|         "arm"|"armv7") | ||||
|             export TARGET="armv7" | ||||
|             ;; | ||||
|         "i386"|"i486"|"i586"|"i686"|"x86") | ||||
|             export TARGET="i686" | ||||
|             ;; | ||||
|         "amd64"|"x64"|"x86_64") | ||||
|             export TARGET="amd64" | ||||
|             ;; | ||||
|         *) | ||||
|             export TARGET="UNKNOWN" | ||||
|     esac | ||||
|     echo "Target Architecture: ${TARGET}" | ||||
| } | ||||
| export -f charch | ||||
|  | ||||
| # Displays version banner | ||||
| version() | ||||
| { | ||||
|     echo "###############################################################################" | ||||
|     echo "#                        XT Toolchain v${XTCVER} for Linux                          #" | ||||
|     echo "#               by Rafal Kupiec <belliash@codingworkshop.eu.org>              #" | ||||
|     echo "###############################################################################" | ||||
|     echo | ||||
|     echo | ||||
|     echo "LLVM Compiler Version: $(${XTCDIR}/bin/clang --version | grep 'clang version' | cut -d' ' -f3)" | ||||
|     echo "LLVM Windres Utility Version: $(${XTCDIR}/generic-w64-mingw32/bin/windres-wrapper -V | cut -d' ' -f7)" | ||||
|     echo "Mingw IDL Compiler Version: $(${XTCDIR}/bin/i686-w64-mingw32-widl -V | grep 'version' | cut -d' ' -f5)" | ||||
|     echo "Wine Message Compiler Version: $(${XTCDIR}/bin/wmc -V | grep 'version' | cut -d' ' -f5)" | ||||
|     echo "Wine Resource Compiler Version: $(${XTCDIR}/bin/wrc --version | grep 'version' | cut -d' ' -f5)" | ||||
|     echo | ||||
|     charch ${TARGET} | ||||
|     echo | ||||
|     echo | ||||
| } | ||||
| export -f version | ||||
		Reference in New Issue
	
	Block a user