-
Notifications
You must be signed in to change notification settings - Fork 591
/
Copy pathKconfig
660 lines (520 loc) · 17.5 KB
/
Kconfig
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
#
# For a description of the syntax of this configuration file,
# see kconfig-language at https://www.kernel.org/doc/Documentation/kbuild/kconfig-language.txt
#
mainmenu "TinyAra Configuration"
config APPSDIR
string
option env="APPSDIR"
config EXTERNALDIR
string
option env="EXTERNALDIR"
config LIBDIR
string
option env="LIBDIR"
config LOADABLEDIR
string
option env="LOADABLEDIR"
menu "Build Setup"
config EXPERIMENTAL
bool "Prompt for development and/or incomplete code/drivers"
config DEFAULT_SMALL
bool "Default to smallest size"
default n
---help---
When options are present, the default value for certain options will
be the one the results in the smallest size (at a loss of featurs).
The default is a fuller feature set at a larger size.
NOTE: This option does not prevent you from overriding the default
to select another alternative. Nor does it affect the settings that
have already been selected in your configuration file. This applies
only to new settings that require a default value.
config DOCKER_VERSION
string "Docker Image Version"
default "1.5.8"
---help---
This config indicates docker image version. We have developed distinct
version of docker images tailored to each toolchain required by different
chipset's configs. This approach streamlines development by providing
specific environments that align with the chipset's configs.
NOTE: C++ exception support requires toolchain version 10.3.1. If you are
enabling C++ exception then use docker image version 2.0.0.
Possible Versions: Please check https://hub.docker.com/r/tizenrt/tizenrt
choice
prompt "Build Host Platform"
default HOST_LINUX
config HOST_LINUX
bool "Linux"
config HOST_OSX
bool "OSX"
config HOST_WINDOWS
bool "Windows"
config HOST_OTHER
bool "Other"
endchoice
choice
prompt "Windows Build Environment"
default WINDOWS_CYGWIN
depends on HOST_WINDOWS
config WINDOWS_NATIVE
bool "Windows Native"
---help---
Build natively in a CMD.exe environment with Windows style paths (like C:\cgywin\home)
config WINDOWS_CYGWIN
bool "Cygwin"
---help---
Build natively in a Cygwin environment with POSIX style paths (like /cygdrive/c/cgywin/home)
config WINDOWS_MSYS
bool "MSYS"
---help---
Build natively in a Cygwin environment with POSIX style paths (like /cygdrive/c/cgywin/home)
config WINDOWS_OTHER
bool "Windows POSIX-like environment"
---help---
Build natively in another POSIX-like environment. Additional support may be necessary
endchoice
config WINDOWS_MKLINK
bool "Use mklink"
default n
depends on WINDOWS_NATIVE
---help---
Use the mklink command to set up symbolic links when TinyAra is
configured. Otherwise, configuration directories will be copied to
establish the configuration.
If directories are copied, then some confusion can result ("Which
version of the file did I modify?"). In that case, it is recommended
that you re-build using 'make clean_context all'. That will cause the
configured directories to be recopied on each build.
NOTE: This option also (1) that you have administrator privileges, (2)
that you are using Windows 2000 or better, and (3) that you are using
the NTFS file system. Select 'n' is that is not the case.
menu "Build Configuration"
config APPS_DIR
string "Application directory"
default "../apps" if !WINDOWS_NATIVE
default "..\apps" if WINDOWS_NATIVE
---help---
Identifies the directory that builds the
application to link with TinyAra. Default: ../apps This symbol must be assigned
to the path to the application build directory *relative* to
the TinyAra top build directory. If you had an application
directory and the TinyAra directory each in separate directory
trees like this:
build
|-tinyara
| |
| `- Makefile
`-application
|
`- Makefile
Then you would set APPS_DIR=../application.
The application direction must contain Makefile and this make
file must support the following targets:
1)libapps$(LIBEXT) (usually libapps.a). libapps.a is a static
library ( an archive) that contains all of application object
files.
2)clean. Do whatever is appropriate to clean the application
directories for a fresh build.
3)distclean. Clean everything -- auto-generated files, symbolic
links etc. -- so that the directory contents are the same as
the contents in your configuration management system.
This is only done when you change the TinyAra configuration.
4)depend. Make or update the application build dependencies.
When this application is invoked it will receive the setting TOPDIR like:
$(MAKE) -C $(CONFIG_APPS_DIR) TOPDIR="$(TOPDIR)" <target>
TOPDIR is the full path to the TinyAra directory. It can be used, for
example, to include makefile fragments (e.g., .config or Make.defs)
or to set up include file paths.
config FRAMEWORK_DIR
string "FRAMEWORK directory"
default "../framework" if !WINDOWS_NATIVE
default "..\framework" if WINDOWS_NATIVE
config TOOLS_DIR
string "tools directory"
default "../tools" if !WINDOWS_NATIVE
default "..\tools" if WINDOWS_NATIVE
choice
prompt "Memory organization"
default BUILD_FLAT
config BUILD_FLAT
bool "Flat address space"
---help---
Build TinyAra as one large, executable "blob". All of the code
within the blob can interrupt with all of the other code within
the blob. There are no special privileges, protections, or
restraints.
config APP_BINARY_SEPARATION
bool "Application binary separation build"
select BUILD_PROTECTED
select BINFMT_LOADABLE
---help---
Enables application binary separation.
This config is tightly coupled to CONFIG_BUILD_PROTECTED. When protected
build is selected, then selecting this config generates separate binary for
each user space application, apart from a separate kernel binary. Selecting
config also applies MPU based memory isolation and protection for each app.
config BUILD_KERNEL
bool "TinyAra kernel build"
depends on ARCH_USE_MMU && ARCH_ADDRENV && EXPERIMENTAL
select LIB_SYSCALL
---help---
Builds TinyAra as a separately compiled kernel. No applications are
built. All user applications must reside in a file system where
they can be loaded into memory for execution.
NOTE: This build configuration requires that the platform support
a memory management unit (MMU) and address environments. Support,
however, may not be implemented on all platforms.
endchoice # Memory organization
if APP_BINARY_SEPARATION
config NUM_APPS
int "Number of application binaries"
default 2
---help---
Indicates the number of user applications to be built. The available RAM might
constrain the max number of applications. It is the developer's responsibility
to make sure that the NUM_APPS lies withing the memory constraints.
config APPS_RAM_REGION_SHAREABLE
bool "RAM region of apps shareable"
default n
---help---
This config indicates if the applications RAM region is to be configured as a
shareable region in the MPU. If the system has multiple cores which might access
the external applicaiton RAM region, then this config needs to be set to true.
config SUPPORT_COMMON_BINARY
bool "Support Common Binary"
default n
depends on FS_SMARTFS
select LIB_HASHMAP
---help---
This config indicates whether we support common binary. The common binary will
contain all the common libraries which will be used by the different loadable
applications. The common binary will be stored in the file system.
if SUPPORT_COMMON_BINARY
config COMMON_BINARY_VERSION
string "Common binary version (YYMMDD)"
default 200204
---help---
This config indicates common binary version which has a "YYMMDD" format.
It is included in common binary header and binary manager uses it to check the latest binary.
So it should be set to a higher value than versions of old binaries if you want to make the binary the latest version.
config COMMON_BINARY_NAME
string "Name of common binary file"
default "common_binary"
---help---
Filename of the common binary file.
config COMMON_BIN_STATIC_RAMSIZE
int "Common Binary static RAM size for data and bss"
default 524288
depends on XIP_ELF
---help---
Common Binary static RAM size for data and bss
endif # SUPPORT_COMMON_BINARY
if ARCH_USE_MMU
config NUM_L2_PER_APP
int "Number of L2 page tables per app"
default 4
---help---
Set the number of L2 page tables required per app binary.
Memory required for this number of L2 page tables will be reserved by the system.
If the number of L2 page tables required during run time exceeds this value, then
the behavior is UNDEFINED.
endif # ARCH_USE_MMU
endif # APP_BINARY_SEPARATION
config BUILD_PROTECTED
bool
depends on ARCH_USE_MPU || ARCH_USE_MMU
select LIB_SYSCALL
select BUILD_2PASS
config BUILD_2PASS
bool
default n
depends on !BUILD_KERNEL
if BUILD_2PASS
config PASS1_TARGET
string
default "all"
config PASS1_OBJECT
string
default ""
endif # Build 2-pass
config BOARD_BUILD_DATE
string "Binary Build Date (YYMMDD)"
default 200204
---help---
This config indicates build date which has a "YYMMDD" format.
It is included in binary header as binary version and binary manager uses it to check the latest binary.
So it should be set to a higer value than versions of old binaries if you want to make the binary the latest version.
config BINARY_SIGNING
bool "Enable Binary Signing"
default n
depends on ARCH_BOARD_RTL8721CSM || ARCH_BOARD_RTL8720E || ARCH_BOARD_RTL8730E
---help---
Enable Encryption and Secure boot.
But this config is set as n and invisible because binary signing is not supported here.
config USER_SIGN_PREPEND_SIZE
if ARCH_BOARD_RTL8721CSM
source board/rtl8721csm/Kconfig.signing
endif
if ARCH_BOARD_RTL8720E
source board/rtl8720e/Kconfig.signing
endif
if ARCH_BOARD_RTL8730E
source board/rtl8730e/Kconfig.signing
endif
endmenu # Build Configuration
menu "Binary Output Formats"
config INTELHEX_BINARY
bool "Intel HEX binary format"
default n
---help---
Create the tinyara.hex in the Intel HEX binary format that is
used with many different loaders. This option will use the GNU objcopy program
and should not be selected if you are not using the GNU toolchain.
config MOTOROLA_SREC
bool "Motorola S-Record binary format"
default n
---help---
Create the tinyara.srec in the Motorola S-Record binary format that is
used with many different loaders. This option will use the GNU objcopy program
and should not be selected if you are not using the GNU toolchain.
config RAW_BINARY
bool
default y
---help---
Create the tinyara.bin in the raw binary format that is used with many
different loaders using the GNU objcopy program.
This configuration should always be enabled mandatorily in TizenRT.
menuconfig UBOOT_UIMAGE
bool "U-Boot uImage"
select RAW_BINARY
depends on !WINDOWS_NATIVE
---help---
Create the uImage binary used with U-Boot.
if UBOOT_UIMAGE
config UIMAGE_LOAD_ADDRESS
hex "uImage load address"
default 0x0
config UIMAGE_ENTRY_POINT
hex "uImage entry point"
default 0x0
endif
config DOWNLOAD_IMAGE
bool "Convert RAW binary to download image"
select RAW_BINARY
depends on !WINDOWS_NATIVE
---help---
Create download image based on RAW binary
endmenu # Binary Output Formats
menu "Customize Header Files"
config ARCH_STDINT_H
bool "stdint.h"
default n
---help---
The stdint.h header file can be found at tinyara/include/stdint.h.
However, that header includes logic to redirect the inclusion of an
architecture specific header file like:
#ifdef CONFIG_ARCH_STDINT_H
# include <arch/stdint.h>
#else
...
#endif
Recall that that include path, include/arch, is a symbolic link and
will refer to a version of stdint.h at tinyara/arch/<architecture>/include/stdint.h.
config ARCH_STDBOOL_H
bool "stdbool.h"
default n
---help---
The stdbool.h header file can be found at tinyara/include/stdbool.h.
However, that header includes logic to redirect the inclusion of an
architecture specific header file like:
#ifdef CONFIG_ARCH_STDBOOL_H
# include <arch/stdbool.h>
#else
...
#endif
Recall that that include path, include/arch, is a symbolic link and
will refer to a version of stdbool.h at tinyara/arch/<architecture>/include/stdbool.h.
config ARCH_MATH_H
bool "math.h"
default n
---help---
There is also a re-directing version of math.h in the source tree.
However, it resides out-of-the-way at include/tinyara/math.h because it
conflicts too often with the system math.h. If ARCH_MATH_H=y is
defined, however, the top-level makefile will copy the redirecting
math.h header file from include/tinyara/math.h to include/math.h. math.h
will then include the architecture-specific version of math.h that you
must provide at tinyara/arch/>architecture</include/math.h.
#ifdef CONFIG_ARCH_MATH_H
# include <arch/math.h>
#endif
So for the architectures that define ARCH_MATH_H=y, include/math.h
will be the redirecting math.h header file; for the architectures
that don't select ARCH_MATH_H, the redirecting math.h header file
will stay out-of-the-way in include/tinyara/.
config ARCH_FLOAT_H
bool "float.h"
default n
---help---
The float.h header file defines the properties of your floating
point implementation. It would always be best to use your
toolchain's float.h header file but if none is available, a default
float.h header file will provided if this option is selected. However
there is no assurance that the settings in this float.h are actually
correct for your platform!
config ARCH_STDARG_H
bool "stdarg.h"
default n
---help---
There is also a redirecting version of stdarg.h in the source tree
as well. It also resides out-of-the-way at include/tinyara/stdarg.h.
This is because you should normally use your toolchain's stdarg.h
file. But sometimes, your toolchain's stdarg.h file may have other
header file dependencies and so may not be usable in the TinyAra build
environment. In those cases, you may have to create a architecture-
specific stdarg.h header file at tinyara/arch/<architecture>/include/stdarg.h
If ARCH_STDARG_H=y is defined, the top-level makefile will copy the
re-directing stdarg.h header file from include/tinyara/stdarg.h to
include/stdarg.h. So for the architectures that cannot use their
toolchain's stdarg.h file, they can use this alternative by defining
ARCH_STDARG_H=y and providing. If ARCH_STDARG_H, is not defined, then
the stdarg.h header file will stay out-of-the-way in include/tinyara/.
endmenu # Customize Header Files
config ARCH_HAVE_CUSTOMOPT
bool
default n
choice
prompt "Optimization Level"
default DEBUG_NOOPT if DEBUG_SYMBOLS
default DEBUG_FULLOPT if !DEBUG_SYMBOLS
config DEBUG_NOOPT
bool "Suppress Optimization"
---help---
Build without optimization. This is often helpful when debugging code.
config DEBUG_CUSTOMOPT
bool "Custom Optimization"
depends on ARCH_HAVE_CUSTOMOPT
---help---
Select a custom debug level. This is often helpful if you suspect an
optimization level error and want to lower the level of optimization.
config DEBUG_FULLOPT
bool "Normal, Full optimization"
---help---
Build full optimization. This is the normal case for production
firmware.
endchoice # Optimization Level
config DEBUG_OPTLEVEL
string "Custom Optimization Level"
default "-O2"
depends on DEBUG_CUSTOMOPT
---help---
This string represents the custom optimization level that will be used if DEBUG_CUSTOMOPT.
endmenu # Build Setup
menu "Chip Selection"
source arch/Kconfig
endmenu
menu "Board Selection"
source board/Kconfig
endmenu
menu "SE Selection"
source se/Kconfig
endmenu
menu "Crypto Module"
source crypto/Kconfig
endmenu
menu "Kernel Features"
source kernel/Kconfig
endmenu
menu "Device Drivers"
source drivers/Kconfig
endmenu
menu "Networking Support"
source net/Kconfig
endmenu
menu "Audio Support"
source audio/Kconfig
endmenu
menu "Media Support"
source "$FRAMEWORK_DIR/src/media/Kconfig"
endmenu
menu "File Systems"
source fs/Kconfig
endmenu
menu "Database"
source "$FRAMEWORK_DIR/src/arastorage/Kconfig"
endmenu
menu "AI Framework"
source "$FRAMEWORK_DIR/src/aifw/Kconfig"
endmenu
menu "AraUI Framework"
source "$FRAMEWORK_DIR/src/araui/Kconfig"
endmenu
menu "Memory Management"
source mm/Kconfig
endmenu
menu "Work Queue Support"
depends on !DISABLE_SIGNALS
source wqueue/Kconfig
endmenu
menu "Power Management"
source pm/Kconfig
endmenu
menu "Debug Options"
source Kconfig.debug
endmenu
menu "System Call"
depends on BUILD_PROTECTED || BUILD_KERNEL
source syscall/Kconfig
endmenu
menu "Built-in Libraries"
source "$LIBDIR/libc/Kconfig"
source "$LIBDIR/libxx/Kconfig"
endmenu
menu "External Libraries"
source "$EXTERNALDIR/Kconfig"
endmenu
menu "Binary Loader"
source binfmt/Kconfig
endmenu
menu "Compression"
source compression/Kconfig
endmenu
menu "Application Configuration"
source "$APPSDIR/Kconfig"
endmenu
menu "Loadable apps Configuration"
source "$LOADABLEDIR/Kconfig"
endmenu
menu "Runtime Environment"
source Kconfig.runtime
endmenu
menu "Device Management"
source Kconfig.devmng
endmenu
menu "Binary manager"
source kernel/binary_manager/Kconfig
endmenu
menu "Task Monitor"
source kernel/task_monitor/Kconfig
endmenu
menu "Task manager"
source "$FRAMEWORK_DIR/src/task_manager/Kconfig"
endmenu
menu "Event Loop Framework"
source "$FRAMEWORK_DIR/src/eventloop/Kconfig"
endmenu
menu "Messaging Framework"
source "$FRAMEWORK_DIR/src/messaging/Kconfig"
endmenu
menu "Preference Support"
source "$FRAMEWORK_DIR/src/preference/Kconfig"
endmenu
menu "Things Management"
source Kconfig.things
endmenu
menu "IoTBus Framework"
source "$FRAMEWORK_DIR/src/iotbus/Kconfig"
endmenu
menu "Security Framework"
source "$FRAMEWORK_DIR/src/security/Kconfig"
endmenu