vendor/rlite/src/Makefile in hirlite-0.0.2 vs vendor/rlite/src/Makefile in hirlite-0.0.2.1
- old
+ new
@@ -1,18 +1,36 @@
-OPTIMIZATION?=-O2
+# Hirlite Makefile
+# Copyright (C) 2010-2011 Salvatore Sanfilippo <antirez at gmail dot com>
+# Copyright (C) 2010-2011 Pieter Noordhuis <pcnoordhuis at gmail dot com>
+# Copyright (C) 2015 Sebastian Waisbrot <seppo0010 at gmail dot com>
+# Partially based on hiredis's Makefile
+# https://github.com/redis/hiredis/blob/master/Makefile
+
+uname_S:= $(shell sh -c 'uname -s 2>/dev/null || echo not')
+
+OBJ=rlite.o page_skiplist.o page_string.o page_list.o page_btree.o page_key.o page_multi_string.o page_long.o type_string.o type_list.o type_set.o type_zset.o type_hash.o util.o restore.o dump.o sort.o pqsort.o utilfromredis.o hyperloglog.o sha1.o crc64.o lzf_c.o lzf_d.o scripting.o rand.o hirlite.o
+LIBNAME=libhirlite
+PKGCONFNAME=hirlite.pc
+
+HIRLITE_MAJOR=$(shell grep HIRLITE_MAJOR hirlite.h | awk '{print $$3}')
+HIRLITE_MINOR=$(shell grep HIRLITE_MINOR hirlite.h | awk '{print $$3}')
+HIRLITE_PATCH=$(shell grep HIRLITE_PATCH hirlite.h | awk '{print $$3}')
+
+OPTIMIZATION?=-O2
ifeq ($(uname_S),SunOS)
- # make isinf() available
CFLAGS?= -pedantic $(OPTIMIZATION) -Wall -W -D__EXTENSIONS__ -D_XPG6 -fPIC
DEBUG?=-g -ggdb
else
CFLAGS?= -pedantic $(OPTIMIZATION) -Wall -W $(ARCH) $(PROF) -fPIC
DEBUG?=-g -ggdb
endif
+CFLAGS += -I./ -I../deps/lua/src/
+
DEBUG.gcc += -rdynamic
-CFLAGS.gcc += -std=c99 -I./
+CFLAGS.gcc += -std=c99
ifeq ($(shell $(CC) -v 2>&1 | grep -c "clang version"), 1)
DEBUG += ${DEBUG.clang}
CFLAGS += ${CFLAGS.clang}
else
@@ -20,60 +38,114 @@
CFLAGS += ${CFLAGS.gcc}
endif
LIBS=-lm
-all: buildtest buildhirlitetest
+INSTALL?= cp -a
+# Installation related variables and target
+PREFIX?=/usr/local
+INCLUDE_PATH?=include/hirlite
+LIBRARY_PATH?=lib
+PKGCONF_PATH?=pkgconfig
+INSTALL_INCLUDE_PATH=$(DESTDIR)$(PREFIX)/$(INCLUDE_PATH)
+INSTALL_LIBRARY_PATH=$(DESTDIR)$(PREFIX)/$(LIBRARY_PATH)
+INSTALL_PKGCONF_PATH=$(INSTALL_LIBRARY_PATH)/$(PKGCONF_PATH)
+ifeq ($(shell uname -s),Darwin)
+ DYLIBSUFFIX=dylib
+ DYLIB_MINOR_NAME=$(LIBNAME).$(HIRLITE_MAJOR).$(HIRLITE_MINOR).$(DYLIBSUFFIX)
+ DYLIB_MAJOR_NAME=$(LIBNAME).$(HIRLITE_MAJOR).$(DYLIBSUFFIX)
+ DYLIBNAME=$(LIBNAME).$(DYLIBSUFFIX)
+ DYLIB_MAKE_CMD=$(CC) -shared -Wl,-install_name,$(DYLIB_MINOR_NAME) -o $(DYLIBNAME) $(LDFLAGS)
+else
+ DYLIBSUFFIX=so
+ DYLIB_MINOR_NAME=$(LIBNAME).$(DYLIBSUFFIX).$(HIRLITE_MAJOR).$(HIRLITE_MINOR)
+ DYLIB_MAJOR_NAME=$(LIBNAME).$(DYLIBSUFFIX).$(HIRLITE_MAJOR)
+ DYLIBNAME=$(LIBNAME).$(DYLIBSUFFIX)
+ DYLIB_MAKE_CMD=$(CC) -shared -Wl,-soname,$(DYLIB_MINOR_NAME) -o $(DYLIBNAME) $(LDFLAGS)
+endif
+
+
+STLIBSUFFIX=a
+STLIBNAME=$(LIBNAME).$(STLIBSUFFIX)
+
+all: $(DYLIBNAME) $(STLIBNAME)
+
gcov: CFLAGS += -fprofile-arcs -ftest-coverage
gcov: clean test
builddebug: CFLAGS += -DDEBUG=1
builddebug: clean buildtest
debug: builddebug vtest
+ifeq ($(uname_S),SunOS)
+ # Make isinf() available
+ LUA_CFLAGS= -D__C99FEATURES__=1
+endif
+LUA_CFLAGS+= -O2 -Wall -DENABLE_CJSON_GLOBAL $(CFLAGS)
+LUA_LDFLAGS+= $(LDFLAGS)
+LUA_STLIB=../deps/lua/src/liblua.a
+AR=ar
+ARFLAGS=rcu
+
+lua:
+ cd ../deps/lua && $(MAKE) ansi CFLAGS="$(LUA_CFLAGS)" MYLDFLAGS="$(LUA_LDFLAGS)" AR="$(AR) $(ARFLAGS)"
+
lcov: gcov
mkdir -p lcov
lcov --directory . --capture --output-file lcov/app.info
genhtml lcov/app.info -o lcov/html
full-lcov: CFLAGS += -fprofile-arcs -ftest-coverage -DDEBUG=1
-full-lcov: clean buildtest buildhirlitetest
+full-lcov: clean buildtest
clang-analyzer:
rm -rf analyzer
- scan-build -o analyzer make
+ scan-build -o analyzer $(MAKE)
.c.o:
$(CC) $(ARCH) $(DEBUG) $(CFLAGS) -c $<
-libhirlite.a: hirlite.o librlite.a
- ar -cq libhirlite.a rlite.o page_skiplist.o page_string.o page_list.o page_btree.o page_key.o type_string.o type_list.o type_set.o type_zset.o type_hash.o page_long.o page_multi_string.o util.o utilfromredis.o hyperloglog.o sha1.o crc64.o restore.o dump.o lzf_c.o lzf_d.o sort.o pqsort.o hirlite.o
+$(DYLIBNAME): $(OBJ) lua
+ $(DYLIB_MAKE_CMD) $(LUA_STLIB) $(OBJ)
-librlite.a: rlite.o page_skiplist.o page_string.o page_list.o page_btree.o page_key.o page_multi_string.o page_long.o type_string.o type_list.o type_set.o type_zset.o type_hash.o util.o restore.o dump.o sort.o pqsort.o ../deps/utilfromredis.o ../deps/hyperloglog.o ../deps/sha1.o ../deps/crc64.o ../deps/lzf_c.o ../deps/lzf_d.o
- ar -cq librlite.a rlite.o page_skiplist.o page_string.o page_list.o page_btree.o page_key.o type_string.o type_list.o type_set.o type_zset.o type_hash.o page_long.o page_multi_string.o util.o utilfromredis.o hyperloglog.o sha1.o crc64.o lzf_c.o lzf_d.o restore.o dump.o sort.o pqsort.o
+$(STLIBNAME): $(OBJ)
+ ar -cq libhirlite.a $(OBJ)
-buildtest: librlite.a test/rlite-test.o test/btree-test.o test/list-test.o test/string-test.o test/multi_string-test.o test/multi-test.o test/key-test.o test/type_string-test.o test/type_list-test.o test/type_set-test.o test/type_zset-test.o test/type_hash-test.o test/skiplist-test.o test/long-test.o test/restore-test.o test/hyperloglog-test.o test/dump-test.o test/sort-test.o test/test_util.o test/test.o
- $(CC) $(DEBUG) $(CFLAGS) -o rlite-test test.o rlite-test.o btree-test.o list-test.o string-test.o multi_string-test.o multi-test.o key-test.o type_string-test.o type_list-test.o type_set-test.o type_zset-test.o type_hash-test.o skiplist-test.o long-test.o restore-test.o hyperloglog-test.o dump-test.o sort-test.o test_util.o librlite.a $(LIBS)
+buildtest: $(STLIBNAME) test/rlite-test.o test/btree-test.o test/list-test.o test/string-test.o test/multi_string-test.o test/multi-test.o test/key-test.o test/type_string-test.o test/type_list-test.o test/type_set-test.o test/type_zset-test.o test/type_hash-test.o test/skiplist-test.o test/long-test.o test/restore-test.o test/hyperloglog-test.o test/dump-test.o test/sort-test.o test/test_util.o test/test.o test/echo.o test/hash.o test/list.o test/parser.o test/set.o test/string.o test/test_hirlite.o test/zset.o test/db.o test/multi.o test/hsort.o test/scripting-test.o
+ $(CC) $(DEBUG) $(CFLAGS) -o rlite-test test.o rlite-test.o btree-test.o list-test.o string-test.o multi_string-test.o multi-test.o key-test.o type_string-test.o type_list-test.o type_set-test.o type_zset-test.o type_hash-test.o skiplist-test.o long-test.o restore-test.o hyperloglog-test.o dump-test.o sort-test.o test_util.o $(STLIBNAME) $(LIBS)
+ $(CC) $(DEBUG) $(CFLAGS) -o hirlite-test echo.o hash.o list.o parser.o set.o string.o test_hirlite.o zset.o db.o multi.o hsort.o scripting-test.o $(STLIBNAME) $(LUA_STLIB) $(LIBS)
-buildhirlitetest: libhirlite.a test/echo.o test/hash.o test/list.o test/parser.o test/set.o test/string.o test/test_hirlite.o test/zset.o test/db.o test/multi.o test/sort.o
- $(CC) $(DEBUG) $(CFLAGS) -o hirlite-test echo.o hash.o list.o parser.o set.o string.o test_hirlite.o zset.o db.o multi.o sort.o libhirlite.a $(LIBS)
-
-rlitetest: buildtest
+test: buildtest
./rlite-test
-
-hirlitetest: buildhirlitetest
./hirlite-test
-test: rlitetest hirlitetest
-
-vrlitetest: buildtest
+vtest: buildtest
valgrind --track-origins=yes --leak-check=full --show-reachable=yes ./rlite-test
-
-vhirlitetest: buildhirlitetest
valgrind --track-origins=yes --leak-check=full --show-reachable=yes ./hirlite-test
-vtest: vrlitetest vhirlitetest
+$(PKGCONFNAME): hirlite.h
+ @echo "Generating $@ for pkgconfig..."
+ @echo prefix=$(PREFIX) > $@
+ @echo exec_prefix=$${prefix} >> $@
+ @echo libdir=$(PREFIX)/$(INCLUDE_PATH) >> $@
+ @echo includedir=$(PREFIX)/$(LIBRARY_PATH) >> $@
+ @echo >> $@
+ @echo Name: hirlite >> $@
+ @echo Description: rlite database library. >> $@
+ @echo Version: $(HIRLITE_MAJOR).$(HIRLITE_MINOR).$(HIRLITE_PATCH) >> $@
+ @echo Libs: -L$${libdir} -lhirlite >> $@
+ @echo Cflags: -I$${includedir} -D_FILE_OFFSET_BITS=64 >> $@
+install: $(DYLIBNAME) $(STLIBNAME) $(PKGCONFNAME)
+ mkdir -p $(INSTALL_INCLUDE_PATH) $(INSTALL_LIBRARY_PATH)
+ $(INSTALL) *.h $(INSTALL_INCLUDE_PATH)
+ $(INSTALL) $(DYLIBNAME) $(INSTALL_LIBRARY_PATH)/$(DYLIB_MINOR_NAME)
+ cd $(INSTALL_LIBRARY_PATH) && ln -sf $(DYLIB_MINOR_NAME) $(DYLIB_MAJOR_NAME)
+ cd $(INSTALL_LIBRARY_PATH) && ln -sf $(DYLIB_MAJOR_NAME) $(DYLIBNAME)
+ $(INSTALL) $(STLIBNAME) $(INSTALL_LIBRARY_PATH)
+ mkdir -p $(INSTALL_PKGCONF_PATH)
+ $(INSTALL) $(PKGCONFNAME) $(INSTALL_PKGCONF_PATH)
+
clean:
- rm -rf *-test *.o *.a *.dSYM *.gcda *.gcno lcov
+ rm -rf *-test *.o *.a *.dSYM *.gcda *.gcno lcov *.dylib ./deps/lua/src/*.a