summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorBert Münnich <ber.t@posteo.de>2017-10-19 14:07:56 +0200
committerBert Münnich <ber.t@posteo.de>2018-12-29 19:19:11 +0100
commitff1290cbb138dd09b0a3ca842f843b8321b4c3fe (patch)
tree9588b4987f975e6fa29b798cff34fe5b720f6ac2 /Makefile
parentc378e80e4ccbe7c5950230e29d4d44fe162f7d06 (diff)
Handwritten Makefile and config.h; no more GNU autohell
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile133
1 files changed, 133 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..5cd5376
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,133 @@
+PACKAGE = rc
+VERSION = 1.7.4
+DESCRIPTION = $$(cd "$(srcdir)"; git describe --always)
+
+srcdir = .
+VPATH = $(srcdir)
+
+PREFIX = /usr/local
+MANPREFIX = $(PREFIX)/share/man
+
+CC = cc
+DEF_CFLAGS = -Wall
+DEF_CPPFLAGS = -I$(PREFIX)/include
+DEF_LDFLAGS = -L$(PREFIX)/lib
+YACC = byacc
+
+# line editing library: null/edit/editline/readline/vrl
+EDIT = readline
+
+# if your kernel supports `#!' magic numbers
+HASH_BANG = 1
+
+# if system calls automatically restart after interruption by signal
+HAVE_RESTARTABLE_SYSCALLS = 0
+
+# include extra builtins in addon.c
+RC_ADDON = 0
+
+# include parse tree dumper
+RC_DEVELOP = 0
+
+ALL_CFLAGS = $(DEF_CFLAGS) $(CFLAGS)
+REQ_CPPFLAGS = -I. -I"$(srcdir)" \
+ -DPACKAGE=\"$(PACKAGE)\" -DVERSION=\"$(VERSION)\" \
+ -DDESCRIPTION=\"$(DESCRIPTION)\" -DHASH_BANG=$(HASH_BANG) \
+ -DHAVE_RESTARTABLE_SYSCALLS=$(HAVE_RESTARTABLE_SYSCALLS) \
+ -DRC_ADDON=$(RC_ADDON) -DRC_DEVELOP=$(RC_DEVELOP)
+ALL_CPPFLAGS = $(REQ_CPPFLAGS) $(DEF_CPPFLAGS) $(CPPFLAGS)
+ALL_LDFLAGS = $(DEF_LDFLAGS) $(LDFLAGS)
+
+LIB_EDIT_null =
+LIB_EDIT_edit = -ledit
+LIB_EDIT_editline = -leditline
+LIB_EDIT_readline = -lreadline
+LIB_EDIT_vrl = -lvrl
+LDLIBS = $(LIB_EDIT_$(EDIT))
+
+OBJ_ADDON_0 =
+OBJ_ADDON_1 = addon.o
+OBJ_DEVELOP_0 =
+OBJ_DEVELOP_1 = develop.o
+OBJ_EXECVE_0 = execve.o
+OBJ_EXECVE_1 =
+OBJ_SYSTEM_0 = system.o
+OBJ_SYSTEM_1 = system-bsd.o
+OBJS = $(OBJ_ADDON_$(RC_ADDON)) $(OBJ_DEVELOP_$(RC_DEVELOP)) builtins.o \
+ edit-$(EDIT).o except.o exec.o $(OBJ_EXECVE_$(HASH_BANG)) fn.o footobar.o \
+ getopt.o glob.o glom.o hash.o heredoc.o input.o lex.o list.o main.o match.o \
+ nalloc.o open.o parse.o print.o redir.o sigmsgs.o signal.o status.o \
+ $(OBJ_SYSTEM_$(HAVE_RESTARTABLE_SYSCALLS)) tree.o utils.o var.o wait.o \
+ walk.o which.o
+HDRS = addon.h develop.h edit.h getgroups.h input.h jbwrap.h proto.h rc.h \
+ rlimit.h stat.h wait.h
+BINS = history mksignal mkstatval tripping
+
+all: rc
+
+.PHONY: all check clean distclean install trip
+.SUFFIXES:
+.SUFFIXES: .c .o .y
+$(V).SILENT:
+
+rc: $(OBJS)
+ @echo "LINK $@"
+ $(CC) $(ALL_LDFLAGS) $(ALL_CFLAGS) -o $@ $(OBJS) $(LDLIBS)
+
+$(OBJS): Makefile $(HDRS) config.h
+
+.c.o:
+ @echo "CC $@"
+ $(CC) $(ALL_CPPFLAGS) $(ALL_CFLAGS) -c -o $@ $<
+
+config.h:
+ @echo "GEN $@"
+ cp "$(srcdir)/config.def.h" $@
+
+lex.o parse.o: parse.c
+
+.y.c:
+ @echo "GEN $@"
+ $(YACC) -b $* -d $<
+ mv $*.tab.c $*.c
+ mv $*.tab.h $*.h
+
+builtins.o fn.o hash.o sigmsgs.o signal.o status.o: sigmsgs.c
+
+sigmsgs.c: mksignal
+ @echo "GEN $@"
+ ./mksignal
+
+status.o: statval.h
+
+statval.h: mkstatval
+ @echo "GEN $@"
+ ./mkstatval >$@
+
+$(BINS): Makefile rc.h proto.h config.h
+
+.c:
+ @echo "CC $@"
+ $(CC) $(ALL_CPPFLAGS) $(ALL_CFLAGS) -o $@ $<
+
+check: trip
+
+trip: rc tripping
+ ./rc -p <"$(srcdir)/trip.rc"
+
+clean:
+ rm -f *.o $(BINS) rc
+
+distclean: clean
+ rm -f config.h parse.[ch] sigmsgs.[ch] statval.h
+
+install: all
+ @echo "INSTALL bin/rc"
+ mkdir -p $(DESTDIR)$(PREFIX)/bin
+ cp rc $(DESTDIR)$(PREFIX)/bin/
+ chmod 755 $(DESTDIR)$(PREFIX)/bin/rc
+ @echo "INSTALL rc.1"
+ mkdir -p $(DESTDIR)$(MANPREFIX)/man1
+ cp rc.1 $(DESTDIR)$(MANPREFIX)/man1/
+ chmod 644 $(DESTDIR)$(MANPREFIX)/man1/rc.1
+