mirror of
https://github.com/notwa/rc
synced 2024-06-01 15:33:07 -07:00
Merge branch 'master' of github.com:notwa/rc
This commit is contained in:
commit
acd3efc347
46
sh/compile
46
sh/compile
|
@ -25,27 +25,35 @@ deb $site/$name/ llvm-toolchain-$name-$version main\n\
|
|||
|
||||
compile() {
|
||||
local gcc="$(whence -p gcc 2>/dev/null)"
|
||||
local gxx="$(whence -p g++ 2>/dev/null)"
|
||||
local clang="$(whence -p clang 2>/dev/null)"
|
||||
local clangxx="$(whence -p clang++ 2>/dev/null)"
|
||||
|
||||
local cl
|
||||
local vc
|
||||
if [ -n "$MSYSTEM" ]; then
|
||||
if [ -z "$clang" ]; then
|
||||
# maybe we have clang-msvc installed
|
||||
local dir
|
||||
printf "%s\n" "/c/Program Files/LLVM"*(On/N[1]) | read -r dir
|
||||
if [ -d "$dir" ] && [ -e "$dir/bin/clang" ]; then
|
||||
clang="$dir/bin/clang"
|
||||
export PATH="$PATH:$dir/bin/"
|
||||
fi
|
||||
fi
|
||||
|
||||
local clarch
|
||||
[ "$MSYSTEM" = MINGW64 ] && clarch="/amd64" || clarch=""
|
||||
local arch
|
||||
[ "$MSYSTEM" = MINGW64 ] && arch="x64" || arch="x86"
|
||||
printf "%s\n" "/c/Program Files (x86)/Microsoft Visual Studio "*(On[1]) | read vc
|
||||
printf "%s\n" "/c/Program Files (x86)/Microsoft Visual Studio "*(On/N[1]) | read vc
|
||||
vc="$vc/VC"
|
||||
if [ -d "$vc/bin$clarch" ] && [ -e "${vc}/bin$clarch/$cl" ]; then
|
||||
cl="${vc}/bin$clarch/cl"
|
||||
vc="$vc"
|
||||
|
||||
local winkit
|
||||
printf "%s\n" "/c/Program Files (x86)/Windows Kits/"*(on/[1]) | read winkit
|
||||
printf "%s\n" "/c/Program Files (x86)/Windows Kits/"*(on/N[1]) | read -r winkit
|
||||
[ -n "$winkit" ] || { echo "failed glob; missing winkit" >&2; return 1 }
|
||||
printf "%s\n" "$winkit/Lib/"*(On/[1]) | read winkit
|
||||
printf "%s\n" "$winkit/Lib/"*(On/N[1]) | read -r winkit
|
||||
[ -n "$winkit" ] || { echo "failed glob; missing winkit" >&2; return 1 }
|
||||
|
||||
export PATH="$PATH:$vc/bin$clarch"
|
||||
|
@ -75,14 +83,13 @@ compile() {
|
|||
if [ $once -eq 1 ]; then echo -n "|" >&2; fi; once=1
|
||||
echo -n "msvc" >&2
|
||||
fi
|
||||
echo "] {debug|release} [flags...] {source file}" >&2
|
||||
echo "] {debug|derelease|release|hardened} [flags...] {source file}" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
local sepples=0
|
||||
# TODO: autodetect here
|
||||
local CC=gcc
|
||||
local CXX=g++
|
||||
[ -n "$clang" ] && local CC=clang || local CC=gcc
|
||||
[ -n "$clang" ] && local CXX=clang++ || local CXX=g++
|
||||
local our_flags=(-I.)
|
||||
|
||||
local file=${@[-1]}
|
||||
|
@ -193,11 +200,14 @@ compile() {
|
|||
warnings+=(-wd4711 -wd4505 -wd4514 -wd4625 -wd4626)
|
||||
fi
|
||||
else
|
||||
if [ $clang_msvc -eq 1 ]; then
|
||||
if [ $CC = clang ]; then
|
||||
if [ $flag = "-findirect-inlining" ] \
|
||||
|| [ $flag = "-finline-small-functions" ] \
|
||||
|| [ $flag = "-finline-small-functions" ] \
|
||||
|| [ $flag = "-Wl,--gc-sections" ] \
|
||||
|| [ $flag = "-finline-small-functions" ]; then
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
if [ $clang_msvc -eq 1 ]; then
|
||||
if [ $flag = "-Wl,--gc-sections" ] \
|
||||
|| [ $flag = "-s" ]; then
|
||||
continue
|
||||
fi
|
||||
|
@ -206,13 +216,9 @@ compile() {
|
|||
fi
|
||||
done
|
||||
|
||||
if [ $CC = cl ]; then
|
||||
echo $compiler $std ${final_flags[@]} $file ${libraries[@]} -Fe: $out >&2
|
||||
$compiler $std ${final_flags[@]} $file ${libraries[@]} ${warnings[@]} -Fe: $out >&2
|
||||
else
|
||||
echo $compiler $std ${final_flags[@]} $file ${libraries[@]} -o $out >&2
|
||||
$compiler $std ${final_flags[@]} $file ${libraries[@]} ${warnings[@]} -o $out >&2
|
||||
fi
|
||||
[ $CC = cl ] && local outflag=-Fe: || local outflag=-o
|
||||
echo $compiler $std ${final_flags[@]} $file ${libraries[@]} $outflag $out >&2
|
||||
$compiler $std ${final_flags[@]} $file ${libraries[@]} ${warnings[@]} $outflag $out >&2
|
||||
}
|
||||
|
||||
compile "$@"
|
||||
|
|
Loading…
Reference in New Issue
Block a user