]> git.mdlowis.com Git - proto/albase.git/commitdiff
Added logic to support building artifacts to a build directory. potentially outside...
authorMichael D. Lowis <mike@mdlowis.com>
Fri, 29 Apr 2016 01:05:11 +0000 (21:05 -0400)
committerMichael D. Lowis <mike@mdlowis.com>
Fri, 29 Apr 2016 01:05:11 +0000 (21:05 -0400)
Makefile
source/sh/Rules.mk

index 2c4b2a8c14791c66e1c5d1c8eefda04188eb2813..9f868fee1599a22b6a39ef1a8670a95df449c504 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -11,12 +11,22 @@ DEFS     = -D_XOPEN_SOURCE=700 -D_POSIX_C_SOURCE=200809L
 CPPFLAGS = $(INCS) $(DEFS)
 CFLAGS   = -O2
 LDFLAGS  = $(LIBS)
-BUILD    = $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $<
+BUILD    = $(CC) $(CPPFLAGS) $(CFLAGS) -o $(BINDIR)/$@ $^
+
+# dirs
+BUILDDIR = build
+BINDIR   = $(BUILDDIR)/bin
+OBJDIR   = $(BUILDDIR)/obj
 
 #------------------------------------------------------------------------------
 # Build-Specific Macros
 #------------------------------------------------------------------------------
-BINS = init getty login dmesg sh
+BINS =              \
+    $(BINDIR)/init  \
+    $(BINDIR)/getty \
+    $(BINDIR)/login \
+    $(BINDIR)/dmesg \
+    $(BINDIR)/sh
 
 # load user-specific settings
 -include config.mk
@@ -24,20 +34,23 @@ BINS = init getty login dmesg sh
 #------------------------------------------------------------------------------
 # Phony Targets
 #------------------------------------------------------------------------------
-.PHONY: all
+.PHONY: all dirs
+
+all: dirs $(BINS)
 
-all: $(BINS)
+dirs:
+       mkdir -p $(BINDIR) $(OBJDIR) $(MKSH_OBJDIR)
 
-init: source/init.c
+$(BINDIR)/init: source/init.c
        $(BUILD)
 
-getty: source/getty.c
+$(BINDIR)/getty: source/getty.c
        $(BUILD)
 
-login: source/login.c
+$(BINDIR)/login: source/login.c
        $(BUILD) -lcrypt
 
-dmesg: source/dmesg.c
+$(BINDIR)/dmesg: source/dmesg.c
        $(BUILD)
 
 include source/sh/Rules.mk
index 0f318e311996c4e95ab54b1f0f954c5128fdaf79..f40bb9b7518ecd450f6113508a3b8c2610f558c2 100644 (file)
@@ -1,24 +1,25 @@
-MKSH_SUBDIR = source/sh
 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_OBJS =                  \
-    $(MKSH_SUBDIR)/lalloc.o  \
-    $(MKSH_SUBDIR)/eval.o    \
-    $(MKSH_SUBDIR)/exec.o    \
-    $(MKSH_SUBDIR)/expr.o    \
-    $(MKSH_SUBDIR)/funcs.o   \
-    $(MKSH_SUBDIR)/histrap.o \
-    $(MKSH_SUBDIR)/jobs.o    \
-    $(MKSH_SUBDIR)/lex.o     \
-    $(MKSH_SUBDIR)/main.o    \
-    $(MKSH_SUBDIR)/misc.o    \
-    $(MKSH_SUBDIR)/shf.o     \
-    $(MKSH_SUBDIR)/syn.o     \
-    $(MKSH_SUBDIR)/tree.o    \
-    $(MKSH_SUBDIR)/var.o     \
-    $(MKSH_SUBDIR)/edit.o
+    $(MKSH_OBJDIR)/lalloc.o  \
+    $(MKSH_OBJDIR)/eval.o    \
+    $(MKSH_OBJDIR)/exec.o    \
+    $(MKSH_OBJDIR)/expr.o    \
+    $(MKSH_OBJDIR)/funcs.o   \
+    $(MKSH_OBJDIR)/histrap.o \
+    $(MKSH_OBJDIR)/jobs.o    \
+    $(MKSH_OBJDIR)/lex.o     \
+    $(MKSH_OBJDIR)/main.o    \
+    $(MKSH_OBJDIR)/misc.o    \
+    $(MKSH_OBJDIR)/shf.o     \
+    $(MKSH_OBJDIR)/syn.o     \
+    $(MKSH_OBJDIR)/tree.o    \
+    $(MKSH_OBJDIR)/var.o     \
+    $(MKSH_OBJDIR)/edit.o
 
 MKSH_DEFINES =                  \
     -DMKSH_BUILD_R=523          \
@@ -85,50 +86,50 @@ MKSH_DEFINES =                  \
     -DHAVE_SYS_SIGLIST_DECL=1   \
     -DHAVE_PERSISTENT_HISTORY=1
 
-$(MKSH_BIN): $(MKSH_OBJS)
+$(BINDIR)/$(MKSH_BIN): $(MKSH_OBJS)
        $(MKSH_LDCMD)
 
-$(MKSH_SUBDIR)/lalloc.o: $(MKSH_SUBDIR)/lalloc.c
+$(MKSH_OBJDIR)/lalloc.o: $(MKSH_SUBDIR)/lalloc.c
        $(MKSH_CCCMD)
 
-$(MKSH_SUBDIR)/eval.o: $(MKSH_SUBDIR)/eval.c
+$(MKSH_OBJDIR)/eval.o: $(MKSH_SUBDIR)/eval.c
        $(MKSH_CCCMD)
 
-$(MKSH_SUBDIR)/exec.o: $(MKSH_SUBDIR)/exec.c
+$(MKSH_OBJDIR)/exec.o: $(MKSH_SUBDIR)/exec.c
        $(MKSH_CCCMD)
 
-$(MKSH_SUBDIR)/expr.o: $(MKSH_SUBDIR)/expr.c
+$(MKSH_OBJDIR)/expr.o: $(MKSH_SUBDIR)/expr.c
        $(MKSH_CCCMD)
 
-$(MKSH_SUBDIR)/funcs.o: $(MKSH_SUBDIR)/funcs.c
+$(MKSH_OBJDIR)/funcs.o: $(MKSH_SUBDIR)/funcs.c
        $(MKSH_CCCMD)
 
-$(MKSH_SUBDIR)/histrap.o: $(MKSH_SUBDIR)/histrap.c
+$(MKSH_OBJDIR)/histrap.o: $(MKSH_SUBDIR)/histrap.c
        $(MKSH_CCCMD)
 
-$(MKSH_SUBDIR)/jobs.o: $(MKSH_SUBDIR)/jobs.c
+$(MKSH_OBJDIR)/jobs.o: $(MKSH_SUBDIR)/jobs.c
        $(MKSH_CCCMD)
 
-$(MKSH_SUBDIR)/lex.o: $(MKSH_SUBDIR)/lex.c
+$(MKSH_OBJDIR)/lex.o: $(MKSH_SUBDIR)/lex.c
        $(MKSH_CCCMD)
 
-$(MKSH_SUBDIR)/main.o: $(MKSH_SUBDIR)/main.c
+$(MKSH_OBJDIR)/main.o: $(MKSH_SUBDIR)/main.c
        $(MKSH_CCCMD)
 
-$(MKSH_SUBDIR)/misc.o: $(MKSH_SUBDIR)/misc.c
+$(MKSH_OBJDIR)/misc.o: $(MKSH_SUBDIR)/misc.c
        $(MKSH_CCCMD)
 
-$(MKSH_SUBDIR)/shf.o: $(MKSH_SUBDIR)/shf.c
+$(MKSH_OBJDIR)/shf.o: $(MKSH_SUBDIR)/shf.c
        $(MKSH_CCCMD)
 
-$(MKSH_SUBDIR)/syn.o: $(MKSH_SUBDIR)/syn.c
+$(MKSH_OBJDIR)/syn.o: $(MKSH_SUBDIR)/syn.c
        $(MKSH_CCCMD)
 
-$(MKSH_SUBDIR)/tree.o: $(MKSH_SUBDIR)/tree.c
+$(MKSH_OBJDIR)/tree.o: $(MKSH_SUBDIR)/tree.c
        $(MKSH_CCCMD)
 
-$(MKSH_SUBDIR)/var.o: $(MKSH_SUBDIR)/var.c
+$(MKSH_OBJDIR)/var.o: $(MKSH_SUBDIR)/var.c
        $(MKSH_CCCMD)
 
-$(MKSH_SUBDIR)/edit.o: $(MKSH_SUBDIR)/edit.c
+$(MKSH_OBJDIR)/edit.o: $(MKSH_SUBDIR)/edit.c
        $(MKSH_CCCMD)