initial creation of toplevel makefile

This commit is contained in:
gpz 2006-06-24 19:05:53 +00:00
parent 82170f0015
commit 940dc6ccaa

292
Makefile Normal file
View file

@ -0,0 +1,292 @@
###################################################################
# toplevel makefile for contiki 2.x
#
# 2006/06/24 gpz - initial creation
#
# todo:
# - add rules for other/more ports
# - add "dist-<target>" rules (for creating tarballs)
# - create checks for required tools and give hints on where
# to get certain missing stuff
# - incase certain targets fail, print a error summary when
# all targets are done
###################################################################
# uncomment this for less verbose output
#.SILENT:
MAKE=make
ECHO=echo -en
CD=cd
###################################################################
# this first rule prints usage info when the make is invoked
# without any arguments
###################################################################
.PHONY: usage
usage:
-@$(ECHO) "usage: make <target(s)>\n\n"
-@$(ECHO) "available targets are:\n\n"
-@$(ECHO) "docs build the documentation\n"
-@$(ECHO) "gtk build full featured GTK port\n"
-@$(ECHO) "gtk-examples build examples with GTK port\n"
-@$(ECHO) "esb build full featured ESB port\n"
-@$(ECHO) "esb-examples build examples with ESB port\n"
-@$(ECHO) "minimal-net-examples build examples with minimal-net port\n"
-@$(ECHO) "native-examples build examples with native port\n"
-@$(ECHO) "all build everything\n"
-@$(ECHO) "clean cleanup the sourcetree\n"
-@$(ECHO) "\nfor more targets and other details look at this makefile.\n"
###################################################################
# the "all" rule can be used to make a clean build from all and
# everything. you will need to have all kinds of support tools
# installed for this to work!
###################################################################
.PHONY: all dist examples
all: source-dist docs docs-dist examples c64 esb ethernut1 ethernut2 gtk minimal-net minimal-ppp native netsim
dist: source-dist docs-dist
examples: c64-examples esb-examples ethernut1-examples ethernut2-examples gtk-examples minimal-net-examples minimal-ppp-examples native-examples netsim-examples
examples-clean: c64-examples-clean esb-examples-clean ethernut1-examples-clean ethernut2-examples-clean gtk-examples-clean minimal-net-examples-clean minimal-ppp-examples-clean native-examples-clean netsim-examples-clean
###################################################################
# general cleanup rule
###################################################################
.PHONY: clean
clean: docs-clean examples-clean c64-clean esb-clean ethernut1-clean ethernut2-clean gtk-clean minimal-net-clean minimal-ppp-clean native-clean netsim-clean
-@$(ECHO) "sourcetree cleaned up.\n"
###################################################################
# rules for building the documentation
###################################################################
.PHONY: docs docs-clean docs-html docs-pdf docs-dist
docs: docs-html docs-pdf
docs-doxygen:
-@$(CD) doc; $(MAKE) dox
docs-html: docs-doxygen
docs-pdf: docs-doxygen
-@$(CD) doc; $(MAKE) pdf
docs-clean:
-@$(CD) doc; $(MAKE) clean
docs-dist:
###################################################################
# rules for building the source distribution
###################################################################
source-dist:
###################################################################
# rules for the C64 port
###################################################################
.PHONY: c64 c64-clean
c64:
-@$(CD) platform/c64; $(MAKE) all
c64-clean:
-@$(CD) platform/c64; $(MAKE) clean
c64-dist:
c64-examples: c64-example-webserver c64-example-telnet-server c64-example-test-ipv6
c64-example-telnet-server:
-@$(CD) examples/telnet-server; $(MAKE) TARGET=c64
c64-example-webserver:
-@$(CD) examples/webserver; $(MAKE) TARGET=c64
c64-example-test-ipv6:
-@$(CD) examples/test-ipv6; $(MAKE) TARGET=c64
c64-examples-clean:
-@$(CD) examples/telnet-server; $(MAKE) TARGET=c64 clean
-@$(CD) examples/webserver; $(MAKE) TARGET=c64 clean
-@$(CD) examples/test-ipv6; $(MAKE) TARGET=c64 clean
###################################################################
# rules for the ESB port
###################################################################
.PHONY: esb esb-clean
esb:
-@$(CD) platform/esb; $(MAKE) all
esb-clean:
-@$(CD) platform/esb; $(MAKE) clean
esb-dist:
esb-examples:
esb-examples-clean:
###################################################################
# rules for the ethernut1 port
###################################################################
.PHONY: ethernut1 ethernut1-clean
ethernut1:
# -@$(CD) platform/ethernut1; $(MAKE) all
ethernut1-clean:
# -@$(CD) platform/ethernut1; $(MAKE) clean
ethernut1-dist:
ethernut1-examples:
ethernut1-examples-clean:
###################################################################
# rules for the ethernut2 port
###################################################################
.PHONY: ethernut2 ethernut2-clean
ethernut2:
# -@$(CD) platform/ethernut2; $(MAKE) all
ethernut2-clean:
# -@$(CD) platform/ethernut2; $(MAKE) clean
ethernut2-dist:
ethernut2-examples:
ethernut2-examples-clean:
###################################################################
# rules for the GTK port
###################################################################
.PHONY: gtk gtk-clean
gtk:
-@$(CD) platform/gtk; $(MAKE) all
gtk-clean:
-@$(CD) platform/gtk; $(MAKE) clean
gtk-examples: gtk-example-webserver gtk-example-telnet-server gtk-example-test-ipv6
gtk-example-telnet-server:
-@$(CD) examples/telnet-server; $(MAKE) TARGET=gtk
gtk-example-webserver:
-@$(CD) examples/webserver; $(MAKE) TARGET=gtk
gtk-example-test-ipv6:
-@$(CD) examples/test-ipv6; $(MAKE) TARGET=gtk
gtk-examples-clean:
-@$(CD) examples/telnet-server; $(MAKE) TARGET=gtk clean
-@$(CD) examples/webserver; $(MAKE) TARGET=gtk clean
-@$(CD) examples/test-ipv6; $(MAKE) TARGET=gtk clean
gtk-dist:
###################################################################
# rules for the minimal-net port
###################################################################
.PHONY: minimal-net minimal-net-clean
minimal-net:
# -@$(CD) platform/minimal-net; $(MAKE) all
minimal-net-clean:
# -@$(CD) platform/minimal-net; $(MAKE) clean
minimal-net-dist:
minimal-net-examples: minimal-net-example-telnet-server minimal-net-example-webserver minimal-net-example-test-ipv6
minimal-net-example-telnet-server:
-@$(CD) examples/telnet-server; $(MAKE) TARGET=minimal-net
minimal-net-example-webserver:
-@$(CD) examples/webserver; $(MAKE) TARGET=minimal-net
minimal-net-example-test-ipv6:
-@$(CD) examples/test-ipv6; $(MAKE) TARGET=minimal-net
minimal-net-examples-clean:
-@$(CD) examples/telnet-server; $(MAKE) TARGET=minimal-net clean
-@$(CD) examples/webserver; $(MAKE) TARGET=minimal-net clean
-@$(CD) examples/test-ipv6; $(MAKE) TARGET=minimal-net clean
###################################################################
# rules for the minimal-ppp port
###################################################################
.PHONY: minimal-ppp minimal-ppp-clean
minimal-ppp:
-@$(CD) platform/minimal-ppp; $(MAKE) all
minimal-ppp-clean:
-@$(CD) platform/minimal-ppp; $(MAKE) clean
minimal-ppp-dist:
minimal-ppp-examples:
minimal-ppp-examples-clean:
###################################################################
# rules for the native port
###################################################################
.PHONY: native native-clean
native:
# -@$(CD) platform/native; $(MAKE) all
native-clean:
# -@$(CD) platform/native; $(MAKE) clean
native-dist:
native-examples: native-example-telnet-server native-example-webserver native-example-test-ipv6
native-example-telnet-server:
-@$(CD) examples/telnet-server; $(MAKE) TARGET=native
native-example-webserver:
-@$(CD) examples/webserver; $(MAKE) TARGET=native
native-example-test-ipv6:
-@$(CD) examples/test-ipv6; $(MAKE) TARGET=native
native-examples-clean:
-@$(CD) examples/telnet-server; $(MAKE) TARGET=native clean
-@$(CD) examples/webserver; $(MAKE) TARGET=native clean
-@$(CD) examples/test-ipv6; $(MAKE) TARGET=native clean
###################################################################
# rules for the netsim port
###################################################################
.PHONY: netsim netsim-clean
netsim:
# -@$(CD) platform/netsim; $(MAKE) all
netsim-clean:
# -@$(CD) platform/netsim; $(MAKE) clean
netsim-dist:
netsim-examples:
netsim-examples-clean:
-@$(CD) examples/telnet-server; $(MAKE) TARGET=netsim clean
-@$(CD) examples/webserver; $(MAKE) TARGET=netsim clean
-@$(CD) examples/test-ipv6; $(MAKE) TARGET=netsim clean