gpted/Makefile

92 lines
1.8 KiB
Makefile

# Makefile for gpted
PREFIX ?= /usr/local
BINDIR ?= $(PREFIX)/bin
MANDIR ?= $(PREFIX)/share/man
ifeq (,$(VERSION))
VERSION := $(shell git rev-parse --short HEAD)
ifneq (,$(shell git diff-index --name-only HEAD))
VERSION := $(VERSION)-dirty
endif
endif
CC := gcc
AR := ar
LD := gcc
CFLAGS := -g -Wall -Werror
LDFLAGS := -g
LIB_C_SRC := util.c crc32.c gpt.c
TARGET_LIB := libgpt.a
EXE_C_SRC := gpted.c
TARGET_EXE := gpted
ifeq ($(WITH_READLINE),true)
SYSLIBS := -lreadline
else
CFLAGS += -I.
LIB_C_SRC += readline/readline.c
endif
LIB_C_OBJ := $(LIB_C_SRC:.c=.o)
EXE_C_OBJ := $(EXE_C_SRC:.c=.o)
C_SRC := $(LIB_C_SRC) $(EXE_C_SRC)
C_OBJ := $(LIB_C_OBJ) $(EXE_C_OBJ)
all: $(TARGET_EXE)
define cmd_c_compile
$(CC) $(CPPFLAGS) $(CFLAGS) -MD -MP -MF .$(@F:.o=.d) -c -o $@ $<
endef
-include $(wildcard .*.d)
%.o: %.c
$(cmd_c_compile)
verdep := $(shell grep -l "^\#include \"version\.h\"" $(C_SRC))
ifneq ($(verdep),)
$(verdep): version.h
endif
$(TARGET_EXE): $(EXE_C_OBJ) $(TARGET_LIB)
$(LD) $(LDFLAGS) -o $@ $^ $(SYSLIBS)
$(TARGET_LIB): $(LIB_C_OBJ)
$(AR) r $@ $^
version.h:
@echo "/* Autogenerated file. Do not edit. */" > .$@.tmp && \
echo "#ifndef VERSION_H" >> .$@.tmp && \
echo "#define PACKAGE \"$(TARGET)\"" >> .$@.tmp && \
echo "#define VERSION \"$(VERSION)\"" >> .$@.tmp && \
echo "#endif" >> .$@.tmp && \
rm -f $@ && \
mv -f .$@.tmp $@
tags: $(C_SRC)
ctags -R
.PHONY: install
install -D gpted $(DESTDIR)$(BINDIR)
install -D gpted.1 $(DESTDIR)$(MANDIR)/man1
.PHONY: clean
clean:
rm -f core .*.d readline/*.o *.o *.a gpted
.PHONY: distclean
distclean: clean
rm -f .*.d
.PHONY: tarball
tarball: distclean
(d=`basename $PWD`;
cd ..; \
cp -ar $d $d-$(VERSION); \
tar czvf $d-$(VERSION).tar.gz `find $d-$(VERSION) -type f | egrep -v "CVS|debian|\.git"`; \
rm -rf $d-$(VERSION); \
cd $(PWD);