mupen64plus-rsp-cxd4/make.sh
Iconoclast b2fd3d356a Compile with -Wstrict-overflow=1, not =5.
When disabling ARCH_MIN_SSE2, the ANSI code path triggers several untraceable warnings that are nonsense (like integer union members giving warnings about pointer overflow).  GCC purportedly has raised false positives with the overflow detection setting this high.  Since it cannot give reliable reports in the ANSI code path for this RSP plugin (which does very little with what are actually pointers anyway in the vector unit), the level has been lowered down to 1.
2018-03-18 17:57:26 -04:00

72 lines
2.2 KiB
Bash
Executable file

mkdir -p obj
mkdir -p obj/vu
src="." # or an absolute path, like "/home/user/rsp"
obj="$src/obj"
OBJ_LIST="\
$obj/module.o \
$obj/su.o \
$obj/vu/vu.o \
$obj/vu/multiply.o \
$obj/vu/add.o \
$obj/vu/select.o \
$obj/vu/logical.o \
$obj/vu/divide.o"
FLAGS_ANSI="-fPIC -DPLUGIN_API_VERSION=0x0101 -mstackrealign -Wall -pedantic"
if [ `uname -m` == 'x86_64' ]; then
FLAGS_x86="\
-masm=intel \
-fPIC \
-DPLUGIN_API_VERSION=0x0101 \
-DARCH_MIN_SSE2 \
-march=native \
-mstackrealign \
-Wall \
-pedantic \
-Wall -Wshadow -Wredundant-decls -Wextra -Wcast-align -Wcast-qual \
-Wdisabled-optimization -Wformat=2 -Winit-self -Wlogical-op
-Wmissing-include-dirs -Wstrict-overflow=1 -Wundef -Wno-unused \
-Wno-variadic-macros -Wno-parentheses -fdiagnostics-show-option"
else
FLAGS_x86="\
-masm=intel \
-DPLUGIN_API_VERSION=0x0101 \
-DARCH_MIN_SSE2 \
-march=native \
-mstackrealign \
-Wall \
-pedantic \
-Wall -Wshadow -Wredundant-decls -Wextra -Wcast-align -Wcast-qual \
-Wdisabled-optimization -Wformat=2 -Winit-self -Wlogical-op
-Wmissing-include-dirs -Wstrict-overflow=1 -Wundef -Wno-unused \
-Wno-variadic-macros -Wno-parentheses -fdiagnostics-show-option"
fi
C_FLAGS=$FLAGS_x86 # default since Intel SIMD was the most tested
echo Compiling C source code...
cc -S -Os $C_FLAGS -o $obj/module.s $src/module.c
cc -S -O3 $C_FLAGS -o $obj/su.s $src/su.c
cc -S -O3 $C_FLAGS -o $obj/vu/vu.s $src/vu/vu.c
cc -S -O3 $C_FLAGS -o $obj/vu/multiply.s $src/vu/multiply.c
cc -S -O3 $C_FLAGS -o $obj/vu/add.s $src/vu/add.c
cc -S -O3 $C_FLAGS -o $obj/vu/select.s $src/vu/select.c
cc -S -O3 $C_FLAGS -o $obj/vu/logical.s $src/vu/logical.c
cc -S -O2 $C_FLAGS -o $obj/vu/divide.s $src/vu/divide.c
echo Assembling compiled sources...
as -o $obj/module.o $obj/module.s
as -o $obj/su.o $obj/su.s
as -o $obj/vu/vu.o $obj/vu/vu.s
as -o $obj/vu/multiply.o $obj/vu/multiply.s
as -o $obj/vu/add.o $obj/vu/add.s
as -o $obj/vu/select.o $obj/vu/select.s
as -o $obj/vu/logical.o $obj/vu/logical.s
as -o $obj/vu/divide.o $obj/vu/divide.s
echo Linking assembled object files...
ld --shared -o $obj/rspdebug.so -lc $OBJ_LIST
strip -o $obj/rsp.so $obj/rspdebug.so --strip-all