1# Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved.
2# Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved.
3#
4# Redistribution and use in source and binary forms, with or without modification,
5# are permitted provided that the following conditions are met:
6#
7# 1. Redistributions of source code must retain the above copyright notice, this list of
8#    conditions and the following disclaimer.
9#
10# 2. Redistributions in binary form must reproduce the above copyright notice, this list
11#    of conditions and the following disclaimer in the documentation and/or other materials
12#    provided with the distribution.
13#
14# 3. Neither the name of the copyright holder nor the names of its contributors may be used
15#    to endorse or promote products derived from this software without specific prior written
16#    permission.
17#
18# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
20# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
22# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
25# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
26# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
27# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
28# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
30# strip quotation mark in configuration
31
32LOSCFG_ARCH_CPU_STRIP   := $(subst $\",,$(LOSCFG_ARCH_CPU))
33LOSCFG_ARCH_CPU          = $(LOSCFG_ARCH_CPU_STRIP)
34
35LOSCFG_ARCH_FPU_STRIP   := $(subst $\",,$(LOSCFG_ARCH_FPU))
36LOSCFG_ARCH_FPU          = $(LOSCFG_ARCH_FPU_STRIP)
37
38ifeq ($(LOSCFG_ARCH_ARM_AARCH32), y)
39ARCH                    := arm
40else ifeq ($(LOSCFG_ARCH_ARM_AARCH64), y)
41ARCH                    := aarch64
42endif
43
44LITEOS_BASELIB          += -l$(LOSCFG_ARCH_CPU)
45LITEOS_BASELIB          += -lgic
46
47LIB_SUBDIRS             += arch/arm/$(ARCH)
48LIB_SUBDIRS             += arch/arm/gic
49
50# CPU compile options
51ifeq ($(LOSCFG_ARCH_ARM_AARCH64), y)
52ifeq ($(LOSCFG_ARCH_FPU_DISABLE), y)
53EXTENSION               := +nofp
54endif
55endif
56LITEOS_CPU_OPTS         := -mcpu=$(LOSCFG_ARCH_CPU)$(EXTENSION)
57
58# FPU compile options
59# -mfloat and -mfpu is ignored with AArch64 targets
60ifeq ($(LOSCFG_ARCH_ARM_AARCH32), y)
61LITEOS_FLOAT_OPTS       := -mfloat-abi=softfp
62LITEOS_FPU_OPTS         := -mfpu=$(LOSCFG_ARCH_FPU)
63# gcc libc folder style is combine with core and fpu
64# for example, cortex-a7 with softfp abi and neon vfp4 is: a7_softfp_neon_vfp4
65LITEOS_GCCLIB           := $(subst cortex-,,$(LOSCFG_ARCH_CPU))_softfp_$(LOSCFG_ARCH_FPU)
66endif
67
68LITEOS_CORE_COPTS        = $(or $(ARCH_CFLAGS),$(LITEOS_CPU_OPTS) $(LITEOS_FLOAT_OPTS) $(LITEOS_FPU_OPTS))
69LITEOS_ASOPTS           += $(LITEOS_CPU_OPTS)
70LITEOS_CXXOPTS_BASE     += $(LITEOS_CORE_COPTS)
71
72ARCH_INCLUDE            := -I $(LITEOSTOPDIR)/arch/arm/include \
73                           -I $(LITEOSTOPDIR)/arch/arm/$(ARCH)/include \
74                           -I $(LITEOSTOPDIR)/arch/arm/$(ARCH)/src/include
75
76LITEOS_PLATFORM_INCLUDE += $(ARCH_INCLUDE)
77