commit 46c67d77fcfc8a32cf0a60ab722fb5179d970a97 Author: Jan Lindemann Date: Fri Jul 6 13:12:14 2001 +0000 $(TOPDIR), make: Initial commit After making most modules independent from the Hamlet tree, place Makefiles in a central location for more centralized control over the build process. diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..d503cada --- /dev/null +++ b/Makefile @@ -0,0 +1,4 @@ +TOPDIR=. +CLEAN = include lib +SUBDIRS = $(shell find . -type d -maxdepth 1 | grep -ve "include\|CVS\|lib" | grep /) +include $(TOPDIR)/make/dirs.mk diff --git a/make/Makefile b/make/Makefile new file mode 100644 index 00000000..2d19a170 --- /dev/null +++ b/make/Makefile @@ -0,0 +1,8 @@ +# generic utility modules +# (c) 2001 jannet it services +# contact@jannet.de +# $Id$ + +TOPDIR = .. + +include $(TOPDIR)/make/text.mk diff --git a/make/defs-orig.mk b/make/defs-orig.mk new file mode 100644 index 00000000..599f7f3b --- /dev/null +++ b/make/defs-orig.mk @@ -0,0 +1,43 @@ +# generic utility modules +# (c) 2001 jannet it services +# contact@jannet.de +# $Id$ + +VERSION = $(shell cat $(TOPDIR)/VERSION) +PROJECT = mod +MOD = mod +LIBNAME = $(MOD) +OBJ = $(patsubst %.cc,%.o,$(patsubst %.c,%.o,$(wildcard *.c *.cc))) +SHOBJS = $(patsubst %.cc,lib%.so$(patsubst %.c,lib%.so,$(wildcard *.c *.cc))) +SHSCRIPTS = $(patsubst %.sh.tmpl,%.sh,$(wildcard *.sh.tmpl)) +SCRIPTS = $(patsubst %.tmpl,%,$(wildcard *.tmpl)) +INST_HDRS = $(patsubst %.h,$(TOPDIR)/include/%.h,$(wildcard *.h)) +PREREQ_DONE = $(patsubst %,$(TOPDIR)/%/all.done,$(LOCAL_PREREQ)) +TEXTCLEAN = $(wildcard *~ .*~ .*.swp \#*\#) +INCLUDE = -I$(TOPDIR)/include +LIBDIR = $(TOPDIR)/lib +LIB = $(LIBDIR)/lib$(LIBNAME).a +MEMBERS = $(LIB)($(OBJ)) +PREFIX = ../ +#MEMWATCH = -DMEMWATCH -DMW_STDIO +#YAMD = yamd- + +#CFLAGS = -DNDEBUG -O2 -g $(INCLUDE) $(LOCAL_CFLAGS) #production +CFLAGS = -Wall -D_DEBUG_ $(MEMWATCH) -g $(INCLUDE) $(LOCAL_CFLAGS) +CPPFLAGS = -Wall -D_DEBUG_ $(MEMWATCH) -g $(INCLUDE) $(LOCAL_CPPFLAGS) +LDFFTW = -lrfftw -lfftw -lm +#LDAUDIO = -laudiofile +LDFLAGS = -L$(LIBDIR) -l$(LIBNAME) -lg++ +LDREST = -ldl $(LDAUDIO) $(LDFFTW) $(LOCAL_LDFLAGS) +CC = $(YAMD)gcc +CPP = c++ +RM = rm +AR = ar +INSTALL = install + +define make_subdirs + set -e; for D in $(SUBDIRS) ; do make -C $$D ; done +endef +define make_subdirs_target + set -e; for D in $(SUBDIRS) ; do make -C $$D $@; done +endef diff --git a/make/dirs.mk b/make/dirs.mk new file mode 100644 index 00000000..27244ec2 --- /dev/null +++ b/make/dirs.mk @@ -0,0 +1,16 @@ +# generic utility modules +# (c) 2001 jannet it services +# contact@jannet.de +# $Id$ + +include $(TOPDIR)/make/defs.mk + +all: + $(make_subdirs) + +clean: + rm -rf $(TEXTCLEAN) $(CLEAN) + $(make_subdirs_target) + +.DEFAULT: + $(make_subdirs_target) diff --git a/make/exe.mk b/make/exe.mk new file mode 100644 index 00000000..b394708c --- /dev/null +++ b/make/exe.mk @@ -0,0 +1,10 @@ +# generic utility modules +# (c) 2001 jannet it services +# contact@jannet.de +# $Id$ + +EXE = $(ALL) +include $(TOPDIR)/make/defs.mk +include $(TOPDIR)/make/rules.mk +clean: execlean localclean +install: $(ALL) installexe diff --git a/make/lib.mk b/make/lib.mk new file mode 100644 index 00000000..7b57bbc9 --- /dev/null +++ b/make/lib.mk @@ -0,0 +1,9 @@ +# generic utility modules +# (c) 2001 jannet it services +# contact@jannet.de +# $Id$ + +include $(TOPDIR)/make/defs.mk +include $(TOPDIR)/make/rules.mk +clean: objclean localclean +install: $(ALL) diff --git a/make/rules.mk b/make/rules.mk new file mode 100644 index 00000000..b66ad1dc --- /dev/null +++ b/make/rules.mk @@ -0,0 +1,76 @@ +# generic utility modules +# (c) 2001 jannet it services +# contact@jannet.de +# $Id$ + +all.done: $(ALL) + touch $@ + +%.done: + make -C $(shell dirname $@) `basename $@` + +$(LIBDIR): + mkdir -p $@ + +#lib$(MOD)(%.o).a: %.c $(LIBDIR) +# $(CC) $(CFLAGS) -c $< -o $*.o +# $(AR) r $@ $*.o +# $(RM) $*.o + +lib%.so: %.o + $(CC) $< $(LDFLAGS) -o $@ + +$(TOPDIR)/include: + mkdir -p $@ + +$(TOPDIR)/include/%.h:%.h $(TOPDIR)/include + cp $< $@ + +%.o: %.c %.h + $(CC) $(CFLAGS) -c $< + +%.o: %.cc %h + $(CPP) $(CPPFLAGS) -c $< + +$(EXE): $(OBJ) $(LIB) + $(CC) $(OBJ) $(LDFLAGS) -o $@ + +$(LIBS): + make -C $(LIBDIR) all + +checkroot: + test `whoami` = root + +installexe: $(ALL) checkroot + $(INSTALL) $(EXE) $(PREFIX)/bin/ + +installso: $(ALL) checkroot + $(INSTALL) $(SHOBJS) $(PREFIX)/lib/ + +installsh: $(ALL) + $(INSTALL) $(SHSCRIPTS) $(PREFIX)/bin/ + +tmpclean: + rm -rf *.tmp + +objclean: + rm -rf core .*.o *.o *.a *.so + +textclean: doneclean + rm -rf $(TEXTCLEAN) + +allclean: + rm -rf $(ALL) + +doneclean: + rm -rf *.done + +execlean: allclean objclean textclean + +distclean: clean objclean textclean tmpclean + +localclean: + rm -rf $(CLEAN) + +libclean: + rm -rf $(LIB) diff --git a/make/scripts.mk b/make/scripts.mk new file mode 100644 index 00000000..2b1272d6 --- /dev/null +++ b/make/scripts.mk @@ -0,0 +1,10 @@ +# generic utility modules +# (c) 2001 jannet it services +# contact@jannet.de +# $Id$ + +ALL = $(SCRIPTS) +include $(TOPDIR)/make/defs.mk +include $(TOPDIR)/make/rules.mk +clean:allclean localclean +#install:installexe diff --git a/make/so.mk b/make/so.mk new file mode 100644 index 00000000..63577343 --- /dev/null +++ b/make/so.mk @@ -0,0 +1,11 @@ +# generic utility modules +# (c) 2001 jannet it services +# contact@jannet.de +# $Id$ + +include $(TOPDIR)/make/defs.mk +ALL = $(SHOBJS) +LDFLAGS := $(LDFLAGS) -shared +include $(TOPDIR)/make/rules.mk +clean: objclean textclean localclean +install: $(ALL) installso diff --git a/make/text.mk b/make/text.mk new file mode 100644 index 00000000..7873a467 --- /dev/null +++ b/make/text.mk @@ -0,0 +1,9 @@ +# generic utility modules +# (c) 2001 jannet it services +# contact@jannet.de +# $Id$ + +include $(TOPDIR)/make/defs.mk +include $(TOPDIR)/make/rules.mk +clean: textclean localclean +install: # nothing to be done diff --git a/make/tools.mk b/make/tools.mk new file mode 100644 index 00000000..c5daf272 --- /dev/null +++ b/make/tools.mk @@ -0,0 +1,10 @@ +# generic utility modules +# (c) 2001 jannet it services +# contact@jannet.de +# $Id$ + +include $(TOPDIR)/make/defs.mk +ALL = $(LIBDIR) $(PREREQ_DONE) $(INST_HDRS) $(MEMBERS) +include $(TOPDIR)/make/rules.mk +clean: objclean textclean localclean +install: $(ALL)