# # CENS EmStar Repository Master Makefile # # $Id: Makefile,v 1.62 2006/09/10 20:40:54 girod Exp $ # ################### NOTE!!!! ########################### ## Most of the time you want to edit the files called ## ## 'BUILD' and Make.conf, NOT this Makefile. ## ######################################################## ## Sets user-modifiable variables ## e.g. enable TOS, Kernel, native kernel headers, etc include Make.conf ## If this is the native arch, include config.make ifeq ($(strip $(ARCH)),i686-linux) IS_NATIVE=1 else ifeq ($(ARCH),) IS_NATIVE=1 endif endif include make/make.tinyos # Set platform-dependent variables. Including this fragment sets: # ARCH -- the target architecture (e.g., arm-linux or i686-linux) # NATIVE_ARCH -- the architecture we're compiling under # CC, CPP, AR, LD, BINSTRIP -- paths to various utils include make/make.platform OBJDIR := obj.$(ARCH) # passing target commands down.. is there a better way? # the default target .DEFAULT default: config.make @$(MAKE) -f Makefile.main strip: config.make @$(MAKE) -f Makefile.main strip test: config.make @$(MAKE) -f Makefile.main test install-fusd: config.make @$(MAKE) -f Makefile.main install-fusd clean: if [[ ! ( . -ef ./$(OBJDIR) ) ]] ; then rm -rf ./$(OBJDIR) ; fi ifeq ($(strip $(IS_NATIVE)), 1) rm -f config.make rm -f make/config.h endif ## ## The 'help' target. ## This target provides info about what vars are set and ## what platforms are available ## # For debugging purposes, a rule that shows the environment # and active variables.. help: @echo Help: @echo "" @echo " make ARCH= [executable path]" @echo " Builds specified file or all executables and libraries" @echo @echo " make clean ARCH=" @echo " deletes all built files." @echo "" @echo " make strip ARCH=" @echo " strips symbols from all executables." @echo "" @echo " make test -- runs regression tests." @echo "" @echo " make install-fusd -- installs kfusd module." @echo "" @echo " make help -- provides this message" @echo "" @echo " make config -- runs configure for native platform" @echo "" @echo " EmStar supports the following platforms:" @echo @echo " i686-linux (default) is the 'native' platform" @echo " used to buld to run on your host. Check Make.conf" @echo " to locally customize the native platform." @echo @echo " stargate builds for Stargate release 7" @echo " nims-stargate builds for Slauson platform" @echo " arm-linux builds for iPAQ" @echo @echo " stargate-ucla builds for Stargate UCLA release 5" @echo " ipaq-sa builds for all StrongARM-based iPAQs (Familiar)" @echo " pasta builds for PASTA" @echo " ilense-104 builds for the ilense testbed" @echo @echo " mica, mica2, mica2dot, cricket, micaz, telos" @echo " build Mote targets" @echo @echo " mica2 frequency selection by separate platforms:" @echo " mica2-433 (freq '0')" @echo " mica2-433-alt (freq '2')" @echo " mica2-918 (freq '1')" @echo " mica2-918-alt (freq '3')" @echo @echo " mica2 does not set a frequency; you can define it by" @echo " passing make EMSTAR_MOTE_FREQ=-DCC1K_DEFAULT_FREQ=xxx." @echo " Please avoid adding this TinyOS Makefiles, so " @echo " that people do not see unexpected frequency settings." @echo @echo Environment: @echo " NATIVE_KCFLAGS=$(NATIVE_KCFLAGS)" @echo " PKG_CONFIG_PATH=$(PKG_CONFIG_PATH)" @echo " GLIB_PATH=$(GLIB_PATH)" @echo " USE_SHARED='$(USE_SHARED)'" @echo " BUILD_EMTOS='$(BUILD_EMTOS)'" @echo " TOSDIR=$(TOSDIR)" @echo " TOS_CONTRIB=$(TOS_CONTRIB)" @echo " MAKERULES=$(MAKERULES)" @echo " NESC_DIR=$(NESC_DIR)" @echo " AVR_DIR=$(AVR_DIR)" @echo " EMSTAR_MOTE_FREQ=$(EMSTAR_MOTE_FREQ)" configure: @echo "Running autoconf..." autoconf make/config.h: configure @echo "Running ./configure..." @./configure || ( echo "Configure failed."; exit 1 ) touch make/config.h ifeq ($(strip $(IS_NATIVE)), 1) config.make: make/config.h @echo "Building config.make..." perl make/htosh.pl $(PWD) else config.make: @true endif