36 EnsureSConsVersion(2, 0)
45 opts.Add(EnumVariable(
'BOOTLDR',
'Determines bootloader type',
'msu',
46 allowed_values=(
'msu',
'none')))
48 print "Creating a SCons build environment for Microchip C30 family"
54 tools = [
'gcc',
'gnulink',
'ar',
'zip',
'packaging'],
57 CCCOM =
'$CC -c -o $TARGET $CFLAGS $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS $SOURCES',
58 CCCCOMSTR =
'Compiling $SOURCES',
59 CCFLAGS =
'-mcpu=${MCU} -Wall -O1',
61 ARSTR =
'Create static library: $TARGET',
66 env[
'ENV'][
'PATH'] = os.environ[
'PATH']
69 if os.name ==
'posix':
70 print "Modifiying environment for Linux"
71 incDirs = Split(
"""include
72 /usr/pic30-elf/include
73 /usr/share/pic30-support/generic/h
74 /usr/share/pic30-support/pic24h/h
85 LINK =
'pic30-elf-gcc',
90 b2h = Builder(action =
'pic30-elf-bin2hex $SOURCE',
93 env.Append(BUILDERS = {
'Hex' : b2h})
96 print "Modifying environment for Windoze"
97 incDirs = Split(
"""lib/include
112 b2h = Builder(action =
'pic30-bin2hex $SOURCE',
115 env.Append(BUILDERS = {
'Hex' : b2h})
118 dict = env.Dictionary()
119 if dict[
'BOOTLDR'] ==
'msu':
121 LINKFLAGS =
'-mcpu=${MCU} -Wl,--heap=100,$LINKERSCRIPT',
122 LINKERSCRIPT =
'--script=lib/lkr' + os.sep +
'p${MCU}_bootldr.gld',
126 LINKFLAGS =
'-mcpu=${MCU} -Wl,--heap=100,$LINKERSCRIPT',
127 LINKERSCRIPT =
'--script=p${MCU}.gld',
133 print "Running with -j", env.GetOption(
'num_jobs')
136 Help(opts.GenerateHelpText(env))
159 'standard_header.txt',
185 archiveFileName =
'build/pic24_code_examples.zip'
188 def buildTargetsSConscript(buildTargets, env, variantDirName):
189 SConscript(
'SCons_build.py', exports=
'buildTargets env',
190 variant_dir=
'build/' + env[
'MCU'] +
"_" + variantDirName)
194 SConscript(
'./templates/SConscript.py',
'env')
196 env.Alias(
'template-build', [
'lib/include/pic24_uart.h',
'lib/include/pic24_i2c.h',
197 'lib/include/pic24_ecan.h',
198 'lib/common/pic24_uart.c',
'lib/common/pic24_i2c.c',
199 'lib/common/pic24_spi.c',
'lib/common/pic24_ecan.c']);
203 if 'zipit' in COMMAND_LINE_TARGETS:
205 env.Command(Glob(
'docs/*'), Glob(
'lib/common/*.c'),
"doxygen")
207 zipNode = env.Zip(archiveFileName, archiveFiles)
208 env.Alias(
'zipit', zipNode)
213 buildTargetsSConscript([
'chap8',
'chap9',
'chap10',
'chap11nodma',
'chap12',
215 env.Clone(MCU=
'24HJ32GP202'),
'default')
218 buildTargetsSConscript( [
'chap10large', ],
219 env.Clone(MCU=
'24HJ64GP202'),
'default')
222 buildTargetsSConscript([
'chap8',
'chap9',
'chap10',
'chap10large',
'chap11nodma',
'chap12',
223 'chap15',
'bootloader'],
224 env.Clone(MCU=
'24FJ64GA002'),
'default')
227 buildTargetsSConscript([
'chap8',
'chap9',
'chap10',
'chap11nodma',
'chap12',
229 env.Clone(MCU=
'33FJ32GP202'),
'default')
232 buildTargetsSConscript( [
'chap10large'],
233 env.Clone(MCU=
'33FJ64GP202'),
'default')
240 buildTargetsSConscript([
'chap11dma',
'chap13',
'chap15',
'bootloader'],
241 env.Clone(MCU=
'24HJ64GP502'),
'default')
244 buildTargetsSConscript([
'chap8',
'chap9',
'chap10',
'chap10stdio',
'chap11dma',
'chap12big',
'chap12',
245 'chap13',
'chap15',
'bootloader'],
246 env.Clone(MCU=
'33FJ128GP802'),
'default')
249 buildTargetsSConscript([
'chap8',
'chap9',
'chap10',
'chap11_24E',
'chap12big',
'chap12_24E',
251 env.Clone(MCU=
'24EP64GP202'),
'default')
255 buildTargetsSConscript([
'explorer',
'bootloader'],
256 env.Clone(MCU=
'24FJ128GA010', CPPDEFINES=
'HARDWARE_PLATFORM=EXPLORER16_100P'),
'default')
257 buildTargetsSConscript([
'explorerh',
'bootloader'],
258 env.Clone(MCU=
'24HJ256GP610', CPPDEFINES=
'HARDWARE_PLATFORM=EXPLORER16_100P'),
'default')
261 buildTargetsSConscript([
'reset'],
262 env.Clone(MCU=
'24HJ32GP202', CPPDEFINES=
'_NOFLOAT'),
'nofloat')
265 buildTargetsSConscript([
'reset'],
266 env.Clone(MCU=
'24FJ64GA002', CPPDEFINES=
'HARDWARE_PLATFORM=STARTER_BOARD_28P'),
'starter_board_28p')
267 buildTargetsSConscript([
'reset'],
268 env.Clone(MCU=
'33FJ128GP204', CPPDEFINES=
'HARDWARE_PLATFORM=DANGEROUS_WEB'),
'dangerous_web')
271 for clock
in [
'SIM_CLOCK',
'FRCPLL_FCY16MHz',
'FRC_FCY4MHz',
272 'PRI_NO_PLL_7372KHzCrystal',
'PRIPLL_8MHzCrystal_16MHzFCY']:
273 buildTargetsSConscript([
'reset'],
274 env.Clone(MCU=
'24FJ64GA002', CPPDEFINES=
'CLOCK_CONFIG=' + clock), clock)
275 buildTargetsSConscript([
'reset'],
276 env.Clone(MCU=
'24FJ64GA102', CPPDEFINES=
'CLOCK_CONFIG=' + clock), clock)
279 for clock
in [
'SIM_CLOCK',
'PRI_NO_PLL_7372KHzCrystal',
'FRC_FCY3685KHz',
280 'FRCPLL_FCY40MHz',
'PRIPLL_7372KHzCrystal_40MHzFCY',
'PRIPLL_8MHzCrystal_40MHzFCY']:
281 buildTargetsSConscript([
'reset'],
282 env.Clone(MCU=
'24HJ32GP202', CPPDEFINES=
'CLOCK_CONFIG=' + clock), clock)
283 buildTargetsSConscript([
'reset'],
284 env.Clone(MCU=
'33FJ128GP802', CPPDEFINES=
'CLOCK_CONFIG=' + clock), clock)