diff --git a/makefile b/makefile index bf197a8..3435b05 100644 --- a/makefile +++ b/makefile @@ -1,4 +1,4 @@ -# powturbo (c) Copyright 2015-2019 +# powturbo (c) Copyright 2015-2020 # Linux: "export CC=clang" "export CXX=clang". windows mingw: "set CC=gcc" "set CXX=g++" or uncomment the CC,CXX lines CC ?= gcc CXX ?= g++ @@ -11,62 +11,58 @@ CXX ?= g++ #CC=powerpc64le-linux-gnu-gcc #CXX=powerpc64le-linux-gnu-g++ -DDEBUG=-DNDEBUG -s -#DDEBUG=-g - +DEBUG=-DNDEBUG -s +#DEBUG=-g +CFLAGS=$(DEBUG) +#------- OS/ARCH ------------------- ifneq (,$(filter Windows%,$(OS))) OS := Windows -CFLAGS+=-D__int64_t=int64_t + CC=gcc + CXX=g++ + ARCH=x86_64 +# CFLAGS+=-D__int64_t=int64_t else OS := $(shell uname -s) ARCH := $(shell uname -m) -ifneq (,$(findstring powerpc64le,$(CC))) - ARCH = ppc64le -endif + ifneq (,$(findstring aarch64,$(CC))) ARCH = aarch64 +else ifneq (,$(findstring powerpc64le,$(CC))) + ARCH = ppc64le endif endif -#------ ARMv8 -ifeq ($(ARCH),aarch64) +ifeq ($(ARCH),ppc64le) + CFLAGS=-mcpu=power9 -mtune=power9 + MSSE=-D__SSSE3__ +else ifeq ($(ARCH),aarch64) + CFLAGS+=-march=armv8-a ifneq (,$(findstring clang, $(CC))) -MSSE=-O3 -march=armv8-a -mcpu=cortex-a72 -falign-loops -fomit-frame-pointer + CFLAGS+=-march=armv8-a -falign-loops -fomit-frame-pointer else -MSSE=-O3 -march=armv8-a -mcpu=cortex-a72 -falign-loops -falign-labels -falign-functions -falign-jumps -fomit-frame-pointer + CFLAGS+=-march=armv8-a endif - -else -# ----- Power9 -ifeq ($(ARCH),ppc64le) -MSSE=-D__SSE__ -D__SSE2__ -D__SSE3__ -D__SSSE3__ -MARCH=-march=power9 -mtune=power9 -CFLAGS+=-DNO_WARN_X86_INTRINSICS -CXXFLAGS+=-DNO_WARN_X86_INTRINSICS -#------ x86_64 : minimum SSE = Sandy Bridge, AVX2 = haswell -else -MSSE=-march=corei7-avx -mtune=corei7-avx -# -mno-avx -mno-aes (add for Pentium based Sandy bridge) -CFLAGS+=-mssse3 -MAVX2=-march=haswell + MSSE=-march=armv8-a +else ifeq ($(ARCH),$(filter $(ARCH),x86_64 ppc64le)) + CFLAGS=-march=native + MSSE=-mssse3 endif + +ifeq (,$(findstring clang, $(CC))) +DEFS+=-falign-loops endif +#$(info ARCH="$(ARCH)") -ifeq ($(OS),$(filter $(OS),Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD DragonFly NetBSD MSYS_NT Haiku)) -LDFLAGS+=-lpthread -lm -ifneq ($(OS),Darwin) +ifeq ($(OS),$(filter $(OS),Linux GNU/kFreeBSD GNU OpenBSD FreeBSD DragonFly NetBSD MSYS_NT Haiku)) LDFLAGS+=-lrt endif +ifeq ($(STATIC),1) +LDFLAGS+=-static endif -# Minimum CPU architecture -#MARCH=-march=native -MARCH=$(MSSE) ifeq ($(AVX2),1) MARCH+=-mbmi2 -mavx2 -#CFLAGS+=-DUSE_AVX2 -#CXXFLAGS+=-DUSE_AVX2 else AVX2=0 endif