diff -r 000000000000 -r 2b3e5ec03512 Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Makefile Thu Apr 21 14:57:45 2011 +0100 @@ -0,0 +1,202 @@ +# +# Copyright 2004-2006 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# +# Top level makefile for DTN2. +# + +# +# Define a set of dispatch rules that simply call make on the +# constituent subdirectories. Note that the test directory isn't built +# by default. +# + +SUBDIRS := applib servlib daemon apps sim + +all: checkconfigure $(SUBDIRS) + +# +# If srcdir/builddir aren't set by some other makefile, +# then default to . +# +ifeq ($(SRCDIR),) +SRCDIR := . +BUILDDIR := . +endif + +# +# Include the common rules +# +include Rules.make +include $(SRCDIR)/dtn-version.mk + +# +# Dependency rules between subdirectories needed for make -j +# +applib servlib: dtn-version.o +daemon: applib servlib +apps: applib servlib +sim: servlib + +# +# Rules for the version files +# +dtn-version.o: dtn-version.c +dtn-version.c: dtn-version.h +dtn-version.h: dtn-version.h.in dtn-version.dat + $(OASYS_ETCDIR)/tools/subst-version $(SRCDIR)/dtn-version.dat \ + < $(SRCDIR)/dtn-version.h.in > dtn-version.h + +vpath dtn-version.h.in $(SRCDIR) +vpath dtn-version.h $(SRCDIR) +vpath dtn-version.c $(SRCDIR) +vpath dtn-version.dat $(SRCDIR) + +bump-version: + cd $(SRCDIR) && tools/bump-version dtn-version.dat + +# +# Test rules +# +test: tests +tests: + $(MAKE) all + $(MAKE) -C test + +dtn-tests: + $(MAKE) -C test + +# +# Installation rules +# +install: installdirs installbin installlib installetc + +installdirs: + for dir in $(DESTDIR)$(localstatedir)/dtn \ + $(DESTDIR)$(localstatedir)/dtn/bundles \ + $(DESTDIR)$(localstatedir)/dtn/db ; do \ + (mkdir -p $$dir; chmod 755 $$dir; \ + [ x$(DTN_USER) = x ] || chown $(DTN_USER) $$dir); \ + done + + [ -d $(DESTDIR)$(bindir) ] || \ + (mkdir -p $(DESTDIR)$(bindir); chmod 755 $(DESTDIR)$(bindir)) + + [ -d $(DESTDIR)$(libdir) ] || \ + (mkdir -p $(DESTDIR)$(libdir); chmod 755 $(DESTDIR)$(libdir)) + +installbin: installdirs + for prog in daemon/dtnd \ + tools/dtnd-control \ + apps/dtncat/dtncat \ + apps/dtncp/dtncp \ + apps/dtncpd/dtncpd \ + apps/dtnhttpproxy/dtnhttpproxy \ + apps/dtnperf/dtnperf-client \ + apps/dtnperf/dtnperf-server \ + apps/dtnping/dtnping \ + apps/dtnping/dtntraceroute \ + apps/dtnrecv/dtnrecv \ + apps/dtnsend/dtnsend \ + apps/dtntunnel/dtntunnel \ + apps/num2sdnv/num2sdnv \ + apps/num2sdnv/sdnv2num ; do \ + ($(INSTALL_PROGRAM) $$prog $(DESTDIR)$(bindir)) ; \ + done + + [ x$(DTN_USER) = x ] || chown -R $(DTN_USER) $(DESTDIR)$(bindir) + +installlib: installdirs + [ x$(SHLIBS) = x ] || \ + for lib in applib/libdtnapi-$(DTN_VERSION).$(SHLIB_EXT) \ + applib/libdtnapi++-$(DTN_VERSION).$(SHLIB_EXT) \ + applib/tcl/libdtntcl-$(DTN_VERSION).$(SHLIB_EXT) ; do \ + ($(INSTALL_PROGRAM) $$lib $(DESTDIR)$(libdir)) ; \ + done + + for lib in libdtnapi libdtnapi++ libdtntcl ; do \ + (cd $(DESTDIR)$(libdir) && rm -f $$lib.$(SHLIB_EXT) && \ + ln -s $$lib-$(DTN_VERSION).$(SHLIB_EXT) $$lib.$(SHLIB_EXT)) \ + done + +installetc: installdirs + [ -d $(DESTDIR)$(sysconfdir) ] || mkdir -p $(DESTDIR)$(sysconfdir) + if [ -f $(DESTDIR)$(sysconfdir)/dtn.conf ]; then \ + echo "WARNING: $(DESTDIR)$(sysconfdir)/dtn.conf exists -- not overwriting"; \ + else \ + $(INSTALL_DATA) daemon/dtn.conf $(DESTDIR)$(sysconfdir)/dtn.conf; \ + fi + + $(INSTALL_DATA) servlib/routing/router.xsd $(DESTDIR)$(sysconfdir)/router.xsd + $(INSTALL_DATA) servlib/conv_layers/clevent.xsd $(DESTDIR)$(sysconfdir)/clevent.xsd + +# +# Generate the doxygen documentation +# +doxygen: + doxygen doc/doxyfile + +# +# Generate XML schema documentation +# Requires: +# xsddoc-1.0 (http://xframe.sourceforge.net/xsddoc/) +# java +# +xsddoc: + mkdir -p doc/router-xsddoc + xsddoc -t "External Router Interface" -o doc/router-xsddoc -q \ + servlib/routing/router.xsd + mkdir -p doc/cla-xsddoc + xsddoc -t "External CLA Interface" -o doc/cla-xsddoc -q \ + servlib/conv_layers/clevent.xsd +# mkdir -p doc/router-xsddoc +# xsddoc -t "External Data Store Interface" -o doc/ds-xsddoc -q \ +# oasys/storage/DS.xsd + +xsdbindings: + $(MAKE) -C servlib xsdbindings + +# +# Build a TAGS database. Note this includes all the sources so it gets +# header files as well. +# +.PHONY: TAGS tags +tags TAGS: + cd $(SRCDIR) && \ + find . -name \*.h -or -name \*.c -or -name \*.cc | \ + xargs etags -l c++ + find . -name \*.h -or -name \*.c -or -name \*.cc | \ + xargs ctags + +# +# And a rule to make sure that configure has been run recently enough. +# +.PHONY: checkconfigure +checkconfigure: Rules.make + +Rules.make: $(SRCDIR)/configure $(OASYS_ETCDIR)/Rules.make.in + @[ ! x`echo "$(MAKECMDGOALS)" | grep clean` = x ] || \ + (echo "$@ is out of date, need to rerun configure" && \ + exit 1) + +$(SRCDIR)/configure $(OASYS_ETCDIR)/Rules.make.in: + @echo SRCDIR: $(SRCDIR) + @echo error -- Makefile did not set SRCDIR properly + @exit 1 + +CFGDIRS := oasys/include oasys +CFGFILES = Rules.make System.make oasys/share oasys/lib oasys/include/oasys +GENFILES = doc/manual/man/*.txt