improve Makefile - xscreenshot - screen capture tool
(HTM) git clone git://git.codemadness.org/xscreenshot
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit a61ce36c878f7bd110fa7c0753efa4d12fbb6304
(DIR) parent 7b7a88a34cf8da48cd07a87357e65cfd54befcaa
(HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Wed, 4 Mar 2020 00:40:39 +0100
improve Makefile
- rm config.mk
- just be verbose.
- fix 'dist' target.
- remove 'options' target.
- change man page location to OpenBSD it's location by default.
- respect system CFLAGS/LDFLAGS asmuch as possible by default.
Diffstat:
M Makefile | 75 +++++++++++++++++++------------
D config.mk | 28 ----------------------------
2 files changed, 47 insertions(+), 56 deletions(-)
---
(DIR) diff --git a/Makefile b/Makefile
@@ -1,42 +1,61 @@
-include config.mk
+.POSIX:
NAME = xscreenshot
-SRC = xscreenshot.c
-OBJ = ${SRC:.c=.o}
+VERSION = 1.0
-all: xscreenshot
+# paths
+PREFIX = /usr/local
+MANPREFIX = ${PREFIX}/man
-options:
- @echo ${NAME} build options:
- @echo "CFLAGS = ${CFLAGS}"
- @echo "LDFLAGS = ${LDFLAGS}"
- @echo "CC = ${CC}"
+INCS = -I/usr/X11R6/include
+LIBS = -L/usr/X11R6/lib -lX11
-.c.o:
- ${CC} -c ${CFLAGS} $<
+# use system flags.
+XSCREENSHOT_CFLAGS = ${CFLAGS} ${INCS}
+XSCREENSHOT_LDFLAGS = ${LDFLAGS} ${LIBS}
+XSCREENSHOT_CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE
+
+BIN = ${NAME}
+SRC = ${BIN:=.c}
+MAN1 = ${BIN:=.1}
+OBJ = ${SRC:.c=.o}
+DOC = \
+ LICENSE\
+ README
-${OBJ}: config.mk
+all: ${BIN}
-xscreenshot: xscreenshot.o
- ${CC} -o $@ xscreenshot.o ${LDFLAGS}
+${OBJ}:
+
+.o:
+ ${CC} ${XSCREENSHOT_LDFLAGS} -o $@ $<
+
+.c.o:
+ ${CC} ${XSCREENSHOT_CFLAGS} ${XSCREENSHOT_CPPFLAGS} -o $@ -c $<
+
+dist:
+ rm -rf "${NAME}-${VERSION}"
+ mkdir -p "${NAME}-${VERSION}"
+ cp -f ${MAN1} ${DOC} ${SRC} Makefile \
+ "${NAME}-${VERSION}"
+ # make tarball
+ tar -cf - "${NAME}-${VERSION}" | \
+ gzip -c > "${NAME}-${VERSION}.tar.gz"
+ rm -rf "${NAME}-${VERSION}"
clean:
- rm -f xscreenshot ${OBJ}
+ rm -f ${BIN} ${OBJ}
install: all
- @echo installing executable file to ${DESTDIR}${PREFIX}/bin
- @mkdir -p ${DESTDIR}${PREFIX}/bin
- @cp -f xscreenshot ${DESTDIR}${PREFIX}/bin
- @chmod 755 ${DESTDIR}${PREFIX}/bin/xscreenshot
- @echo installing manual pages to ${DESTDIR}${MANPREFIX}/man1
- @mkdir -p ${DESTDIR}${MANPREFIX}/man1
- @cp -f xscreenshot.1 ${DESTDIR}${MANPREFIX}/man1
- @chmod 644 ${DESTDIR}${MANPREFIX}/man1/xscreenshot.1
+ mkdir -p ${DESTDIR}${PREFIX}/bin
+ cp -f ${BIN} ${DESTDIR}${PREFIX}/bin
+ chmod 755 ${DESTDIR}${PREFIX}/bin/xscreenshot
+ mkdir -p ${DESTDIR}${MANPREFIX}/man1
+ cp -f ${MAN1} ${DESTDIR}${MANPREFIX}/man1
+ chmod 644 ${DESTDIR}${MANPREFIX}/man1/xscreenshot.1
uninstall:
- @echo removing executable file from ${DESTDIR}${PREFIX}/bin
- @rm -f ${DESTDIR}${PREFIX}/bin/xscreenshot
- @echo removing manual pages from ${DESTDIR}${MANPREFIX}/man1
- @rm -f ${DESTDIR}${MANPREFIX}/man1/xscreenshot.1
+ rm -f ${DESTDIR}${PREFIX}/bin/xscreenshot
+ rm -f ${DESTDIR}${MANPREFIX}/man1/xscreenshot.1
-.PHONY: all options clean dist install uninstall
+.PHONY: all clean dist install uninstall
(DIR) diff --git a/config.mk b/config.mk
@@ -1,28 +0,0 @@
-VERSION = 1.0
-
-# customize below to fit your system
-
-# paths
-PREFIX = /usr/local
-MANPREFIX = ${PREFIX}/share/man
-
-X11INC = /usr/X11R6/include
-X11LIB = /usr/X11R6/lib
-
-# includes and libs
-INCS = -I${X11INC}
-LIBS = -L${X11LIB} -lX11
-
-# flags
-CPPFLAGS = -DVERSION=\"${VERSION}\"
-
-# debug
-CFLAGS = -O0 -g -std=c99 -Wall -pedantic -D_DEFAULT_SOURCE -D_BSD_SOURCE ${INCS} ${CPPFLAGS}
-LDFLAGS = ${LIBS}
-
-# optimized
-#CFLAGS = -O2 -std=c99 -DVERSION=\"${VERSION}\" -D_DEFAULT_SOURCE -D_BSD_SOURCE ${INCS} ${CPPFLAGS}
-#LDFLAGS = -s ${LIBS}
-
-# compiler and linker
-CC = cc