X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2FMakefile;h=457471a1d1cb83d1527f2a41acea8a51528a8e11;hp=cdedd25d0da4cb5747594ffd17ec4efad4759067;hb=6036303bb621d61fcc9b3328701926dc69e8efc1;hpb=bf51b4796abd400648ba751fe545fd1785232a6b diff --git a/src/Makefile b/src/Makefile index cdedd25d..457471a1 100644 --- a/src/Makefile +++ b/src/Makefile @@ -218,15 +218,11 @@ ifeq ($(COMP),clang) endif ifeq ($(comp),icc) - profile_prepare = icc-profile-prepare profile_make = icc-profile-make profile_use = icc-profile-use - profile_clean = icc-profile-clean else - profile_prepare = gcc-profile-prepare profile_make = gcc-profile-make profile_use = gcc-profile-use - profile_clean = gcc-profile-clean endif ifeq ($(KERNEL),Darwin) @@ -264,7 +260,8 @@ endif ### 3.2.2 Debugging with undefined behavior sanitizers ifeq ($(sanitize),yes) - CXXFLAGS += -g3 -fsanitize=undefined + CXXFLAGS += -g3 -fsanitize=undefined + LDFLAGS += -fsanitize=undefined endif ### 3.3 Optimization @@ -423,30 +420,26 @@ help: @echo "" -.PHONY: build profile-build -build: - $(MAKE) ARCH=$(ARCH) COMP=$(COMP) config-sanity +.PHONY: help build profile-build strip install clean objclean profileclean help \ + config-sanity icc-profile-use icc-profile-make gcc-profile-use gcc-profile-make + +build: config-sanity $(MAKE) ARCH=$(ARCH) COMP=$(COMP) all -profile-build: - $(MAKE) ARCH=$(ARCH) COMP=$(COMP) config-sanity - @echo "" - @echo "Step 0/4. Preparing for profile build." - $(MAKE) ARCH=$(ARCH) COMP=$(COMP) $(profile_prepare) +profile-build: config-sanity objclean profileclean @echo "" - @echo "Step 1/4. Building executable for benchmark ..." - @touch *.cpp *.h syzygy/*.cpp syzygy/*.h + @echo "Step 1/4. Building instrumented executable ..." $(MAKE) ARCH=$(ARCH) COMP=$(COMP) $(profile_make) @echo "" @echo "Step 2/4. Running benchmark for pgo-build ..." $(PGOBENCH) > /dev/null @echo "" - @echo "Step 3/4. Building final executable ..." - @touch *.cpp *.h syzygy/*.cpp syzygy/*.h + @echo "Step 3/4. Building optimized executable ..." + $(MAKE) ARCH=$(ARCH) COMP=$(COMP) objclean $(MAKE) ARCH=$(ARCH) COMP=$(COMP) $(profile_use) @echo "" @echo "Step 4/4. Deleting profile data ..." - $(MAKE) ARCH=$(ARCH) COMP=$(COMP) $(profile_clean) + $(MAKE) ARCH=$(ARCH) COMP=$(COMP) profileclean strip: strip $(EXE) @@ -456,8 +449,18 @@ install: -cp $(EXE) $(BINDIR) -strip $(BINDIR)/$(EXE) -clean: - $(RM) $(EXE) $(EXE).exe *.o .depend *~ core bench.txt *.gcda ./syzygy/*.o ./syzygy/*.gcda +#clean all +clean: objclean profileclean + @rm -f .depend *~ core + +# clean binaries and objects +objclean: + @rm -f $(EXE) $(EXE).exe *.o ./syzygy/*.o + +# clean auxiliary profiling files +profileclean: + @rm -rf profdir + @rm -f bench.txt *.gcda ./syzygy/*.gcda *.gcno ./syzygy/*.gcno default: help @@ -472,6 +475,7 @@ config-sanity: @echo "" @echo "Config:" @echo "debug: '$(debug)'" + @echo "sanitize: '$(sanitize)'" @echo "optimize: '$(optimize)'" @echo "arch: '$(arch)'" @echo "bits: '$(bits)'" @@ -490,6 +494,7 @@ config-sanity: @echo "Testing config sanity. If this fails, try 'make help' ..." @echo "" @test "$(debug)" = "yes" || test "$(debug)" = "no" + @test "$(sanitize)" = "yes" || test "$(sanitize)" = "no" @test "$(optimize)" = "yes" || test "$(optimize)" = "no" @test "$(arch)" = "any" || test "$(arch)" = "x86_64" || test "$(arch)" = "i386" || \ test "$(arch)" = "ppc64" || test "$(arch)" = "ppc" || test "$(arch)" = "armv7" @@ -503,9 +508,6 @@ config-sanity: $(EXE): $(OBJS) $(CXX) -o $@ $(OBJS) $(LDFLAGS) -gcc-profile-prepare: - $(MAKE) ARCH=$(ARCH) COMP=$(COMP) gcc-profile-clean - gcc-profile-make: $(MAKE) ARCH=$(ARCH) COMP=$(COMP) \ EXTRACXXFLAGS='-fprofile-generate' \ @@ -518,14 +520,8 @@ gcc-profile-use: EXTRALDFLAGS='-lgcov' \ all -gcc-profile-clean: - @rm -rf *.gcda *.gcno syzygy/*.gcda syzygy/*.gcno bench.txt - -icc-profile-prepare: - $(MAKE) ARCH=$(ARCH) COMP=$(COMP) icc-profile-clean - @mkdir profdir - icc-profile-make: + @mkdir -p profdir $(MAKE) ARCH=$(ARCH) COMP=$(COMP) \ EXTRACXXFLAGS='-prof-gen=srcpos -prof_dir ./profdir' \ all @@ -535,9 +531,6 @@ icc-profile-use: EXTRACXXFLAGS='-prof_use -prof_dir ./profdir' \ all -icc-profile-clean: - @rm -rf profdir bench.txt - .depend: -@$(CXX) $(DEPENDFLAGS) -MM $(OBJS:.o=.cpp) > $@ 2> /dev/null