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
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

View File

@ -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"

View File

@ -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

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]
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=

View File

@ -1,3 +1,4 @@
OBJDIR =
PREFIX = /usr/local
DESTDIR =
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
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

View File

@ -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]

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
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)

View File

@ -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 $?