1a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan# Copyright (c) 2015, Louis P. Santillan <lpsantil@gmail.com>
2a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan# All rights reserved.
3a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan# See LICENSE for licensing details.
4a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. SantillanDESTDIR ?= /opt/local
5a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan
6a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan# Pulled the code below from lib/Makefile.  Might be nicer to derive this somehow without sed
7a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan# Version numbers
8a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. SantillanVERSION ?= 129
9a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. SantillanRELEASE ?= r$(VERSION)
10a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. SantillanLIBVER_MAJOR=$(shell sed -n '/define LZ4_VERSION_MAJOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < lib/lz4.h)
11a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. SantillanLIBVER_MINOR=$(shell sed -n '/define LZ4_VERSION_MINOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < lib/lz4.h)
12a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. SantillanLIBVER_PATCH=$(shell sed -n '/define LZ4_VERSION_RELEASE/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < lib/lz4.h)
13a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. SantillanLIBVER=$(LIBVER_MAJOR).$(LIBVER_MINOR).$(LIBVER_PATCH)
14a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan
15a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan######################################################################
16a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan
17a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. SantillanCROSS ?= i586-pc-msdosdjgpp
18a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. SantillanCC = $(CROSS)-gcc
19a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. SantillanAR = $(CROSS)-ar
20a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. SantillanLD = $(CROSS)-gcc
21a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan
22a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. SantillanCFLAGS ?= -O3 -std=gnu99 -Wall -Wextra -Wundef -Wshadow -Wcast-qual -Wcast-align -Wstrict-prototypes -pedantic -DLZ4_VERSION=\"$(RELEASE)\"
23a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. SantillanLDFLAGS ?= -s
24a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. SantillanSRC = programs/bench.c programs/lz4io.c programs/lz4cli.c
25a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. SantillanOBJ = $(SRC:.c=.o)
26a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. SantillanSDEPS = $(SRC:.c=.d)
27a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. SantillanIDIR = lib
28a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. SantillanEDIR = .
29a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. SantillanEXE = lz4.exe
30a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. SantillanLNK = lz4
31a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. SantillanLDIR = lib
32a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. SantillanLSRC = lib/lz4.c lib/lz4hc.c lib/lz4frame.c lib/xxhash.c
33a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. SantillanINC = $(LSRC:.c=.h)
34a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. SantillanLOBJ = $(LSRC:.c=.o)
35a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. SantillanLSDEPS = $(LSRC:.c=.d)
36a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. SantillanLIB = $(LDIR)/lib$(LNK).a
37a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan
38a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan# Since LDFLAGS defaults to "-s", probably better to override unless
39a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan# you have a default you would like to maintain
40a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillanifeq ($(WITH_DEBUG), 1)
41a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	CFLAGS += -g
42a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	LDFLAGS += -g
43a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillanendif
44a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan
45a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan# Since LDFLAGS defaults to "-s", probably better to override unless
46a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan# you have a default you would like to maintain
47a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillanifeq ($(WITH_PROFILING), 1)
48a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	CFLAGS += -pg
49a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	LDFLAGS += -pg
50a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillanendif
51a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan
52a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan%.o: %.c $(INC) Makefile
53a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	$(CC) $(CFLAGS) -MMD -MP -I$(IDIR) -c $< -o $@
54a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan
55a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan%.exe: %.o $(LIB) Makefile
56a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	$(LD) $< -L$(LDIR) -l$(LNK) $(LDFLAGS) $(LIBDEP) -o $@
57a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan
58a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan######################################################################
59a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan######################## DO NOT MODIFY BELOW #########################
60a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan######################################################################
61a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan
62a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan.PHONY: all install uninstall showconfig gstat gpush
63a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan
64a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillanall: $(LIB) $(EXE)
65a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan
66a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan$(LIB): $(LOBJ)
67a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	$(AR) -rcs $@ $^
68a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan
69a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan$(EXE): $(LOBJ) $(OBJ)
70a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	$(LD) $(LDFLAGS) $(LOBJ) $(OBJ) -o $(EDIR)/$@
71a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan
72a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillanclean:
73a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	rm -f $(OBJ) $(EXE) $(LOBJ) $(LIB) *.tmp $(SDEPS) $(LSDEPS) $(TSDEPS)
74a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan
75a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillaninstall: $(INC) $(LIB) $(EXE)
76a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	mkdir -p $(DESTDIR)/bin $(DESTDIR)/include $(DESTDIR)/lib
77a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	rm -f .footprint
78a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	echo $(DESTDIR)/bin/$(EXE) >> .footprint
79a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	cp -v $(EXE) $(DESTDIR)/bin/
80a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@for T in $(LIB); \
81a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	do ( \
82a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan		echo $(DESTDIR)/$$T >> .footprint; \
83a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan		cp -v --parents $$T $(DESTDIR) \
84a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	); done
85a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@for T in $(INC); \
86a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	do ( \
87a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan		echo $(DESTDIR)/include/`basename -a $$T` >> .footprint; \
88a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan		cp -v $$T $(DESTDIR)/include/ \
89a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	); done
90a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan
91a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillanuninstall: .footprint
92a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@for T in $(shell cat .footprint); do rm -v $$T; done
93a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan
94a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan-include $(SDEPS) $(LSDEPS)
95a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan
96a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillanshowconfig:
97a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@echo "PWD="$(PWD)
98a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@echo "VERSION="$(VERSION)
99a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@echo "RELEASE="$(RELEASE)
100a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@echo "LIBVER_MAJOR="$(LIBVER_MAJOR)
101a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@echo "LIBVER_MINOR="$(LIBVER_MINOR)
102a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@echo "LIBVER_PATCH="$(LIBVER_PATCH)
103a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@echo "LIBVER="$(LIBVER)
104a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@echo "CROSS="$(CROSS)
105a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@echo "CC="$(CC)
106a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@echo "AR="$(AR)
107a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@echo "LD="$(LD)
108a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@echo "DESTDIR="$(DESTDIR)
109a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@echo "CFLAGS="$(CFLAGS)
110a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@echo "LDFLAGS="$(LDFLAGS)
111a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@echo "SRC="$(SRC)
112a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@echo "OBJ="$(OBJ)
113a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@echo "IDIR="$(IDIR)
114a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@echo "INC="$(INC)
115a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@echo "EDIR="$(EDIR)
116a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@echo "EXE="$(EXE)
117a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@echo "LDIR="$(LDIR)
118a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@echo "LSRC="$(LSRC)
119a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@echo "LOBJ="$(LOBJ)
120a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@echo "LNK="$(LNK)
121a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@echo "LIB="$(LIB)
122a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@echo "SDEPS="$(SDEPS)
123a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	@echo "LSDEPS="$(LSDEPS)
124a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan
125a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillangstat:
126a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	git status
127a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan
128a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillangpush:
129a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	git commit
130a3a479fc2b8f0d74f952a5676c29f07f9cf3c1b0Louis P. Santillan	git push
131