+# Extra threads Makefile target to enable thread support for tinyos
+# Kevin Klues May 16th, 2008
+
+#Set up flag signifying threads are enabled
+THREADS = THREADS
+PFLAGS += -D$(THREADS)
+TOS_THREADS_DIR ?= $(TOSDIR)/lib/tosthreads
+
+#Include directories required by all platforms and mcus
+CFLAGS += -I$(TOS_THREADS_DIR)/system
+CFLAGS += -I$(TOS_THREADS_DIR)/interfaces
+CFLAGS += -I$(TOS_THREADS_DIR)/types
+
+#Setup the thread scheduler for use by redefining the name of the task scheduler to use
+PFLAGS += -tosscheduler=TinyTaskSchedulerC,TinyTaskSchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask
+
+#Msp430 specific include directories on tested platforms
+THREADS_MSP430_DIR = $(TOS_THREADS_DIR)/chips/msp430
+THREADS_MSP430_INCLUDE_DIRS = -I$(THREADS_MSP430_DIR)
+THREADS_MSP430_INCLUDE_DIRS += -I$(THREADS_MSP430_DIR)/adc12
+
+#Atm128 specific include directories on tested platforms
+THREADS_ATM128_DIR = $(TOS_THREADS_DIR)/chips/atm128
+THREADS_ATM128_INCLUDE_DIRS = -I$(THREADS_ATM128_DIR)
+
+#Atm1281 specific include directories on tested platforms
+THREADS_ATM1281_DIR = $(TOS_THREADS_DIR)/chips/atm1281
+THREADS_ATM1281_INCLUDE_DIRS = -I$(THREADS_ATM1281_DIR)
+
+#Telos specific include directories
+THREADS_TELOS_INCLUDE_DIRS = -I$(TOS_THREADS_DIR)/platforms/telosa
+
+#Mica2 specific include directories
+THREADS_MICA2_INCLUDE_DIRS = -I$(TOS_THREADS_DIR)/platforms/mica2/chips/cc1000
+
+#Add CFLAGS for supported platforms
+ifneq ($(filter telos telosa telosb tmote,$(MAKECMDGOALS)),)
+ CFLAGS += $(THREADS_MSP430_INCLUDE_DIRS)
+ CFLAGS += $(THREADS_TELOS_INCLUDE_DIRS)
+endif
+ifneq ($(filter mica2,$(MAKECMDGOALS)),)
+ CFLAGS += $(THREADS_ATM128_INCLUDE_DIRS)
+ CFLAGS += $(THREADS_MICA2_INCLUDE_DIRS)
+endif
+ifneq ($(filter micaz,$(MAKECMDGOALS)),)
+ CFLAGS += $(THREADS_ATM128_INCLUDE_DIRS)
+endif
+ifneq ($(filter iris,$(MAKECMDGOALS)),)
+ CFLAGS += $(THREADS_ATM1281_INCLUDE_DIRS)
+ CFLAGS += $(THREADS_ATM128_INCLUDE_DIRS)
+endif