.SUFFIXES:
.SUFFIXES: .cpp .o .c .h
PROCESSOR:=$(shell uname -m)
ifeq ($(no_simd),1) #if no_simd is set
CFLAGS = -fPIC -std=c99 -O3 -Wall -Wextra -pedantic -Wshadow
else
ifeq ($(PROCESSOR), aarch64)
CFLAGS = -fPIC -std=c99 -O3 -Wall -Wextra -pedantic -Wshadow -D__ARM_NEON__
else ifeq ($(PROCESSOR), armv7l)
CFLAGS = -fPIC -std=c99 -O3 -Wall -Wextra -pedantic -Wshadow -mfpu=neon
else ifeq ($(PROCESSOR), x86_64)
CFLAGS = -fPIC -std=c99 -O3 -Wall -Wextra -pedantic -Wshadow -DSTREAMVBYTE_SSSE3=1 -mssse3
else
CFLAGS = -fPIC -std=c99 -O3 -Wall -Wextra -pedantic -Wshadow
endif
endif
LDFLAGS = -shared
LIBNAME=libstreamvbyte.so.0.0.1
LNLIBNAME=libstreamvbyte.so
STATICLIB=libstreamvbyte.a
all: $(LIBNAME) $(STATICLIB)
HEADERS=./include/streamvbyte.h ./include/streamvbyte_zigzag.h
OBJECTS= streamvbyte_decode.o streamvbyte_encode.o streamvbyte_zigzag.o
streamvbyte_zigzag.o: ./src/streamvbyte_zigzag.c $(HEADERS)
$(CC) $(CFLAGS) -c ./src/streamvbyte_zigzag.c -Iinclude
streamvbyte_decode.o: ./src/streamvbyte_decode.c $(HEADERS)
$(CC) $(CFLAGS) -c ./src/streamvbyte_decode.c -Iinclude
streamvbyte_encode.o: ./src/streamvbyte_encode.c $(HEADERS)
$(CC) $(CFLAGS) -c ./src/streamvbyte_encode.c -Iinclude
$(LIBNAME): $(OBJECTS)
$(CC) $(CFLAGS) -o $(LIBNAME) $(OBJECTS) $(LDFLAGS)
$(STATICLIB): $(OBJECTS)
ar rcs $@ $^
$(LNLIBNAME): $(LIBNAME)
ln -f -s $(LIBNAME) $(LNLIBNAME)
clean:
rm -f unit *.o $(LIBNAME) $(LNLIBNAME) $(STATICLIB)