From 3973d0a43c1f524d1864245db9d90af4a5c16664 Mon Sep 17 00:00:00 2001 From: Mike Lowis Date: Mon, 2 May 2016 15:34:42 -0400 Subject: [PATCH] Updated build to have convenience phony targets and to ensure build dirs get created before real targets --- Makefile | 53 +++++++++++------------------- source/Rules.mk | 25 ++++++++++++++ source/sh/Rules.mk | 81 ++++++---------------------------------------- 3 files changed, 52 insertions(+), 107 deletions(-) create mode 100644 source/Rules.mk diff --git a/Makefile b/Makefile index d0a38e89..06eb45cd 100644 --- a/Makefile +++ b/Makefile @@ -18,50 +18,33 @@ BUILDDIR = build BINDIR = $(BUILDDIR)/bin OBJDIR = $(BUILDDIR)/obj +# targets +BINS = +ECLEAN = + #------------------------------------------------------------------------------ -# Build-Specific Macros +# Ensure The Build Dir Exists #------------------------------------------------------------------------------ -BINS = \ - $(BINDIR)/init \ - $(BINDIR)/getty \ - $(BINDIR)/login \ - $(BINDIR)/dmesg \ - $(BINDIR)/mount \ - $(BINDIR)/sh - -# load user-specific settings --include config.mk +$(BUILDDIR)/dummy: + mkdir -p $(BUILDDIR) $(BINDIR) $(OBJDIR) $(MKSH_OBJDIR) + touch $@ +-include $(BUILDDIR)/dummy #------------------------------------------------------------------------------ -# Phony Targets +# Build Rules #------------------------------------------------------------------------------ -.PHONY: all dirs - -all: dirs $(BINS) - -dirs: - mkdir -p $(BINDIR) $(OBJDIR) $(MKSH_OBJDIR) - -$(BINDIR)/init: source/init.c - $(BUILD) - -$(BINDIR)/getty: source/getty.c - $(BUILD) - -$(BINDIR)/login: source/login.c - $(BUILD) -lcrypt - -$(BINDIR)/dmesg: source/dmesg.c - $(BUILD) +include source/Rules.mk +include source/sh/Rules.mk -$(BINDIR)/mount: source/mount.c - $(BUILD) +.PHONY: all $(BINS) -include source/sh/Rules.mk +all: $(BINS) clean: - $(RM) $(BINS) $(MKSH_OBJS) + $(RM) $(ECLEAN) -# load dependency files +# load dependency files if they exist -include $(DEPS) +# load user-specific settings if they exist +-include config.mk diff --git a/source/Rules.mk b/source/Rules.mk new file mode 100644 index 00000000..a585cafc --- /dev/null +++ b/source/Rules.mk @@ -0,0 +1,25 @@ +SRC_SUBDIR = source +SRC_BINS = init getty login dmesg mount +BINS += $(SRC_BINS) +ECLEAN += $(addprefix $(BINDIR)/, $(SRC_BINS)) + +init: $(BINDIR)/init +$(BINDIR)/init: $(SRC_SUBDIR)/init.c + $(BUILD) + +getty: $(BINDIR)/getty +$(BINDIR)/getty: $(SRC_SUBDIR)/getty.c + $(BUILD) + +login: $(BINDIR)/login +$(BINDIR)/login: $(SRC_SUBDIR)/login.c + $(BUILD) -lcrypt + +dmesg: $(BINDIR)/dmesg +$(BINDIR)/dmesg: $(SRC_SUBDIR)/dmesg.c + $(BUILD) + +mount: $(BINDIR)/mount +$(BINDIR)/mount: $(SRC_SUBDIR)/mount.c + $(BUILD) + diff --git a/source/sh/Rules.mk b/source/sh/Rules.mk index d945c8ae..d959831c 100644 --- a/source/sh/Rules.mk +++ b/source/sh/Rules.mk @@ -1,8 +1,10 @@ -MKSH_BIN = sh -MKSH_SUBDIR = source/sh -MKSH_OBJDIR = $(OBJDIR)/sh -MKSH_CCCMD = $(CC) $(CFLAGS) -I$(MKSH_SUBDIR) $(MKSH_DEFINES) -c -o $@ $^ -MKSH_LDCMD = $(CC) -o $@ $^ +MKSH_BIN = sh +MKSH_SUBDIR = source/sh +MKSH_OBJDIR = $(OBJDIR)/sh +MKSH_CCCMD = $(CC) $(CFLAGS) -I$(MKSH_SUBDIR) $(MKSH_DEFINES) -c -o $@ $^ +MKSH_LDCMD = $(CC) -o $@ $^ +BINS += $(MKSH_BIN) +ECLEAN += $(BINDIR)/$(MKSH_BIN) $(MKSH_OBJS) MKSH_OBJS = \ $(MKSH_OBJDIR)/lalloc.o \ @@ -87,6 +89,8 @@ MKSH_DEFINES = \ -DHAVE_SYS_SIGLIST_DECL=1 \ -DHAVE_PERSISTENT_HISTORY=1 +sh: $(BINDIR)/$(MKSH_BIN) + $(BINDIR)/$(MKSH_BIN): $(MKSH_OBJS) $(MKSH_LDCMD) @@ -138,70 +142,3 @@ $(MKSH_OBJDIR)/edit.o: $(MKSH_SUBDIR)/edit.c $(MKSH_OBJDIR)/strlcpy.o: $(MKSH_SUBDIR)/strlcpy.c $(MKSH_CCCMD) - - -#-DMKSH_BUILDSH -#-D_GNU_SOURCE -#-DSETUID_CAN_FAIL_WITH_EAGAIN -#-DHAVE_ATTRIBUTE_BOUNDED=0 -#-DHAVE_ATTRIBUTE_FORMAT=1 -#-DHAVE_ATTRIBUTE_NORETURN=1 -#-DHAVE_ATTRIBUTE_PURE=1 -#-DHAVE_ATTRIBUTE_UNUSED=1 -#-DHAVE_ATTRIBUTE_USED=1 -#-DHAVE_SYS_TIME_H=1 -#-DHAVE_TIME_H=1 -#-DHAVE_BOTH_TIME_H=1 -#-DHAVE_SYS_BSDTYPES_H=0 -#-DHAVE_SYS_FILE_H=1 -#-DHAVE_SYS_MKDEV_H=0 -#-DHAVE_SYS_MMAN_H=1 -#-DHAVE_SYS_PARAM_H=1 -#-DHAVE_SYS_RESOURCE_H=1 -#-DHAVE_SYS_SELECT_H=1 -#-DHAVE_SYS_SYSMACROS_H=1 -#-DHAVE_BSTRING_H=0 -#-DHAVE_GRP_H=1 -#-DHAVE_IO_H=0 -#-DHAVE_LIBGEN_H=1 -#-DHAVE_LIBUTIL_H=0 -#-DHAVE_PATHS_H=1 -#-DHAVE_STDINT_H=1 -#-DHAVE_STRINGS_H=1 -#-DHAVE_TERMIOS_H=1 -#-DHAVE_ULIMIT_H=1 -#-DHAVE_VALUES_H=1 -#-DHAVE_CAN_INTTYPES=1 -#-DHAVE_CAN_UCBINTS=1 -#-DHAVE_CAN_INT8TYPE=1 -#-DHAVE_CAN_UCBINT8=1 -#-DHAVE_RLIM_T=1 -#-DHAVE_SIG_T=1 -#-DHAVE_SYS_ERRLIST=1 -#-DHAVE_SYS_SIGNAME=0 -#-DHAVE_SYS_SIGLIST=1 -#-DHAVE_FLOCK=1 -#-DHAVE_LOCK_FCNTL=1 -#-DHAVE_GETRUSAGE=1 -#-DHAVE_GETSID=1 -#-DHAVE_GETTIMEOFDAY=1 -#-DHAVE_KILLPG=1 -#-DHAVE_MEMMOVE=1 -#-DHAVE_MKNOD=0 -#-DHAVE_MMAP=1 -#-DHAVE_NICE=1 -#-DHAVE_REVOKE=0 -#-DHAVE_SETLOCALE_CTYPE=1 -#-DHAVE_LANGINFO_CODESET=1 -#-DHAVE_SELECT=1 -#-DHAVE_SETRESUGID=1 -#-DHAVE_SETGROUPS=1 -#-DHAVE_STRERROR=0 -#-DHAVE_STRSIGNAL=0 -#-DHAVE_STRLCPY=0 -#-DHAVE_FLOCK_DECL=1 -#-DHAVE_REVOKE_DECL=1 -#-DHAVE_SYS_ERRLIST_DECL=1 -#-DHAVE_SYS_SIGLIST_DECL=1 -#-DHAVE_PERSISTENT_HISTORY=1 -#-DMKSH_BUILD_R=523 -- 2.54.0