summaryrefslogtreecommitdiffhomepage
path: root/digital/zigbit/bitcloud/stack/Components/HAL/Makerules
blob: 8f133d444e5da1fc3528b46fc75c9302632d3c39 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
COMPONENTS_PATH = $(HAL_PATH)/..
STACK_PATH = $(COMPONENTS_PATH)/..
STACK_LIB_PATH = $(STACK_PATH)/lib
LIST_PATH = ./list

include $(COMPONENTS_PATH)/HAL/Configuration

#-------------------------------------------------------------------------------
# Platform specific compiler flags definition and settins checking:
#-------------------------------------------------------------------------------
ifndef PLATFORM
  $(error ERROR in file  Makerules: $(PLATFORM) Unknown type of platform) 
endif
ifeq ($(PLATFORM), PLATFORM_ZIGBIT)                         ######### ZigBit platform #####
  ifeq (, $(findstring $(HAL_FREQUENCY), HAL_8MHz HAL_4MHz))
    $(error ERROR in file  Makerules: $(HAL_FREQUENCY) Unknown type of HAL frequency for $(PLATFORM) platform) 
  endif

  ifeq (, $(findstring $(HAL), ATMEGA1281 ATMEGA2561))
    $(error ERROR in file  Makerules: $(HAL) Unknown type of HAL for $(PLATFORM) platform) 
  endif
  # For platform with 32.768 kHz only.  
  SYSTEM_TIME_ON = SLEEP_TIMER
endif # ZIGBIT

ifeq ($(PLATFORM), PLATFORM_RAVEN)                            ######### Raven platform #####
  # Checking parameters which were set by user.
  ifeq (, $(findstring $(HAL_FREQUENCY), HAL_8MHz HAL_4MHz))
    $(error ERROR in file  Makerules: $(HAL_FREQUENCY) Unknown type of HAL frequency for $(PLATFORM) platform) 
  endif
  # Setting platform parameters which can not be changed by user.
  HAL = ATMEGA1284
  # For platform with 32.768 kHz only.  
  SYSTEM_TIME_ON = SLEEP_TIMER
endif # RAVEN

ifeq ($(PLATFORM), PLATFORM_ATML_USB_DONGLE)         ######### ATML_USB_DONGLE platform #####
  # Setting platform parameters which can not be changed by user.
  HAL = AT90USB1287
  HAL_FREQUENCY = HAL_8MHz
endif # ATML_USB_DONGLE

ifeq ($(PLATFORM), PLATFORM_STK600)   ####### ATML_STK600 platform #### 
  RF_EXTENDER = REB231

  ifneq (, $(findstring $(HAL), ATXMEGA128A1 ATXMEGA256A3 ATXMEGA256D3))
    ifeq (, $(findstring $(HAL_CLOCK_SOURCE), CRYSTAL_16MHz RC_INTERNAL_32MHz RC_INTERNAL_2MHz))
      $(error ERROR in file  Makerules: $(HAL_CLOCK_SOURCE) Unknown type of clock source for $(PLATFORM) platform) 
    endif

    ifeq (, $(findstring $(HAL_ASYNC_CLOCK_SOURCE), RC_ULP RC_32K CRYSTAL_32K))
      $(error ERROR in file  Makerules: $(HAL_ASYNC_CLOCK_SOURCE) Unknown type of asynchronous clock source for $(PLATFORM) platform) 
    endif

    # Set asynchronous clock as system time for platform with 32.768 kHz (RC or crystal).
    ifneq (, $(findstring $(HAL_ASYNC_CLOCK_SOURCE), RC_32K CRYSTAL_32K))
      SYSTEM_TIME_ON = SLEEP_TIMER 
    endif

    ifeq (, $(findstring $(HAL_FREQUENCY), HAL_4MHz HAL_8MHz HAL_12MHz HAL_16MHz HAL_32MHz))
      $(error ERROR in file  Makerules: $(HAL_FREQUENCY) Unknown type of HAL frequency for $(PLATFORM) platform)
    endif

  else ifneq (, $(findstring $(HAL), ATMEGA128RFA1 ATMEGA256RFR2))
    ifeq (, $(findstring $(HAL_FREQUENCY), HAL_16MHz HAL_8MHz HAL_4MHz))
      $(error ERROR in file  Makerules: $(HAL_FREQUENCY) Unknown type of HAL frequency for $(PLATFORM) platform)
    endif

    # For platform with 32.768 kHz only.
    SYSTEM_TIME_ON = SLEEP_TIMER

  else
    $(error ERROR in file  Makerules: $(HAL) Unknown type of HAL for $(PLATFORM) platform) 
  endif
endif # PLATFORM_STK600

ifeq ($(PLATFORM), PLATFORM_STK500_RF2XX)   ####### ATML_STK500 + RF2XX radio platform #### 
  # Checking parameters.
  ifeq (, $(findstring $(HAL_FREQUENCY), HAL_8MHz HAL_4MHz))
    $(error ERROR in file  Makerules: $(HAL_FREQUENCY) Unknown type of HAL frequency for $(PLATFORM) platform) 
  endif

  ifeq (, $(findstring $(RF_EXTENDER), REB230 REB231 REB212))
    $(error ERROR in file  Makerules: $(RF_EXTENDER) Unknown type of the radio extension board for $(PLATFORM) platform)
  endif

  ifeq (, $(findstring $(HAL), ATMEGA1281 ATMEGA2561))
    $(error ERROR in file  Makerules: $(HAL) Unknown type of HAL for $(PLATFORM) platform) 
  endif
  
  # For platform with 32.768 kHz only.  
  SYSTEM_TIME_ON = SLEEP_TIMER
endif # PLATFORM_STK500_RF2XX


ifeq ($(PLATFORM), PLATFORM_ZIGBIT_TURBO)                   #### ZIGBIT_TURBO platform ####
  # Setting platform parameters which can not be changed by user.
  HAL = AT91SAM7X256
  HAL_FREQUENCY = HAL_48MHz

  # Checking parameters which were set by user.
  ifeq (, $(findstring $(HAL_CLOCK_SOURCE), CRYSTAL_18d432MHz RF))
    $(error ERROR in file  Makerules: $(HAL_CLOCK_SOURCE) Unknown clock HAL source for $(PLATFORM) platform) 
  endif
endif # PLATFORM_ZIGBIT_TURBO


ifeq ($(PLATFORM), PLATFORM_ZIGBIT_LAN)                     ###### ZIGBIT_LAN platform ####
  # Setting platform parameters which can not be changed by user.
  HAL = AT91SAM7X256
  HAL_FREQUENCY = HAL_48MHz

  # Checking parameters which were set by user.
  ifeq (, $(findstring $(HAL_CLOCK_SOURCE), CRYSTAL_18d432MHz RF))
    $(error ERROR in file  Makerules: $(HAL_CLOCK_SOURCE) Unknown clock HAL source for $(PLATFORM) platform) 
  endif
endif # PLATFORM_ZIGBIT_LAN


ifeq ($(PLATFORM), PLATFORM_SAM7X_EK_RF2XX)     ##### PLATFORM_SAM7X_EK_RF2XX platform ####
  HAL = AT91SAM7X256
  HAL_CLOCK_SOURCE = CRYSTAL_18d432MHz
  HAL_FREQUENCY = HAL_48MHz
endif # PLATFORM_SAM7X_EK_RF2XX


ifeq ($(PLATFORM), PLATFORM_CUSTOM_1)             ########### PLATFORM_CUSTOM_1 platform ####
  HAL = AT91SAM7X256
  HAL_CLOCK_SOURCE = CRYSTAL_8MHz
  HAL_FREQUENCY = HAL_48MHz
endif # PLATFORM_CUSTOM_1

ifeq ($(PLATFORM), PLATFORM_CUSTOM_2)            #### PLATFORM_CUSTOM_2 platform ####
  HAL = AT91SAM7X256
  HAL_CLOCK_SOURCE = CRYSTAL_8MHz
  HAL_FREQUENCY = HAL_48MHz
endif # PLATFORM_CUSTOM_2

ifeq ($(PLATFORM), PLATFORM_RF231USBRD)     ##### PLATFORM_RF231USBRD platform ####
  HAL = AT91SAM3S4C
  HAL_CLOCK_SOURCE = CRYSTAL_18d432MHz
  HAL_ASYNC_CLOCK_SOURCE = RC_ASYNC
  HAL_FREQUENCY = HAL_64MHz
endif # PLATFORM_RF231USBRD

ifeq ($(PLATFORM), PLATFORM_SAM3S_EK_RF2XX)     ##### PLATFORM_SAM3S_EK_RF2XX platform ####
  HAL = AT91SAM3S4C
  # For platform with 32.768 kHz only.  
  SYSTEM_TIME_ON = SLEEP_TIMER
endif # PLATFORM_SAM3S_EK_RF2XX

ifeq ($(PLATFORM), PLATFORM_SAM3S_PIRRD)        ##### PLATFORM_SAM3S_PIRRD platform ####
  HAL = AT91SAM3S4C
endif # PLATFORM_SAM3S_PIRRD

ifeq ($(PLATFORM), PLATFORM_CUSTOM_3)  
  # AT91SAM3S4B in fact, but changes are negligible
  HAL = AT91SAM3S4C
  HAL_FREQUENCY = HAL_64MHz
  HAL_CLOCK_SOURCE = CRYSTAL_16MHz
  HAL_ASYNC_CLOCK_SOURCE = RC_ASYNC
endif # PLATFORM_CUSTOM_3

ifeq ($(PLATFORM), PLATFORM_RCB)                         ######### RCB platform #####
  ifeq (, $(findstring $(PLATFORM_REV), RCB_ATMEGA128RFA1 RCB_ATMEGA256RFR2 RCB230_V31 RCB230_V32 RCB230_V331 RCB231_V402 RCB231_V411 RCB212_V532))
    $(error ERROR in file  Makerules: $(PLATFORM_REV) Unknown platform revision for PLATFORM_RCB) 
  endif

  ifeq ($(PLATFORM_REV), RCB_ATMEGA128RFA1)
    HAL = ATMEGA128RFA1
  else ifeq ($(PLATFORM_REV), RCB_ATMEGA256RFR2)
    HAL = ATMEGA256RFR2
  else
    HAL = ATMEGA1281
  endif # PLATFORM_REV

  ifeq (, $(findstring $(HAL_FREQUENCY), HAL_16MHz HAL_8MHz HAL_4MHz))
    $(error ERROR in file  Makerules: $(HAL_FREQUENCY) Unknown type of HAL frequency for $(PLATFORM) platform) 
  endif

  # For platform with 32.768 kHz only.
  SYSTEM_TIME_ON = SLEEP_TIMER
endif # PLATFORM_RCB

ifeq ($(PLATFORM), PLATFORM_AVR32_EVK1105)     ##### PLATFORM_AVR32_EVK1105 platform ####
  HAL = AT32UC3A0512
  HAL_FREQUENCY = HAL_48MHz
endif # PLATFORM_AVR32_EVK1105

ifeq ($(PLATFORM), PLATFORM_XPLAIN)   ####### XPLAIN platform ####
  HAL = ATXMEGA128A1
 
  # Checking parameters.
  ifeq (, $(findstring $(HAL_CLOCK_SOURCE), CRYSTAL_16MHz RC_INTERNAL_32MHz RC_INTERNAL_2MHz))
    $(error ERROR in file  Makerules: $(HAL_CLOCK_SOURCE) Unknown type of clock source for $(PLATFORM) platform) 
  endif

  # Checking parameters.
  ifeq (, $(findstring $(HAL_ASYNC_CLOCK_SOURCE), RC_ULP RC_32K CRYSTAL_32K))
    $(error ERROR in file  Makerules: $(HAL_ASYNC_CLOCK_SOURCE) Unknown type of asynchronous clock source for $(PLATFORM) platform) 
  endif

  # Set asynchronous clock as system time for platform with 32.768 kHz (RC or crystal).
  ifneq (, $(findstring $(HAL_ASYNC_CLOCK_SOURCE), RC_32K CRYSTAL_32K))
    SYSTEM_TIME_ON = SLEEP_TIMER 
  endif

  ifeq (, $(findstring $(HAL_FREQUENCY), HAL_4MHz HAL_8MHz HAL_12MHz HAL_16MHz HAL_32MHz))
    $(error ERROR in file  Makerules: $(HAL_FREQUENCY) Unknown type of HAL frequency for $(PLATFORM) platform) 
  endif
endif # PLATFORM_XPLAIN

ifeq ($(PLATFORM), PLATFORM_REB_CBB)   ####### REB CBB platform ####
  HAL = ATXMEGA256A3
 
  # Checking parameters.
  ifeq (, $(findstring $(RF_EXTENDER), REB230 REB231 REB212))
    $(error ERROR in file  Makerules: $(HAL_CLOCK_SOURCE)  Unknown type of the radio extension board for $(PLATFORM) platform) 
  endif
 
  # Checking parameters.
  ifeq (, $(findstring $(HAL_CLOCK_SOURCE), RC_INTERNAL_32MHz RC_INTERNAL_2MHz))
    $(error ERROR in file  Makerules: $(HAL_CLOCK_SOURCE) Unknown type of clock source for $(PLATFORM) platform) 
  endif

  # Checking parameters.
  ifeq (, $(findstring $(HAL_ASYNC_CLOCK_SOURCE), RC_ULP RC_32K CRYSTAL_32K))
    $(error ERROR in file  Makerules: $(HAL_ASYNC_CLOCK_SOURCE) Unknown type of asynchronous clock source for $(PLATFORM) platform) 
  endif

  # Set asynchronous clock as system time for platform with 32.768 kHz (RC or crystal).
  ifneq (, $(findstring $(HAL_ASYNC_CLOCK_SOURCE), RC_32K CRYSTAL_32K))
    SYSTEM_TIME_ON = SLEEP_TIMER 
  endif

  ifeq (, $(findstring $(HAL_FREQUENCY), HAL_4MHz HAL_8MHz HAL_12MHz HAL_16MHz HAL_32MHz))
    $(error ERROR in file  Makerules: $(HAL_FREQUENCY) Unknown type of HAL frequency for $(PLATFORM) platform) 
  endif
endif # PLATFORM_REB_CBB

ifeq ($(PLATFORM), PLATFORM_SIMULATOR)   ######### Simulator platform #####
  HAL = SIMULATOR
  HAL_FREQUENCY = HAL_0MHz
endif # PLATFORM_SIMULATOR

#-------------------------------------------------------------------------------
# CPU selection:
#-------------------------------------------------------------------------------
ifeq ($(HAL), ATMEGA1281)
  ifeq ($(COMPILER_TYPE), GCC)
    CPU = atmega1281
  endif
  ifeq ($(COMPILER_TYPE), IAR)
    CPU = m1281
  endif
endif
ifeq ($(HAL), ATMEGA2561)
  ifeq ($(COMPILER_TYPE), GCC)
    CPU = atmega2561
  endif
  ifeq ($(COMPILER_TYPE), IAR)
    CPU = m2561
  endif
endif
ifeq ($(HAL), ATMEGA1284)
  ifeq ($(COMPILER_TYPE), GCC)
    CPU = atmega1284p
  endif
  ifeq ($(COMPILER_TYPE), IAR)
    CPU = m1284p
  endif
endif
ifeq ($(HAL), AT90USB1287)
  ifeq ($(COMPILER_TYPE), GCC)
    CPU = at90usb1287
  endif
  ifeq ($(COMPILER_TYPE), IAR)
    CPU = m1287
  endif
endif
ifeq ($(HAL), ATXMEGA128A1)
  ifeq ($(COMPILER_TYPE), GCC)
    CPU = atxmega128a1
  endif
  ifeq ($(COMPILER_TYPE), IAR)
    CPU = xm128a1
  endif
endif
ifeq ($(HAL), ATXMEGA256A3)
  ifeq ($(COMPILER_TYPE), GCC)
    CPU = atxmega256a3
  endif
  ifeq ($(COMPILER_TYPE), IAR)
    CPU = xm256a3
  endif
endif
ifeq ($(HAL), ATXMEGA256D3)
  ifeq ($(COMPILER_TYPE), GCC)
    CPU = atxmega256d3
  endif
  ifeq ($(COMPILER_TYPE), IAR)
    CPU = xm256d3
  endif
endif
ifeq ($(HAL), AT91SAM7X256)
  CPU = arm7tdmi
endif
ifeq ($(HAL), AT91SAM3S4C)
  CPU = cortex-m3
endif  
ifeq ($(HAL), ATMEGA128RFA1)
  ifeq ($(COMPILER_TYPE), GCC)
    CPU = atmega128rfa1
  endif
  ifeq ($(COMPILER_TYPE), IAR)
    CPU = m128rfa1
  endif
endif
ifeq ($(HAL), ATMEGA256RFR2)
  ifeq ($(COMPILER_TYPE), GCC)
    CPU = atmega256rfr2
  endif
  ifeq ($(COMPILER_TYPE), IAR)
    CPU = m256rfr2
  endif
endif
ifeq ($(HAL), AT32UC3A0512)
  ifeq ($(COMPILER_TYPE), GCC)
    CPU = ???
  endif
  ifeq ($(COMPILER_TYPE), IAR)
    CPU = at32uc3a0512
  endif
endif
ifeq ($(HAL), SIMULATOR)
  CPU = simulator
endif
ifndef HAL
  $(error ERROR in file  Makerules: $(CPU) Unknown type of CPU) 
endif


#-------------------------------------------------------------------------------
# Cross-platform compiler type declaration:
#-------------------------------------------------------------------------------
ifndef COMPILER_TYPE
  $(error ERROR in file  Makerules: $(COMPILER_TYPE) - unknow type of compiler) 
endif
ifneq (, $(findstring $(HAL), AT91SAM7X256 AT91SAM3S4C))
  ifeq ($(COMPILER_TYPE), IAR)
    CROSS_COMPILER = arm
  endif
  ifeq ($(COMPILER_TYPE), GCC)
    CROSS_COMPILER = arm-none-eabi
  endif
endif
ifneq (, $(findstring $(HAL), ATMEGA1281 ATMEGA2561 ATMEGA1284 AT90USB1287 ATXMEGA128A1 ATXMEGA256A3 ATXMEGA256D3 ATMEGA128RFA1 ATMEGA256RFR2))
  CROSS_COMPILER = avr
endif
ifeq ($(HAL), AT32UC3A0512)
  CROSS_COMPILER = avr32
endif
ifndef CROSS_COMPILER
  #$(error ERROR in file  Makerules: Cross-platform compiler type is not detected) 
endif

#-------------------------------------------------------------------------------
# Output options definitions:
#-------------------------------------------------------------------------------
ifeq ($(QUIET), TRUE)
  Q = @
  SILENT = -s
 
  AS_MSG      = @echo "$(AS)" $?
  LD_MSG      = @echo "$(LD)" $@
  CC_MSG      = @echo "$(CC)" $?
  CPP_MSG     = @echo "$(CPP)" $?
  AR_MSG      = @echo "$(AR)" $@
  NM_MSG      = @echo "$(NM)" $@
  STRIP_MSG   = @echo "$(STRIP)" $@
  OBJCOPY_MSG = @echo "$(OBJCOPY)" $@
  OBJDUMP_MSG = @echo "$(OBJDUMP)" $@
  SHOW_SIZE   = @echo
else
  SHOW_SIZE   = $(SIZE)
endif


#-------------------------------------------------------------------------------
# Components paths. In each component COMPONENTS_PATH should be defined:
#-------------------------------------------------------------------------------
ifeq ($(PLATFORM), PLATFORM_ZIGBIT_TURBO)
  HAL_HWD_COMMON_PATH = $(HAL_PATH)/arm7tdmi/at91sam7x256/common
  HAL_MAC_API_PATH    = $(HAL_PATH)/arm7tdmi/at91sam7x256/zigBitArm
endif
ifeq ($(PLATFORM), PLATFORM_ZIGBIT_LAN)
  HAL_HWD_COMMON_PATH = $(HAL_PATH)/arm7tdmi/at91sam7x256/common
  HAL_MAC_API_PATH    = $(HAL_PATH)/arm7tdmi/at91sam7x256/zigBitArm
endif
ifeq ($(PLATFORM), PLATFORM_SAM7X_EK_RF2XX)
  HAL_HWD_COMMON_PATH = $(HAL_PATH)/arm7tdmi/at91sam7x256/common
  HAL_MAC_API_PATH    = $(HAL_PATH)/arm7tdmi/at91sam7x256/atmlEvalKit
endif
ifeq ($(PLATFORM), PLATFORM_CUSTOM_1)
  HAL_HWD_COMMON_PATH = $(HAL_PATH)/arm7tdmi/at91sam7x256/common
  HAL_MAC_API_PATH    = $(HAL_PATH)/arm7tdmi/at91sam7x256/custom1
endif
ifeq ($(PLATFORM), PLATFORM_CUSTOM_2)
  HAL_HWD_COMMON_PATH = $(HAL_PATH)/arm7tdmi/at91sam7x256/common
  HAL_MAC_API_PATH    = $(HAL_PATH)/arm7tdmi/at91sam7x256/custom2
endif
ifeq ($(PLATFORM), PLATFORM_SAM3S_EK_RF2XX)
  HAL_HWD_COMMON_PATH = $(HAL_PATH)/cortexm3/at91sam3s4c/common
  HAL_MAC_API_PATH    = $(HAL_PATH)/cortexm3/at91sam3s4c/sam3sEK
endif
ifeq ($(PLATFORM), PLATFORM_RF231USBRD)
  HAL_HWD_COMMON_PATH = $(HAL_PATH)/cortexm3/at91sam3s4c/common
  HAL_MAC_API_PATH    = $(HAL_PATH)/cortexm3/at91sam3s4c/Rf231UsbRd
endif
ifeq ($(PLATFORM), PLATFORM_SAM3S_PIRRD)
  HAL_HWD_COMMON_PATH = $(HAL_PATH)/cortexm3/at91sam3s4c/common
  HAL_MAC_API_PATH    = $(HAL_PATH)/cortexm3/at91sam3s4c/sam3sPIRRD
endif
ifeq ($(PLATFORM), PLATFORM_CUSTOM_3)
  HAL_HWD_COMMON_PATH = $(HAL_PATH)/cortexm3/at91sam3s4c/common
  HAL_MAC_API_PATH    = $(HAL_PATH)/cortexm3/at91sam3s4c/custom3
endif
ifeq ($(PLATFORM), PLATFORM_ZIGBIT)
  HAL_HWD_COMMON_PATH = $(HAL_PATH)/avr/atmega1281/common
  HAL_MAC_API_PATH    = $(HAL_PATH)/avr/atmega1281/zigBit
endif
ifeq ($(PLATFORM), PLATFORM_RAVEN)
  HAL_HWD_COMMON_PATH = $(HAL_PATH)/avr/atmega1284/common
  HAL_MAC_API_PATH    = $(HAL_PATH)/avr/atmega1284/raven
endif
ifeq ($(PLATFORM), PLATFORM_STK600)
  ifeq ($(HAL), ATMEGA128RFA1)
    HAL_HWD_COMMON_PATH = $(HAL_PATH)/avr/atmega128rfa1/common
    HAL_MAC_API_PATH    = $(HAL_PATH)/avr/atmega128rfa1/common
  endif
  ifeq ($(HAL), ATMEGA256RFR2)
    HAL_HWD_COMMON_PATH = $(HAL_PATH)/avr/atmega128rfa1/common
    HAL_MAC_API_PATH    = $(HAL_PATH)/avr/atmega128rfa1/common
  endif
  ifeq ($(HAL), ATXMEGA128A1)
    HAL_HWD_COMMON_PATH = $(HAL_PATH)/xmega/atxmega128a1/common
    HAL_MAC_API_PATH    = $(HAL_PATH)/xmega/atxmega128a1/stk600
  endif # ATXMEGA128A1
  ifeq ($(HAL), ATXMEGA256A3)
    HAL_HWD_COMMON_PATH = $(HAL_PATH)/xmega/atxmega256a3/common
    HAL_MAC_API_PATH    = $(HAL_PATH)/xmega/atxmega256a3/stk600
  endif # ATXMEGA256A3
  ifeq ($(HAL), ATXMEGA256D3)
    HAL_HWD_COMMON_PATH = $(HAL_PATH)/xmega/atxmega256d3/common
    HAL_MAC_API_PATH    = $(HAL_PATH)/xmega/atxmega256d3/stk600
  endif # ATXMEGA256D3  
endif # PLATFORM_STK600
ifeq ($(PLATFORM), PLATFORM_STK500_RF2XX)
  ifneq (, $(findstring $(RF_EXTENDER), REB230))
    HAL_HWD_COMMON_PATH = $(HAL_PATH)/avr/atmega1281/common
    HAL_MAC_API_PATH    = $(HAL_PATH)/avr/atmega1281/rcb230
  endif
  ifneq (, $(findstring $(RF_EXTENDER), REB231 REB212))
    HAL_HWD_COMMON_PATH = $(HAL_PATH)/avr/atmega1281/common
    HAL_MAC_API_PATH    = $(HAL_PATH)/avr/atmega1281/rcb231_212
  endif
endif
ifeq ($(PLATFORM), PLATFORM_ATML_USB_DONGLE)
  HAL_HWD_COMMON_PATH = $(HAL_PATH)/avr/at90usb1287/common
  HAL_MAC_API_PATH    = $(HAL_PATH)/avr/at90usb1287/usbDongle
endif
ifeq ($(PLATFORM), PLATFORM_RCB)
  ifneq (, $(findstring $(PLATFORM_REV), RCB_ATMEGA128RFA1 RCB_ATMEGA256RFR2))
    HAL_HWD_COMMON_PATH = $(HAL_PATH)/avr/atmega128rfa1/common
    HAL_MAC_API_PATH    = $(HAL_PATH)/avr/atmega128rfa1/common
  endif
  ifneq (, $(findstring $(PLATFORM_REV), RCB230_V31 RCB230_V32 RCB230_V331))
    HAL_HWD_COMMON_PATH = $(HAL_PATH)/avr/atmega1281/common
    HAL_MAC_API_PATH    = $(HAL_PATH)/avr/atmega1281/rcb230
  endif
  ifneq (, $(findstring $(PLATFORM_REV), RCB231_V402 RCB231_V411 RCB212_V532))
    HAL_HWD_COMMON_PATH = $(HAL_PATH)/avr/atmega1281/common
    HAL_MAC_API_PATH    = $(HAL_PATH)/avr/atmega1281/rcb231_212
  endif
endif
ifeq ($(PLATFORM), PLATFORM_AVR32_EVK1105)
  HAL_HWD_COMMON_PATH = $(HAL_PATH)/avr32/uc32a0512/common
  HAL_MAC_API_PATH    = $(HAL_PATH)/avr32/uc32a0512/evk1105
endif
ifeq ($(PLATFORM), PLATFORM_XPLAIN)
  HAL_HWD_COMMON_PATH = $(HAL_PATH)/xmega/atxmega128a1/common
  HAL_MAC_API_PATH    = $(HAL_PATH)/xmega/atxmega128a1/xplain
endif # PLATFORM_XPLAIN
ifeq ($(PLATFORM), PLATFORM_REB_CBB)
  HAL_HWD_COMMON_PATH = $(HAL_PATH)/xmega/atxmega256a3/common
  HAL_MAC_API_PATH    = $(HAL_PATH)/xmega/atxmega256a3/stk600
endif # PLATFORM_REB_CBB
ifeq ($(PLATFORM), PLATFORM_SIMULATOR)
  HAL_HWD_COMMON_PATH = $(HAL_PATH)/simulator
  HAL_MAC_API_PATH    = $(HAL_PATH)/simulator
endif
ifndef HAL_HWD_COMMON_PATH
  $(error ERROR in file  Makerules: unknown or unsupported platform) 
endif
ifndef HAL_MAC_API_PATH
  $(error ERROR in file  Makerules: unknown or unsupported platform) 
endif

#-------------------------------------------------------------------------------------
# Stack library name definition.
#-------------------------------------------------------------------------------------
ifeq ($(COMPILER_TYPE), IAR)
  LIB_NAME_COMPILER = _Iar
endif
ifeq ($(COMPILER_TYPE), GCC)
  LIB_NAME_COMPILER = _Gcc
endif

ifeq ($(HAL_FREQUENCY), HAL_0MHz)
  LIB_NAME_HAL_FREQ = _0Mhz
else ifeq ($(HAL_FREQUENCY), HAL_4MHz)
  LIB_NAME_HAL_FREQ = _4Mhz
else ifeq ($(HAL_FREQUENCY), HAL_8MHz)
  LIB_NAME_HAL_FREQ = _8Mhz
else ifeq ($(HAL_FREQUENCY), HAL_12MHz)
  LIB_NAME_HAL_FREQ = _12Mhz
else ifeq ($(HAL_FREQUENCY), HAL_16MHz)
  LIB_NAME_HAL_FREQ = _16Mhz
else ifeq ($(HAL_FREQUENCY), HAL_18d432MHz)
  LIB_NAME_HAL_FREQ = _18_432MHz
else ifeq ($(HAL_FREQUENCY), HAL_32MHz)
  LIB_NAME_HAL_FREQ = _32Mhz
else ifeq ($(HAL_FREQUENCY), HAL_48MHz)
  LIB_NAME_HAL_FREQ = _48Mhz
else ifeq ($(HAL_FREQUENCY), HAL_64MHz)
  LIB_NAME_HAL_FREQ = _64Mhz
endif


ifeq ($(PLATFORM), PLATFORM_ZIGBIT)
  HAL_LIB_NAME_PLATFORM = _ZigBit
endif
ifeq ($(PLATFORM), PLATFORM_RAVEN)
  HAL_LIB_NAME_PLATFORM = _Raven
endif
ifeq ($(PLATFORM), PLATFORM_ATML_USB_DONGLE)
  HAL_LIB_NAME_PLATFORM = _AtmlUsbDongle
endif
ifeq ($(PLATFORM), PLATFORM_STK600)
  HAL_LIB_NAME_PLATFORM = _AtmlStk600
endif
ifeq ($(PLATFORM), PLATFORM_STK500_RF2XX)
  HAL_LIB_NAME_PLATFORM = _AtmlStk500Rf2xx
endif
ifeq ($(PLATFORM), PLATFORM_ZIGBIT_TURBO)
  HAL_LIB_NAME_PLATFORM = _ZigBitTurbo
endif
ifeq ($(PLATFORM), PLATFORM_ZIGBIT_LAN)
  HAL_LIB_NAME_PLATFORM = _ZigBitLan
endif
ifeq ($(PLATFORM), PLATFORM_SAM7X_EK_RF2XX)
  HAL_LIB_NAME_PLATFORM = _Sam7xEkRf2xx
endif
ifeq ($(PLATFORM), PLATFORM_CUSTOM_1)
  HAL_LIB_NAME_PLATFORM = _Custom1
endif
ifeq ($(PLATFORM), PLATFORM_CUSTOM_2)
  HAL_LIB_NAME_PLATFORM = _Custom2
endif
ifeq ($(PLATFORM), PLATFORM_SAM3S_EK_RF2XX)
  HAL_LIB_NAME_PLATFORM = _Sam3sEkRf2xx
endif
ifeq ($(PLATFORM), PLATFORM_RF231USBRD)
  HAL_LIB_NAME_PLATFORM = _Rf231UsbRd
endif
ifeq ($(PLATFORM), PLATFORM_SAM3S_PIRRD)
  HAL_LIB_NAME_PLATFORM = _Sam3sPirrd
endif  
ifeq ($(PLATFORM), PLATFORM_CUSTOM_3)
  HAL_LIB_NAME_PLATFORM = _Custom3
endif  
ifeq ($(PLATFORM), PLATFORM_RCB)
  ifeq ($(PLATFORM_REV), RCB_ATMEGA128RFA1)
    HAL_LIB_NAME_PLATFORM = _RcbAtm128rfa1
  else ifeq ($(PLATFORM_REV), RCB_ATMEGA256RFR2)
    HAL_LIB_NAME_PLATFORM = _RcbAtm256rfr2
  else
    ifneq (, $(findstring $(PLATFORM_REV), RCB230_V31 RCB230_V32 RCB230_V331))
      HAL_LIB_NAME_PLATFORM = _Rcb230
    endif
    ifneq (, $(findstring $(PLATFORM_REV), RCB231_V402 RCB231_V411 RCB212_V532))
      HAL_LIB_NAME_PLATFORM = _Rcb231_212
    endif
  endif # PLATFORM_REV  
endif
ifeq ($(PLATFORM), PLATFORM_AVR32_EVK1105)
  HAL_LIB_NAME_PLATFORM = _Avr32Evk1105
endif
ifeq ($(PLATFORM), PLATFORM_XPLAIN)
  HAL_LIB_NAME_PLATFORM = _Xplain
endif
ifeq ($(PLATFORM), PLATFORM_REB_CBB)
  ifneq (, $(findstring $(RF_EXTENDER), REB230))
    HAL_LIB_NAME_PLATFORM = _RebCbb230
  endif
  ifneq (, $(findstring $(RF_EXTENDER), REB231 REB212))
    HAL_LIB_NAME_PLATFORM = _RebCbb231_212
  endif
endif
ifeq ($(PLATFORM), PLATFORM_SIMULATOR)
  HAL_LIB_NAME_PLATFORM = _Sim
endif

ifeq ($(HAL), ATMEGA1281)
  LIB_NAME_MICRO = _Atmega1281
endif
ifeq ($(HAL), ATMEGA2561)
  LIB_NAME_MICRO = _Atmega2561
endif
ifeq ($(HAL), ATMEGA1284)
  LIB_NAME_MICRO = _Atmega1284
endif
ifeq ($(HAL), AT90USB1287)
  LIB_NAME_MICRO = _At90usb1287
endif
ifeq ($(HAL), ATXMEGA128A1)
  LIB_NAME_MICRO = _Atxmega128a1
endif
ifeq ($(HAL), ATXMEGA256A3)
  LIB_NAME_MICRO = _Atxmega256a3
endif
ifeq ($(HAL), ATXMEGA256D3)
  LIB_NAME_MICRO = _Atxmega256d3
endif
ifeq ($(HAL), ATMEGA128RFA1)
  LIB_NAME_MICRO = _Atmega128rfa1
endif
ifeq ($(HAL), ATMEGA256RFR2)
  LIB_NAME_MICRO = _Atmega256rfr2
endif
ifeq ($(HAL), AT91SAM7X256)
  LIB_NAME_MICRO = _At91sam7x256
endif
ifeq ($(HAL), AT91SAM3S4C)
  LIB_NAME_MICRO = _At91sam3s4c
endif
ifeq ($(HAL), AT32UC3A0512)
  LIB_NAME_MICRO = _At32uc3a0512
endif
ifeq ($(HAL), SIMULATOR)
  LIB_NAME_MICRO = _Sim
endif

ifeq ($(HAL_USE_AMPLIFIER), TRUE)
  LIB_NAME_AMP = _Amp
endif


STACK_LIB = $(LIB_NAME_MICRO)$(LIB_NAME_COMPILER)

ifndef STACK_LIB
  $(error ERROR: Build target is not defined) 
endif

include $(STACK_LIB_PATH)/Makerules$(STACK_LIB)

HAL_LIB = HAL$(HAL_LIB_NAME_PLATFORM)$(LIB_NAME_MICRO)$(LIB_NAME_HAL_FREQ)$(LIB_NAME_COMPILER)$(LIB_NAME_AMP)

#-------------------------------------------------------------------------------
# Compiler flags:
#-------------------------------------------------------------------------------
CFLAGS += -D$(HAL)
CFLAGS += -D$(PLATFORM)
CFLAGS += -D$(OS)
ifdef HAL_FREQUENCY
  CFLAGS += -D$(HAL_FREQUENCY)
endif 
ifdef HAL_CLOCK_SOURCE            ####### For platforms with different main clock sources ####
  CFLAGS += -D$(HAL_CLOCK_SOURCE)
endif
ifdef HAL_ASYNC_CLOCK_SOURCE      ####### For platforms with different asyncronous clock sources ####
  CFLAGS += -D$(HAL_ASYNC_CLOCK_SOURCE)
endif
ifeq ($(PLATFORM), PLATFORM_RCB)   ####### RCB platform #### 
  CFLAGS += -D$(PLATFORM_REV)
endif
ifdef RF_EXTENDER                  ####### RF extension boards type for REB CBB & STK600 #### 
  CFLAGS += -D$(RF_EXTENDER)
endif
ifeq ($(HAL_USE_AMPLIFIER), TRUE)   #### enable amplifier for zigbit platform  ####
  CFLAGS += -D_HAL_USE_AMPLIFIER_
endif
ifeq ($(HAL_USE_USART_ERROR_EVENT), TRUE)  #### enable usart error handler ####  
  CFLAGS += -D_USE_USART_ERROR_EVENT_
endif
ifeq ($(HAL_RF_RX_TX_INDICATOR), TRUE)  #### enable RF_RX_TX_INDICATOR ####  
  CFLAGS += -D_HAL_RF_RX_TX_INDICATOR_
endif
ifeq ($(HAL_ANT_DIVERSITY), TRUE)  #### enable Antenna diversity ####  
  CFLAGS += -D_HAL_ANT_DIVERSITY_
endif
ifeq ($(HAL_USE_PIRRD_SPECIAL_SLEEP), TRUE) #### Special sleep mode for WPIRDemo application
  CFLAGS += -D_HAL_USE_PIRRD_SPECIAL_SLEEP_
endif

#-------------------------------------------------------------------------------
# UART HW support compiler flags.
# AVR platforms support only UART channel 1 hardware control.
# ARM platforms support both UART channels hardware control.
#-------------------------------------------------------------------------------
ifeq ($(PLATFORM), PLATFORM_ZIGBIT_LAN)
  CFLAGS += -D_UART_0_HW_CONTROL_
endif
ifeq ($(PLATFORM), PLATFORM_SAM7X_EK_RF2XX)
  CFLAGS += -D_UART_0_HW_CONTROL_
endif
ifeq ($(PLATFORM), PLATFORM_ZIGBIT_TURBO)
  CFLAGS += -D_UART_0_HW_CONTROL_
endif

#-------------------------------------------------------------------------------
# Compiler flags for debug info:
#-------------------------------------------------------------------------------
ifeq ($(BUILD_CONFIGURATION), DEBUG)
  ifeq ($(COMPILER_TYPE), IAR)
    CFLAGS += --debug
  endif
  ifeq ($(COMPILER_TYPE), GCC)
    CFLAGS += -g
  endif
endif # DEBUG

#-------------------------------------------------------------------------------
# Check compiler version:
#-------------------------------------------------------------------------------
ifeq ($(COMPILER_TYPE), GCC)
  COMPILER_VERSION = $(strip $(shell $(CC) -v 2>&1 | grep 'gcc version'))
endif
ifeq ($(COMPILER_TYPE), IAR)
  COMPILER_VERSION = $(strip $(shell $(CC) | grep 'C/C++ Compiler V'))
endif

ifeq ($(COMPILER_AND_MICRO_TYPE), GCC_AVR)
  EXP_VERSION = gcc version 4.3.3 (WinAVR 20100110)
else ifeq ($(COMPILER_AND_MICRO_TYPE), IAR_AVR)
  EXP_VERSION = IAR C/C++ Compiler V5.51.5.50367/W32 for Atmel AVR
else ifeq ($(COMPILER_AND_MICRO_TYPE), GCC_ARM)
  EXP_VERSION = gcc version 4.5.1 (GCC)
else ifeq ($(COMPILER_AND_MICRO_TYPE), IAR_ARM)
  EXP_VERSION = IAR ANSI C/C++ Compiler V6.21.1.52794/W32 for ARM
else ifeq ($(COMPILER_AND_MICRO_TYPE), IAR_AVR32)
  EXP_VERSION = IAR C/C++ Compiler V3.30.1.40051/W32 for Atmel AVR32
else ifeq ($(COMPILER_AND_MICRO_TYPE), GCC_X86)
  UNAME := $(shell uname)
  ifeq ($(UNAME), Linux)
    EXP_VERSION = gcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3)
  else
    EXP_VERSION = gcc version 4.5.2 (GCC)
  endif
else
  $(error unsupported COMPILER_AND_MICRO_TYPE)
endif

ifeq ($(COMPILER_TYPE), IAR)
  COMPILER_TYPE_LOWER_CASE = _Iar
else
  COMPILER_TYPE_LOWER_CASE = _Gcc
endif # COMPILER_TYPE

ifeq ($(HAL), ATMEGA1281)
  WDT_INIT_OBJ=WdtInitatmega1281$(COMPILER_TYPE_LOWER_CASE).o
endif
ifeq ($(HAL), ATMEGA2561)
  WDT_INIT_OBJ=WdtInitatmega2561$(COMPILER_TYPE_LOWER_CASE).o
endif
ifeq ($(HAL), ATMEGA1284)
  WDT_INIT_OBJ=WdtInitatmega1284$(COMPILER_TYPE_LOWER_CASE).o
endif
ifeq ($(HAL), AT90USB1287)
  WDT_INIT_OBJ=WdtInitat90usb1287$(COMPILER_TYPE_LOWER_CASE).o
endif
ifeq ($(HAL), ATMEGA128RFA1)
  WDT_INIT_OBJ=WdtInitatmega128rfa1$(COMPILER_TYPE_LOWER_CASE).o
endif
ifeq ($(HAL), ATMEGA256RFR2)
  WDT_INIT_OBJ=WdtInitatmega256rfr2$(COMPILER_TYPE_LOWER_CASE).o
endif
ifeq ($(HAL), AT91SAM7X256)
  ifeq ($(OS), FREE_RTOS)
    FREE_RTOS_LIB=FreeRTOSat91sam7x256
  endif
  ifeq ($(COMPILER_TYPE), GCC)
    ifeq ($(OS), FREE_RTOS)
      BOOT_OBJ = $(LIBDIR)/FreertosBoot$(COMPILER_TYPE_LOWER_CASE).o
    endif
    ifeq ($(OS), NONE_OS)
      BOOT_OBJ = $(LIBDIR)/FirmwareBoot$(COMPILER_TYPE_LOWER_CASE).o
    endif
  endif
  ifeq ($(COMPILER_TYPE), IAR)
    ifeq ($(OS), FREE_RTOS)
    endif
    ifeq ($(OS), NONE_OS)
      BOOT_OBJ = $(LIBDIR)/FirmwareBoot$(COMPILER_TYPE_LOWER_CASE).o
    endif
  endif
endif