Added support for building with OBJDIR

This commit is contained in:
Pierre Pronchery 2014-11-12 21:52:47 +01:00
parent b4d98e26f0
commit f2325e6ecb
10 changed files with 108 additions and 58 deletions

View File

@ -3,7 +3,8 @@ VERSION = 0.0.1
SUBDIRS = data doc include src tests SUBDIRS = data doc include src tests
RM = rm -f RM = rm -f
LN = ln -f LN = ln -f
TAR = tar -czvf TAR = tar
MKDIR = mkdir -m 0755 -p
all: subdirs all: subdirs
@ -20,7 +21,7 @@ distclean:
dist: dist:
$(RM) -r -- $(PACKAGE)-$(VERSION) $(RM) -r -- $(PACKAGE)-$(VERSION)
$(LN) -s -- . $(PACKAGE)-$(VERSION) $(LN) -s -- . $(PACKAGE)-$(VERSION)
@$(TAR) $(PACKAGE)-$(VERSION).tar.gz -- \ @$(TAR) -czvf $(PACKAGE)-$(VERSION).tar.gz -- \
$(PACKAGE)-$(VERSION)/data/Makefile \ $(PACKAGE)-$(VERSION)/data/Makefile \
$(PACKAGE)-$(VERSION)/data/cpp.pc.in \ $(PACKAGE)-$(VERSION)/data/cpp.pc.in \
$(PACKAGE)-$(VERSION)/data/pkgconfig.sh \ $(PACKAGE)-$(VERSION)/data/pkgconfig.sh \
@ -60,10 +61,21 @@ dist:
$(PACKAGE)-$(VERSION)/project.conf $(PACKAGE)-$(VERSION)/project.conf
$(RM) -- $(PACKAGE)-$(VERSION) $(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: install:
@for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) install) || exit; done @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) install) || exit; done
uninstall: uninstall:
@for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) uninstall) || exit; done @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

View File

@ -1,4 +1,5 @@
TARGETS = cpp.pc TARGETS = $(OBJDIR)cpp.pc
OBJDIR =
PREFIX = /usr/local PREFIX = /usr/local
DESTDIR = DESTDIR =
RM = rm -f RM = rm -f
@ -9,8 +10,8 @@ INSTALL = install
all: $(TARGETS) all: $(TARGETS)
cpp.pc: cpp.pc.in ../config.sh $(OBJDIR)cpp.pc: cpp.pc.in ../config.sh
./pkgconfig.sh -P "$(PREFIX)" -- "cpp.pc" ./pkgconfig.sh -P "$(PREFIX)" -- "$(OBJDIR)cpp.pc"
clean: clean:
$(RM) -- $(cpp.pc_OBJS) $(RM) -- $(cpp.pc_OBJS)
@ -20,7 +21,7 @@ distclean: clean
$(RM) -- $(TARGETS) $(RM) -- $(TARGETS)
install: $(TARGETS) install: $(TARGETS)
./pkgconfig.sh -P "$(DESTDIR)$(PREFIX)" -i -- "cpp.pc" ./pkgconfig.sh -P "$(DESTDIR)$(PREFIX)" -i -- "$(OBJDIR)cpp.pc"
uninstall: uninstall:
./pkgconfig.sh -P "$(DESTDIR)$(PREFIX)" -u -- "cpp.pc" ./pkgconfig.sh -P "$(DESTDIR)$(PREFIX)" -u -- "cpp.pc"

View File

@ -1,5 +1,6 @@
SUBDIRS = gtkdoc 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 PREFIX = /usr/local
DESTDIR = DESTDIR =
RM = rm -f RM = rm -f
@ -13,17 +14,17 @@ all: subdirs $(TARGETS)
subdirs: subdirs:
@for i in $(SUBDIRS); do (cd "$$i" && $(MAKE)) || exit; done @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE)) || exit; done
gtkdoc/CPP.types: $(OBJDIR)gtkdoc/CPP.types:
./gtkdoc.sh -P "$(PREFIX)" -- "gtkdoc/CPP.types" ./gtkdoc.sh -P "$(PREFIX)" -- "$(OBJDIR)gtkdoc/CPP.types"
gtkdoc/tmpl.stamp: gtkdoc/CPP.types gtkdoc/tmpl/cpp.sgml $(OBJDIR)gtkdoc/tmpl.stamp: $(OBJDIR)gtkdoc/CPP.types gtkdoc/tmpl/cpp.sgml
./gtkdoc.sh -P "$(PREFIX)" -- "gtkdoc/tmpl.stamp" ./gtkdoc.sh -P "$(PREFIX)" -- "$(OBJDIR)gtkdoc/tmpl.stamp"
gtkdoc/sgml.stamp: gtkdoc/tmpl.stamp $(OBJDIR)gtkdoc/sgml.stamp: $(OBJDIR)gtkdoc/tmpl.stamp
./gtkdoc.sh -P "$(PREFIX)" -- "gtkdoc/sgml.stamp" ./gtkdoc.sh -P "$(PREFIX)" -- "$(OBJDIR)gtkdoc/sgml.stamp"
gtkdoc/html.stamp: gtkdoc/CPP-docs.xml gtkdoc/sgml.stamp $(OBJDIR)gtkdoc/html.stamp: gtkdoc/CPP-docs.xml $(OBJDIR)gtkdoc/sgml.stamp
./gtkdoc.sh -P "$(PREFIX)" -- "gtkdoc/html.stamp" ./gtkdoc.sh -P "$(PREFIX)" -- "$(OBJDIR)gtkdoc/html.stamp"
clean: clean:
@for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) clean) || exit; done @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) clean) || exit; done
@ -44,7 +45,7 @@ distclean:
install: $(TARGETS) install: $(TARGETS)
@for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) install) || exit; done @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: uninstall:
@for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) uninstall) || exit; done @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) uninstall) || exit; done

View File

@ -0,0 +1,28 @@
<!-- ##### SECTION tmpl/cpp.sgml:Image ##### -->
<!-- ##### SECTION tmpl/cpp.sgml:Long_Description ##### -->
<para>
DeforaOS code pre-processing library.
</para>
<!-- ##### SECTION tmpl/cpp.sgml:See_Also ##### -->
<para>
DeforaOS Development Assembler (Asm), DeforaOS Development C99 C compiler (C99)
</para>
<!-- ##### SECTION tmpl/cpp.sgml:Short_Description ##### -->
DeforaOS Development Code Pre-Processor
<!-- ##### SECTION tmpl/cpp.sgml:Stability_Level ##### -->
<!-- ##### SECTION tmpl/cpp.sgml:Title ##### -->
CPP

View File

@ -9,15 +9,15 @@ script=./gtkdoc.sh
[gtkdoc/tmpl.stamp] [gtkdoc/tmpl.stamp]
type=script type=script
script=./gtkdoc.sh script=./gtkdoc.sh
depends=gtkdoc/CPP.types,gtkdoc/tmpl/cpp.sgml depends=$(OBJDIR)gtkdoc/CPP.types,gtkdoc/tmpl/cpp.sgml
[gtkdoc/sgml.stamp] [gtkdoc/sgml.stamp]
type=script type=script
script=./gtkdoc.sh script=./gtkdoc.sh
depends=gtkdoc/tmpl.stamp depends=$(OBJDIR)gtkdoc/tmpl.stamp
[gtkdoc/html.stamp] [gtkdoc/html.stamp]
type=script type=script
script=./gtkdoc.sh script=./gtkdoc.sh
depends=gtkdoc/CPP-docs.xml,gtkdoc/sgml.stamp depends=gtkdoc/CPP-docs.xml,$(OBJDIR)gtkdoc/sgml.stamp
install= install=

View File

@ -1,3 +1,4 @@
OBJDIR =
PREFIX = /usr/local PREFIX = /usr/local
DESTDIR = DESTDIR =
RM = rm -f RM = rm -f

View File

@ -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 PREFIX = /usr/local
DESTDIR = DESTDIR =
LIBDIR = $(PREFIX)/lib LIBDIR = $(PREFIX)/lib
@ -22,37 +23,37 @@ INSTALL = install
all: $(TARGETS) 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_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) -fPIC
libcpp_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) libcpp_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)
libcpp.a: $(libcpp_OBJS) $(OBJDIR)libcpp.a: $(libcpp_OBJS)
$(AR) -rc libcpp.a $(libcpp_OBJS) $(AR) -rc $(OBJDIR)libcpp.a $(libcpp_OBJS)
$(RANLIB) libcpp.a $(RANLIB) $(OBJDIR)libcpp.a
libcpp.so.0.0 libcpp.so.0 libcpp.so: $(libcpp_OBJS) $(OBJDIR)libcpp.so.0.0 $(OBJDIR)libcpp.so.0 $(OBJDIR)libcpp.so: $(libcpp_OBJS)
$(CCSHARED) -o libcpp.so.0.0 -Wl,-soname,libcpp.so.0 $(libcpp_OBJS) $(libcpp_LDFLAGS) $(CCSHARED) -o $(OBJDIR)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 $(OBJDIR)libcpp.so.0
$(LN) -s -- libcpp.so.0.0 libcpp.so $(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_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 $(OBJDIR)cpp: $(cpp_OBJS) $(OBJDIR)libcpp.so
$(CC) -o cpp $(cpp_OBJS) $(cpp_LDFLAGS) $(CC) -o $(OBJDIR)cpp $(cpp_OBJS) $(cpp_LDFLAGS)
cpp.o: cpp.c common.h ../include/CPP.h $(OBJDIR)cpp.o: cpp.c common.h ../include/CPP.h
$(CC) $(libcpp_CFLAGS) -c cpp.c $(CC) $(libcpp_CFLAGS) -o $(OBJDIR)cpp.o -c cpp.c
parser.o: parser.c parser.h ../include/CPP.h $(OBJDIR)parser.o: parser.c parser.h ../include/CPP.h
$(CC) $(libcpp_CFLAGS) -c parser.c $(CC) $(libcpp_CFLAGS) -o $(OBJDIR)parser.o -c parser.c
scanner.o: scanner.c common.h ../include/CPP.h $(OBJDIR)scanner.o: scanner.c common.h ../include/CPP.h
$(CC) $(libcpp_CFLAGS) -c scanner.c $(CC) $(libcpp_CFLAGS) -o $(OBJDIR)scanner.o -c scanner.c
main.o: main.c ../include/CPP.h $(OBJDIR)main.o: main.c ../include/CPP.h
$(CC) $(cpp_CFLAGS) -c main.c $(CC) $(cpp_CFLAGS) -o $(OBJDIR)main.o -c main.c
clean: clean:
$(RM) -- $(libcpp_OBJS) $(cpp_OBJS) $(RM) -- $(libcpp_OBJS) $(cpp_OBJS)
@ -62,12 +63,12 @@ distclean: clean
install: $(TARGETS) install: $(TARGETS)
$(MKDIR) $(DESTDIR)$(LIBDIR) $(MKDIR) $(DESTDIR)$(LIBDIR)
$(INSTALL) -m 0644 libcpp.a $(DESTDIR)$(LIBDIR)/libcpp.a $(INSTALL) -m 0644 $(OBJDIR)libcpp.a $(DESTDIR)$(LIBDIR)/libcpp.a
$(INSTALL) -m 0755 libcpp.so.0.0 $(DESTDIR)$(LIBDIR)/libcpp.so.0.0 $(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.0
$(LN) -s -- libcpp.so.0.0 $(DESTDIR)$(LIBDIR)/libcpp.so $(LN) -s -- libcpp.so.0.0 $(DESTDIR)$(LIBDIR)/libcpp.so
$(MKDIR) $(DESTDIR)$(BINDIR) $(MKDIR) $(DESTDIR)$(BINDIR)
$(INSTALL) -m 0755 cpp $(DESTDIR)$(BINDIR)/cpp $(INSTALL) -m 0755 $(OBJDIR)cpp $(DESTDIR)$(BINDIR)/cpp
uninstall: uninstall:
$(RM) -- $(DESTDIR)$(LIBDIR)/libcpp.a $(RM) -- $(DESTDIR)$(LIBDIR)/libcpp.a

View File

@ -25,8 +25,8 @@ depends=common.h,../include/CPP.h
[cpp] [cpp]
type=binary type=binary
sources=main.c sources=main.c
depends=libcpp.so depends=$(OBJDIR)libcpp.so
ldflags=-L. -L$(LIBDIR) -Wl,-rpath,$(LIBDIR) -lcpp ldflags=-L$(OBJDIR). -L$(LIBDIR) -Wl,-rpath,$(LIBDIR) -lcpp
install=$(BINDIR) install=$(BINDIR)
[main.c] [main.c]

View File

@ -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 PREFIX = /usr/local
DESTDIR = DESTDIR =
BINDIR = $(PREFIX)/bin BINDIR = $(PREFIX)/bin
@ -13,23 +14,23 @@ INSTALL = install
all: $(TARGETS) all: $(TARGETS)
define.o_OBJS = define.o define.o_OBJS = $(OBJDIR)define.o
define.o_CXXFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CXXFLAGS) define.o_CXXFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CXXFLAGS)
if.o_OBJS = if.o if.o_OBJS = $(OBJDIR)if.o
if.o_CXXFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CXXFLAGS) if.o_CXXFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CXXFLAGS)
include.o_OBJS = include.o include.o_OBJS = $(OBJDIR)include.o
include.o_CXXFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CXXFLAGS) include.o_CXXFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CXXFLAGS)
define.o: define.cpp cpp.sh $(OBJDIR)define.o: define.cpp cpp.sh
$(CXX) $(define.o_CXXFLAGS) -c define.cpp $(CXX) $(define.o_CXXFLAGS) -o $(OBJDIR)define.o -c define.cpp
if.o: if.cpp cpp.sh $(OBJDIR)if.o: if.cpp cpp.sh
$(CXX) $(if.o_CXXFLAGS) -c if.cpp $(CXX) $(if.o_CXXFLAGS) -o $(OBJDIR)if.o -c if.cpp
include.o: include.cpp cpp.sh $(OBJDIR)include.o: include.cpp cpp.sh
$(CXX) $(include.o_CXXFLAGS) -c include.cpp $(CXX) $(include.o_CXXFLAGS) -o $(OBJDIR)include.o -c include.cpp
clean: clean:
$(RM) -- $(define.o_OBJS) $(if.o_OBJS) $(include.o_OBJS) $(RM) -- $(define.o_OBJS) $(if.o_OBJS) $(include.o_OBJS)

View File

@ -28,22 +28,27 @@
PROGNAME="cpp.sh" PROGNAME="cpp.sh"
#executables #executables
CPP="../src/cpp" CPP="../src/cpp"
[ -n "$OBJDIR" ] && CPP="${OBJDIR}cpp"
#functions #functions
#usage #usage
_usage() _usage()
{ {
echo "Usage: $PROGNAME [-c] file..." 1>&2 echo "Usage: $PROGNAME [-c][-o target] file..." 1>&2
return 1 return 1
} }
#main #main
while getopts "c" name; do output=
while getopts "co:" name; do
case $name in case $name in
c) c)
;; ;;
o)
output="$OPTARG"
;;
?) ?)
_usage _usage
exit $? exit $?