Allow for OS and SUBOS folders so we can introduce NetBSD scripts whilst keeping BSD for all BSD's.
This commit is contained in:
		
							
								
								
									
										27
									
								
								mk/cc.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								mk/cc.mk
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| # Copyright 2008 Roy Marples <roy@marples.name> | ||||
|  | ||||
| # Setup some good default CFLAGS | ||||
|  | ||||
| CFLAGS?=	-O2 -pipe | ||||
| CSTD?=		c99 | ||||
|  | ||||
| # GNU Make way of detecting gcc flags we can use | ||||
| check_gcc=$(shell if ${CC} $(1) -S -o /dev/null -xc /dev/null >/dev/null 2>&1; \ | ||||
| 	then echo "$(1)"; else echo "$(2)"; fi) | ||||
|  | ||||
| # pmake check for extra cflags  | ||||
| WEXTRA!= for x in -Wdeclaration-after-statement -Wsequence-point -Wextra; do \ | ||||
| 	if ${CC} $$x -S -o /dev/null -xc /dev/null >/dev/null 2>&1; \ | ||||
| 	then echo -n "$$x "; fi \ | ||||
| 	done | ||||
|  | ||||
| # Loads of nice flags to ensure our code is good | ||||
| CFLAGS+=	-pedantic -std=${CSTD} \ | ||||
| 		-Wall -Wunused -Wimplicit -Wshadow -Wformat=2 \ | ||||
| 		-Wmissing-declarations -Wno-missing-prototypes -Wwrite-strings \ | ||||
| 		-Wbad-function-cast -Wnested-externs -Wcomment -Winline \ | ||||
| 		-Wchar-subscripts -Wcast-align -Wno-format-nonliteral \ | ||||
| 		$(call check_gcc, -Wdeclaration-after-statement) \ | ||||
| 		$(call check_gcc, -Wsequence-point) \ | ||||
| 		$(call check_gcc, -Wextra) ${WEXTRA} | ||||
|  | ||||
							
								
								
									
										11
									
								
								mk/depend.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								mk/depend.mk
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| # This only works for make implementations that always include a .depend if | ||||
| # it exists. Only GNU make does not do this. | ||||
|  | ||||
| # Copyright 2008 Roy Marples <roy@marples.name> | ||||
|  | ||||
| CLEANFILES+=	.depend | ||||
|  | ||||
| .depend: ${SRCS} | ||||
| 	${CC} ${CFLAGS} -MM ${SRCS} > .depend | ||||
|  | ||||
| depend: .depend | ||||
							
								
								
									
										65
									
								
								mk/lib.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								mk/lib.mk
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,65 @@ | ||||
| # rules to build a library | ||||
| # based on FreeBSD's bsd.lib.mk | ||||
|  | ||||
| # Copyright 2008 Roy Marples | ||||
|  | ||||
| LIBNAME?=		lib | ||||
|  | ||||
| SHLIB_NAME=		lib${LIB}.so.${SHLIB_MAJOR} | ||||
| SHLIB_LINK=		lib${LIB}.so | ||||
| SHLIBDIR?=		/${LIBNAME} | ||||
| SONAME?=		${SHLIB_NAME} | ||||
|  | ||||
| OBJS+=			${SRCS:.c=.o} | ||||
| SOBJS+=			${OBJS:.o=.So} | ||||
| _LIBS=			lib${LIB}.a ${SHLIB_NAME} | ||||
|  | ||||
| ECHO?=			echo | ||||
| AR?=			ar | ||||
| RANLIB?=		ranlib | ||||
| INSTALL?=		install | ||||
|  | ||||
| PICFLAG?=		-fPIC | ||||
|  | ||||
| INCDIR?=		/usr/include | ||||
| INCMODE?=		0444 | ||||
|  | ||||
| LIBDIR?=		/usr/${LIBNAME} | ||||
| LIBMODE?=		0444 | ||||
|  | ||||
| .SUFFIXES:		.So | ||||
|  | ||||
| .c.So: | ||||
| 	${CC} ${PICFLAG} -DPIC ${CFLAGS} -c $< -o $@ | ||||
|  | ||||
| all: depend ${_LIBS} | ||||
|  | ||||
| lib${LIB}.a:	${OBJS} ${STATICOBJS} | ||||
| 	@${ECHO} building static library $@ | ||||
| 	${AR} rc $@ $^ | ||||
| 	${RANLIB} $@ | ||||
|  | ||||
| ${SHLIB_NAME}: ${VERSION_MAP} | ||||
| LDFLAGS+=	-Wl,--version-script=${VERSION_MAP} | ||||
|  | ||||
| ${SHLIB_NAME}:	${SOBJS} | ||||
| 	@${ECHO} building shared library $@ | ||||
| 	@rm -f $@ ${SHLIB_LINK} | ||||
| 	@ln -fs $@ ${SHLIB_LINK} | ||||
| 	${CC} ${LDFLAGS} -shared -Wl,-x \ | ||||
| 	-o $@ -Wl,-soname,${SONAME} \ | ||||
| 	${SOBJS} ${LDADD} | ||||
|  | ||||
| install: all | ||||
| 	${INSTALL} -d ${DESTDIR}${LIBDIR} | ||||
| 	${INSTALL} -m ${LIBMODE} lib${LIB}.a ${DESTDIR}${LIBDIR} | ||||
| 	${INSTALL} -d ${DESTDIR}${SHLIBDIR} | ||||
| 	${INSTALL} -m ${LIBMODE} ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR} | ||||
| 	ln -fs ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}/${SHLIB_LINK} | ||||
| 	${INSTALL} -d ${DESTDIR}${INCDIR} | ||||
| 	for x in ${INCS}; do ${INSTALL} -m ${INCMODE} $$x ${DESTDIR}${INCDIR}; done | ||||
|  | ||||
| clean: | ||||
| 	rm -f ${OBJS} ${SOBJS} ${_LIBS} ${SHLIB_LINK} ${CLEANFILES} | ||||
|  | ||||
| include ${MK}/depend.mk | ||||
							
								
								
									
										3
									
								
								mk/ncurses.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								mk/ncurses.mk
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| LIBTERMCAP?=	-lncurses | ||||
| CFLAGS+=	-DHAVE_TERMCAP | ||||
| LDADD+=		${LIBTERMCAP} | ||||
							
								
								
									
										31
									
								
								mk/os.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								mk/os.mk
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,31 @@ | ||||
| # Copyright 2008 Roy Marples | ||||
|  | ||||
| # Generic definitions | ||||
|  | ||||
| _OS_SH_= uname -s | ||||
| _OS!= ${_OS_SH} | ||||
| OS?= ${_OS}$(shell ${_OS_SH}) | ||||
|  | ||||
| _SUBOS_SH=		case `uname -s` in \ | ||||
| 			*BSD|DragonFly) echo "BSD";; \ | ||||
| 			*) echo "";; \ | ||||
| 			esac | ||||
| _SUBOS!=		${_SUBOS_SH} | ||||
| SUBOS?=		${_SUBOS}$(shell ${_SUBOS_SH}) | ||||
|  | ||||
| _LIBNAME_SH=	l=`readlink /lib`; case "$$l" in /lib64|lib64) echo "lib64";; *) echo "lib";; esac | ||||
| _LIBNAME!=		${_LIBNAME_SH} | ||||
| LIBNAME?=		${_LIBNAME}$(shell ${_LIBNAME_SH}) | ||||
| RC_LIB=			/$(LIBNAME)/rc | ||||
|  | ||||
| _DEF_SH=	case `uname -s` in Linux) echo "-D_XOPEN_SOURCE=600 -D_BSD_SOURCE";; *) echo;; esac | ||||
| _DEF!=		${_DEF_SH} | ||||
| CFLAGS+=	${_DEF}$(shell ${_DEF_SH}) | ||||
|  | ||||
| _LIBDL_SH=	case `uname -s` in Linux) echo "-Wl,-Bdynamic -ldl";; *) echo;; esac | ||||
| _LIBDL!=	${_LIBDL_SH} | ||||
| LIBDL?=		${_LIBDL}$(shell ${_LIBDL_SH}) | ||||
|  | ||||
| _LIBKVM_SH=	case `uname -s` in *BSD) echo "-lkvm";; *) echo;; esac | ||||
| _LIBKVM!=	${_LIBKVM_SH} | ||||
| LIBKVM?=	${_LIBKVM}$(shell ${_LIBKVM_SH}) | ||||
							
								
								
									
										6
									
								
								mk/pam.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								mk/pam.mk
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| LIBPAM?=	-lpam | ||||
| CFLAGS+=	-DHAVE_PAM | ||||
| LDADD+=		${LIBPAM} | ||||
|  | ||||
| PAMDIR?=	/etc/pam.d | ||||
| PAMMODE?=	0644 | ||||
							
								
								
									
										19
									
								
								mk/prog.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								mk/prog.mk
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| # rules to build a library | ||||
| # based on FreeBSD's bsd.prog.mk | ||||
|  | ||||
| # Copyright 2008 Roy Marples | ||||
|  | ||||
| BINDIR?=		/sbin | ||||
| OBJS+=			${SRCS:.c=.o} | ||||
|  | ||||
| INSTALL?=		install | ||||
|  | ||||
| all: depend ${PROG} | ||||
|  | ||||
| ${PROG}: ${SCRIPTS} ${OBJS} | ||||
| 	${CC} ${CFLAGS} ${LDFLAGS} ${PROGLDFLAGS} -o $@ ${OBJS} ${LDADD} | ||||
|  | ||||
| clean: | ||||
| 	rm -f ${OBJS} ${PROG} ${CLEANFILES} | ||||
|  | ||||
| include ${MK}/depend.mk | ||||
							
								
								
									
										34
									
								
								mk/scripts.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								mk/scripts.mk
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | ||||
| # Install rules for our scripts | ||||
| # Copyright 2007-2008 Roy Marples <roy@marples.name> | ||||
|  | ||||
| # We store the contents of the directory for ease of use in Makefiles | ||||
| _CONTENTS_SH=	ls -1 | grep -v Makefile | xargs | ||||
| _CONTENTS!=	${_CONTENTS_SH} | ||||
| CONTENTS=	${_CONTENTS}$(shell ${_CONTENTS_SH}) | ||||
|  | ||||
| INSTALL?=	install | ||||
|  | ||||
| include ${MK}/os.mk | ||||
|  | ||||
| all: | ||||
|  | ||||
| realinstall: ${BIN} ${CONF} ${CONF_APPEND} | ||||
| 	if test -n "${DIR}"; then ${INSTALL} -d ${DESTDIR}${DIR} || exit $$?; fi | ||||
| 	if test -n "${BIN}"; then ${INSTALL} ${BIN} ${DESTDIR}${DIR} || exit $$?; fi | ||||
| 	if test -n "${INC}"; then ${INSTALL} -m 0644 ${INC} ${DESTDIR}${DIR} || exit $$?; fi | ||||
| 	for x in ${CONF}; do \ | ||||
| 	 	if ! test -e ${DESTDIR}${DIR}/$$x; then \ | ||||
| 			${INSTALL} -m 0644 $$x ${DESTDIR}${DIR} || exit $$?; \ | ||||
| 		fi; \ | ||||
| 	done | ||||
| 	for x in ${CONF_APPEND}; do \ | ||||
| 		if test -e ${DESTDIR}${DIR}/$$x; then \ | ||||
| 			cat $$x >> ${DESTDIR}${DIR}/$$x || exit $$?; \ | ||||
| 		else \ | ||||
| 	   		${INSTALL} -m 0644 $$x ${DESTDIR}${DIR} || exit $$?; \ | ||||
| 		fi; \ | ||||
| 	done | ||||
|  | ||||
| install: realinstall ${INSTALLAFTER} | ||||
|  | ||||
| clean: | ||||
							
								
								
									
										39
									
								
								mk/subdir.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								mk/subdir.mk
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | ||||
| # Recursive rules | ||||
| # Adapted from FreeBSDs bsd.subdir.mk | ||||
| # Copyright 2007-2008 Roy Marples <roy@marples.name> | ||||
|  | ||||
| _+_ ?= + | ||||
| ECHODIR ?= echo  | ||||
| _SUBDIR = @${_+_}for x in ${SUBDIR}; do \ | ||||
| 	if test -d $$x; then \ | ||||
| 	${ECHODIR} "===> ${DIRPRFX}$$x (${@:realinstall=install})"; \ | ||||
| 		cd $$x; \ | ||||
| 		${MAKE} ${@:realinstall=install} \ | ||||
| 		DIRPRFX=${DIRPRFX}$$x/ || exit $$?; \ | ||||
| 		cd ..; \ | ||||
| 	fi; \ | ||||
| 	if test -d $$x.${OS}; then \ | ||||
| 	${ECHODIR} "===> ${DIRPRFX}$$x.${OS} (${@:realinstall=install})"; \ | ||||
| 		cd $$x.${OS}; \ | ||||
| 		${MAKE} ${@:realinstall=install} \ | ||||
| 		DIRPRFX=${DIRPRFX}$$x.${OS}/ || exit $$?; \ | ||||
| 		cd ..; \ | ||||
| 	fi; \ | ||||
| 	if test -d $$x.${SUBOS}; then \ | ||||
| 	${ECHODIR} "===> ${DIRPRFX}$$x.${SUBOS} (${@:realinstall=install})"; \ | ||||
| 		cd $$x.${SUBOS}; \ | ||||
| 		${MAKE} ${@:realinstall=install} \ | ||||
| 		DIRPRFX=${DIRPRFX}$$x.${SUBOS}/ || exit $$?; \ | ||||
| 		cd ..; \ | ||||
| 	fi; \ | ||||
| done | ||||
|  | ||||
| all: | ||||
| 	${_SUBDIR} | ||||
| clean: | ||||
| 	${_SUBDIR} | ||||
| realinstall: | ||||
| 	${_SUBDIR} | ||||
| install: realinstall ${INSTALLAFTER} | ||||
| depend: | ||||
| 	${_SUBDIR} | ||||
							
								
								
									
										3
									
								
								mk/termcap.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								mk/termcap.mk
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| LIBTERMCAP?=	-ltermcap | ||||
| CFLAGS+=	-DHAVE_TERMCAP | ||||
| LDADD+=		${LIBTERMCAP} | ||||
		Reference in New Issue
	
	Block a user