aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2008-01-05 19:25:55 +0000
committerRoy Marples <roy@marples.name>2008-01-05 19:25:55 +0000
commitac21d75300dabe83578e4373fcfd09d67c3a083b (patch)
treed5f8e2a16920add2277c79ff8a1b7e99ec2976df
parent112fbde453d55c49b7999d2e35496a8758aaa7b5 (diff)
Add some .mk stubs to impersonate bsk .mk files to make writing our Makefiles easier. libeinfo, librc and rc now have their own seperate directories. More work is needed to tidy this up though.
-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 00000000..e69de29b
--- /dev/null
+++ b/src/.mk
diff --git a/src/Makefile. b/src/Makefile.
deleted file mode 100644
index baa0cf1c..00000000
--- 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 a9ef9791..00000000
--- 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 96a80ab9..00000000
--- 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 204325dd..00000000
--- 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 5f8ff569..00000000
--- 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 10f19865..00000000
--- 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 00000000..d3c96a65
--- /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 00000000..10f4fcb2
--- /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 00000000..947492c1
--- /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 00000000..b6826340
--- /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 2720e458..2720e458 100644
--- a/src/einfo.h
+++ b/src/libeinfo/einfo.h
diff --git a/src/einfo.map b/src/libeinfo/einfo.map
index 428a8954..428a8954 100644
--- a/src/einfo.map
+++ b/src/libeinfo/einfo.map
diff --git a/src/libeinfo.c b/src/libeinfo/libeinfo.c
index d80af9c0..d80af9c0 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 00000000..27ea942c
--- /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 fe9509de..fe9509de 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 902d012f..902d012f 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 238f70d1..238f70d1 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 dcecc293..dcecc293 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 815c8370..815c8370 100644
--- a/src/librc-strlist.c
+++ b/src/librc/librc-strlist.c
diff --git a/src/librc.c b/src/librc/librc.c
index 15309f87..15309f87 100644
--- a/src/librc.c
+++ b/src/librc/librc.c
diff --git a/src/librc.h b/src/librc/librc.h
index cf61217a..cf61217a 100644
--- a/src/librc.h
+++ b/src/librc/librc.h
diff --git a/src/rc.h b/src/librc/rc.h
index 0020764e..0020764e 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 00000000..f1df47f0
--- /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 00000000..6b8b56d9
--- /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 00000000..a9c961ed
--- /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 00000000..1d0f013f
--- /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 b079e320..b079e320 100644
--- a/src/_usage.c
+++ b/src/rc/_usage.c
diff --git a/src/_usage.h b/src/rc/_usage.h
index e4a5fa3b..e4a5fa3b 100644
--- a/src/_usage.h
+++ b/src/rc/_usage.h
diff --git a/src/builtins.h b/src/rc/builtins.h
index 43a4d9f9..43a4d9f9 100644
--- a/src/builtins.h
+++ b/src/rc/builtins.h
diff --git a/src/checkpath.c b/src/rc/checkpath.c
index 612a0769..612a0769 100644
--- a/src/checkpath.c
+++ b/src/rc/checkpath.c
diff --git a/src/fstabinfo.c b/src/rc/fstabinfo.c
index 5f8e469a..5f8e469a 100644
--- a/src/fstabinfo.c
+++ b/src/rc/fstabinfo.c
diff --git a/src/mountinfo.c b/src/rc/mountinfo.c
index 05ce8dd7..05ce8dd7 100644
--- a/src/mountinfo.c
+++ b/src/rc/mountinfo.c
diff --git a/src/rc-depend.c b/src/rc/rc-depend.c
index c5e9e662..c5e9e662 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 675a4d23..675a4d23 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 c15e73f8..c15e73f8 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 0d8b8c1f..0d8b8c1f 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 613f049e..613f049e 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 412a47e7..412a47e7 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 155192fa..155192fa 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 4f07503f..4f07503f 100644
--- a/src/rc-update.c
+++ b/src/rc/rc-update.c
diff --git a/src/rc.c b/src/rc/rc.c
index a33b6dcf..a33b6dcf 100644
--- a/src/rc.c
+++ b/src/rc/rc.c
diff --git a/src/rc.map b/src/rc/rc.map
index e5f8ee34..e5f8ee34 100644
--- a/src/rc.map
+++ b/src/rc/rc.map
diff --git a/src/runscript.c b/src/rc/runscript.c
index 1385bb02..1385bb02 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 bf03dbec..bf03dbec 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 860a3d52..860a3d52 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 00000000..7b5058db
--- /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 00000000..03bec8c3
--- /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)