diff --git a/src/Makefile b/src/Makefile index 3963e558..62a874d5 100644 --- a/src/Makefile +++ b/src/Makefile @@ -21,6 +21,10 @@ ### Executable name. Do not change EXE = stockfish +### Installation dir definitions +PREFIX = /usr/local +BINDIR = $(PREFIX)/bin + ### ========================================================================== ### Compiler speed switches for both GCC and ICC. These settings are generally @@ -92,14 +96,18 @@ help: @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 hpux > HP-UX. Compiler = aCC" @echo "make strip > Strip executable" @echo "make clean > Clean up" @echo "" all: $(EXE) .depend +test check: default + @$(PGOBENCH) + clean: - $(RM) *.o .depend *~ $(EXE) + $(RM) *.o .depend *~ $(EXE) core bench.txt ### Possible targets. You may add your own ones here @@ -296,6 +304,12 @@ osx-icc64-profile: $(MAKE) osx-icc64-profile-use @rm -rf profdir bench.txt +hpux: + $(MAKE) \ + CXX='/opt/aCC/bin/aCC -AA +hpxstd98 -DBIGENDIAN -mt +O3 -DNDEBUG' \ + CXXFLAGS="" \ + LDFLAGS="" \ + all strip: @@ -306,9 +320,14 @@ strip: $(EXE): $(OBJS) $(CXX) $(LDFLAGS) -o $@ $(OBJS) +### Installation +install: default + -mkdir -p -m 755 $(BINDIR) + -cp $(EXE) $(BINDIR) + -strip $(BINDIR)/$(EXE) ### Dependencies. Do not change .depend: - $(CXX) -msse -MM $(OBJS:.o=.cpp) > $@ + -@$(CXX) -msse -MM $(OBJS:.o=.cpp) > $@ 2> /dev/null include .depend diff --git a/src/book.cpp b/src/book.cpp index d825477f..1e4c9cc0 100644 --- a/src/book.cpp +++ b/src/book.cpp @@ -390,7 +390,7 @@ void Book::close() { /// Book::file_name() returns the file name of the currently active book, /// or the empty string if no book is open. -const string Book::file_name() const { +const string Book::file_name() { // Not const to compile on HP-UX 11.X return is_open() ? fileName : ""; } diff --git a/src/book.h b/src/book.h index b68f7bfc..1b7b72c4 100644 --- a/src/book.h +++ b/src/book.h @@ -60,7 +60,7 @@ public: ~Book(); void open(const std::string& fName); void close(); - const std::string file_name() const; + const std::string file_name(); Move get_move(const Position& pos); private: diff --git a/src/misc.cpp b/src/misc.cpp index c692e996..bf8143a3 100644 --- a/src/misc.cpp +++ b/src/misc.cpp @@ -27,6 +27,9 @@ # include # include # include +# if defined(__hpux) +# include +# endif #else @@ -187,6 +190,14 @@ int get_system_time() { int cpu_count() { return Min(sysconf(_SC_NPROCESSORS_ONLN), 8); } +# elif defined(__hpux) +int cpu_count() { + struct pst_dynamic psd; + if (pstat_getdynamic(&psd, sizeof(psd), (size_t)1, 0) == -1) + return 1; + + return Min(psd.psd_proc_cnt, 8); +} # else int cpu_count() { return 1; diff --git a/src/tt.cpp b/src/tt.cpp index 010bdc95..8da3ca75 100644 --- a/src/tt.cpp +++ b/src/tt.cpp @@ -25,7 +25,9 @@ #include #include #include -#include +#if !defined(__hpux) +# include +#endif #include "movegen.h" #include "tt.h" @@ -167,11 +169,14 @@ TTEntry* TranspositionTable::retrieve(const Key posKey) const { /// to be loaded from RAM, that can be very slow. When we will /// subsequently call retrieve() the TT data will be already /// quickly accessible in L1/L2 CPU cache. +#if defined(__hpux) +void TranspositionTable::prefetch(const Key) const {} // Not supported on HP UX +#else void TranspositionTable::prefetch(const Key posKey) const { #if defined(__INTEL_COMPILER) || defined(__ICL) - // This hack prevents prefetches to be optimized away by the + // This hack prevents prefetches to be optimized away by // Intel compiler. Both MSVC and gcc seems not affected. __asm__ (""); #endif @@ -181,6 +186,7 @@ void TranspositionTable::prefetch(const Key posKey) const { _mm_prefetch(addr+64, _MM_HINT_T2); // 64 bytes ahead } +#endif /// TranspositionTable::new_search() is called at the beginning of every new /// search. It increments the "generation" variable, which is used to