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-include $(LITEOS_CONFIG_FILE) 31 32ifeq ($(ARCH),) 33ARCH = $(error ARCH not set!) 34endif 35 36## variable define ## 37HIDE = @ 38RM = -rm -rf 39ARFLAGS = cr 40OS := $(shell uname -s) 41OBJ_MKDIR = if [ ! -d $(dir $@) ]; then mkdir -p $(dir $@); fi 42OUT = $(or $(OUTDIR),$(LITEOSTOPDIR)/out/$(LOSCFG_PRODUCT_NAME:"%"=%)) 43BUILD = $(OUT)/obj 44MODULE = $(LITEOSTOPDIR)/tools/build/mk/module.mk 45LITEOS_SCRIPTPATH = $(LITEOSTOPDIR)/tools/scripts 46LITEOS_PLATFORM = $(LOSCFG_PLATFORM:"%"=%) 47LITEOSTHIRDPARTY = $(LITEOSTOPDIR)/../../third_party 48 49## compiler relative ## 50get_compiler_path = $(or $(wildcard $(1)),$(dir $(shell which $(CROSS_COMPILE)as))) 51ifeq ($(LOSCFG_COMPILER_CLANG_LLVM), y) 52CROSS_COMPILE ?= llvm- 53LITEOS_COMPILER_PATH ?= $(call get_compiler_path,$(LITEOSTOPDIR)/../../prebuilts/clang/ohos/linux-x86_64/llvm/bin/) 54LLVM_TARGET = $(if $(LOSCFG_LLVM_TARGET),-target $(LOSCFG_LLVM_TARGET),) 55LLVM_SYSROOT = $(if $(SYSROOT_PATH),--sysroot=$(SYSROOT_PATH),) 56CC = $(LITEOS_COMPILER_PATH)clang $(LLVM_TARGET) $(LLVM_SYSROOT) 57AS = $(LITEOS_COMPILER_PATH)$(CROSS_COMPILE)as 58AR = $(LITEOS_COMPILER_PATH)$(CROSS_COMPILE)ar 59LD = $(LITEOS_COMPILER_PATH)ld.lld 60GPP = $(LITEOS_COMPILER_PATH)clang++ $(LLVM_TARGET) $(LLVM_SYSROOT) 61OBJCOPY = $(LITEOS_COMPILER_PATH)$(CROSS_COMPILE)objcopy -R .bss 62OBJDUMP = $(LITEOS_COMPILER_PATH)$(CROSS_COMPILE)objdump 63SIZE = $(LITEOS_COMPILER_PATH)$(CROSS_COMPILE)size 64NM = $(LITEOS_COMPILER_PATH)$(CROSS_COMPILE)nm 65STRIP = $(LITEOS_COMPILER_PATH)$(CROSS_COMPILE)strip 66else ifeq ($(LOSCFG_COMPILER_GCC), y) 67CROSS_COMPILE ?= $(LOSCFG_CROSS_COMPILE) 68LITEOS_COMPILER_PATH ?= $(call get_compiler_path,$(LITEOSTOPDIR)/../../prebuilts/gcc/linux-x86/arm/arm-linux-ohoseabi-gcc/bin/) 69CC = $(LITEOS_COMPILER_PATH)$(CROSS_COMPILE)gcc 70AS = $(LITEOS_COMPILER_PATH)$(CROSS_COMPILE)as 71AR = $(LITEOS_COMPILER_PATH)$(CROSS_COMPILE)ar 72LD = $(LITEOS_COMPILER_PATH)$(CROSS_COMPILE)ld 73GPP = $(LITEOS_COMPILER_PATH)$(CROSS_COMPILE)g++ 74OBJCOPY = $(LITEOS_COMPILER_PATH)$(CROSS_COMPILE)objcopy 75OBJDUMP = $(LITEOS_COMPILER_PATH)$(CROSS_COMPILE)objdump 76SIZE = $(LITEOS_COMPILER_PATH)$(CROSS_COMPILE)size 77NM = $(LITEOS_COMPILER_PATH)$(CROSS_COMPILE)nm 78STRIP = $(LITEOS_COMPILER_PATH)$(CROSS_COMPILE)strip 79else 80CC = echo $(info compiler type not set!) 81endif 82 83## c as cxx ld options ## 84LITEOS_ASOPTS := 85LITEOS_COPTS_BASE := 86LITEOS_COPTS_EXTRA := 87LITEOS_COPTS_DEBUG := 88LITEOS_CXXOPTS := 89LITEOS_CXXOPTS_BASE := 90LITEOS_LD_OPTS := 91LITEOS_GCOV_OPTS := 92## macro define ## 93LITEOS_CMACRO := -D__LITEOS__ 94LITEOS_CXXMACRO := 95## head file path and ld path ## 96LITEOS_PLATFORM_INCLUDE := 97LITEOS_CXXINCLUDE := 98LITEOS_LD_PATH := 99LITEOS_LD_SCRIPT := 100## c as cxx ld flags ## 101LITEOS_ASFLAGS := 102LITEOS_CFLAGS := 103LITEOS_LDFLAGS := 104LITEOS_CXXFLAGS := 105## depended lib ## 106LITEOS_BASELIB := 107LITEOS_LIBDEP := 108## directory ## 109LIB_SUBDIRS := 110 111####################################### CPU Option Begin ######################################### 112include $(LITEOSTOPDIR)/arch/cpu.mk 113####################################### CPU Option End ######################################### 114 115############################# Platform Option Begin################################# 116include $(LITEOSTOPDIR)/platform/bsp.mk 117 118ifeq ($(LOSCFG_PLATFORM_ROOTFS), y) 119 LITEOS_BASELIB += -lrootfs 120 LIB_SUBDIRS += $(LITEOSTOPDIR)/kernel/common/rootfs 121 LITEOS_PLATFORM_INCLUDE += -I $(LITEOSTOPDIR)/kernel/common/rootfs 122endif 123 124ifeq ($(LOSCFG_PLATFORM_PATCHFS), y) 125 LITEOS_BASELIB += -lpatchfs 126 LIB_SUBDIRS += $(LITEOSTOPDIR)/kernel/common/patchfs 127endif 128############################# Platform Option End ################################# 129 130####################################### Kernel Option Begin ########################################### 131LITEOS_BASELIB += -lbase 132LIB_SUBDIRS += kernel/base 133LITEOS_KERNEL_INCLUDE := -I $(LITEOSTOPDIR)/kernel/include \ 134 -I $(LITEOSTOPDIR)/kernel/base/include 135 136ifeq ($(LOSCFG_KERNEL_CPUP), y) 137 LITEOS_BASELIB += -lcpup 138 LIB_SUBDIRS += kernel/extended/cpup 139 LITEOS_CPUP_INCLUDE := -I $(LITEOSTOPDIR)/kernel/extended/cpup 140endif 141 142ifeq ($(LOSCFG_KERNEL_DYNLOAD), y) 143 LITEOS_BASELIB += -ldynload 144 LIB_SUBDIRS += kernel/extended/dynload 145 LITEOS_DYNLOAD_INCLUDE += -I $(LITEOSTOPDIR)/kernel/extended/dynload/include 146endif 147 148ifeq ($(LOSCFG_KERNEL_VDSO), y) 149 LITEOS_BASELIB += -lvdso 150 LIB_SUBDIRS += kernel/extended/vdso/usr 151 LIB_SUBDIRS += kernel/extended/vdso/src 152 LITEOS_VDSO_INCLUDE += -I $(LITEOSTOPDIR)/kernel/extended/vdso/include 153endif 154 155ifeq ($(LOSCFG_KERNEL_TRACE), y) 156 LITEOS_BASELIB += -ltrace 157 LIB_SUBDIRS += kernel/extended/trace 158endif 159 160ifeq ($(LOSCFG_KERNEL_HOOK), y) 161 LITEOS_BASELIB += -lhook 162 LIB_SUBDIRS += kernel/extended/hook 163 LITEOS_HOOK_INCLUDE += -I $(LITEOSTOPDIR)/kernel/extended/hook/include 164endif 165 166ifeq ($(LOSCFG_KERNEL_LITEIPC), y) 167 LITEOS_BASELIB += -lliteipc 168 LIB_SUBDIRS += kernel/extended/liteipc 169 LITEOS_LITEIPC_INCLUDE += -I $(LITEOSTOPDIR)/kernel/extended/liteipc 170endif 171 172ifeq ($(LOSCFG_KERNEL_PIPE), y) 173 LITEOS_BASELIB += -lpipes 174 LIB_SUBDIRS += kernel/extended/pipes 175 LITEOS_PIPE_INCLUDE += -I $(LITEOSTOPDIR)/kernel/extended/pipes 176endif 177 178ifeq ($(LOSCFG_KERNEL_PM), y) 179 LITEOS_BASELIB += -lpower 180 LIB_SUBDIRS += kernel/extended/power 181 LITEOS_PIPE_INCLUDE += -I $(LITEOSTOPDIR)/kernel/extended/power 182endif 183 184################################### Kernel Option End ################################ 185 186#################################### Lib Option Begin ############################### 187ifeq ($(LOSCFG_LIB_LIBC), y) 188 LIB_SUBDIRS += lib/libc 189 LITEOS_BASELIB += -lc 190 LITEOS_LIBC_INCLUDE += \ 191 -isystem $(LITEOSTHIRDPARTY)/musl/porting/liteos_a/kernel/include 192 193 LIB_SUBDIRS += lib/libsec 194 LITEOS_BASELIB += -lsec 195 LITEOS_LIBC_INCLUDE += \ 196 -I $(LITEOSTHIRDPARTY)/bounds_checking_function/include 197 LITEOS_CMACRO += -DSECUREC_IN_KERNEL=0 198endif 199 200 LITEOS_BASELIB += -lscrew 201 LIB_SUBDIRS += lib/libscrew 202 LITEOS_LIBSCREW_INCLUDE += -I $(LITEOSTOPDIR)/lib/libscrew/include 203 204ifeq ($(LOSCFG_KERNEL_CPPSUPPORT), y) 205 LITEOS_BASELIB += -lcppsupport 206 LIB_SUBDIRS += kernel/extended/cppsupport 207 LITEOS_CPPSUPPORT_INCLUDE += -I $(LITEOSTOPDIR)/kernel/extended/cppsupport 208endif 209 210ifeq ($(LOSCFG_LIB_ZLIB), y) 211 LITEOS_BASELIB += -lz 212 LIB_SUBDIRS += lib/zlib 213 LITEOS_ZLIB_INCLUDE += -I $(LITEOSTHIRDPARTY)/zlib 214endif 215################################### Lib Option End ###################################### 216 217####################################### Compat Option Begin ######################################### 218ifeq ($(LOSCFG_COMPAT_POSIX), y) 219 LITEOS_BASELIB += -lposix 220 LIB_SUBDIRS += compat/posix 221 LITEOS_POSIX_INCLUDE += \ 222 -I $(LITEOSTOPDIR)/compat/posix/include 223endif 224 225ifeq ($(LOSCFG_COMPAT_BSD), y) 226 LITEOS_BASELIB += -lbsd 227 LIB_SUBDIRS += bsd 228 LITEOS_BSD_INCLUDE += -I $(LITEOSTOPDIR)/bsd 229 LITEOS_BASELIB += -llinuxkpi 230 LIB_SUBDIRS += bsd/compat/linuxkpi 231 LITEOS_LINUX_INCLUDE += -I $(LITEOSTOPDIR)/bsd/compat/linuxkpi/include \ 232 -I $(LITEOSTOPDIR)/bsd \ 233 -I $(LITEOSTOPDIR)/bsd/kern 234endif 235######################################## Compat Option End ############################################ 236 237 238#################################### FS Option Begin ################################## 239ifeq ($(LOSCFG_FS_VFS), y) 240 LITEOS_BASELIB += -lvfs -lmulti_partition 241ifeq ($(LOSCFG_FS_VFS_BLOCK_DEVICE), y) 242 LITEOS_BASELIB += -lbch 243 LIB_SUBDIRS += $(LITEOSTOPDIR)/drivers/char/bch 244endif 245 LIB_SUBDIRS += fs/vfs drivers/mtd/multi_partition 246 LITEOS_VFS_INCLUDE += -I $(LITEOSTOPDIR)/fs/include \ 247 -I $(LITEOSTOPDIR)/fs/vfs/include 248 LITEOS_VFS_INCLUDE += -I $(LITEOSTOPDIR)/fs/vfs/include/operation 249 LITEOS_VFS_MTD_INCLUDE := -I $(LITEOSTOPDIR)/drivers/mtd/multi_partition/include 250 LITEOS_VFS_DISK_INCLUDE := -I $(LITEOSTOPDIR)/drivers/block/disk/include 251endif 252 253ifeq ($(LOSCFG_FS_FAT), y) 254 LITEOS_BASELIB += -lfat 255 LIB_SUBDIRS += fs/fat 256 LITEOS_FAT_INCLUDE += -I $(LITEOSTHIRDPARTY)/FatFs/source 257endif 258 259ifeq ($(LOSCFG_FS_FAT_VIRTUAL_PARTITION), y) 260 LITEOS_BASELIB += -lvirpart 261 LIB_SUBDIRS += fs/fat/virpart 262 LITEOS_FAT_VIRPART_INCLUDE += -I $(LITEOSTOPDIR)/fs/fat/virpart/include 263endif 264 265ifeq ($(LOSCFG_FS_FAT_DISK), y) 266 LITEOS_BASELIB += -ldisk 267 LIB_SUBDIRS += $(LITEOSTOPDIR)/drivers/block/disk 268endif 269 270ifeq ($(LOSCFG_FS_FAT_CACHE), y) 271 LITEOS_BASELIB += -lbcache 272 LIB_SUBDIRS += fs/vfs/bcache 273 LITEOS_FAT_CACHE_INCLUDE += -I $(LITEOSTOPDIR)/fs/vfs/include/bcache 274endif 275 276 277ifeq ($(LOSCFG_FS_RAMFS), y) 278 LITEOS_BASELIB += -lramfs 279 LIB_SUBDIRS += fs/ramfs 280endif 281 282ifeq ($(LOSCFG_FS_ROMFS), y) 283 LITEOS_BASELIB += -lromfs 284 LIB_SUBDIRS += fs/romfs 285endif 286 287ifeq ($(LOSCFG_FS_NFS), y) 288 LITEOS_BASELIB += -lnfs 289 LIB_SUBDIRS += fs/nfs 290endif 291 292ifeq ($(LOSCFG_FS_PROC), y) 293 LITEOS_BASELIB += -lproc 294 LIB_SUBDIRS += fs/proc 295 LITEOS_PROC_INCLUDE += -I $(LITEOSTOPDIR)/fs/proc/include 296endif 297 298 299ifeq ($(LOSCFG_FS_JFFS), y) 300 LITEOS_BASELIB += -ljffs2 301 LIB_SUBDIRS += fs/jffs2 302endif 303 304ifeq ($(LOSCFG_FS_ZPFS), y) 305 LITEOS_BASELIB += -lzpfs 306 LIB_SUBDIRS += fs/zpfs 307endif 308#################################### FS Option End ################################## 309 310 311################################### Net Option Begin ################################### 312ifeq ($(LOSCFG_NET_LWIP_SACK), y) 313ifeq ($(LOSCFG_NET_LWIP_SACK_2_1), y) 314 LWIPDIR := $(LITEOSTHIRDPARTY)/lwip/src 315 LITEOS_BASELIB += -llwip 316 LIB_SUBDIRS += net/lwip-2.1 317 LITEOS_LWIP_SACK_INCLUDE += \ 318 -I $(LITEOSTOPDIR)/net/lwip-2.1/porting/include \ 319 -I $(LWIPDIR)/include \ 320 -I $(LITEOSTOPDIR)/net/mac 321 322 LITEOS_CMACRO += $(LWIP_MACROS) 323else ifeq ($(LOSCFG_NET_LWIP_SACK_2_0), y) 324 LWIPDIR := $(LITEOSTHIRDPARTY)/lwip_enhanced/src 325 LITEOS_BASELIB += -llwip 326 LIB_SUBDIRS += $(LWIPDIR) 327 LITEOS_LWIP_SACK_INCLUDE += \ 328 -I $(LWIPDIR)/include \ 329 -I $(LITEOSTOPDIR)/net/mac 330 LWIP_MACROS += -DLWIP_CONFIG_FILE=\"lwip/lwipopts.h\" -DLWIP_LITEOS_A_COMPAT 331 LITEOS_CMACRO += $(LWIP_MACROS) 332else 333 $(error "unknown lwip version") 334endif 335endif 336 337#################################### Net Option End#################################### 338LITEOS_DRIVERS_BASE_PATH := $(LITEOSTOPDIR)/../../drivers/liteos 339################################## Driver Option Begin ################################# 340ifeq ($(LOSCFG_DRIVERS_HDF), y) 341include $(LITEOSTOPDIR)/../../drivers/adapter/khdf/liteos/hdf_lite.mk 342endif 343 344ifeq ($(LOSCFG_DRIVERS_HIEVENT), y) 345 LITEOS_BASELIB += -lhievent 346 LIB_SUBDIRS += $(LITEOS_DRIVERS_BASE_PATH)/hievent 347 LITEOS_HIEVENT_INCLUDE += -I $(LITEOS_DRIVERS_BASE_PATH)/hievent/include 348endif 349 350ifeq ($(LOSCFG_DRIVERS_TZDRIVER), y) 351 LITEOS_BASELIB += -ltzdriver -lmbedtls 352 LIB_SUBDIRS += $(LITEOS_DRIVERS_BASE_PATH)/tzdriver $(LITEOSTOPDIR)/lib/libmbedtls 353 LITEOS_TZDRIVER_INCLUDE += -I $(LITEOS_DRIVERS_BASE_PATH)/tzdriver/include 354endif 355 356ifeq ($(LOSCFG_DRIVERS_MEM), y) 357 LITEOS_BASELIB += -lmem 358 LIB_SUBDIRS += $(LITEOSTOPDIR)/drivers/char/mem 359 LITEOS_DEV_MEM_INCLUDE = -I $(LITEOSTOPDIR)/drivers/char/mem/include 360endif 361 362ifeq ($(LOSCFG_DRIVERS_TRACE), y) 363 LITEOS_BASELIB += -ltrace_dev 364 LIB_SUBDIRS += $(LITEOSTOPDIR)/drivers/char/trace 365endif 366 367ifeq ($(LOSCFG_DRIVERS_QUICKSTART), y) 368 LITEOS_BASELIB += -lquickstart 369 LIB_SUBDIRS += $(LITEOSTOPDIR)/drivers/char/quickstart 370 LITEOS_DEV_QUICKSTART_INCLUDE = -I $(LITEOSTOPDIR)/drivers/char/quickstart/include 371endif 372 373ifeq ($(LOSCFG_DRIVERS_RANDOM), y) 374 LITEOS_BASELIB += -lrandom 375 LIB_SUBDIRS += $(LITEOSTOPDIR)/drivers/char/random 376 LITEOS_RANDOM_INCLUDE += -I $(LITEOSTOPDIR)/drivers/char/random/include 377endif 378 379ifeq ($(LOSCFG_DRIVERS_USB), y) 380 LITEOS_BASELIB += -lusb_base 381 LIB_SUBDIRS += $(LITEOSTOPDIR)/bsd/dev/usb 382 LITEOS_USB_INCLUDE += -I $(LITEOSTOPDIR)/bsd/dev/usb 383endif 384 385ifeq ($(LOSCFG_DRIVERS_VIDEO), y) 386 LITEOS_BASELIB += -lvideo 387 LIB_SUBDIRS += $(LITEOSTOPDIR)/drivers/char/video 388 LITEOS_VIDEO_INCLUDE += -I $(LITEOSTHIRDPARTY)/NuttX/include/nuttx/video 389endif 390 391############################## Driver Option End ####################################### 392 393############################## Dfx Option Begin####################################### 394ifeq ($(LOSCFG_BASE_CORE_HILOG), y) 395 LITEOS_BASELIB += -lhilog 396 LIB_SUBDIRS += $(LITEOSTOPDIR)/../../base/hiviewdfx/hilog_lite/frameworks/featured 397 LITEOS_HILOG_INCLUDE += -I $(LITEOSTOPDIR)/../../base/hiviewdfx/hilog_lite/interfaces/native/kits 398 LITEOS_HILOG_INCLUDE += -I $(LITEOSTOPDIR)/../../base/hiviewdfx/hilog_lite/interfaces/native/kits/hilog 399endif 400ifeq ($(LOSCFG_BLACKBOX), y) 401 LITEOS_BASELIB += -lblackbox 402 LIB_SUBDIRS += $(LITEOSTOPDIR)/kernel/common/blackbox 403 LITEOS_BLACKBOX_INCLUDE += -I $(LITEOSTOPDIR)/kernel/common/blackbox 404endif 405ifeq ($(LOSCFG_HIDUMPER), y) 406 LITEOS_BASELIB += -lhidumper 407 LIB_SUBDIRS += $(LITEOSTOPDIR)/kernel/common/hidumper 408 LITEOS_HIDUMPER_INCLUDE += -I $(LITEOSTOPDIR)/kernel/common/hidumper 409endif 410############################## Dfx Option End ####################################### 411 412############################# Tools && Debug Option Begin ############################## 413ifeq ($(LOSCFG_COMPRESS), y) 414 LITEOS_BASELIB += -lcompress 415 LIB_SUBDIRS += tools/compress 416endif 417 418ifneq ($(LOSCFG_DEBUG_VERSION), y) 419 LITEOS_COPTS_DEBUG += -DNDEBUG 420endif 421 422ifeq ($(LOSCFG_COMPILE_DEBUG), y) 423 LITEOS_COPTS_OPTIMIZE = -O0 424 LITEOS_COPTS_OPTION = -g -gdwarf-2 425endif 426ifeq ($(LOSCFG_COMPILE_OPTIMIZE), y) 427 LITEOS_COPTS_OPTIMIZE = -O2 428endif 429ifeq ($(LOSCFG_COMPILE_OPTIMIZE_SIZE), y) 430 ifeq ($(LOSCFG_COMPILER_CLANG_LLVM), y) 431 LITEOS_COPTS_OPTIMIZE = -Oz 432 else 433 LITEOS_COPTS_OPTIMIZE = -Os 434 endif 435endif 436ifeq ($(LOSCFG_COMPILE_LTO), y) 437 ifeq ($(LOSCFG_COMPILER_CLANG_LLVM), y) 438 LITEOS_COPTS_OPTIMIZE += -flto=thin 439 else 440 LITEOS_COPTS_OPTIMIZE += -flto 441 endif 442endif 443 LITEOS_COPTS_DEBUG += $(LITEOS_COPTS_OPTION) $(LITEOS_COPTS_OPTIMIZE) 444 LITEOS_CXXOPTS_BASE += $(LITEOS_COPTS_OPTION) $(LITEOS_COPTS_OPTIMIZE) 445 LITEOS_ASOPTS += $(LITEOS_COPTS_OPTION) 446 447ifeq ($(LOSCFG_SHELL), y) 448 LITEOS_BASELIB += -lshell 449 LIB_SUBDIRS += shell 450 LITEOS_SHELL_INCLUDE += -I $(LITEOSTOPDIR)/shell/full/include 451endif 452 453 454ifeq ($(LOSCFG_NET_TELNET), y) 455 LITEOS_BASELIB += -ltelnet 456 LIB_SUBDIRS += net/telnet 457 LITEOS_TELNET_INCLUDE += \ 458 -I $(LITEOSTOPDIR)/net/telnet/include 459endif 460 461ifeq ($(LOSCFG_KERNEL_SYSCALL), y) 462LITEOS_BASELIB += -lsyscall 463LIB_SUBDIRS += syscall 464endif 465LIB_SUBDIRS += kernel/user 466 467############################# Tools && Debug Option End ################################# 468 469############################# Security Option Begin ############################## 470LITEOS_SSP = -fno-stack-protector 471ifeq ($(LOSCFG_CC_STACKPROTECTOR), y) 472 LITEOS_SSP = -fstack-protector --param ssp-buffer-size=4 473endif 474 475ifeq ($(LOSCFG_CC_STACKPROTECTOR_STRONG), y) 476 LITEOS_SSP = -fstack-protector-strong 477endif 478 479ifeq ($(LOSCFG_CC_STACKPROTECTOR_ALL), y) 480 LITEOS_SSP = -fstack-protector-all 481endif 482 483ifeq ($(LOSCFG_SECURITY), y) 484LIB_SUBDIRS += security 485LITEOS_BASELIB += -lsecurity 486ifeq ($(LOSCFG_SECURITY_CAPABILITY), y) 487LITEOS_SECURITY_CAP_INC := -I $(LITEOSTOPDIR)/security/cap 488endif 489ifeq ($(LOSCFG_SECURITY_VID), y) 490LITEOS_SECURITY_VID_INC := -I $(LITEOSTOPDIR)/security/vid 491endif 492endif 493 494############################# Security Option End ############################## 495 496LITEOS_EXTKERNEL_INCLUDE := $(LITEOS_CPPSUPPORT_INCLUDE) $(LITEOS_DYNLOAD_INCLUDE) \ 497 $(LITEOS_TICKLESS_INCLUDE) $(LITEOS_HOOK_INCLUDE)\ 498 $(LITEOS_VDSO_INCLUDE) $(LITEOS_LITEIPC_INCLUDE) \ 499 $(LITEOS_PIPE_INCLUDE) $(LITEOS_CPUP_INCLUDE) 500LITEOS_COMPAT_INCLUDE := $(LITEOS_POSIX_INCLUDE) $(LITEOS_LINUX_INCLUDE) \ 501 $(LITEOS_BSD_INCLUDE) 502LITEOS_FS_INCLUDE := $(LITEOS_VFS_INCLUDE) $(LITEOS_FAT_CACHE_INCLUDE) \ 503 $(LITEOS_VFS_MTD_INCLUDE) $(LITEOS_VFS_DISK_INCLUDE) \ 504 $(LITEOS_PROC_INCLUDE) $(LITEOS_FAT_VIRPART_INCLUDE) \ 505 $(LITEOS_FAT_INCLUDE) 506LITEOS_NET_INCLUDE := $(LITEOS_LWIP_SACK_INCLUDE) 507LITEOS_LIB_INCLUDE := $(LITEOS_LIBC_INCLUDE) $(LITEOS_LIBM_INCLUDE) \ 508 $(LITEOS_ZLIB_INCLUDE) $(LITEOS_LIBSCREW_INCLUDE) 509LITEOS_DRIVERS_INCLUDE := $(LITEOS_CELLWISE_INCLUDE) $(LITEOS_GPIO_INCLUDE) \ 510 $(LITEOS_HIDMAC_INCLUDE) $(LITEOS_HIETH_SF_INCLUDE) \ 511 $(LITEOS_HIGMAC_INCLUDE) $(LITEOS_I2C_INCLUDE) \ 512 $(LITEOS_LCD_INCLUDE) $(LITEOS_MMC_INCLUDE) \ 513 $(LITEOS_MTD_SPI_NOR_INCLUDE) $(LITEOS_MTD_NAND_INCLUDE) \ 514 $(LITEOS_RANDOM_INCLUDE) $(LITEOS_RTC_INCLUDE) \ 515 $(LITEOS_SPI_INCLUDE) $(LITEOS_USB_INCLUDE) \ 516 $(LITEOS_WTDG_INCLUDE) $(LITEOS_DBASE_INCLUDE) \ 517 $(LITEOS_CPUFREQ_INCLUDE) $(LITEOS_DEVFREQ_INCLUDE) \ 518 $(LITEOS_REGULATOR_INCLUDE) $(LITEOS_VIDEO_INCLUDE) \ 519 $(LITEOS_DRIVERS_HDF_INCLUDE) $(LITEOS_TZDRIVER_INCLUDE) \ 520 $(LITEOS_HIEVENT_INCLUDE) $(LITEOS_DEV_MEM_INCLUDE) \ 521 $(LITEOS_DEV_QUICKSTART_INCLUDE) 522LITEOS_DFX_INCLUDE := $(LITEOS_HILOG_INCLUDE) \ 523 $(LITEOS_BLACKBOX_INCLUDE) \ 524 $(LITEOS_HIDUMPER_INCLUDE) 525 526LITEOS_SECURITY_INCLUDE := $(LITEOS_SECURITY_CAP_INC) $(LITEOS_SECURITY_VID_INC) 527LOSCFG_TOOLS_DEBUG_INCLUDE := $(LITEOS_SHELL_INCLUDE) $(LITEOS_UART_INCLUDE) \ 528 $(LITEOS_TELNET_INCLUDE) 529 530LITEOS_COMMON_OPTS := -fno-pic -fno-builtin -nostdinc -nostdlib -Wall -Werror -fms-extensions -fno-omit-frame-pointer -Wno-address-of-packed-member -Winvalid-pch 531 532LITEOS_CXXOPTS_BASE += $(LITEOS_COMMON_OPTS) -std=c++11 -nostdinc++ -fexceptions -fpermissive -fno-use-cxa-atexit -frtti 533 534LITEOS_COPTS_BASE += $(LITEOS_COMMON_OPTS) $(LITEOS_SSP) -fno-strict-aliasing -fno-common -fsigned-char -mno-unaligned-access 535ifneq ($(LOSCFG_COMPILER_CLANG_LLVM), y) 536LITEOS_COPTS_BASE += -fno-aggressive-loop-optimizations 537endif 538 539LITEOS_COPTS_EXTRA += -std=c99 -Wpointer-arith -Wstrict-prototypes -ffunction-sections -fdata-sections -fno-exceptions -fno-short-enums 540ifeq ($(LOSCFG_ARCH_ARM_AARCH32), y) 541ifneq ($(LOSCFG_COMPILER_CLANG_LLVM), y) 542LITEOS_COPTS_EXTRA += -mthumb-interwork 543endif 544endif 545 546ifeq ($(LOSCFG_THUMB), y) 547ifeq ($(LOSCFG_COMPILER_CLANG_LLVM), y) 548LITEOS_CFLAGS_INTERWORK := -mthumb -mimplicit-it=thumb 549else 550LITEOS_CFLAGS_INTERWORK := -mthumb -Wa,-mimplicit-it=thumb 551endif 552endif 553 554# kernel configuration macros 555LITEOS_CMACRO += -imacros "$(LITEOS_MENUCONFIG_H)" 556 557ifneq ($(LOSCFG_COMPILER_CLANG_LLVM), y) 558LITEOS_LD_OPTS += -nostartfiles 559endif 560LITEOS_LD_OPTS += -static --gc-sections 561LITEOS_LD_PATH += -L$(OUT)/lib 562 563ifeq ($(LOSCFG_COMPILER_CLANG_LLVM), y) 564LITEOS_LD_SCRIPT := -T$(LITEOSTOPDIR)/tools/build/liteos_llvm.ld 565else 566LITEOS_LD_SCRIPT := -T$(LITEOSTOPDIR)/tools/build/liteos.ld 567endif 568 569##compiler## 570LITEOS_BASELIB += $(shell $(CC) $(LITEOS_CORE_COPTS) "-print-libgcc-file-name") 571LITEOS_LIB_INCLUDE += -isystem $(shell $(CC) $(LITEOS_CORE_COPTS) "-print-file-name=include") 572