Give the core its own Makefile.
authorDavid Griffith <dave@661.org>
Tue, 27 Mar 2018 17:42:14 +0000 (10:42 -0700)
committerDavid Griffith <dave@661.org>
Tue, 27 Mar 2018 17:42:14 +0000 (10:42 -0700)
Makefile
src/common/Makefile [new file with mode: 0644]

index 41b9c50f031c453698c3f34fd406564d51cfe5b6..98176a4d7f100ba3ccce4e933d0c5485f3a0085e 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -19,6 +19,7 @@ else
        GIT_TAG = $(VERSION)
 endif
 
+
 BUILD_DATE_TIME = $(shell date +%Y%m%d.%k%M%S | sed s/\ //g)
 
 export CFLAGS
@@ -115,26 +116,29 @@ CURSES ?= -lncurses
 SRCDIR = src
 
 COMMON_DIR = $(SRCDIR)/common
+COMMON_LIB = $(COMMON_DIR)/frotz_common.a
 COMMON_DEFINES = $(COMMON_DIR)/defines.h
-COMMON_OBJECT = $(COMMON_DIR)/buffer.o \
-       $(COMMON_DIR)/err.o \
-       $(COMMON_DIR)/fastmem.o \
-       $(COMMON_DIR)/files.o \
-       $(COMMON_DIR)/hotkey.o \
-       $(COMMON_DIR)/input.o \
-       $(COMMON_DIR)/main.o \
-       $(COMMON_DIR)/math.o \
-       $(COMMON_DIR)/object.o \
-       $(COMMON_DIR)/process.o \
-       $(COMMON_DIR)/quetzal.o \
-       $(COMMON_DIR)/random.o \
-       $(COMMON_DIR)/redirect.o \
-       $(COMMON_DIR)/screen.o \
-       $(COMMON_DIR)/sound.o \
-       $(COMMON_DIR)/stream.o \
-       $(COMMON_DIR)/table.o \
-       $(COMMON_DIR)/text.o \
-       $(COMMON_DIR)/variable.o
+HASH = $(COMMON_DIR)/git_hash.h
+
+#COMMON_OBJECT = $(COMMON_DIR)/buffer.o \
+#      $(COMMON_DIR)/err.o \
+#      $(COMMON_DIR)/fastmem.o \
+#      $(COMMON_DIR)/files.o \
+#      $(COMMON_DIR)/hotkey.o \
+#      $(COMMON_DIR)/input.o \
+#      $(COMMON_DIR)/main.o \
+#      $(COMMON_DIR)/math.o \
+#      $(COMMON_DIR)/object.o \
+#      $(COMMON_DIR)/process.o \
+#      $(COMMON_DIR)/quetzal.o \
+#      $(COMMON_DIR)/random.o \
+#      $(COMMON_DIR)/redirect.o \
+#      $(COMMON_DIR)/screen.o \
+#      $(COMMON_DIR)/sound.o \
+#      $(COMMON_DIR)/stream.o \
+#      $(COMMON_DIR)/table.o \
+#      $(COMMON_DIR)/text.o \
+#      $(COMMON_DIR)/variable.o
 
 CURSES_DIR = $(SRCDIR)/curses
 CURSES_LIB = $(CURSES_DIR)/frotz_curses.a
@@ -169,14 +173,15 @@ SDL_LIB = $(SDL_DIR)/frotz_sdl.a
 export SDL_PKGS = libpng libjpeg sdl SDL_mixer freetype2 zlib
 SDL_LDFLAGS = `pkg-config $(SDL_PKGS) --libs`
 
-OBJECTS = $(COMMON_OBJECT)# $(CURSES_OBJECT)
+#OBJECTS = $(COMMON_OBJECT)# $(CURSES_OBJECT)
 
-SUBDIRS = $(CURSES_DIR) $(SDL_DIR) $(DUMB_DIR) $(BLORB_DIR)
+SUBDIRS = $(COMMON_DIR) $(CURSES_DIR) $(SDL_DIR) $(DUMB_DIR) $(BLORB_DIR)
 SUB_CLEAN = $(SUBDIRS:%=%-clean)
 
 all: frotz dfrotz sfrotz
 
-$(CURSES_LIB): $(CURSES_DIR);
+$(COMMON_LIB): $(COMMON_DEFINES) $(HASH) $(COMMON_DIR);
+$(CURSES_LIB): $(CURSES_DEFINES) $(CURSES_DIR);
 $(SDL_LIB): $(SDL_DIR);
 $(DUMB_LIB): $(DUMB_DIR);
 $(BLORB_LIB): $(BLORB_DIR);
@@ -187,15 +192,16 @@ $(SUBDIRS):
 $(SUB_CLEAN):
        $(MAKE) -C $(@:%-clean=%) clean
 
+
 # Main programs
 
-frotz:  $(CURSES_DEFINES) $(SRCDIR)/frotz_common.a $(CURSES_LIB) $(BLORB_LIB)
+frotz:  $(COMMON_LIB) $(CURSES_LIB) $(BLORB_LIB)
        $(CC) $(CFLAGS) $^ -o $@$(EXTENSION) $(CURSES) $(LDFLAGS)
 
-dfrotz:  $(SRCDIR)/frotz_common.a $(DUMB_LIB) $(BLORB_LIB)
+dfrotz: $(COMMON_LIB) $(DUMB_LIB) $(BLORB_LIB)
        $(CC) $(CFLAGS) $^ -o $@$(EXTENSION)
 
-sfrotz: $(SRCDIR)/frotz_common.a $(SDL_LIB) $(BLORB_LIB)
+sfrotz: $(COMMON_LIB) $(SDL_LIB) $(BLORB_LIB)
        $(CC) $(CFLAGS) $^ -o $@$(EXTENSION) $(LDFLAGS) $(SDL_LDFLAGS)
 
 # Libs
@@ -207,8 +213,8 @@ sfrotz: $(SRCDIR)/frotz_common.a $(SDL_LIB) $(BLORB_LIB)
 %.o: %.c
        $(CC) $(CFLAGS) -fPIC -fpic -o $@ -c $<
 
-common_lib: $(SRCDIR)/frotz_common.a
-$(SRCDIR)/frotz_common.a: $(COMMON_DIR)/git_hash.h $(COMMON_DEFINES) $(COMMON_OBJECT)
+common_lib:    $(COMMON_LIB)
+$(COMMON_LIB):
 
 curses_lib:    $(CURSES_LIB)
 $(CURSES_LIB):
@@ -219,6 +225,10 @@ $(DUMB_LIB):
 blorb_lib:     $(BLORB_LIB)
 $(BLORB_LIB):
 
+
+#common_lib: $(SRCDIR)/frotz_common.a
+#$(SRCDIR)/frotz_common.a: $(COMMON_DIR)/git_hash.h $(COMMON_DEFINES) $(COMMON_OBJECT)
+
 #curses_lib: $(SRCDIR)/frotz_curses.a
 #$(SRCDIR)/frotz_curses.a: $(CURSES_DIR)/defines.h $(CURSES_OBJECT)
 
@@ -264,9 +274,9 @@ ifdef NO_MEMMOVE
        @echo "#define NO_MEMMOVE" >> $@
 endif
 
-hash: $(COMMON_DIR)/git_hash.h
-$(COMMON_DIR)/git_hash.h:
-       @echo "Creating $(COMMON_DIR)/git_hash.h"
+hash: $(HASH)
+$(HASH):
+       @echo "Creating $@"
        @echo "#define GIT_BRANCH \"$(GIT_BRANCH)\"" > $(COMMON_DIR)/git_hash.h
        @echo "#define GIT_HASH \"$(GIT_HASH)\"" >> $(COMMON_DIR)/git_hash.h
        @echo "#define GIT_HASH_SHORT \"$(GIT_HASH_SHORT)\"" >> $(COMMON_DIR)/git_hash.h
diff --git a/src/common/Makefile b/src/common/Makefile
new file mode 100644 (file)
index 0000000..accf788
--- /dev/null
@@ -0,0 +1,26 @@
+# For GNU Make.
+
+SOURCES = buffer.c err.c fastmem.c files.c getopt.c hotkey.c input.c \
+       main.c math.c object.c process.c quetzal.c random.c redirect.c \
+       screen.c sound.c stream.c table.c text.c variable.c
+
+HEADERS = frotz.h setup.h unused.h
+
+OBJECTS = $(SOURCES:.c=.o)
+
+TARGET = frotz_common.a
+
+ARFLAGS = rc
+
+.PHONY: clean
+.DELETE_ON_ERROR:
+
+$(TARGET): $(OBJECTS)
+       $(AR) $(ARFLAGS) $@ $?
+       ranlib $@
+
+clean:
+       rm -f $(TARGET) $(OBJECTS)
+
+%.o: %.c
+       $(CC) $(CFLAGS) -fPIC -fpic -o $@ -c $<