source: svn/branches/kctv/newcon3bcm2_21bu/dst/build/nexus.mk @ 45

Last change on this file since 45 was 2, checked in by phkim, 11 years ago

1.phkim

  1. revision copy newcon3sk r27
  • Property svn:executable set to *
File size: 10.0 KB
Line 
1################################################################
2#
3# Broadcom Corp. Confidential
4# Copyright 2003 Broadcom Corp. All Rights Reserved.
5#
6# THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED
7# SOFTWARE LICENSE AGREEMENT BETWEEN THE USER AND BROADCOM.
8# YOU HAVE NO RIGHT TO USE OR EXPLOIT THIS MATERIAL EXCEPT
9# SUBJECT TO THE TERMS OF SUCH AN AGREEMENT.
10#
11# $brcm_Workfile:  $
12# $brcm_Revision:  $
13# $brcm_Date: $
14#
15# Module Description:  ram makefile
16#
17# Revision History:
18#
19# Created: Wed Sep 13 11:49:24 PDT 2006 by Jeffrey Fisher
20#
21# $brcm_Log: $
22#
23################################################################/
24
25TOP_DIR         := $(shell cd ../../ ; /bin/pwd)
26
27#
28# Software version number MAJOR_VERSION.MINOR_VERSION.SUB_VERSION
29# Major number can be in the range from 0 to 7
30# Minor number can be in the range 0 to 31
31# Sub version  can be in the range 0 to 15
32#
33MAJOR_VERSION   ?= 0
34MINOR_VERSION   ?= 2
35SUB_VERSION     ?= 0
36
37#
38#
39#
40ROM_CHECKSUM    ?= 0x00000000
41
42#
43# Configuration for default build
44#
45
46PLATFORM        = 97574
47
48#
49# To suppress the display all make commands
50#
51
52#QUIET          = @
53QUIET           =
54
55#
56# To build in debug support
57#
58
59DEBUG                   ?= y
60export DEBUG
61
62#
63# Types of applications
64#
65
66APP_TYPE                ?= dta
67
68#
69# BUILD_NEXUS
70#
71
72BUILD_NEXUS             = y
73
74#
75# BUILD_NEXUS_APP
76#
77
78BUILD_NEXUS_APP         ?= n
79
80#
81# To include profiling support
82#
83
84PROFILE                 ?=n
85
86#
87# Include EIA 708 CC rendering
88#
89
90HAS_EIA_708             ?= y
91
92#
93# Include SCTE65 parsing rendering
94#
95
96#
97# Include Subtitle parsing and rendering
98#
99HAS_SCTE27              ?=n
100
101HAS_SCTE65              ?= y
102
103HAS_SCTE18              ?=y
104#HAS_SCTE127            ?=y
105HAS_CAT                 ?=y
106
107#
108# Include PSIP parsing rendering
109#
110
111HAS_ATSC_PSIP           ?= y
112
113#
114# Select remote protocol.
115#
116#       0 - Remote A
117#       1 - Twirp,XMP
118#       3 - Remote B
119#       8 - Motorola
120#       
121
122USERIO_ID               ?= 8
123
124
125#
126# Since platform.inc define CFLAGS it is important it be included before any other CFLAGS are set.
127#
128
129include platform.inc
130
131TUNER_TEST ?= n
132
133#
134# SCTE-65 defines
135#
136
137ifeq (${HAS_SCTE65}, y)
138
139#
140# Enable/Disable DTA Cable mode.
141#
142
143# Power Monitor
144
145CFLAGS     += -DCONFIG_MONITOR_PVT -DCONFIG_SMARTCARD_TEST
146
147# For inital SCTE-65 test streams set CONFIG_NETWORK_PID to 0x777
148
149CFLAGS                          += -DCONFIG_NETWORK_PID=0x1FFC -DDEF_VERSION=0x00000011
150
151CFLAGS                          += -DCONFIG_DTA_CABLE -DCONFIG_SCREENSAVER -DCONFIG_COMCAST_BUILD
152
153CFLAGS                          += -DDOWNLOAD_FLASH_OFFSET=0x68000
154
155CFLAGS                          += -DCONFIG_CUSTOMER_PASSWD=0x00030201
156
157#
158# TUNER_BAND for historical reasons is actualy which parser to use and
159# PARSER_BAND is actualy the input source of the parser */
160#
161
162CFLAGS                          += -DTUNER_BAND=0 -DPARSER_BAND=3
163
164#
165#  NEXUS Defines normalin in platform header file in Nexus build
166#
167CFLAGS                          += -DNEXUS_NUM_AUDIO_DECODERS=3
168#
169# Enable all the following to meet NEW UDTA Spec Requirements
170#
171CFLAGS                          += -DCONFIG_REQUIRE_CAT
172
173# To IGNORE VCT ID set CONFIG_DEF_VCT_ID=0xFFFF
174
175CFLAGS                          += -DCONFIG_DEF_VCT_ID=0xF100
176CFLAGS                          += -DCONFIG_DEF_EMM_PID=0x1FF0
177
178# Vendor and Hardware ID
179CFLAGS                          += -DDEF_VENDOR_ID=0x0FACED     # 3 bytes
180CFLAGS                          += -DDEF_HARDWARE_ID=$(PLATFORM)
181CFLAGS                          += -DDEF_VENDOR_NAME=\"Broadcom\"
182
183endif  ### ifeq (${HAS_SCTE65}, y) ###
184
185#
186# Root directories where sources reside
187#
188
189DTA_DIR                 = $(TOP_DIR)/dta
190BUILD_DIR               = $(DTA_DIR)/build
191SOURCE_DIR              = $(DTA_DIR)/src
192MAGNUM_DIR              = $(TOP_DIR)/magnum
193BSEAV_DIR               = $(TOP_DIR)/BSEAV
194BCMBIN_DIR              = $(TOP_DIR)/dta/bin
195SYSLIB_DIR              = $(MAGNUM_DIR)/syslib
196NEXUS_TOP               = $(TOP_DIR)/nexus
197
198#
199# Defines important to PI Module
200#
201
202OS                      = ucos_ii
203MAGNUM                  = $(MAGNUM_DIR)
204
205#
206# Source directories
207#
208
209OS_DIR          = $(SOURCE_DIR)/$(OS)
210Z_DIR           = $(SOURCE_DIR)/z
211BFDB_DIR        = $(SOURCE_DIR)/bfdb
212FCC_DIR         = $(SOURCE_DIR)/settop_api
213APP_DIR         = $(SOURCE_DIR)/app
214ifeq (${APP_TYPE},dta)
215APP_SRC_DIR     = $(APP_DIR)/dta
216else
217APP_SRC_DIR     = $(APP_DIR)/nanotv
218endif
219LIB_DIR = $(DTA_DIR)/lib
220
221#
222# Base CFLAGS
223#
224
225CFLAGS += -DUCOS_II
226
227#
228# Identify chip
229#
230
231CFLAGS += -DBCHP_CHIP=$(BCHP_CHIP) -DBCHP_VER=BCHP_VER_$(BCHP_VER)
232
233#
234# Identify version
235#
236
237CFLAGS += -DMAJOR_VERSION=$(MAJOR_VERSION) -DMINOR_VERSION=$(MINOR_VERSION) -DSUB_VERSION=$(SUB_VERSION)
238
239#
240# DTA defines
241#
242
243ifeq ($(CONFIG_XMP_REMOTE),y)
244        CFLAGS += -DCONFIG_XMP_REMOTE
245endif
246
247CFLAGS +=  -DUSERIO_ID=$(USERIO_ID)
248
249ifeq (${HAS_EIA_708},y)
250CFLAGS          += -DCONFIG_EIA_708
251endif
252
253CFLAGS += -DCONFIG_ENABLE_UART
254
255#
256# Flags enabling build of non-distributed sources
257#
258
259BUILD_UCOS ?= n
260BUILD_LIBFCC ?= n
261
262ENABLE_UMESSAGE ?= n
263
264#
265# Flags enabling HDCP lib support
266#
267ifeq ($(HDCPLIB),y)
268        CFLAGS += -DHDCPLIB
269        BHSM_SECURE_KEYLADDER_MK ?=1
270        BHDCPLIB_HDCP_SUPPORT ?=1
271        export CUST=G
272        export BHSM_KEYLADDER=ON
273        export KEYLADDER_SUPPORT=y
274endif
275
276#
277# Target binary name
278#
279
280TARGET          = nexus$(PLATFORM)
281
282#
283# The targets
284#
285
286all: api makefile jar nexus$(PLATFORM).gz
287
288LDFLAGS += -T ld.script
289
290NEXUS_PLATFORM = 97552
291
292BCM_SRC = $(SOURCE_DIR)/boot_nexus.c \
293        $(SOURCE_DIR)/ram_init_nexus.c \
294        $(SOURCE_DIR)/nexus_msg.c
295
296
297BCM_SRC += \
298        $(SOURCE_DIR)/bos_ucos_ii.c \
299        $(SOURCE_DIR)/bos_trace.c \
300        $(SOURCE_DIR)/gdb_nub.c
301
302CFLAGS += -DMINISTD_RAM=1
303
304#
305# use 32 bit for Aspect Ratio manipulation
306CFLAGS  += -DBVDC_UINT32_ONLY=1
307
308BCM_ASM_SRC += $(SOURCE_DIR)/crt.S $(SOURCE_DIR)/memcpy.S
309
310CFLAGS += -DNEXUS_UCOS_II
311CFLAGS += -I$(MAGNUM_DIR)/portinginterface/urt/$(BCHP_CHIP)
312CFLAGS += -I$(MAGNUM_DIR)/basemodules/int
313
314BCM_SRC += $(SOURCE_DIR)/ministd.c \
315                $(SOURCE_DIR)/bcmmemmgr.c \
316                $(SOURCE_DIR)/serial.c
317               
318               
319TEST_SRC = \
320                $(SOURCE_DIR)/stdio.c \
321                $(SOURCE_DIR)/libc.c
322
323
324BCM_SRC += $(SOURCE_DIR)/cache_util.c
325
326
327export BUILD_SYSTEM=nexus
328export PVR_SUPPORT=n
329export PLAYBACK_IP_SUPPORT=n
330
331export LANGUAGE=en_US.UTF-8
332export LANG=en_US.UTF-8
333export LC_ALL=en_US.UTF-8
334
335
336BCM_VARIABLES = PLATFORM=97552 \
337                BCHP_VER=$(BCHP_VER) \
338                BUILD_SYSTEM=nexus \
339                NETACCEL_SUPPORT=n \
340                PLAYBACK_IP_SUPPORT=n \
341                PVR_SUPPORT=n \
342                NEXUS_SERVER_SUPPORT=n \
343                OS=ucos_ii \
344                DEBUG=$(DEBUG) Q_=
345
346
347ifeq ($(HDCPLIB),y)
348BCM_VARIABLES += HDCPLIB=y \
349                BHSM_SECURE_KEYLADDER_MK=1 \
350                BHDCPLIB_HDCP_SUPPORT=1 \
351                CUST=G \
352                BHSM_KEYLADDER=ON \
353                KEYLADDER_SUPPORT=y
354endif
355#
356#  PI Modules
357#
358CFLAGS += -DBSTD_CPU_ENDIAN=BSTD_ENDIAN_LITTLE
359
360include ucos.mk
361
362include $(NEXUS_TOP)/platforms/$(NEXUS_PLATFORM)/build/platform_app.inc
363
364BCM_LIBS += -lnexus -L${NEXUS_BIN_DIR}
365
366#
367# This is the minimum needed to compile and link with Nexus
368#
369
370CFLAGS += $(NEXUS_CFLAGS) $(addprefix -I,$(NEXUS_APP_INCLUDE_PATHS)) $(addprefix -D,$(NEXUS_APP_DEFINES))
371
372include settop_api.mk
373
374include soft_gfx.mk
375
376#
377# Include path definitions
378#
379
380BCM_INCLUDE     = $(patsubst %,-I%,$(subst :, ,$(BCM_VPATH)))
381
382#
383# more CFLAG defines
384#
385
386CFLAGS += $(BCM_INCLUDE) -I./ -DMEMCOPY -DBKNI_TRACK_MALLOCS=0
387
388#
389# 3560 Driver obj files
390#
391
392BCM_OBJS = $(BCM_SRC:.c=.o)
393BCM_ASM_OBJS += $(BCM_ASM_SRC:.S=.o)
394
395ifeq (${ENABLE_APP},n)
396        CFLAGS += -DDEBUG_APP
397endif
398
399
400#
401# Soft floating point
402#
403SOFT_FP_LIB = $(LIB_DIR)/soft-fp.a
404
405
406BCM_LIB_OBJS = $(NEXUS_BIN_DIR)/libnexus.a $(LIB_DIR)/libucos_ii.a $(SOFT_FP_LIB) 
407
408ifeq (${BUILD_SETTOP_API},y)
409SETTOP_API_OBJS += $(LIB_DIR)/libsoft_gfx.a $(LIB_DIR)/libb_os.a
410LDFLAGS += --whole-archive
411# BCM_LIBS += -lb_os -lsoft_gfx -L$(LIB_DIR)
412endif
413
414SYM_OBJ = $(SYM_SRC:%.c=%.o)
415SYM_INC = $(SYM_SRC:%.c=%.inc)
416
417BCM_DEPENDS := $(BCM_OBJS:.o=.d) $(BCM_ASM_OBJS:.o=.d)
418
419api:
420        $(MAKE) $(BCM_VARIABLES) -C $(NEXUS_TOP)/build
421
422nexus_clean:
423        $(MAKE) $(BCM_VARIABLES) -C $(NEXUS_TOP)/build clean
424
425${SYM_OBJ} : ${SYM_SRC} $(filter-out $(SYM_OBJ),$(BCM_OBJS) ${BCM_ASM_OBJS})
426        ${ECHO} Building symbol table $<
427        ${QUIET}# compile  empty sym-table and link with it
428        ${QUIET}${RM) ${SYM_INC}
429        ${QUIET}echo '/* */' >${SYM_INC}
430        ${QUIET}$(CC) $(CFLAGS) -I. -c $< -o $(notdir $@)
431        ${QUIET}$(LD) $(LDFLAGS) $(BCM_OBJS) $(BCM_ASM_OBJS) $(SOFT_FP_LIB) -o ${TARGET}.elf.sym
432        ${QUIET}# compile with real sym-table but possibly wrong offsets
433        ${QUIET}${RM) ${SYM_INC}
434        ${QUIET}${NM} -f bsd -n --defined-only ${TARGET}.elf.sym|grep -v "_ftext"|awk  '/.* [Tt] .*/ {printf "B_SYM(0x%su,%s)\n",$$1,$$3}' >${SYM_INC}
435        $(QUIET)$(CC) $(CFLAGS) -I. -c $< -o $(notdir $@)
436        ${QUIET}${RM} ${SYM_INC}
437        ${QUIET}$(LD) -Map $(TARGET).map.sym $(LFLAGS) $(BCM_OBJS) $(BCM_ASM_OBJS) $(SOFT_FP_LIB) -o ${TARGET}.elf.sym
438        ${QUIET}# build real symtable and compile with it
439        ${QUIET}${NM} -f bsd -n --defined-only ${TARGET}.elf.sym|grep -v "_ftext"|awk  '/.* [Tt] .*/ {printf "B_SYM(0x%su,%s)\n",$$1,$$3}' >${SYM_INC}
440        $(QUIET)$(CC) $(CFLAGS) -I. -c $< -o $(notdir $@)
441        ${QUIET}${MV} ${SYM_INC} $(SYM_INC:%.inc=%.sym)
442
443$(TARGET).elf: $(BCM_OBJS) $(BCM_ASM_OBJS) $(BCM_LIB_OBJS) $(SETTOP_API_OBJS)
444        $(LD) -Map $(TARGET).map $(LDFLAGS) $(BCM_ASM_OBJS) $(BCM_OBJS) $(BCM_LIB_OBJS) $(SETTOP_API_OBJS) -o $@
445
446$(TARGET).bin: $(TARGET).elf
447        $(CROSS_COMPILE)objcopy -S -O binary $(TARGET).elf $(TARGET).bin
448#       $(CROSS_COMPILE)objdump -d $(TARGET).elf > $(TARGET).dis
449#       $(CAT) $(TARGET).bin | $(TOP_DIR)/tools/zpipe > $(BCMBIN_DIR)/$(TARGET).gz
450
451%.o: %.c
452        $(ECHO) '$(CC) -c $(notdir $<)'
453        $(QUIET)$(CC) $(CFLAGS) -c $< -o $@
454
455%.o: %.S
456        $(ECHO) '$(CC) -c $(notdir $<)'
457        $(QUIET)$(CC) $(ASFLAGS) -c $< -o $@
458
459clean:  nexus_clean
460        $(RM) -f $(TARGET) *.gz *.o_* *.sym *.map *~ core *.elf *.bin *.dis *.lst $(BCM_OBJS) $(BCM_ASM_OBJS) $(BCM_DEPENDS)
461
462ifeq (${BUILD_MIPS_AC3},y)
463        $(RM) -f ${AUDIO_FLAG}
464endif
465
466
467JAR_BINARY = $(SOURCE_DIR)/jar/jar.bin
468
469jar : $(JAR_BINARY) $(TARGET).gz $(TARGET)_jar.bin
470
471$(TARGET).gz : $(TARGET).bin
472        gzip -cn -9 $< > $@
473$(TARGET)_jar.bin : $(TARGET).gz
474        cat $(JAR_BINARY) $< > $@
475$(JAR_BINARY) :
476        make -C $(SOURCE_DIR)/jar clean all
477
478bootloader :
479        cd $(SOURCE_DIR)/bootloader ; $(MAKE) -f $(BUILD_DIR)/bootloader.mk DEBUG=$(DEBUG) PLATFORM=$(PLATFORM)
480
481bootloader_clean :
482        cd $(SOURCE_DIR)/bootloader ; $(MAKE) -f $(BUILD_DIR)/bootloader.mk DEBUG=$(DEBUG) PLATFORM=$(PLATFORM) clean
483
484$(SOURCE_DIR)/bootloader/bootloader.bin : bootloader
485
486# To build comple flash we need to:
487# 1 build bootloader
488# 2 pad bootloader to 64K
489# 3 build compressed image
490# 4 concatenate padded bootloader and comressed image
491flash$(PLATFORM)_nexus.bin : $(SOURCE_DIR)/bootloader/bootloader.bin $(TARGET).gz
492        dd if=$< of=bootloader-128k.bin bs=64k count=2 conv=sync
493        cat bootloader-128k.bin $(TARGET).gz > $@
494
495flash$(PLATFORM)_nexus.gz : flash$(PLATFORM)_nexus.bin
496        gzip -cn -9 $< > $@
497
498flash_clean :
499        $(RM) -f flash$(PLATFORM)_nexus.bin flash$(PLATFORM)_nexus.gz
500
501#
502# Include all the depends
503#
504-include $(BCM_DEPENDS)
Note: See TracBrowser for help on using the repository browser.