From c1d20be32a0898087b8c7a0a170c3ec8bc6b8002 Mon Sep 17 00:00:00 2001 From: kim Date: Fri, 9 Sep 2011 15:18:44 +0000 Subject: [PATCH] Detect if the architecture support a native popcount asm instruction and use it. git-svn-id: svn+ssh://idea.nguyen.vg/svn/sxsi/trunk/XMLTree@1110 3cdefd35-fc62-479d-8e8d-bae585ffb9ca --- Makefile | 43 ++++++++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/Makefile b/Makefile index 035d0d9..2eb3662 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,18 @@ -OPT_FLAGS=-O4 -DPOPCOUNT_TABLE -DHAS_NATIVE_POPCOUNT -fno-PIC -static +POPCOUNT=$(shell grep -q popcnt /proc/cpuinfo && echo 1) + +ifeq ($(POPCOUNT), 1) + POPCOUNT_FLAG=-DHAS_NATIVE_POPCOUNT +else + POPCOUNT_FLAG=-DPOPCOUNT_TABLE +endif + +ifeq ($(VERBOSE), true) + HIDE= +else + HIDE=@ +endif + +OPT_FLAGS=-O4 $(POPCOUNT_FLAG) -fno-PIC -static INC_FLAGS=-I./libcds/includes/ -I. CFLAGS= $(INC_FLAGS) $(OPT_FLAGS) CXXFLAGS= -std=c++0x $(INC_FLAGS) $(OPT_FLAGS) @@ -22,41 +36,44 @@ LIBRLCSA_TCA=TextCollection/incbwt/rlcsa.a LIBLZTRIE_TCA=TextCollection/lzindex/lztrie.a LIBSWCSA_TCA=TextCollection/swcsa/swcsa.a + + + all: depend libcds text_collection XMLTree XMLTree: $(OBJECTS_XMLTREE) $(LIBCDS_A) $(OBJECTS_TCO) \ $(LIBRLCSA_TCA) $(LIBLZTRIE_TCA) $(LIBSWCSA_TCA) @echo [XMLTree] - @cp libcds/lib/libcds.a libXMLTree.a - @rm -rf .objs - @mkdir .objs - @cd .objs; ar x ../$(LIBRLCSA_TCA); ar x ../$(LIBLZTRIE_TCA); ar x ../$(LIBSWCSA_TCA) - @ar rcs libXMLTree.a $(OBJECTS_XMLTREE) $(OBJECTS_TCO) .objs/*.o - @rm -rf .objs + $(HIDE) cp libcds/lib/libcds.a libXMLTree.a + $(HIDE) rm -rf .objs + $(HIDE) mkdir .objs + $(HIDE) (cd .objs; ar x ../$(LIBRLCSA_TCA); ar x ../$(LIBLZTRIE_TCA); ar x ../$(LIBSWCSA_TCA)) + $(HIDE) ar rcs libXMLTree.a $(OBJECTS_XMLTREE) $(OBJECTS_TCO) .objs/*.o + $(HIDE) rm -rf .objs %o: %c @echo [C] $@ - @$(CC) -c $(CFLAGS) $< -o $@ + $(HIDE) $(CC) -c $(CFLAGS) $< -o $@ %o: %cpp @echo [C++] $@ - @$(CC) -c $(CXXFLAGS) $< -o $@ + $(HIDE) $(CC) -c $(CXXFLAGS) $< -o $@ text_collection: @echo [DEPENDENCY] $@ - @make -s -C TextCollection/ + $(HIDE) make -s -C TextCollection/ libcds: @echo [DEPENDENCY] $@ - @make -s -C libcds/ + $(HIDE) make -s -C libcds/ depend: @echo [DEPEND] - @(gcc -MM *.c; g++ -MM -std=c++0x *.cpp) > $@ + $(HIDE) (gcc -MM *.c; g++ -MM -std=c++0x *.cpp) > $@ clean: @echo [CLEAN] - @rm -f *.[oa] depend + $(HIDE) rm -f *.[oa] depend -include depend -- 2.17.1