# HG changeset patch # User David Demelier # Date 1626876388 -7200 # Node ID 8a7aef194f6a84774c4ad8c5c9a2d7a01fb84683 # Parent 16e66403ea66b49a973b5de1a1cb25f4b727c9a7 make: misc cleanups diff -r 16e66403ea66 -r 8a7aef194f6a GNUmakefile --- a/GNUmakefile Wed Jul 21 15:33:17 2021 +0200 +++ b/GNUmakefile Wed Jul 21 16:06:28 2021 +0200 @@ -16,27 +16,32 @@ # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # -CC= cc -CFLAGS= -Wall -Wextra -std=c11 -D_XOPEN_SOURCE=700 +CC:= cc +CFLAGS:= -Wall -Wextra + +PREFIX:= /usr/local +BINDIR:= ${PREFIX}/bin +ETCDIR:= ${PREFIX}/etc +INCDIR:= ${PREFIX}/include +LIBDIR:= ${PREFIX}/lib +MANDIR:= ${PREFIX}/share/man +SHAREDIR:= ${PREFIX}/share +VARDIR:= ${PREFIX}/var -PREFIX= /usr/local -BINDIR= ${PREFIX}/bin -ETCDIR= ${PREFIX}/etc -INCDIR= ${PREFIX}/include -LIBDIR= ${PREFIX}/lib -MANDIR= ${PREFIX}/share/man -SHAREDIR= ${PREFIX}/share -VARDIR= ${PREFIX}/var -USER= nobody -GROUP= nobody +USER:= nobody +GROUP:= nobody + +SSL:= 1 +JS:= 1 -SSL= 1 -JS= 1 +# No user options below this line. -MAJOR= 4 -MINOR= 0 -PATCH= 0 -VERSION= ${MAJOR}.${MINOR}.${PATCH} +MAJOR:= 4 +MINOR:= 0 +PATCH:= 0 +VERSION:= ${MAJOR}.${MINOR}.${PATCH} + +# {{{ common irccd objects (official C symbols). LIB_SRCS= lib/irccd/channel.c \ lib/irccd/conn.c \ @@ -55,6 +60,10 @@ LIB_OBJS= ${LIB_SRCS:.c=.o} LIB_DEPS= ${LIB_SRCS:.c=.d} +# }}} + +# {{{ irccd + IRCCD_SRCS= irccd/conf.c \ irccd/dl-plugin.c \ irccd/lex.c \ @@ -83,6 +92,10 @@ IRCCD_OBJS= ${IRCCD_SRCS:.c=.o} IRCCD_DEPS= ${IRCCD_SRCS:.c=.d} +# }}} + +# {{{ manual pages + MAN1= man/irccd.1 \ man/irccdctl.1 @@ -114,8 +127,9 @@ MAN7= man/irccd-ipc.7 \ man/irccd-templates.7 -PLUGINS.js= ask auth hangman history joke logger plugin roulette tictactoe -PLUGINS.c= links +# }}} + +# {{{ tests TESTS= tests/test-bot.c \ tests/test-channel.c \ @@ -147,20 +161,26 @@ TESTS_OBJS= ${TESTS:.c=} +# }}} + +# {{{ per OS settings + # Per system commands. OS:= $(shell uname -s) # Compile flags. -DEFS= -DTOP=\"$(shell pwd)\" -fPIC +DEFS:= -std=c11 +DEFS+= -DTOP=\"$(shell pwd)\" +DEFS+= -D_XOPEN_SOURCE=700 ifeq (${DEBUG},1) -CFLAGS+= -O0 -g +DEFS+= -O0 -g else -CFLAGS+= -DNDEBUG -O3 +DEFS+= -DNDEBUG -O3 endif # Include directories. -INCS= -Ilib/ +INCS:= -Ilib/ INCS+= -I./ INCS+= -Iextern/libgreatest/ INCS+= -Iextern/libketopt/ @@ -171,12 +191,12 @@ endif # Whole libraries for every binaries. -LIBS+= -lpthread +LIBS:= -lpthread LIBS+= -lm ifeq (${OS},Linux) LIBS+= -ldl -CFLAGS+= -fPIC +DEFS+= -fPIC endif ifeq (${SSL},1) @@ -186,26 +206,27 @@ # For config.h file. ifeq (${SSL},1) -SED.ssl= s/@define WITH_SSL@/\#define IRCCD_WITH_SSL/ +SED.ssl:= s/@define WITH_SSL@/\#define IRCCD_WITH_SSL/ else -SED.ssl= /@define WITH_SSL@/d - +SED.ssl:= /@define WITH_SSL@/d endif + ifeq (${JS},1) -SED.js= s/@define WITH_JS@/\#define IRCCD_WITH_JS/ +SED.js:= s/@define WITH_JS@/\#define IRCCD_WITH_JS/ else -SED.js= /@define WITH_JS@/d +SED.js:= /@define WITH_JS@/d endif +# Flags to export C symbols from libirccd.a as host application. ifeq (${OS},Darwin) DEFS+= -D_DARWIN_C_SOURCE -SHFLAGS= -undefined dynamic_lookup -ALLFLAGS= -Wl,-all_load +SHFLAGS:= -undefined dynamic_lookup +ALLFLAGS:= -Wl,-all_load else -SHFLAGS= -shared -ALLFLAGS= -Wl,--whole-archive -NOALLFLAGS= -Wl,--no-whole-archive -EXFLAGS= -Wl,-E +SHFLAGS:= -shared +ALLFLAGS:= -Wl,--whole-archive +NOALLFLAGS:= -Wl,--no-whole-archive +EXFLAGS:= -Wl,-E endif CMD.cc= ${CC} ${DEFS} ${INCS} ${CFLAGS} -MMD -c $< -o $@ @@ -213,8 +234,12 @@ CMD.cchost= ${CC} -o $@ ${DEFS} ${INCS} ${CFLAGS} ${EXFLAGS} ${ALLFLAGS} $^ ${NOALLFLAGS} ${LIBS} ${LDFLAGS} CMD.ccplg= ${CC} ${DEFS} ${INCS} ${CFLAGS} ${SHFLAGS} -o $@ $< ${LIBS} ${LDFLAGS} -.SUFFIXES: -.SUFFIXES: .c .o .js +# }}} + +# {{{ plugins + +PLUGINS.js= ask auth hangman history joke logger plugin roulette tictactoe +PLUGINS.c= links # Template for Javascript plugins. define js-plugin = @@ -249,6 +274,11 @@ cp plugins/${1}/${1}.7 ${DESTDIR}${MANDIR}/man7/irccd-plugin-${1}.7 endef +# }}} + +.SUFFIXES: +.SUFFIXES: .c .o .js + .c.o: ${CMD.cc}