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