123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- # Makefile for libyrmcds
- PREFIX = /usr/local
- CC = gcc
- CXX = g++ -std=gnu++11
- CPPFLAGS = -D_GNU_SOURCE
- # Uncomment the next line to remove the internal lock used to
- # serialize sending commands.
- #
- #CPPFLAGS += -DLIBYRMCDS_NO_INTERNAL_LOCK
- OPTFLAGS = -gdwarf-3 -O2
- CFLAGS = -Wall -Wconversion $(OPTFLAGS)
- CXXFLAGS = $(CFLAGS) -Wnon-virtual-dtor -Woverloaded-virtual
- LDFLAGS = -L.
- LDLIBS = -lyrmcds -lpthread
- EXE = yc yc-cnt
- LIB = libyrmcds.a
- PACKAGES = build-essential subversion doxygen
- CHEADERS = $(wildcard *.h)
- CSOURCES = $(wildcard *.c)
- COBJECTS = $(patsubst %.c,%.o,$(CSOURCES))
- LIB_OBJECTS = $(filter-out yc.o yc-cnt.o,$(COBJECTS))
- TEST_SOURCES = $(wildcard t/*.c)
- TESTS = $(patsubst %.c,%,$(TEST_SOURCES))
- all: lib $(EXE)
- lib: $(LIB)
- # LZ4 is optional. Run "make lz4; make" to build LZ4 enabled library.
- LZ4_TAG = r127
- WGET = wget -q -P lz4/lib
- lz4:
- mkdir -p lz4/lib
- $(WGET) https://raw.githubusercontent.com/Cyan4973/lz4/$(LZ4_TAG)/lib/lz4.c
- $(WGET) https://raw.githubusercontent.com/Cyan4973/lz4/$(LZ4_TAG)/lib/lz4.h
- ifeq ($(wildcard lz4), lz4)
- $(info LZ4 transparent compression is *enabled*)
- CPPFLAGS += -DLIBYRMCDS_USE_LZ4
- LZ4_CFLAGS = -std=c99 -O3
- lz4/lib/lz4.o: lz4/lib/lz4.c
- $(CC) $(LZ4_CFLAGS) -Ilz4/lib -c -o $@ $<
- LIB_OBJECTS += lz4/lib/lz4.o
- endif
- yc: yc.o
- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS)
- yc-cnt: yc-cnt.o
- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS)
- $(COBJECTS): $(CHEADERS)
- $(EXE): $(LIB)
- $(LIB): $(LIB_OBJECTS)
- $(AR) rcs $@ $^
- t/%.exe: t/%.c $(LIB)
- $(CC) -I$(shell pwd) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS)
- $(TESTS): $(LIB)
- @$(MAKE) -s $@.exe
- @echo Running ./$@.exe
- @./$@.exe
- @echo
- test: $(TESTS)
- html:
- rm -rf html
- doxygen
- serve: html
- @cd html; python -m SimpleHTTPServer 8888 || true
- clean:
- rm -rf *.o t/*.exe html $(EXE) $(LIB)
- setup:
- sudo apt-get install -y $(PACKAGES)
- .PHONY: all lib test html serve clean setup
|