chore: refine Makefile with Makefile Conventions

Users can now do the following:
- use DESTDIR to specify another root dir
- use PREFIX to specify another install path except for /usr/local,
  e.g. /usr for the system package.
- load custom CFLAGS and LDFLAGS from environment variables
- use CC to specify the C compiler

These features are helpful to package it into Linux Distribution.

Signed-off-by: Coelacanthus <CoelacanthusHex@gmail.com>
This commit is contained in:
Coelacanthus 2023-05-27 21:56:32 +08:00
parent d9b3d2b6ae
commit 54b4ae14f8
No known key found for this signature in database
GPG Key ID: E35C89E45867AE35
1 changed files with 16 additions and 14 deletions

View File

@ -1,33 +1,35 @@
.DEFAULT_GOAL := all
.PHONY: all clean install uninstall tncattach
compiler = gcc
flags = -Wall -std=gnu11 -static-libgcc
RM ?= rm
INSTALL ?= install
CC ?= gcc
CFLAGS ?= -Wall -std=gnu11 -static-libgcc
LDFLAGS ?=
PREFIX ?= /usr/local
all: tncattach
rebuild: clean all
clean:
@echo "Cleaning tncattach build..."
@rm -f tncattach
$(RM) -f tncattach
tncattach:
@echo "Making tncattach..."
@echo "Compiling with: ${compiler}"
${compiler} ${flags} tncattach.c Serial.c TCP.c KISS.c TAP.c -o tncattach -Wall
@echo "Compiling with: $(CC)"
$(CC) $(CFLAGS) $(LDFLAGS) tncattach.c Serial.c TCP.c KISS.c TAP.c -o tncattach
install:
@echo "Installing tncattach..."
@chmod a+x tncattach
cp ./tncattach /usr/local/sbin/
$(INSTALL) -d $(DESTDIR)/$(PREFIX)/bin
$(INSTALL) -Dm755 tncattach $(DESTDIR)/$(PREFIX)/bin/tncattach
@echo "Installing man page..."
@mkdir -p /usr/local/man/man8
@install -m 644 -o root -g root tncattach.8 /usr/local/man/man8/tncattach.8
@echo "Updating mandb..."
@mandb -f /usr/local/man/man8/tncattach.8 2> /dev/null 1> /dev/null
@echo "Done"
gzip -9 tncattach.8
$(INSTALL) -d $(DESTDIR)/$(PREFIX)/share/man/man8
$(INSTALL) -Dm644 tncattach.8.gz $(DESTDIR)/$(PREFIX)/share/man/man8/tncattach.8.gz
uninstall:
@echo "Uninstalling tncattach"
rm /usr/local/sbin/tncattach
rm /usr/local/man/man8/tncattach.8
$(RM) $(DESTDIR)/$(PREFIX)/bin/tncattach
$(RM) $(DESTDIR)/$(PREFIX)/share/man/man8/tncattach.8.gz