| # Copyright (c) 2015, Louis P. Santillan <lpsantil@gmail.com> |
| # All rights reserved. |
| # See LICENSE for licensing details. |
| DESTDIR ?= /opt/local |
| |
| # Pulled the code below from lib/Makefile. Might be nicer to derive this somehow without sed |
| # Version numbers |
| VERSION ?= 129 |
| RELEASE ?= r$(VERSION) |
| LIBVER_MAJOR=$(shell sed -n '/define LZ4_VERSION_MAJOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < lib/lz4.h) |
| LIBVER_MINOR=$(shell sed -n '/define LZ4_VERSION_MINOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < lib/lz4.h) |
| LIBVER_PATCH=$(shell sed -n '/define LZ4_VERSION_RELEASE/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < lib/lz4.h) |
| LIBVER=$(LIBVER_MAJOR).$(LIBVER_MINOR).$(LIBVER_PATCH) |
| |
| ###################################################################### |
| |
| CROSS ?= i586-pc-msdosdjgpp |
| CC = $(CROSS)-gcc |
| AR = $(CROSS)-ar |
| LD = $(CROSS)-gcc |
| |
| CFLAGS ?= -O3 -std=gnu99 -Wall -Wextra -Wundef -Wshadow -Wcast-qual -Wcast-align -Wstrict-prototypes -pedantic -DLZ4_VERSION=\"$(RELEASE)\" |
| LDFLAGS ?= -s |
| SRC = programs/bench.c programs/lz4io.c programs/lz4cli.c |
| OBJ = $(SRC:.c=.o) |
| SDEPS = $(SRC:.c=.d) |
| IDIR = lib |
| EDIR = . |
| EXE = lz4.exe |
| LNK = lz4 |
| LDIR = lib |
| LSRC = lib/lz4.c lib/lz4hc.c lib/lz4frame.c lib/xxhash.c |
| INC = $(LSRC:.c=.h) |
| LOBJ = $(LSRC:.c=.o) |
| LSDEPS = $(LSRC:.c=.d) |
| LIB = $(LDIR)/lib$(LNK).a |
| |
| # Since LDFLAGS defaults to "-s", probably better to override unless |
| # you have a default you would like to maintain |
| ifeq ($(WITH_DEBUG), 1) |
| CFLAGS += -g |
| LDFLAGS += -g |
| endif |
| |
| # Since LDFLAGS defaults to "-s", probably better to override unless |
| # you have a default you would like to maintain |
| ifeq ($(WITH_PROFILING), 1) |
| CFLAGS += -pg |
| LDFLAGS += -pg |
| endif |
| |
| %.o: %.c $(INC) Makefile |
| $(CC) $(CFLAGS) -MMD -MP -I$(IDIR) -c $< -o $@ |
| |
| %.exe: %.o $(LIB) Makefile |
| $(LD) $< -L$(LDIR) -l$(LNK) $(LDFLAGS) $(LIBDEP) -o $@ |
| |
| ###################################################################### |
| ######################## DO NOT MODIFY BELOW ######################### |
| ###################################################################### |
| |
| .PHONY: all install uninstall showconfig gstat gpush |
| |
| all: $(LIB) $(EXE) |
| |
| $(LIB): $(LOBJ) |
| $(AR) -rcs $@ $^ |
| |
| $(EXE): $(LOBJ) $(OBJ) |
| $(LD) $(LDFLAGS) $(LOBJ) $(OBJ) -o $(EDIR)/$@ |
| |
| clean: |
| rm -f $(OBJ) $(EXE) $(LOBJ) $(LIB) *.tmp $(SDEPS) $(LSDEPS) $(TSDEPS) |
| |
| install: $(INC) $(LIB) $(EXE) |
| mkdir -p $(DESTDIR)/bin $(DESTDIR)/include $(DESTDIR)/lib |
| rm -f .footprint |
| echo $(DESTDIR)/bin/$(EXE) >> .footprint |
| cp -v $(EXE) $(DESTDIR)/bin/ |
| @for T in $(LIB); \ |
| do ( \ |
| echo $(DESTDIR)/$$T >> .footprint; \ |
| cp -v --parents $$T $(DESTDIR) \ |
| ); done |
| @for T in $(INC); \ |
| do ( \ |
| echo $(DESTDIR)/include/`basename -a $$T` >> .footprint; \ |
| cp -v $$T $(DESTDIR)/include/ \ |
| ); done |
| |
| uninstall: .footprint |
| @for T in $(shell cat .footprint); do rm -v $$T; done |
| |
| -include $(SDEPS) $(LSDEPS) |
| |
| showconfig: |
| @echo "PWD="$(PWD) |
| @echo "VERSION="$(VERSION) |
| @echo "RELEASE="$(RELEASE) |
| @echo "LIBVER_MAJOR="$(LIBVER_MAJOR) |
| @echo "LIBVER_MINOR="$(LIBVER_MINOR) |
| @echo "LIBVER_PATCH="$(LIBVER_PATCH) |
| @echo "LIBVER="$(LIBVER) |
| @echo "CROSS="$(CROSS) |
| @echo "CC="$(CC) |
| @echo "AR="$(AR) |
| @echo "LD="$(LD) |
| @echo "DESTDIR="$(DESTDIR) |
| @echo "CFLAGS="$(CFLAGS) |
| @echo "LDFLAGS="$(LDFLAGS) |
| @echo "SRC="$(SRC) |
| @echo "OBJ="$(OBJ) |
| @echo "IDIR="$(IDIR) |
| @echo "INC="$(INC) |
| @echo "EDIR="$(EDIR) |
| @echo "EXE="$(EXE) |
| @echo "LDIR="$(LDIR) |
| @echo "LSRC="$(LSRC) |
| @echo "LOBJ="$(LOBJ) |
| @echo "LNK="$(LNK) |
| @echo "LIB="$(LIB) |
| @echo "SDEPS="$(SDEPS) |
| @echo "LSDEPS="$(LSDEPS) |
| |
| gstat: |
| git status |
| |
| gpush: |
| git commit |
| git push |