blob: c119f1474c5f54cf841372aef31025555850a449 [file] [log] [blame]
if BUILD_XTENSA_SMP
SUBDIRS = smp include
else
SUBDIRS = up include
endif
noinst_PROGRAMS = \
sof
# generate linker script from platform headers
LINK_SCRIPT = ../../platform/$(PLATFORM)/$(PLATFORM_LDSCRIPT)
LINK_DEPS = ../../platform/$(PLATFORM)/include/platform/memory.h
if XCC
LINK_DEPS += \
$(ROOT_DIR)/arch/include/xtensa/config/core-isa*
else
LINK_DEPS += \
../../platform/$(PLATFORM)/include/arch/xtensa/config/core-isa*
endif
nodist_sof_SOURCES = $(LINK_SCRIPT).in
BUILT_SOURCES = $(LINK_SCRIPT)
CLEANFILES = $(LINK_SCRIPT)
$(LINK_SCRIPT): Makefile $(LINK_SCRIPT).in $(LINK_DEPS)
cat $(LINK_SCRIPT).in | $(CPP) -P $(PLATFORM_INCDIR) $(SOF_INCDIR) - >$@
noinst_LIBRARIES = \
libreset.a
if BUILD_XTENSA_SMP
libreset_a_SOURCES = \
smp/xtos/memctl_default.S \
smp/xtos/reset-vector.S
else
libreset_a_SOURCES = \
up/xtos/reset-vector.S
endif
libreset_a_CCASFLAGS = \
$(ARCH_INCDIR) \
$(ASFLAGS) \
$(AM_CCASFLAGS) \
$(PLATFORM_INCDIR) \
-mtext-section-literals
sof_SOURCES = \
timer.c
if BUILD_XTENSA_SMP
sof_SOURCES += \
smp/xtos/crt1-boards.S \
smp/xtos/_vectors.S \
smp/cpu.c \
smp/init.c \
smp/schedule.c \
smp/task.c
else
sof_SOURCES += \
up/xtos/crt1-boards.S \
up/xtos/_vectors.S \
up/cpu.c \
up/init.c \
up/schedule.c \
up/task.c
endif
if BUILD_BOOTLOADER
sof_SOURCES += \
main-entry.S
endif
sof_CFLAGS = \
$(ARCH_INCDIR) \
$(AM_CFLAGS) \
$(ARCH_CFLAGS) \
$(PLATFORM_INCDIR) \
$(SOF_INCDIR)
sof_CCASFLAGS = \
$(ARCH_INCDIR) \
$(ASFLAGS) \
$(AM_CCASFLAGS) \
$(PLATFORM_INCDIR)
sof_LDADD = \
../../init/libinit.a \
../../tasks/libtasks.a \
../../lib/libcore.a \
../../platform/$(PLATFORM)/libplatform.la \
../../ipc/libsof_ipc.a \
../../lib/libdma.a \
../../audio/libaudio.a \
../../drivers/libdrivers.a \
../../math/libsof_math.a \
-lgcc
if BUILD_XTENSA_SMP
sof_LDADD += \
smp/xtos/libxtos.a \
smp/xtos/libxlevel2.a \
smp/xtos/libxlevel3.a \
smp/xtos/libxlevel4.a \
smp/xtos/libxlevel5.a \
smp/hal/libhal.a
else
sof_LDADD += \
up/xtos/libxtos.a \
up/xtos/libxlevel2.a \
up/xtos/libxlevel3.a \
up/xtos/libxlevel4.a \
up/xtos/libxlevel5.a \
up/hal/libhal.a
endif
if !BUILD_BOOTLOADER
sof_LDADD += \
libreset.a
endif
sof_LDFLAGS = \
$(AM_LDFLAGS) \
$(ARCH_LDFLAGS) -Wl,-Map=sof-$(FW_NAME).map \
-T ../../platform/$(PLATFORM)/$(PLATFORM_LDSCRIPT)
RIMAGE_FLAGS = sof-$(FW_NAME)
RIMAGE_BOOT_FLAGS =
BIN_FLAGS = sof
if BUILD_BOOTLOADER
noinst_PROGRAMS += \
boot_ldr
LINK_BOOT_LDR_SCRIPT = ../../platform/$(PLATFORM)/$(PLATFORM_BOOT_LDR_LDSCRIPT)
BUILT_SOURCES += $(LINK_BOOT_LDR_SCRIPT)
CLEANFILES += $(LINK_BOOT_LDR_SCRIPT)
nodist_boot_ldr_SOURCES = $(LINK_BOOT_LDR_SCRIPT).in
$(LINK_BOOT_LDR_SCRIPT): Makefile $(LINK_BOOT_LDR_SCRIPT).in $(LINK_DEPS)
cat $(LINK_BOOT_LDR_SCRIPT).in | $(CPP) -P $(PLATFORM_INCDIR) $(SOF_INCDIR) - >$@
boot_ldr_SOURCES = \
boot_entry.S \
boot_loader.c
if BUILD_XTENSA_SMP
boot_ldr_SOURCES += \
smp/xtos/_vectors.S
else
boot_ldr_SOURCES += \
up/xtos/_vectors.S
endif
boot_ldr_CFLAGS = \
$(ARCH_INCDIR) \
$(AM_CFLAGS) \
$(ARCH_CFLAGS) \
$(PLATFORM_INCDIR) \
$(SOF_INCDIR)
boot_ldr_CCASFLAGS = \
$(ARCH_INCDIR) \
$(ASFLAGS) \
$(AM_CCASFLAGS) \
$(PLATFORM_INCDIR)
boot_ldr_LDADD = \
libreset.a \
-lgcc
if BUILD_XTENSA_SMP
boot_ldr_LDADD += \
smp/hal/libhal.a
else
boot_ldr_LDADD += \
up/hal/libhal.a
endif
boot_ldr_LDFLAGS = \
$(AM_LDFLAGS) \
$(ARCH_LDFLAGS) \
-T ../../platform/$(PLATFORM)/$(PLATFORM_BOOT_LDR_LDSCRIPT)
boot_ldr-local:
cp boot_ldr boot_ldr-$(FW_NAME)
$(OBJCOPY) -O binary ../../platform/$(PLATFORM)/boot_module mod-boot-$(FW_NAME).bin
$(OBJCOPY) --add-section .module=mod-boot-$(FW_NAME).bin \
--set-section-flags .module=load,readonly boot_ldr-$(FW_NAME)
$(OBJCOPY) -O binary boot_ldr boot_ldr-$(FW_NAME).bin
$(OBJDUMP) -h -D boot_ldr > boot_ldr-$(FW_NAME).map
$(OBJDUMP) -S boot_ldr > boot_ldr-$(FW_NAME).lst
$(OBJDUMP) -D boot_ldr > boot_ldr-$(FW_NAME).dis
RIMAGE_BOOT_FLAGS += boot_ldr-$(FW_NAME)
BIN_FLAGS +=boot_ldr-local
endif
if BUILD_MODULE
MODULE_COPY=$(OBJCOPY) -O binary ../../platform/$(PLATFORM)/module mod-$(FW_NAME).bin
MODULE_INSERT=$(OBJCOPY) --add-section .module=mod-$(FW_NAME).bin \
--set-section-flags .module=load,readonly sof-$(FW_NAME)
else
MODULE_COPY=
MODULE_INSERT=
endif
if USE_MEU
RIMAGE=rimage -o sof-$(FW_NAME).ri -m $(FW_NAME) $(RIMAGE_BOOT_FLAGS) $(RIMAGE_FLAGS) -s $(MEU_OFFSET)
MEU=$(MEU_PATH)/meu -w ./ -s sof-$(FW_NAME) -key $(PRIVATE_KEY) -stp /usr/bin/openssl -f $(MEU_PATH)/generic_meu_conf.xml \
-mnver 0.0.0.0 -o sof-$(FW_NAME).ri
else
RIMAGE=rimage -o sof-$(FW_NAME).ri -m $(FW_NAME) $(RIMAGE_BOOT_FLAGS) $(RIMAGE_FLAGS)
MEU=
endif
bin-local: $(BIN_FLAGS)
cp sof sof-$(FW_NAME)
$(MODULE_COPY)
$(MODULE_INSERT)
$(OBJDUMP) -S sof-$(FW_NAME) > sof-$(FW_NAME).lst
$(OBJDUMP) -D sof-$(FW_NAME) > sof-$(FW_NAME).dis
$(RIMAGE)
$(MEU)
vminstall-local:
scp -P 5555 sof-*.ri root@localhost:/lib/firmware/intel/
clean-local:
rm -fr mod-*
rm -fr *.bin
rm -fr *.lst
rm -fr *.map
rm -fr *.dis