### 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
+GCCFLAGS = -O3 -msse
+ICCFLAGS = -fast -msse
+ICCFLAGS-OSX = -fast -mdynamic-no-pic
+
+
+### ==========================================================================
+### Enable/disable debugging, disabled by default
+### ==========================================================================
+GCCFLAGS += -DNDEBUG
+ICCFLAGS += -DNDEBUG
+ICCFLAGS-OSX += -DNDEBUG
### ==========================================================================
### General compiler settings. Do not change
-GCCFLAGS += -s -Wall -fno-exceptions -fno-rtti -fno-strict-aliasing
-ICCFLAGS += -s -Wall -fno-exceptions -fno-rtti -fno-strict-aliasing -wd383,869,981,10187,10188,11505,11503
+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
+ICCFLAGS-OSX += -g -Wall -fno-exceptions -fno-rtti -fno-strict-aliasing -wd383,869,981,10187,10188,11505,11503
### General linker settings. Do not change
@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 osx-icc32 > x86-Mac OS X 32 bit. Compiler = icpc"
+ @echo "make osx-icc64 > x86-Mac OS X 64 bit. Compiler = icpc"
+ @echo "make osx-icc32-profile > OSX 32 bit. Compiler = icpc + automatic pgo-build"
+ @echo "make osx-icc64-profile > OSX 64 bit. Compiler = icpc + automatic pgo-build"
+ @echo "make strip > Strip executable"
@echo "make clean > Clean up"
@echo ""
CXXFLAGS+='-arch x86_64' \
LDFLAGS+='-arch x86_64' \
all
+
+osx-icc32:
+ $(MAKE) \
+ CXX='icpc' \
+ CXXFLAGS="$(ICCFLAGS-OSX)" \
+ CXXFLAGS+='-arch i386' \
+ LDFLAGS+='-arch i386' \
+ all
+
+osx-icc64:
+ $(MAKE) \
+ CXX='icpc' \
+ CXXFLAGS="$(ICCFLAGS-OSX)" \
+ CXXFLAGS+='-arch x86_64' \
+ LDFLAGS+='-arch x86_64' \
+ all
+
+osx-icc32-profile-make:
+ $(MAKE) \
+ CXX='icpc' \
+ CXXFLAGS="$(ICCFLAGS-OSX)" \
+ CXXFLAGS+='-arch i386' \
+ CXXFLAGS+='-prof_gen -prof_dir ./profdir' \
+ LDFLAGS+='-arch i386' \
+ all
+
+osx-icc32-profile-use:
+ $(MAKE) \
+ CXX='icpc' \
+ CXXFLAGS="$(ICCFLAGS-OSX)" \
+ CXXFLAGS+='-arch i386' \
+ CXXFLAGS+='-prof_use -prof_dir ./profdir' \
+ LDFLAGS+='-arch i386' \
+ all
+
+osx-icc32-profile:
+ @rm -rf profdir
+ @mkdir profdir
+ @touch *.cpp *.h
+ $(MAKE) osx-icc32-profile-make
+ @echo ""
+ @echo "Running benchmark for pgo-build ..."
+ @$(PGOBENCH) > /dev/null
+ @echo "Benchmark finished. Build final executable now ..."
+ @echo ""
+ @touch *.cpp *.h
+ $(MAKE) osx-icc32-profile-use
+ @rm -rf profdir bench.txt
+
+osx-icc64-profile-make:
+ $(MAKE) \
+ CXX='icpc' \
+ CXXFLAGS="$(ICCFLAGS-OSX)" \
+ CXXFLAGS+='-arch x86_64' \
+ CXXFLAGS+='-prof_gen -prof_dir ./profdir' \
+ LDFLAGS+='-arch x86_64' \
+ all
+
+osx-icc64-profile-use:
+ $(MAKE) \
+ CXX='icpc' \
+ CXXFLAGS="$(ICCFLAGS-OSX)" \
+ CXXFLAGS+='-arch x86_64' \
+ CXXFLAGS+='-prof_use -prof_dir ./profdir' \
+ LDFLAGS+='-arch x86_64' \
+ all
+
+osx-icc64-profile:
+ @rm -rf profdir
+ @mkdir profdir
+ @touch *.cpp *.h
+ $(MAKE) osx-icc64-profile-make
+ @echo ""
+ @echo "Running benchmark for pgo-build ..."
+ @$(PGOBENCH) > /dev/null
+ @echo "Benchmark finished. Build final executable now ..."
+ @echo ""
+ @touch *.cpp *.h
+ $(MAKE) osx-icc64-profile-use
+ @rm -rf profdir bench.txt
+
+
+
+strip:
+ strip $(EXE)
### Compilation. Do not change
### Dependencies. Do not change
.depend:
- $(CXX) -MM $(OBJS:.o=.cpp) > $@
+ $(CXX) -msse -MM $(OBJS:.o=.cpp) > $@
include .depend