123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- CC = $(CROSS)$(TARGET)cc
- STRIP = $(CROSS)$(TARGET)strip
- MKDEP = $(CC) -MP -MM -o $*.d $<
- RM = rm -f
- MV = mv -f
-
- BUILD_ID = $(shell date +%Y%m%d_%H%M%S)
- VERSION = $(shell cat RELEASE)
- GIT_VER = $(shell git describe --tags --dirty --always 2>/dev/null)
- ifeq "$(GIT_VER)" ""
- GIT_VER = "release"
- endif
-
- ifndef V
- Q = @
- endif
-
- CFLAGS ?= -O2 -ggdb -pipe -ffunction-sections -fdata-sections \
- -W -Wall -Wextra \
- -Wshadow -Wformat-security -Wstrict-prototypes \
- -Wredundant-decls -Wold-style-definition
-
- uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
-
- LDFLAGS ?= -Wl,--gc-sections
-
- ifeq ($(uname_S),Darwin)
- LDFLAGS :=
- endif
-
- DEFS = -DBUILD_ID=\"$(BUILD_ID)\" \
- -DVERSION=\"$(VERSION)\" -DGIT_VER=\"$(GIT_VER)\"
- DEFS += -D_FILE_OFFSET_BITS=64
-
- PREFIX ?= /usr/local
-
- INSTALL_PRG = tsdumper2
- INSTALL_PRG_DIR = $(subst //,/,$(DESTDIR)/$(PREFIX)/bin)
-
- INSTALL_DOC = tsdumper2.1
- INSTALL_DOC_DIR = $(subst //,/,$(DESTDIR)/$(PREFIX)/share/man/man1)
-
- FUNCS_DIR = libfuncs
- FUNCS_LIB = $(FUNCS_DIR)/libfuncs.a
-
- tsdumper_SRC = \
- udp.c \
- util.c \
- process.c \
- tsdumper2.c
- tsdumper_LIBS = -lpthread
-
- tsdumper_OBJS = $(FUNCS_LIB) $(tsdumper_SRC:.c=.o)
-
- CLEAN_OBJS = tsdumper2 $(tsdumper_SRC:.c=.o) $(tsdumper_SRC:.c=.d)
-
- PROGS = tsdumper2
-
- .PHONY: help distclean clean install uninstall
-
- all: $(PROGS)
-
- $(FUNCS_LIB): $(FUNCS_DIR)/libfuncs.h
- $(Q)echo " MAKE $(FUNCS_LIB)"
- $(Q)$(MAKE) -s -C $(FUNCS_DIR)
-
- tsdumper2: $(tsdumper_OBJS)
- $(Q)echo " LINK tsdumper2"
- $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(DEFS) $(tsdumper_OBJS) $(tsdumper_LIBS) -o tsdumper2
-
- %.o: %.c Makefile RELEASE
- @$(MKDEP)
- $(Q)echo " CC tsdumper2 $<"
- $(Q)$(CC) $(CFLAGS) $(DEFS) -c $<
-
- -include $(tsdumper_SRC:.c=.d)
-
- strip:
- $(Q)echo " STRIP $(PROGS)"
- $(Q)$(STRIP) $(PROGS)
-
- clean:
- $(Q)echo " RM $(CLEAN_OBJS)"
- $(Q)$(RM) $(CLEAN_OBJS)
-
- distclean: clean
- $(Q)$(MAKE) -s -C $(FUNCS_DIR) clean
-
- install: all
- @install -d "$(INSTALL_PRG_DIR)"
- @echo "INSTALL $(INSTALL_PRG) -> $(INSTALL_PRG_DIR)"
- $(Q)-install $(INSTALL_PRG) "$(INSTALL_PRG_DIR)"
- @echo "INSTALL $(INSTALL_DOC) -> $(INSTALL_DOC_DIR)"
- $(Q)-install --mode 0644 $(INSTALL_DOC) "$(INSTALL_DOC_DIR)"
-
- uninstall:
- @-for FILE in $(INSTALL_PRG); do \
- echo "RM $(INSTALL_PRG_DIR)/$$FILE"; \
- rm "$(INSTALL_PRG_DIR)/$$FILE"; \
- done
- @-for FILE in $(INSTALL_DOC); do \
- echo "RM $(INSTALL_DOC_DIR)/$$FILE"; \
- rm "$(INSTALL_DOC_DIR)/$$FILE"; \
- done
-
- help:
- $(Q)echo -e "\
- tsdumper2 $(VERSION) ($(GIT_VER)) build\n\n\
- Build targets:\n\
- tsdumper2|all - Build tsdumper2.\n\
- \n\
- install - Install tsdumper2 in PREFIX ($(PREFIX))\n\
- uninstall - Uninstall tsdumper2 from PREFIX\n\
- \n\
- Cleaning targets:\n\
- clean - Remove tsdumper2 build files\n\
- distclean - Remove all build files\n\
- \n\
- make V=1 Enable verbose build\n\
- make PREFIX=dir Set install prefix\n\
- make CROSS=prefix Cross compile\n"
|