# If we're targeting an x86 CPU we want to enable DP_SSE (CFLAGS_SSE and SSE2)
ifeq ($(DP_MAKE_TARGET), mingw)
DP_SSE:=1
+else ifeq ($(OS),Windows_NT)
+ ifeq ($(PROCESSOR_ARCHITECTURE),AMD64)
+ DP_SSE:=1
+ else ifeq ($(PROCESSOR_ARCHITEW6432),AMD64)
+ DP_SSE:=1
+ else ifeq ($(PROCESSOR_ARCHITECTURE),x86)
+ DP_SSE:=1
+ else
+ DP_SSE:=0
+ endif
else
DP_MACHINE:=$(shell uname -m)
ifeq ($(DP_MACHINE),x86_64)
DP_SSE:=1
- else
- ifeq ($(DP_MACHINE),i686)
+ else ifeq ($(DP_MACHINE),i686)
DP_SSE:=1
- else
- ifeq ($(DP_MACHINE),i386)
+ else ifeq ($(DP_MACHINE),i386)
DP_SSE:=1
else
DP_SSE:=0
- endif # ifeq ($(DP_MACHINE),i386)
- endif # ifeq ($(DP_MACHINE),i686)
- endif # ifeq ($(DP_MACHINE),x86_64)
+ endif
endif
# Makefile name
# 686 (Pentium Pro/II) optimizations
#CPUOPTIMIZATIONS?=-march=i686
# No specific CPU (386 compatible)
-#CPUOPTIMIZATIONS?=
-# Experimental
-#CPUOPTIMIZATIONS?=-fno-math-errno -fno-rounding-math -fno-signaling-nans -fassociative-math -freciprocal-math -fno-signed-zeros -fno-trapping-math
-# Normal
-CPUOPTIMIZATIONS?=-mno-avx
+CPUOPTIMIZATIONS?=
+# x86
+ifeq ($(DP_SSE),1)
+ CPUOPTIMIZATIONS+=-mno-avx
+endif
+# bones_was_here: added -mno-avx because when compiling for (at least) haswell or skylake with gcc or clang, with both -O2 and -O3, AVX auto-vectorisation causes subtle bugs in Xonotic QC physics, and changes the hash generated by the CI pipeline. AVX2 seems to be OK.
+# Also moved -fno-math-errno -fno-trapping-math (etc) to OPTIM_RELEASE as they're not CPU-specific.
# NOTE: *never* *ever* use the -ffast-math or -funsafe-math-optimizations flag
# Also, since gcc 5, -ffinite-math-only makes NaN and zero compare equal inside engine code but not inside QC, which causes error spam for seemingly valid QC code like if (x != 0) return 1 / x;
-# bones_was_here: added -mno-avx because when compiling for (at least) haswell or skylake with gcc or clang, with both -O2 and -O3, AVX auto-vectorisation causes subtle bugs in Xonotic QC physics, and changes the hash generated by the CI pipeline. AVX2 seems to be OK. Also moved -fno-math-errno -fno-trapping-math to OPTIM_RELEASE as they're not CPU-specific.
SDL_CONFIG?=sdl2-config
SDLCONFIG_UNIXCFLAGS?=`$(SDL_CONFIG) --cflags`