X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2FMakefile;h=c9da6d9b8ca9a5fe434d010248eb00a6a45c1470;hp=2e37cccc10f5a480c3fd382b4f5666e069ec6ab7;hb=565d12bf423e1aa398e69187ce51d176af21763c;hpb=bb751d6c890f5c50c642366d601740366cfae8d0 diff --git a/src/Makefile b/src/Makefile index 2e37cccc..c9da6d9b 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,14 +1,15 @@ -# Glaurung, a UCI chess playing engine. +# Stockfish, a UCI chess playing engine derived from Glaurung 2.1 # Copyright (C) 2004-2007 Tord Romstad +# Copyright (C) 2008 Marco Costalba -# This file is part of Glaurung. +# This file is part of Stockfish. # -# Glaurung is free software: you can redistribute it and/or modify +# Stockfish is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # -# Glaurung is distributed in the hope that it will be useful, +# Stockfish is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. @@ -17,129 +18,153 @@ # along with this program. If not, see . -### -### Files -### +### Executable name. Do not change +EXE = stockfish -EXE = glaurung - -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 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 -### -### Compiler and linker switches -### -# Enable/disable debugging: +### ========================================================================== +### Enable/disable debugging, disabled by default +### ========================================================================== +GCCFLAGS += -DNDEBUG +ICCFLAGS += -DNDEBUG -CXXFLAGS += -DNDEBUG +### ========================================================================== +### 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 -# Compile with full warnings, and symbol names -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. +### General linker settings. Do not change +LDFLAGS = -lpthread -CXXFLAGS += -O3 -fno-exceptions -fomit-frame-pointer -fno-rtti -fstrict-aliasing +### 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 -# 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. - -# 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