Build system base on scons(oic-resource)
[platform/upstream/iotivity.git] / arduino.scons
1 ##
2 # This script includes arduino specific config for oic-resource
3 ##
4 Import('env', 'TARGET_CPU_ARCH', 'ARDUINO_HOME')
5
6 # 'NET' build option
7 if env.get('NET') is None:
8         vars = Variables()
9         vars.Add(EnumVariable('NET', 'Network connection type', 'Ethernet', ['Ethernet', 'Wifi']))
10         vars.Update(env)
11         Help(vars.GenerateHelpText(env))
12
13 env.AppendUnique(CPPPATH = [
14                 ARDUINO_HOME + '/libraries/Ethernet/src',
15                 ARDUINO_HOME + '/libraries/Ethernet/src/utility',
16                 ARDUINO_HOME + '/libraries/WiFi/src',
17                 ARDUINO_HOME + '/libraries/WiFi/src/utility',
18                 ARDUINO_HOME + '/libraries/Time/',
19                 ])
20
21 if TARGET_CPU_ARCH == 'arm':
22         # Include path
23         env.AppendUnique(CPPPATH = [
24                         ARDUINO_HOME + '/hardware/arduino/sam/cores/arduino',
25                         ARDUINO_HOME + '/hardware/arduino/sam/cores/arduino/USB',
26                         ARDUINO_HOME + '/hardware/arduino/sam/cores/arduino/avr',
27                         ARDUINO_HOME + '/hardware/arduino/sam/system/libsam',
28                         ARDUINO_HOME + '/hardware/arduino/sam/system/CMSIS/CMSIS/Include',
29                         ARDUINO_HOME + '/hardware/arduino/sam/system/CMSIS/Device/ATMEL',
30                         ARDUINO_HOME + '/hardware/arduino/sam/variants/arduino_due_x',
31                         ARDUINO_HOME + '/hardware/arduino/sam/libraries/SPI',
32                         ])
33
34         # Compiler/Linker flags
35         env.AppendUnique(CXXFLAGS = ['-ffunction-sections', '-fdata-sections', '-nostdlib',
36                                                 '--param', 'max-inline-insns-single=500', '-fno-rtti', '-fno-exceptions',
37                                                 '-mcpu=cortex-m3', '-mthumb'
38                                         ])
39         env.AppendUnique(CPPDEFINES = ['printf=iprintf', 'F_CPU=84000000L', 'ARDUINO=157',
40                                                 'ARDUINO_SAM_DUE', 'ARDUINO_ARCH_SAM', '__SAM3X8E__', 'USB_VID=0x2341',
41                                                 'USB_PID=0x003e', 'USBCON', 'DUSB_MANUFACTURER="Unknown"', 'WITH_ARDUINO',
42                                         ])
43
44         # Source
45         ARDUINO_SRC = []
46         ARDUINO_SRC.extend(Glob(ARDUINO_HOME + '/hardware/arduino/sam/cores/arduino/*.c'))
47         ARDUINO_SRC.extend(Glob(ARDUINO_HOME + '/hardware/arduino/sam/cores/arduino/*.cpp'))
48         ARDUINO_SRC.extend(Glob(ARDUINO_HOME + '/hardware/arduino/sam/cores/arduino/avr/*.c'))
49         ARDUINO_SRC.extend(Glob(ARDUINO_HOME + '/hardware/arduino/sam/cores/arduino/USB/*.cpp'))
50         ARDUINO_SRC.extend(Glob(ARDUINO_HOME + '/hardware/arduino/sam/variants/arduino_due_x/*.cpp'))
51         ARDUINO_SRC.extend(Glob(ARDUINO_HOME + '/hardware/arduino/sam/libraries/SPI/*.cpp'))
52 else:
53         # Include path
54         env.AppendUnique(CPPPATH = [
55                         ARDUINO_HOME + '/hardware/arduino/avr/cores/arduino',
56                         ARDUINO_HOME + '/hardware/arduino/avr/libraries/SPI',
57                         ARDUINO_HOME + '/hardware/arduino/avr/variants/mega',
58                         ])
59
60         # Compiler/Linker flags
61         env.AppendUnique(CXXFLAGS = ['-mmcu=atmega2560', '-MMD', '-std=c++0x',
62                                                 '-Wno-write-strings', '-ffunction-sections', '-fdata-sections',
63                                                 '-fno-exceptions', '-felide-constructors'
64                                         ])
65         env.AppendUnique(CPPDEFINES = ['F_CPU=16000000L', 'ARDUINO=156', 'ARDUINO_AVR_MEGA2560',
66                                                 'ARDUINO_ARCH_AVR', 'WITH_ARDUINO', 'ATMEGA2560'
67                                         ])
68
69         # Source
70         ARDUINO_SRC = [
71                 ARDUINO_HOME + '/hardware/arduino/sam/cores/arduino/WInterrupts.c',
72                 ARDUINO_HOME + '/hardware/arduino/sam/cores/arduino/wiring.c',
73                 ARDUINO_HOME + '/hardware/arduino/sam/cores/arduino/wiring_digital.c',
74                 ARDUINO_HOME + '/hardware/arduino/sam/cores/arduino/main.cpp',
75                 ARDUINO_HOME + '/hardware/arduino/sam/cores/arduino/Stream.c',
76                 ARDUINO_HOME + '/hardware/arduino/sam/cores/arduino/WMath.c',
77                 ARDUINO_HOME + '/hardware/arduino/sam/cores/arduino/WString.c',
78                 ARDUINO_HOME + '/hardware/arduino/sam/cores/arduino/HardwareSerial.c',
79                 ARDUINO_HOME + '/hardware/arduino/sam/cores/arduino/Print.c',
80                 ARDUINO_HOME + '/hardware/arduino/sam/cores/arduino/IPAddress.c',
81                 ARDUINO_HOME + '/hardware/arduino/avr/libraries/SPI/SPI.cpp',
82                 ]
83
84 if env.get('NET') == 'Ethernet':
85         ARDUINO_SRC.extend(Glob(ARDUINO_HOME + '/libraries/Ethernet/src/*.cpp'))
86         ARDUINO_SRC.extend(Glob(ARDUINO_HOME + '/libraries/Ethernet/src/utility/*.cpp'))
87 else:
88         ARDUINO_SRC.extend(Glob(ARDUINO_HOME + '/libraries/WiFi/src/*.cpp'))
89         ARDUINO_SRC.extend(Glob(ARDUINO_HOME + '/libraries/WiFi/src/utility/*.cpp'))
90
91 Export('ARDUINO_SRC')