Current section
Files
Jump to
Current section
Files
Makefile
# -fPIC generates position independent code (PIC) for shared libraries
CFLAGS = -fPIC -ltiff -ljpeg -lz -lm -pthread
ERLANG_PATH = $(shell erl -eval 'io:format("~s", [lists:concat([code:root_dir(), "/erts-", erlang:system_info(version), "/include"])])' -s init stop -noshell)
CFLAGS += -I$(ERLANG_PATH)
ifeq ($(shell uname),Darwin)
# dynamiclib produces a dynamic library instead of an executable when linking
LDFLAGS += -dynamiclib -undefined dynamic_lookup
# statically link bardecode into the NIF on macOS
BARDECODE = priv/bardecode.a
else
# dynamically link to bardecode shared library on Linux, which is compiled with -fPIC
# NOTE: LD_LIBRARY_PATH is set into Dockerfile
BARDECODE = -Lpriv -lbardecode
endif
all: bardecode
bardecode:
$(MIX) compile
priv/ex_bardecode.so: src/bardecode.c src/barcode_linux
$(CC) $(CFLAGS) -shared $(LDFLAGS) -o $@ src/bardecode.c $(BARDECODE);
barcode_linux.tar.gz:
curl -O http://bardecode.com/barcode_linux.tar.gz
src/barcode_linux: barcode_linux.tar.gz
mkdir -p src/barcode_linux
tar -xvf barcode_linux.tar.gz -C src/barcode_linux --strip-components=1
cd src/barcode_linux && ./configure.sh
cp src/barcode_linux/arch/lib/* priv/
clean:
$(RM) priv/ex_bardecode.so
$(RM) -rf src/barcode_linux
$(RM) barcode_linux.tar.gz
.PHONY: all bardecode clean