############################################################################ # openamp/libmetal.defs # # Copyright (C) 2019 Xiaomi. All rights reserved. # Author: Xiang Xiao # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # 3. Neither the name NuttX nor the names of its contributors may be # used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS # OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED # AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # ############################################################################ ifeq ($(CONFIG_OPENAMP),y) ifeq ($(CONFIG_ARCH), sim) LIBMETAL_ARCH = x86_64 else ifeq ($(CONFIG_ARCH), risc-v) LIBMETAL_ARCH = riscv else LIBMETAL_ARCH = $(CONFIG_ARCH) endif CSRCS += libmetal/lib/system/nuttx/condition.c CSRCS += libmetal/lib/system/nuttx/device.c CSRCS += libmetal/lib/system/nuttx/init.c CSRCS += libmetal/lib/system/nuttx/io.c CSRCS += libmetal/lib/system/nuttx/irq.c CSRCS += libmetal/lib/system/nuttx/shmem.c CSRCS += libmetal/lib/system/nuttx/time.c CSRCS += libmetal/lib/device.c CSRCS += libmetal/lib/dma.c CSRCS += libmetal/lib/init.c CSRCS += libmetal/lib/io.c CSRCS += libmetal/lib/irq.c CSRCS += libmetal/lib/log.c CSRCS += libmetal/lib/shmem.c CSRCS += libmetal/lib/version.c CFLAGS += -DMETAL_INTERNAL LIBMETAL_HDRS_SEDEXP := \ "s/@PROJECT_VER_MAJOR@/0/g; \ s/@PROJECT_VER_MINOR@/1/g; \ s/@PROJECT_VER_PATCH@/0/g; \ s/@PROJECT_VER@/0.1.0/g; \ s/@PROJECT_SYSTEM@/nuttx/g; \ s/@PROJECT_PROCESSOR@/$(LIBMETAL_ARCH)/g; \ s/@PROJECT_MACHINE@/$(CONFIG_ARCH_CHIP)/g; \ s/@PROJECT_SYSTEM_UPPER@/nuttx/g; \ s/@PROJECT_PROCESSOR_UPPER@/$(LIBMETAL_ARCH)/g; \ s/@PROJECT_MACHINE_UPPER@/$(CONFIG_ARCH_CHIP)/g; \ s/cmakedefine/undef/g" libmetal.zip: $(Q) wget https://github.com/OpenAMP/libmetal/archive/v$(VERSION).zip -O libmetal.zip $(Q) unzip -o libmetal.zip $(Q) mv libmetal-$(VERSION) libmetal $(Q) patch -p0 < 0001-system-nuttx-change-clock_systimespec-to-clock_systi.patch .libmetal_headers: libmetal.zip $(eval headers := $(wildcard libmetal/lib/compiler/gcc/*.h)) $(eval headers += $(wildcard libmetal/lib/processor/$(LIBMETAL_ARCH)/*.h)) $(eval headers += $(wildcard libmetal/lib/system/nuttx/*.h)) $(eval headers += $(wildcard libmetal/lib/*.h)) $(foreach header,$(headers), \ $(eval hobj := $(patsubst libmetal$(DELIM)lib$(DELIM)%,$(TOPDIR)$(DELIM)include$(DELIM)metal$(DELIM)%,$(header))) \ $(shell if [ ! -d $(dir $(hobj)) ];then mkdir -p $(dir $(hobj)); fi) \ $(shell sed $(LIBMETAL_HDRS_SEDEXP) $(header) > $(hobj)) \ ) touch $@ dirlinks:: .libmetal_headers distclean:: $(call DELDIR, $(TOPDIR)$(DELIM)include$(DELIM)metal) $(call DELDIR, libmetal) $(call DELFILE, libmetal.zip) $(call DELFILE, .libmetal_headers) endif