X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2FMakefile;h=c9da6d9b8ca9a5fe434d010248eb00a6a45c1470;hp=ec143d60a2848ae888edf5381bbe7c3258d38cfc;hb=565d12bf423e1aa398e69187ce51d176af21763c;hpb=8097e99c699bdc8a62365a9841fc7cce1c3c15a0 diff --git a/src/Makefile b/src/Makefile index ec143d60..c9da6d9b 100644 --- a/src/Makefile +++ b/src/Makefile @@ -18,133 +18,153 @@ # along with this program. If not, see . -### -### Files -### - +### Executable name. Do not change EXE = stockfish -OBJS = bitboard.o color.o pawns.o material.o endgame.o evaluate.o main.o \ - misc.o move.o movegen.o history.o movepick.o search.o piece.o \ - position.o square.o direction.o tt.o value.o uci.o ucioption.o \ - mersenne.o book.o bitbase.o san.o benchmark.o - - -### -### Rules -### - -all: $(EXE) .depend - -clean: - $(RM) *.o .depend glaurung - - -### -### Compiler: -### - -# CXX = g++ -# CXX = g++-4.2 -CXX = icpc - - -### -### Dependencies -### - -$(EXE): $(OBJS) - $(CXX) $(LDFLAGS) -o $@ $(OBJS) - -.depend: - $(CXX) -MM $(OBJS:.o=.cpp) > $@ - -include .depend - -### -### Compiler and linker switches -### +### ========================================================================== +### Compiler speed switches for both GCC and ICC. These settings are generally +### fast on a broad range of systems, but may be changed experimentally +### ========================================================================== +GCCFLAGS = -O3 +ICCFLAGS = -fast -# Enable/disable debugging: -CXXFLAGS += -DNDEBUG +### ========================================================================== +### Enable/disable debugging, disabled by default +### ========================================================================== +GCCFLAGS += -DNDEBUG +ICCFLAGS += -DNDEBUG -# Compile with full warnings, and symbol names +### ========================================================================== +### Run built-in benchmark for pgo-builds with: 32MB hash 1 thread 10 depth +### These settings are generally fast, but may be changed experimentally +### ========================================================================== +PGOBENCH = ./$(EXE) bench 32 1 10 default depth -CXXFLAGS += -Wall -g +### General compiler settings. Do not change +GCCFLAGS += -g -Wall -fno-exceptions -fno-rtti -fno-strict-aliasing +ICCFLAGS += -g -Wall -fno-exceptions -fno-rtti -fno-strict-aliasing -wd383,869,981,10187,10188,11505,11503 -# General optimization flags. Note that -O2 might be faster than -O3 on some -# systems; this requires testing. -CXXFLAGS += -O3 -fno-exceptions -fomit-frame-pointer -fno-rtti -fno-strict-aliasing +### General linker settings. Do not change +LDFLAGS = -lpthread -# Disable most annoying warnings for the Intel C++ compiler -CXXFLAGS += -wd383,869,981 - - -# Compiler optimization flags for the Intel C++ compiler in Mac OS X: - -# CXXFLAGS += -mdynamic-no-pic -no-prec-div -ipo -static -xP - - -# Profiler guided optimization with the Intel C++ compiler. To use it, first -# create the directory ./profdata if it does not already exist, and delete its -# contents if it does exist. Then compile with -prof_gen, and run the -# resulting binary for a while (for instance, do ./glaurung bench 128 1, and -# wait 15 minutes for the benchmark to complete). Then do a 'make clean', and -# recompile with -prof_use. - -# CXXFLAGS += -prof_gen -prof_dir profdata -# CXXFLAGS += -prof_use -prof_dir ./profdata - - -# Profiler guided optimization with GCC. I've never been able to make this -# work. - -# CXXFLAGS += -fprofile-generate -# LDFLAGS += -fprofile-generate -# CXXFLAGS += -fprofile-use -# CXXFLAGS += -fprofile-use - - -# General linker flags - -LDFLAGS += -lm -lpthread - - -# Compiler switches for generating binaries for various CPUs in Mac OS X. -# Note that 'arch ppc' and 'arch ppc64' only works with g++, and not with -# the intel compiler. +### Object files. Do not change +OBJS = application.o bitboard.o pawns.o material.o endgame.o evaluate.o main.o \ + misc.o move.o movegen.o history.o movepick.o search.o piece.o \ + position.o direction.o tt.o value.o uci.o ucioption.o \ + mersenne.o book.o bitbase.o san.o benchmark.o -# CXXFLAGS += -arch ppc -# CXXFLAGS += -arch ppc64 -# CXXFLAGS += -arch i386 -# CXXFLAGS += -arch x86_64 -# LDFLAGS += -arch ppc -# LDFLAGS += -arch ppc64 -# LDFLAGS += -arch i386 -# LDFLAGS += -arch x86_64 +### General rules. Do not change +default: + $(MAKE) gcc + +help: + @echo "" + @echo "Makefile options:" + @echo "" + @echo "make > Default: Compiler = g++" + @echo "make icc > Compiler = icpc" + @echo "make icc-profile > Compiler = icpc + automatic pgo-build" + @echo "make osx-ppc32 > PPC-Mac OS X 32 bit. Compiler = g++" + @echo "make osx-ppc64 > PPC-Mac OS X 64 bit. Compiler = g++" + @echo "make osx-x86 > x86-Mac OS X 32 bit. Compiler = g++" + @echo "make osx-x86_64 > x86-Mac OS X 64 bit. Compiler = g++" + @echo "make clean > Clean up" + @echo "" -# Backwards compatibility with Mac OS X 10.4 when compiling under 10.5 with -# GCC 4.0. I haven't found a way to make it work with GCC 4.2. +all: $(EXE) .depend -# CXXFLAGS += -isysroot /Developer/SDKs/MacOSX10.4u.sdk -# CXXFLAGS += -mmacosx-version-min=10.4 -# LDFLAGS += -isysroot /Developer/SDKs/MacOSX10.4u.sdk -# LDFLAGS += -Wl,-syslibroot /Developer/SDKs/MacOSX10.4u.sdk -# LDFLAGS += -mmacosx-version-min=10.4 +clean: + $(RM) *.o .depend *~ $(EXE) + + +### Possible targets. You may add your own ones here +gcc: + $(MAKE) \ + CXX='g++' \ + CXXFLAGS="$(GCCFLAGS)" \ + all + +icc: + $(MAKE) \ + CXX='icpc' \ + CXXFLAGS="$(ICCFLAGS)" \ + all + +icc-profile-make: + $(MAKE) \ + CXX='icpc' \ + CXXFLAGS="$(ICCFLAGS)" \ + CXXFLAGS+='-prof-gen=srcpos -prof_dir ./profdir' \ + all + +icc-profile-use: + $(MAKE) \ + CXX='icpc' \ + CXXFLAGS="$(ICCFLAGS)" \ + CXXFLAGS+='-prof_use -prof_dir ./profdir' \ + all + +icc-profile: + @rm -rf profdir + @mkdir profdir + @touch *.cpp *.h + $(MAKE) icc-profile-make + @echo "" + @echo "Running benchmark for pgo-build ..." + @$(PGOBENCH) > /dev/null + @echo "Benchmark finished. Build final executable now ..." + @echo "" + @touch *.cpp *.h + $(MAKE) icc-profile-use + @rm -rf profdir bench.txt + +osx-ppc32: + $(MAKE) \ + CXX='g++' \ + CXXFLAGS="$(GCCFLAGS)" \ + CXXFLAGS+='-arch ppc' \ + LDFLAGS+='-arch ppc' \ + all + +osx-ppc64: + $(MAKE) \ + CXX='g++' \ + CXXFLAGS="$(GCCFLAGS)" \ + CXXFLAGS+='-arch ppc64' \ + LDFLAGS+='-arch ppc64' \ + all + +osx-x86: + $(MAKE) \ + CXX='g++' \ + CXXFLAGS="$(GCCFLAGS)" \ + CXXFLAGS+='-arch i386' \ + LDFLAGS+='-arch i386' \ + all + +osx-x86_64: + $(MAKE) \ + CXX='g++' \ + CXXFLAGS="$(GCCFLAGS)" \ + CXXFLAGS+='-arch x86_64' \ + LDFLAGS+='-arch x86_64' \ + all + + +### Compilation. Do not change +$(EXE): $(OBJS) + $(CXX) $(LDFLAGS) -o $@ $(OBJS) -# Backwards compatibility with Mac OS X 10.4 when compiling with ICC. Doesn't -# work yet. :-( +### Dependencies. Do not change +.depend: + $(CXX) -MM $(OBJS:.o=.cpp) > $@ -# CXXFLAGS += -DMAC_OS_X_VERSION_MIN_REQUIRED=1040 -# CXXFLAGS += -DMAC_OS_X_VERSION_MAX_ALLOWED=1040 -# CXXFLAGS += -D__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__=1040 -# CXXFLAGS += -F/Developer/SDKs/MacOSX10.4u.sdk/ -# LDFLAGS += -Wl,-syslibroot -Wl,/Developer/SDKs/MacOSX10.4u.sdk +include .depend