From a7f0e1d1b50a6e9bbb8df2279d36ef33841cd487 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?IOhannes=20m=20zm=C3=B6lnig?= Date: Thu, 10 Feb 2011 11:41:27 +0000 Subject: restructured to allow building of both library and externals svn path=/trunk/externals/iem/iemmatrix/; revision=14893 --- src/Makefile | 107 +++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 63 insertions(+), 44 deletions(-) (limited to 'src') diff --git a/src/Makefile b/src/Makefile index b3a03b9..17ec0fd 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,42 +1,43 @@ default: all -.PHONEY: default all everything dist \ +-include Make.config + +.PHONY: default all everything dist \ clean realclean distclean \ install install-bin install-doc install-abs \ - tests - --include Make.config + tests \ + $(LIBRAY_NAME) library externals VPATH = .:../alias/ +.SUFFIXES: .$(EXT) -## if $(BUILDLIBRARY) is defined, we need to include the aliases -ifeq "$(BUILDLIBRARY)" "" - ALIASOBJECTSOURCES=$(subst ../alias/,,$(sort $(filter %.c, $(wildcard ../alias/*.c)))) -else - ALIASOBJECTSOURCES= -endif TESTDIR=../tests -HELPERSOURCES=$(LIBRARY_NAME)_sources.c $(LIBRARY_NAME).c -OBJECTSOURCES=$(sort $(filter-out $(HELPERSOURCES), $(filter %.c, $(wildcard *.c)))) $(ALIASOBJECTSOURCES) +##################### +# CORE: core library, ought to be statically-linked with each and every .pd_linux +# LHELPER: infrastructure for iemmatrix.pd_linux +# ????: +# ALIAS: alias-objects, MUST NOT be linked statically into iemmatrix.pd_linux -SOURCES=$(OBJECTSOURCES) $(HELPERSOURCES) +CORESRC=$(LIBRARY_NAME)_binops.c $(LIBRARY_NAME)_utility.c +LHELPERSRC=$(LIBRARY_NAME).c $(LIBRARY_NAME)_sources.c +PDOBJECTSRC=$(sort $(filter-out $(LHELPERSRC) $(CORESRC), $(filter %.c, $(wildcard *.c)))) +ALIASSRC=$(subst ../alias/,,$(sort $(filter %.c, $(wildcard ../alias/*.c)))) -configure: configure.ac aclocal.m4 - autoconf +ALLSRC=$(CORESRC) $(LHELPERSRC) $(PDOBJECTSRC) $(ALIASSRC) -aclocal.m4: acinclude.m4 - aclocal +COREOBJ=$(CORESRC:.c=.o) +LHELPEROBJ=$(LHELPERSRC:.c=.o) +PDOBJ=$(PDOBJECTSRC:.c=.o) +ALIASOBJ=$(ALIASSRC:.c=.o) -Make.config: Make.config.in configure - ./configure $(CONFIGUREFLAGS) +PDOBJECTS=$(PDOBJECTSRC:.c=.$(EXT)) +ALIASOBJECTS=$(ALIASSRC:.c=.$(EXT)) -$(LIBRARY_NAME)_sources.c $(LIBRARY_NAME)_sources.h: - ./makesource.sh --include $(SOURCES:.c=.d) +-include $(ALLSRC:.c=.d) ## 2nd only generate depend-files when we have Make.config included ## and thus MAKEDEP_FLAGS defined @@ -50,40 +51,35 @@ ifdef MAKEDEP_FLAGS rm -f $@.$$$$ endif -.SUFFIXES: .$(EXT) - -TARGETS = $(SOURCES:.c=.o) -OBJECTS = $(OBJECTSOURCES:.c=.$(EXT)) - - -debug: - @echo sources $(SOURCES) - @echo alias $(ALIASOBJECTSOURCES) - @echo targets $(TARGETS) - @echo objects $(OBJECTS) - -## if $(BUILDLIBRARY) is defined, we build everything as a single library +## if $(BUILDLIBRARY) is defined, the default is to +## build everything as a single library ## else we build separate externals ifneq "$(BUILDLIBRARY)" "" all: $(LIBRARY_NAME) cp $(LIBRARY_NAME).$(EXT) .. else -all: $(OBJECTS) +all: externals endif -$(OBJECTS): %.$(EXT) : %.o - $(LD) $(LFLAGS) $(AFLAGS) -o $@ $*.o $(LIBS) +%.o : %.c + $(CC) $(LIBRARY_CFLAGS) $(AFLAGS) -c -o $@ $< + +%.$(EXT) : %.o $(COREOBJ) + $(LD) $(LFLAGS) $(AFLAGS) -o $@ $^ $(LIBS) $(STRIP) $(STRIPFLAGS) $@ -$(LIBRARY_NAME): $(TARGETS) $(LIBRARY_NAME)_sources.c $(LIBRARY_NAME)_sources.h - $(LD) $(LFLAGS) $(AFLAGS) -o $@.$(EXT) *.o $(LIBS) - $(STRIP) $(STRIPFLAGS) $@.$(EXT) +$(LIBRARY_NAME).$(EXT): $(COREOBJ) $(LHELPEROBJ) $(PDOBJ) + $(LD) $(LFLAGS) $(AFLAGS) -o $@ $^ $(LIBS) + $(STRIP) $(STRIPFLAGS) $@ -$(TARGETS): %.o : %.c - $(CC) $(LIBRARY_CFLAGS) $(AFLAGS) -c -o $@ $< +$(LIBRARY_NAME): $(LIBRARY_NAME).$(EXT) + @echo "$< done" + +externals: $(PDOBJECTS) $(ALIASOBJECTS) + +library: $(LIBRARY_NAME) -externals: $(OBJECTS) clean: -rm -f *.$(EXT) *.o @@ -120,3 +116,26 @@ dist: all realclean everything: clean all install distclean + +####################### +configure: configure.ac aclocal.m4 + autoconf + +aclocal.m4: acinclude.m4 + aclocal + +Make.config: Make.config.in configure + ./configure $(CONFIGUREFLAGS) + +$(LIBRARY_NAME)_sources.c $(LIBRARY_NAME)_sources.h: + ./makesource.sh +####################### + + + +debug: + @echo SOURCES $(SOURCES) + @echo HELPERSOURCES $(HELPERSOURCES) + @echo ALIASSOURCES $(ALIASOBJECTSOURCES) + @echo TARGETS $(TARGETS) + @echo OBJECTS $(PDOBJECTS) -- cgit v1.2.1