From f2325e6ecb1522a72d6f6ad426e3341b3fcff87e Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Wed, 12 Nov 2014 21:52:47 +0100 Subject: [PATCH] Added support for building with OBJDIR --- Makefile | 18 ++++++++++-- data/Makefile | 9 +++--- doc/Makefile | 21 +++++++------- doc/gtkdoc/tmpl/CPP-unused.sgml | 28 +++++++++++++++++++ doc/project.conf | 6 ++-- include/Makefile | 1 + src/Makefile | 49 +++++++++++++++++---------------- src/project.conf | 4 +-- tests/Makefile | 21 +++++++------- tests/cpp.sh | 9 ++++-- 10 files changed, 108 insertions(+), 58 deletions(-) diff --git a/Makefile b/Makefile index f7008e8..aaf740a 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,8 @@ VERSION = 0.0.1 SUBDIRS = data doc include src tests RM = rm -f LN = ln -f -TAR = tar -czvf +TAR = tar +MKDIR = mkdir -m 0755 -p all: subdirs @@ -20,7 +21,7 @@ distclean: dist: $(RM) -r -- $(PACKAGE)-$(VERSION) $(LN) -s -- . $(PACKAGE)-$(VERSION) - @$(TAR) $(PACKAGE)-$(VERSION).tar.gz -- \ + @$(TAR) -czvf $(PACKAGE)-$(VERSION).tar.gz -- \ $(PACKAGE)-$(VERSION)/data/Makefile \ $(PACKAGE)-$(VERSION)/data/cpp.pc.in \ $(PACKAGE)-$(VERSION)/data/pkgconfig.sh \ @@ -60,10 +61,21 @@ dist: $(PACKAGE)-$(VERSION)/project.conf $(RM) -- $(PACKAGE)-$(VERSION) +distcheck: dist + $(TAR) -xzvf $(PACKAGE)-$(VERSION).tar.gz + $(MKDIR) -- $(PACKAGE)-$(VERSION)/objdir + $(MKDIR) -- $(PACKAGE)-$(VERSION)/destdir + (cd "$(PACKAGE)-$(VERSION)" && $(MAKE) OBJDIR="$$PWD/objdir/") + (cd "$(PACKAGE)-$(VERSION)" && $(MAKE) OBJDIR="$$PWD/objdir/" DESTDIR="$$PWD/destdir" install) + (cd "$(PACKAGE)-$(VERSION)" && $(MAKE) OBJDIR="$$PWD/objdir/" DESTDIR="$$PWD/destdir" uninstall) + (cd "$(PACKAGE)-$(VERSION)" && $(MAKE) OBJDIR="$$PWD/objdir/" distclean) + (cd "$(PACKAGE)-$(VERSION)" && $(MAKE) dist) + $(RM) -r -- $(PACKAGE)-$(VERSION) + install: @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) install) || exit; done uninstall: @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) uninstall) || exit; done -.PHONY: all subdirs clean distclean dist install uninstall +.PHONY: all subdirs clean distclean dist distcheck install uninstall diff --git a/data/Makefile b/data/Makefile index a0533e6..65749c9 100644 --- a/data/Makefile +++ b/data/Makefile @@ -1,4 +1,5 @@ -TARGETS = cpp.pc +TARGETS = $(OBJDIR)cpp.pc +OBJDIR = PREFIX = /usr/local DESTDIR = RM = rm -f @@ -9,8 +10,8 @@ INSTALL = install all: $(TARGETS) -cpp.pc: cpp.pc.in ../config.sh - ./pkgconfig.sh -P "$(PREFIX)" -- "cpp.pc" +$(OBJDIR)cpp.pc: cpp.pc.in ../config.sh + ./pkgconfig.sh -P "$(PREFIX)" -- "$(OBJDIR)cpp.pc" clean: $(RM) -- $(cpp.pc_OBJS) @@ -20,7 +21,7 @@ distclean: clean $(RM) -- $(TARGETS) install: $(TARGETS) - ./pkgconfig.sh -P "$(DESTDIR)$(PREFIX)" -i -- "cpp.pc" + ./pkgconfig.sh -P "$(DESTDIR)$(PREFIX)" -i -- "$(OBJDIR)cpp.pc" uninstall: ./pkgconfig.sh -P "$(DESTDIR)$(PREFIX)" -u -- "cpp.pc" diff --git a/doc/Makefile b/doc/Makefile index 09fc97c..531d493 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -1,5 +1,6 @@ SUBDIRS = gtkdoc -TARGETS = gtkdoc/CPP.types gtkdoc/tmpl.stamp gtkdoc/sgml.stamp gtkdoc/html.stamp +TARGETS = $(OBJDIR)gtkdoc/CPP.types $(OBJDIR)gtkdoc/tmpl.stamp $(OBJDIR)gtkdoc/sgml.stamp $(OBJDIR)gtkdoc/html.stamp +OBJDIR = PREFIX = /usr/local DESTDIR = RM = rm -f @@ -13,17 +14,17 @@ all: subdirs $(TARGETS) subdirs: @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE)) || exit; done -gtkdoc/CPP.types: - ./gtkdoc.sh -P "$(PREFIX)" -- "gtkdoc/CPP.types" +$(OBJDIR)gtkdoc/CPP.types: + ./gtkdoc.sh -P "$(PREFIX)" -- "$(OBJDIR)gtkdoc/CPP.types" -gtkdoc/tmpl.stamp: gtkdoc/CPP.types gtkdoc/tmpl/cpp.sgml - ./gtkdoc.sh -P "$(PREFIX)" -- "gtkdoc/tmpl.stamp" +$(OBJDIR)gtkdoc/tmpl.stamp: $(OBJDIR)gtkdoc/CPP.types gtkdoc/tmpl/cpp.sgml + ./gtkdoc.sh -P "$(PREFIX)" -- "$(OBJDIR)gtkdoc/tmpl.stamp" -gtkdoc/sgml.stamp: gtkdoc/tmpl.stamp - ./gtkdoc.sh -P "$(PREFIX)" -- "gtkdoc/sgml.stamp" +$(OBJDIR)gtkdoc/sgml.stamp: $(OBJDIR)gtkdoc/tmpl.stamp + ./gtkdoc.sh -P "$(PREFIX)" -- "$(OBJDIR)gtkdoc/sgml.stamp" -gtkdoc/html.stamp: gtkdoc/CPP-docs.xml gtkdoc/sgml.stamp - ./gtkdoc.sh -P "$(PREFIX)" -- "gtkdoc/html.stamp" +$(OBJDIR)gtkdoc/html.stamp: gtkdoc/CPP-docs.xml $(OBJDIR)gtkdoc/sgml.stamp + ./gtkdoc.sh -P "$(PREFIX)" -- "$(OBJDIR)gtkdoc/html.stamp" clean: @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) clean) || exit; done @@ -44,7 +45,7 @@ distclean: install: $(TARGETS) @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) install) || exit; done - ./gtkdoc.sh -P "$(DESTDIR)$(PREFIX)" -i -- "gtkdoc/html.stamp" + ./gtkdoc.sh -P "$(DESTDIR)$(PREFIX)" -i -- "$(OBJDIR)gtkdoc/html.stamp" uninstall: @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) uninstall) || exit; done diff --git a/doc/gtkdoc/tmpl/CPP-unused.sgml b/doc/gtkdoc/tmpl/CPP-unused.sgml index e69de29..64e5fbe 100644 --- a/doc/gtkdoc/tmpl/CPP-unused.sgml +++ b/doc/gtkdoc/tmpl/CPP-unused.sgml @@ -0,0 +1,28 @@ + + + + + + +DeforaOS code pre-processing library. + + + + + +DeforaOS Development Assembler (Asm), DeforaOS Development C99 C compiler (C99) + + + + +DeforaOS Development Code Pre-Processor + + + + + + + +CPP + + diff --git a/doc/project.conf b/doc/project.conf index 4b4987b..1b02d39 100644 --- a/doc/project.conf +++ b/doc/project.conf @@ -9,15 +9,15 @@ script=./gtkdoc.sh [gtkdoc/tmpl.stamp] type=script script=./gtkdoc.sh -depends=gtkdoc/CPP.types,gtkdoc/tmpl/cpp.sgml +depends=$(OBJDIR)gtkdoc/CPP.types,gtkdoc/tmpl/cpp.sgml [gtkdoc/sgml.stamp] type=script script=./gtkdoc.sh -depends=gtkdoc/tmpl.stamp +depends=$(OBJDIR)gtkdoc/tmpl.stamp [gtkdoc/html.stamp] type=script script=./gtkdoc.sh -depends=gtkdoc/CPP-docs.xml,gtkdoc/sgml.stamp +depends=gtkdoc/CPP-docs.xml,$(OBJDIR)gtkdoc/sgml.stamp install= diff --git a/include/Makefile b/include/Makefile index 017bcb6..dafbd76 100644 --- a/include/Makefile +++ b/include/Makefile @@ -1,3 +1,4 @@ +OBJDIR = PREFIX = /usr/local DESTDIR = RM = rm -f diff --git a/src/Makefile b/src/Makefile index 8b8e055..adcf024 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,4 +1,5 @@ -TARGETS = libcpp.a libcpp.so.0.0 libcpp.so.0 libcpp.so cpp +TARGETS = $(OBJDIR)libcpp.a $(OBJDIR)libcpp.so.0.0 $(OBJDIR)libcpp.so.0 $(OBJDIR)libcpp.so $(OBJDIR)cpp +OBJDIR = PREFIX = /usr/local DESTDIR = LIBDIR = $(PREFIX)/lib @@ -22,37 +23,37 @@ INSTALL = install all: $(TARGETS) -libcpp_OBJS = cpp.o parser.o scanner.o +libcpp_OBJS = $(OBJDIR)cpp.o $(OBJDIR)parser.o $(OBJDIR)scanner.o libcpp_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) -fPIC libcpp_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) -libcpp.a: $(libcpp_OBJS) - $(AR) -rc libcpp.a $(libcpp_OBJS) - $(RANLIB) libcpp.a +$(OBJDIR)libcpp.a: $(libcpp_OBJS) + $(AR) -rc $(OBJDIR)libcpp.a $(libcpp_OBJS) + $(RANLIB) $(OBJDIR)libcpp.a -libcpp.so.0.0 libcpp.so.0 libcpp.so: $(libcpp_OBJS) - $(CCSHARED) -o libcpp.so.0.0 -Wl,-soname,libcpp.so.0 $(libcpp_OBJS) $(libcpp_LDFLAGS) - $(LN) -s -- libcpp.so.0.0 libcpp.so.0 - $(LN) -s -- libcpp.so.0.0 libcpp.so +$(OBJDIR)libcpp.so.0.0 $(OBJDIR)libcpp.so.0 $(OBJDIR)libcpp.so: $(libcpp_OBJS) + $(CCSHARED) -o $(OBJDIR)libcpp.so.0.0 -Wl,-soname,libcpp.so.0 $(libcpp_OBJS) $(libcpp_LDFLAGS) + $(LN) -s -- libcpp.so.0.0 $(OBJDIR)libcpp.so.0 + $(LN) -s -- libcpp.so.0.0 $(OBJDIR)libcpp.so -cpp_OBJS = main.o +cpp_OBJS = $(OBJDIR)main.o cpp_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) -cpp_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) -L. -L$(LIBDIR) -Wl,-rpath,$(LIBDIR) -lcpp +cpp_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) -L$(OBJDIR). -L$(LIBDIR) -Wl,-rpath,$(LIBDIR) -lcpp -cpp: $(cpp_OBJS) libcpp.so - $(CC) -o cpp $(cpp_OBJS) $(cpp_LDFLAGS) +$(OBJDIR)cpp: $(cpp_OBJS) $(OBJDIR)libcpp.so + $(CC) -o $(OBJDIR)cpp $(cpp_OBJS) $(cpp_LDFLAGS) -cpp.o: cpp.c common.h ../include/CPP.h - $(CC) $(libcpp_CFLAGS) -c cpp.c +$(OBJDIR)cpp.o: cpp.c common.h ../include/CPP.h + $(CC) $(libcpp_CFLAGS) -o $(OBJDIR)cpp.o -c cpp.c -parser.o: parser.c parser.h ../include/CPP.h - $(CC) $(libcpp_CFLAGS) -c parser.c +$(OBJDIR)parser.o: parser.c parser.h ../include/CPP.h + $(CC) $(libcpp_CFLAGS) -o $(OBJDIR)parser.o -c parser.c -scanner.o: scanner.c common.h ../include/CPP.h - $(CC) $(libcpp_CFLAGS) -c scanner.c +$(OBJDIR)scanner.o: scanner.c common.h ../include/CPP.h + $(CC) $(libcpp_CFLAGS) -o $(OBJDIR)scanner.o -c scanner.c -main.o: main.c ../include/CPP.h - $(CC) $(cpp_CFLAGS) -c main.c +$(OBJDIR)main.o: main.c ../include/CPP.h + $(CC) $(cpp_CFLAGS) -o $(OBJDIR)main.o -c main.c clean: $(RM) -- $(libcpp_OBJS) $(cpp_OBJS) @@ -62,12 +63,12 @@ distclean: clean install: $(TARGETS) $(MKDIR) $(DESTDIR)$(LIBDIR) - $(INSTALL) -m 0644 libcpp.a $(DESTDIR)$(LIBDIR)/libcpp.a - $(INSTALL) -m 0755 libcpp.so.0.0 $(DESTDIR)$(LIBDIR)/libcpp.so.0.0 + $(INSTALL) -m 0644 $(OBJDIR)libcpp.a $(DESTDIR)$(LIBDIR)/libcpp.a + $(INSTALL) -m 0755 $(OBJDIR)libcpp.so.0.0 $(DESTDIR)$(LIBDIR)/libcpp.so.0.0 $(LN) -s -- libcpp.so.0.0 $(DESTDIR)$(LIBDIR)/libcpp.so.0 $(LN) -s -- libcpp.so.0.0 $(DESTDIR)$(LIBDIR)/libcpp.so $(MKDIR) $(DESTDIR)$(BINDIR) - $(INSTALL) -m 0755 cpp $(DESTDIR)$(BINDIR)/cpp + $(INSTALL) -m 0755 $(OBJDIR)cpp $(DESTDIR)$(BINDIR)/cpp uninstall: $(RM) -- $(DESTDIR)$(LIBDIR)/libcpp.a diff --git a/src/project.conf b/src/project.conf index 42d40ea..64eb6ca 100644 --- a/src/project.conf +++ b/src/project.conf @@ -25,8 +25,8 @@ depends=common.h,../include/CPP.h [cpp] type=binary sources=main.c -depends=libcpp.so -ldflags=-L. -L$(LIBDIR) -Wl,-rpath,$(LIBDIR) -lcpp +depends=$(OBJDIR)libcpp.so +ldflags=-L$(OBJDIR). -L$(LIBDIR) -Wl,-rpath,$(LIBDIR) -lcpp install=$(BINDIR) [main.c] diff --git a/tests/Makefile b/tests/Makefile index 8ee2d8c..d41724a 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -1,4 +1,5 @@ -TARGETS = define.o if.o include.o +TARGETS = $(OBJDIR)define.o $(OBJDIR)if.o $(OBJDIR)include.o +OBJDIR = PREFIX = /usr/local DESTDIR = BINDIR = $(PREFIX)/bin @@ -13,23 +14,23 @@ INSTALL = install all: $(TARGETS) -define.o_OBJS = define.o +define.o_OBJS = $(OBJDIR)define.o define.o_CXXFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CXXFLAGS) -if.o_OBJS = if.o +if.o_OBJS = $(OBJDIR)if.o if.o_CXXFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CXXFLAGS) -include.o_OBJS = include.o +include.o_OBJS = $(OBJDIR)include.o include.o_CXXFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CXXFLAGS) -define.o: define.cpp cpp.sh - $(CXX) $(define.o_CXXFLAGS) -c define.cpp +$(OBJDIR)define.o: define.cpp cpp.sh + $(CXX) $(define.o_CXXFLAGS) -o $(OBJDIR)define.o -c define.cpp -if.o: if.cpp cpp.sh - $(CXX) $(if.o_CXXFLAGS) -c if.cpp +$(OBJDIR)if.o: if.cpp cpp.sh + $(CXX) $(if.o_CXXFLAGS) -o $(OBJDIR)if.o -c if.cpp -include.o: include.cpp cpp.sh - $(CXX) $(include.o_CXXFLAGS) -c include.cpp +$(OBJDIR)include.o: include.cpp cpp.sh + $(CXX) $(include.o_CXXFLAGS) -o $(OBJDIR)include.o -c include.cpp clean: $(RM) -- $(define.o_OBJS) $(if.o_OBJS) $(include.o_OBJS) diff --git a/tests/cpp.sh b/tests/cpp.sh index 5e8bf9f..bd505ff 100755 --- a/tests/cpp.sh +++ b/tests/cpp.sh @@ -28,22 +28,27 @@ PROGNAME="cpp.sh" #executables CPP="../src/cpp" +[ -n "$OBJDIR" ] && CPP="${OBJDIR}cpp" #functions #usage _usage() { - echo "Usage: $PROGNAME [-c] file..." 1>&2 + echo "Usage: $PROGNAME [-c][-o target] file..." 1>&2 return 1 } #main -while getopts "c" name; do +output= +while getopts "co:" name; do case $name in c) ;; + o) + output="$OPTARG" + ;; ?) _usage exit $?