summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/.mk0
-rw-r--r--src/Makefile.4
-rw-r--r--src/Makefile.BSD2
-rw-r--r--src/Makefile.Linux2
-rw-r--r--src/Makefile.ncurses2
-rw-r--r--src/Makefile.pam2
-rw-r--r--src/Makefile.termcap4
-rw-r--r--src/cc.mk25
-rw-r--r--src/default.mk34
-rw-r--r--src/lib.mk55
-rw-r--r--src/libeinfo/Makefile14
-rw-r--r--src/libeinfo/einfo.h (renamed from src/einfo.h)0
-rw-r--r--src/libeinfo/einfo.map (renamed from src/einfo.map)0
-rw-r--r--src/libeinfo/libeinfo.c (renamed from src/libeinfo.c)0
-rw-r--r--src/librc/Makefile14
-rw-r--r--src/librc/librc-daemon.c (renamed from src/librc-daemon.c)0
-rw-r--r--src/librc/librc-depend.c (renamed from src/librc-depend.c)0
-rw-r--r--src/librc/librc-depend.h (renamed from src/librc-depend.h)0
-rw-r--r--src/librc/librc-misc.c (renamed from src/librc-misc.c)0
-rw-r--r--src/librc/librc-strlist.c (renamed from src/librc-strlist.c)0
-rw-r--r--src/librc/librc.c (renamed from src/librc.c)0
-rw-r--r--src/librc/librc.h (renamed from src/librc.h)0
-rw-r--r--src/librc/rc.h (renamed from src/rc.h)0
-rw-r--r--src/ncurses.mk3
-rw-r--r--src/os.mk24
-rw-r--r--src/pam.mk6
-rw-r--r--src/prog.mk18
-rw-r--r--src/rc/_usage.c (renamed from src/_usage.c)0
-rw-r--r--src/rc/_usage.h (renamed from src/_usage.h)0
-rw-r--r--src/rc/builtins.h (renamed from src/builtins.h)0
-rw-r--r--src/rc/checkpath.c (renamed from src/checkpath.c)0
-rw-r--r--src/rc/fstabinfo.c (renamed from src/fstabinfo.c)0
-rw-r--r--src/rc/mountinfo.c (renamed from src/mountinfo.c)0
-rw-r--r--src/rc/rc-depend.c (renamed from src/rc-depend.c)0
-rw-r--r--src/rc/rc-logger.c (renamed from src/rc-logger.c)0
-rw-r--r--src/rc/rc-logger.h (renamed from src/rc-logger.h)0
-rw-r--r--src/rc/rc-misc.c (renamed from src/rc-misc.c)0
-rw-r--r--src/rc/rc-plugin.c (renamed from src/rc-plugin.c)0
-rw-r--r--src/rc/rc-plugin.h (renamed from src/rc-plugin.h)0
-rw-r--r--src/rc/rc-status.c (renamed from src/rc-status.c)0
-rw-r--r--src/rc/rc-update.c (renamed from src/rc-update.c)0
-rw-r--r--src/rc/rc.c (renamed from src/rc.c)0
-rw-r--r--src/rc/rc.map (renamed from src/rc.map)0
-rw-r--r--src/rc/runscript.c (renamed from src/runscript.c)0
-rw-r--r--src/rc/start-stop-daemon.c (renamed from src/start-stop-daemon.c)0
-rw-r--r--src/rc/start-stop-daemon.pam (renamed from src/start-stop-daemon.pam)0
-rw-r--r--src/termcap.mk3
-rw-r--r--subdir.mk25
48 files changed, 221 insertions, 16 deletions
diff --git a/src/.mk b/src/.mk
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/.mk
diff --git a/src/Makefile. b/src/Makefile.
deleted file mode 100644
index baa0cf1..0000000
--- a/src/Makefile.
+++ /dev/null
@@ -1,4 +0,0 @@
-# Empty Makefile so that we can do this
-#include Makefile.$(FOO)
-# where FOO is unset.
-# This is needed as not all make implementations can optionally include a Makefile
diff --git a/src/Makefile.BSD b/src/Makefile.BSD
deleted file mode 100644
index a9ef979..0000000
--- a/src/Makefile.BSD
+++ /dev/null
@@ -1,2 +0,0 @@
-LDLIBS_LIBRC += -lkvm
-LDLIBS_RC += -lkvm
diff --git a/src/Makefile.Linux b/src/Makefile.Linux
deleted file mode 100644
index 96a80ab..0000000
--- a/src/Makefile.Linux
+++ /dev/null
@@ -1,2 +0,0 @@
-LDLIBS_RC += -Wl,-Bdynamic -ldl
-CPPFLAGS += -D_BSD_SOURCE -D_XOPEN_SOURCE=500
diff --git a/src/Makefile.ncurses b/src/Makefile.ncurses
deleted file mode 100644
index 204325d..0000000
--- a/src/Makefile.ncurses
+++ /dev/null
@@ -1,2 +0,0 @@
-LIBTERMCAP = -lncurses
-include Makefile.termcap
diff --git a/src/Makefile.pam b/src/Makefile.pam
deleted file mode 100644
index 5f8ff56..0000000
--- a/src/Makefile.pam
+++ /dev/null
@@ -1,2 +0,0 @@
-CPPFLAGS_SSD = -DHAVE_PAM
-LDLIBS_RC += -lpam
diff --git a/src/Makefile.termcap b/src/Makefile.termcap
deleted file mode 100644
index 10f1986..0000000
--- a/src/Makefile.termcap
+++ /dev/null
@@ -1,4 +0,0 @@
-LIBTERMCAP ?= -ltermcap
-CPPFLAGS_LIBEINFO = -DHAVE_TERMCAP
-LDLIBS_LIBEINFO += $(LIBTERMCAP)
-LDLIBS_RC += $(LIBTERMCAP)
diff --git a/src/cc.mk b/src/cc.mk
new file mode 100644
index 0000000..d3c96a6
--- /dev/null
+++ b/src/cc.mk
@@ -0,0 +1,25 @@
+# Copyright 2008 Roy Marples
+
+# Setup some good default CFLAGS
+
+CFLAGS ?= -O2 -pipe
+
+# 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=c99 \
+ -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)
diff --git a/src/default.mk b/src/default.mk
new file mode 100644
index 0000000..10f4fcb
--- /dev/null
+++ b/src/default.mk
@@ -0,0 +1,34 @@
+# Copyright 2007-2008 Roy Marples
+
+CC ?= gcc
+AR ?= ar
+RANLIB ?= ranlib
+CFLAGS += -O2 -pipe
+LDFLAGS += -L.
+PICFLAG = -fPIC
+
+# 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=c99 \
+ -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)
+
+# For debugging. -Werror is pointless due to ISO C issues with dlsym
+#CFLAGS += -ggdb
+
+TOPDIR = ..
+include $(TOPDIR)/default.mk
diff --git a/src/lib.mk b/src/lib.mk
new file mode 100644
index 0000000..947492c
--- /dev/null
+++ b/src/lib.mk
@@ -0,0 +1,55 @@
+# rules to build a library
+# based on FreeBSD's bsd.lib.mk
+
+# Copyright 2008 Roy Marples
+
+SHLIB_NAME= lib${LIB}.so.${SHLIB_MAJOR}
+SHLIB_LINK= lib${LIB}.so
+SHLIBDIR?= /lib
+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
+LIBMODE?= 0444
+
+PICFLAG?= -fPIC
+
+INCDIR?= /usr/include
+INCMODE?= 0444
+
+.SUFFIXES: .So
+
+.c.So:
+ ${CC} ${PICFLAG} -DPIC ${CFLAGS} ${CPPFLAGS} -c $< -o $@
+
+all: ${_LIBS}
+
+lib${LIB}.a: ${OBJS} ${STATICOBJS}
+ @${ECHO} building static library $@
+ ${AR} rc $@ $^
+ ${RANLIB} $@
+
+
+${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:
+ ${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}
diff --git a/src/libeinfo/Makefile b/src/libeinfo/Makefile
new file mode 100644
index 0000000..b682634
--- /dev/null
+++ b/src/libeinfo/Makefile
@@ -0,0 +1,14 @@
+TOPDIR= ..
+include $(TOPDIR)/os.mk
+
+LIB= einfo
+SHLIB_MAJOR= 1
+SRCS= libeinfo.c
+INCS= einfo.h
+
+SHLIBDIR= /${LIBNAME}
+
+include $(TOPDIR)/cc.mk
+include $(TOPDIR)/lib.mk
+include $(TOPDIR)/$(TERMCAP).mk
+
diff --git a/src/einfo.h b/src/libeinfo/einfo.h
index 2720e45..2720e45 100644
--- a/src/einfo.h
+++ b/src/libeinfo/einfo.h
diff --git a/src/einfo.map b/src/libeinfo/einfo.map
index 428a895..428a895 100644
--- a/src/einfo.map
+++ b/src/libeinfo/einfo.map
diff --git a/src/libeinfo.c b/src/libeinfo/libeinfo.c
index d80af9c..d80af9c 100644
--- a/src/libeinfo.c
+++ b/src/libeinfo/libeinfo.c
diff --git a/src/librc/Makefile b/src/librc/Makefile
new file mode 100644
index 0000000..27ea942
--- /dev/null
+++ b/src/librc/Makefile
@@ -0,0 +1,14 @@
+TOPDIR= ..
+include $(TOPDIR)/os.mk
+
+LIB= rc
+SHLIB_MAJOR= 1
+SRCS= librc.c librc-daemon.c librc-depend.c librc-misc.c librc-strlist.c
+INCS= rc.h
+
+CPPFLAGS+= -DLIB=\"${LIBNAME}\"
+
+SHLIBDIR= /${LIBNAME}
+
+include $(TOPDIR)/cc.mk
+include $(TOPDIR)/lib.mk
diff --git a/src/librc-daemon.c b/src/librc/librc-daemon.c
index fe9509d..fe9509d 100644
--- a/src/librc-daemon.c
+++ b/src/librc/librc-daemon.c
diff --git a/src/librc-depend.c b/src/librc/librc-depend.c
index 902d012..902d012 100644
--- a/src/librc-depend.c
+++ b/src/librc/librc-depend.c
diff --git a/src/librc-depend.h b/src/librc/librc-depend.h
index 238f70d..238f70d 100644
--- a/src/librc-depend.h
+++ b/src/librc/librc-depend.h
diff --git a/src/librc-misc.c b/src/librc/librc-misc.c
index dcecc29..dcecc29 100644
--- a/src/librc-misc.c
+++ b/src/librc/librc-misc.c
diff --git a/src/librc-strlist.c b/src/librc/librc-strlist.c
index 815c837..815c837 100644
--- a/src/librc-strlist.c
+++ b/src/librc/librc-strlist.c
diff --git a/src/librc.c b/src/librc/librc.c
index 15309f8..15309f8 100644
--- a/src/librc.c
+++ b/src/librc/librc.c
diff --git a/src/librc.h b/src/librc/librc.h
index cf61217..cf61217 100644
--- a/src/librc.h
+++ b/src/librc/librc.h
diff --git a/src/rc.h b/src/librc/rc.h
index 0020764..0020764 100644
--- a/src/rc.h
+++ b/src/librc/rc.h
diff --git a/src/ncurses.mk b/src/ncurses.mk
new file mode 100644
index 0000000..f1df47f
--- /dev/null
+++ b/src/ncurses.mk
@@ -0,0 +1,3 @@
+LIBTERMCAP?= -lncurses
+CPPFLAGS+= -DHAVE_TERMCAP
+LDADD+= ${LIBTERMCAP}
diff --git a/src/os.mk b/src/os.mk
new file mode 100644
index 0000000..6b8b56d
--- /dev/null
+++ b/src/os.mk
@@ -0,0 +1,24 @@
+# Copyright 2008 Roy Marples
+
+# Generic definitions
+
+_OS_SH= u=`uname -s`; case "$${u}" in *BSD|DragonFly) echo "BSD";; *) echo "$${u}";; esac
+_OS!= $(_OS_SH)
+OS?= $(_OS)$(shell $(_OS_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= /$(LIB)/rc
+
+_DEF_SH= case `uname -s` in Linux) echo "-D_XOPEN_SOURCE=600 -D_BSD_SOURCE";; *) echo;; esac
+_DEF!= $(_DEF_SH)
+CPPFLAGS+= $(_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))
diff --git a/src/pam.mk b/src/pam.mk
new file mode 100644
index 0000000..a9c961e
--- /dev/null
+++ b/src/pam.mk
@@ -0,0 +1,6 @@
+LIBPAM?= -lpam
+CPPFLAGS+= -DHAVE_PAM
+LDADD+= ${LIBPAM}
+
+PAMDIR?= /etc/pam.d
+PAMMODE?= 0644
diff --git a/src/prog.mk b/src/prog.mk
new file mode 100644
index 0000000..1d0f013
--- /dev/null
+++ b/src/prog.mk
@@ -0,0 +1,18 @@
+# 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: ${PROG}
+
+${PROG}: ${SCRIPTS} ${OBJS}
+ ${CC} ${CFLAGS} ${LDFLAGS} ${PROGLDFLAGS} ${CPPFLAGS} -o $@ ${OBJS} ${LDADD}
+
+clean:
+ rm -f ${OBJS} ${PROG} ${CLEANFILES}
diff --git a/src/_usage.c b/src/rc/_usage.c
index b079e32..b079e32 100644
--- a/src/_usage.c
+++ b/src/rc/_usage.c
diff --git a/src/_usage.h b/src/rc/_usage.h
index e4a5fa3..e4a5fa3 100644
--- a/src/_usage.h
+++ b/src/rc/_usage.h
diff --git a/src/builtins.h b/src/rc/builtins.h
index 43a4d9f..43a4d9f 100644
--- a/src/builtins.h
+++ b/src/rc/builtins.h
diff --git a/src/checkpath.c b/src/rc/checkpath.c
index 612a076..612a076 100644
--- a/src/checkpath.c
+++ b/src/rc/checkpath.c
diff --git a/src/fstabinfo.c b/src/rc/fstabinfo.c
index 5f8e469..5f8e469 100644
--- a/src/fstabinfo.c
+++ b/src/rc/fstabinfo.c
diff --git a/src/mountinfo.c b/src/rc/mountinfo.c
index 05ce8dd..05ce8dd 100644
--- a/src/mountinfo.c
+++ b/src/rc/mountinfo.c
diff --git a/src/rc-depend.c b/src/rc/rc-depend.c
index c5e9e66..c5e9e66 100644
--- a/src/rc-depend.c
+++ b/src/rc/rc-depend.c
diff --git a/src/rc-logger.c b/src/rc/rc-logger.c
index 675a4d2..675a4d2 100644
--- a/src/rc-logger.c
+++ b/src/rc/rc-logger.c
diff --git a/src/rc-logger.h b/src/rc/rc-logger.h
index c15e73f..c15e73f 100644
--- a/src/rc-logger.h
+++ b/src/rc/rc-logger.h
diff --git a/src/rc-misc.c b/src/rc/rc-misc.c
index 0d8b8c1..0d8b8c1 100644
--- a/src/rc-misc.c
+++ b/src/rc/rc-misc.c
diff --git a/src/rc-plugin.c b/src/rc/rc-plugin.c
index 613f049..613f049 100644
--- a/src/rc-plugin.c
+++ b/src/rc/rc-plugin.c
diff --git a/src/rc-plugin.h b/src/rc/rc-plugin.h
index 412a47e..412a47e 100644
--- a/src/rc-plugin.h
+++ b/src/rc/rc-plugin.h
diff --git a/src/rc-status.c b/src/rc/rc-status.c
index 155192f..155192f 100644
--- a/src/rc-status.c
+++ b/src/rc/rc-status.c
diff --git a/src/rc-update.c b/src/rc/rc-update.c
index 4f07503..4f07503 100644
--- a/src/rc-update.c
+++ b/src/rc/rc-update.c
diff --git a/src/rc.c b/src/rc/rc.c
index a33b6dc..a33b6dc 100644
--- a/src/rc.c
+++ b/src/rc/rc.c
diff --git a/src/rc.map b/src/rc/rc.map
index e5f8ee3..e5f8ee3 100644
--- a/src/rc.map
+++ b/src/rc/rc.map
diff --git a/src/runscript.c b/src/rc/runscript.c
index 1385bb0..1385bb0 100644
--- a/src/runscript.c
+++ b/src/rc/runscript.c
diff --git a/src/start-stop-daemon.c b/src/rc/start-stop-daemon.c
index bf03dbe..bf03dbe 100644
--- a/src/start-stop-daemon.c
+++ b/src/rc/start-stop-daemon.c
diff --git a/src/start-stop-daemon.pam b/src/rc/start-stop-daemon.pam
index 860a3d5..860a3d5 100644
--- a/src/start-stop-daemon.pam
+++ b/src/rc/start-stop-daemon.pam
diff --git a/src/termcap.mk b/src/termcap.mk
new file mode 100644
index 0000000..7b5058d
--- /dev/null
+++ b/src/termcap.mk
@@ -0,0 +1,3 @@
+LIBTERMCAP?= -ltermcap
+CPPFLAGS+= -DHAVE_TERMCAP
+LDADD+= ${LIBTERMCAP}
diff --git a/subdir.mk b/subdir.mk
new file mode 100644
index 0000000..03bec8c
--- /dev/null
+++ b/subdir.mk
@@ -0,0 +1,25 @@
+# Recursive rules
+# Adapted from FreeBSDs bsd.subdir.mk
+_+_ ?= +
+ECHODIR ?= true
+_SUBDIR = @${_+_}for x in ${SUBDIR}; do \
+ if test -d $$x; then \
+ ${ECHODIR} "===> ${DIRPRFX}$$x ($@)"; \
+ cd $$x; \
+ ${MAKE} $@ DIRPRFX=${DIRPRFX}$$x/ || exit $$?; \
+ cd ..; \
+ fi; \
+ if test -d $$x.${OS}; then \
+ ${ECHODIR} "===> ${DIRPRFX}$$x.${OS} ($@)"; \
+ cd $$x.${OS}; \
+ ${MAKE} $@ DIRPRFX=${DIRPRFX}$$x/ || exit $$?; \
+ cd ..; \
+ fi; \
+done
+
+all:
+ $(_SUBDIR)
+clean:
+ $(_SUBDIR)
+install:
+ $(_SUBDIR)