Config.in: add more options when it comes to including kernel image into rootfs
[openwrt.git] / Config.in
1 # Copyright (C) 2006-2012 OpenWrt.org
2 #
3 # This is free software, licensed under the GNU General Public License v2.
4 # See /LICENSE for more information.
5 #
6
7 mainmenu "OpenWrt Configuration"
8
9 config MODULES
10         bool
11         default y
12
13 config HAVE_DOT_CONFIG
14         bool
15         default y
16
17 source "target/Config.in"
18
19 menu "Target Images"
20
21         menuconfig TARGET_ROOTFS_INITRAMFS
22                 bool "ramdisk"
23                 default y if USES_INITRAMFS
24                 help
25                   Embed the rootfs into the kernel (initramfs)
26
27                 choice
28                         prompt "Compression"
29                         default TARGET_INITRAMFS_COMPRESSION_LZMA if TARGET_ar71xx
30                         default TARGET_INITRAMFS_COMPRESSION_LZMA if TARGET_ramips
31                         default TARGET_INITRAMFS_COMPRESSION_NONE
32                         depends on TARGET_ROOTFS_INITRAMFS
33                         help
34                           Select ramdisk compression.
35
36                         config TARGET_INITRAMFS_COMPRESSION_NONE
37                                 bool "none"
38
39                         config TARGET_INITRAMFS_COMPRESSION_GZIP
40                                 bool "gzip"
41
42                         config TARGET_INITRAMFS_COMPRESSION_BZIP2
43                                 bool "bzip2"
44
45                         config TARGET_INITRAMFS_COMPRESSION_LZMA
46                                 bool "lzma"
47
48                         config TARGET_INITRAMFS_COMPRESSION_LZO
49                                 bool "lzo"
50
51                         config TARGET_INITRAMFS_COMPRESSION_XZ
52                                 bool "xz"
53                 endchoice
54
55                 config EXTERNAL_CPIO
56                         string
57                         prompt "Use external cpio" if TARGET_ROOTFS_INITRAMFS
58                         default ""
59                         help
60                           Kernel uses specified external cpio as INITRAMFS_SOURCE
61
62         comment "Root filesystem archives"
63
64         config TARGET_ROOTFS_CPIOGZ
65                 bool "cpio.gz"
66                 default y if USES_CPIOGZ
67                 help
68                   Build a compressed cpio archive of the the root filesystem
69
70         config TARGET_ROOTFS_TARGZ
71                 bool "tar.gz"
72                 default y if USES_TARGZ
73                 help
74                   Build a compressed tar archive of the the root filesystem
75
76         comment "Root filesystem images"
77
78         config TARGET_ROOTFS_EXT4FS
79                 bool "ext4"
80                 default y if USES_EXT4
81                 help
82                   Ext4 file system with some free space for uml images
83
84         config TARGET_ROOTFS_ISO
85                 bool "iso"
86                 default n
87                 depends on TARGET_x86_generic
88                 help
89                   Create some bootable ISO image
90
91         config TARGET_ROOTFS_JFFS2
92                 bool "jffs2"
93                 default y if USES_JFFS2
94                 help
95                   Build a jffs2 root filesystem
96
97         config TARGET_ROOTFS_JFFS2_NAND
98                 bool "jffs2 for NAND"
99                 default y if USES_JFFS2_NAND
100                 depends on USES_JFFS2_NAND
101                 help
102                   Build a jffs2 root filesystem for NAND flash
103
104         config TARGET_ROOTFS_SQUASHFS
105                 bool "squashfs"
106                 default y if USES_SQUASHFS
107                 help
108                   Build a squashfs-lzma root filesystem
109
110         menuconfig TARGET_ROOTFS_UBIFS
111                 bool "ubifs"
112                 default y if USES_UBIFS
113                 depends on USES_UBIFS
114                 help
115                   Build a ubifs root filesystem
116
117                 choice
118                         prompt "compression"
119                         default TARGET_UBIFS_COMPRESSION_NONE
120                         depends on TARGET_ROOTFS_UBIFS
121                         help
122                           Select compression type
123
124                         config TARGET_UBIFS_COMPRESSION_NONE
125                                 bool "none"
126
127                         config TARGET_UBIFS_COMPRESSION_LZO
128                                 bool "lzo"
129
130                         config TARGET_UBIFS_COMPRESSION_ZLIB
131                                 bool "zlib"
132                 endchoice
133
134                 config TARGET_UBIFS_FREE_SPACE_FIXUP
135                         bool "free space fixup" if TARGET_ROOTFS_UBIFS
136                         default y
137                         help
138                           The file-system free space has to be fixed up on first mount
139
140                 config TARGET_UBIFS_JOURNAL_SIZE
141                         string
142                         prompt "journal size" if TARGET_ROOTFS_UBIFS
143                         default "512KiB"
144
145                 config TARGET_UBIFS_SQUASH_UIDS
146                         bool "squash uids" if TARGET_ROOTFS_UBIFS
147                         default n
148                         help
149                           Squash owners making all files owned by root
150
151         comment "Image Options"
152
153         source "target/linux/*/image/Config.in"
154
155         config TARGET_ROOTFS_PARTSIZE
156                 int "Root filesystem partition size (in MB)"
157                 depends on X86_GRUB_IMAGES || TARGET_ROOTFS_EXT4FS || TARGET_rb532
158                 default 48
159                 help
160                   Allows you to change the root filesystem partition size
161
162         config TARGET_ROOTFS_MAXINODE
163                 int "Maximum number of inodes in root filesystem"
164                 depends on TARGET_ROOTFS_EXT4FS
165                 default 6000
166                 help
167                   Allows you to change the maximum number of inodes in the root filesystem
168
169         config TARGET_ROOTFS_RESERVED_PCT
170                 int "Percentage of reserved blocks in root filesystem"
171                 depends on TARGET_ROOTFS_EXT4FS
172                 default 0
173                 help
174                   Allows you to change the percentage of reserved blocks in the root filesystem
175
176         menuconfig TARGET_ROOTFS_INCLUDE_KERNEL
177                 bool "Include kernel in root filesystem"
178                 depends on TARGET_ROOTFS_UBIFS || TARGET_ROOTFS_EXT4FS
179                 default n if USES_UBIFS
180                 help
181                   Include the kernel image in the rootfs. Typically the image is placed
182                   below /boot.
183
184                 config TARGET_ROOTFS_INCLUDE_UIMAGE
185                         bool "include uImage" if TARGET_ROOTFS_INCLUDE_KERNEL
186                         default y
187                         help
188                           This option might not apply to all targets. Make sure
189                           to check target/linux/<your_target>/image/Makefile to
190                           see if this option will have any effect.
191
192                 config TARGET_ROOTFS_INCLUDE_ZIMAGE
193                         bool "include zImage" if TARGET_ROOTFS_INCLUDE_KERNEL
194                         default y
195                         help
196                           This option might not apply to all targets. Make sure
197                           to check target/linux/<your_target>/image/Makefile to
198                           see if this option will have any effect.
199
200                 config TARGET_ROOTFS_INCLUDE_FIT
201                         bool "include FIT" if TARGET_ROOTFS_INCLUDE_KERNEL
202                         default y
203                         help
204                           This option might not apply to all targets. Make sure
205                           to check target/linux/<your_target>/image/Makefile to
206                           see if this option will have any effect.
207
208         config TARGET_ROOTFS_INCLUDE_DTB
209                 bool "Include DTB in root filesystem"
210                 depends on TARGET_ROOTFS_UBIFS || TARGET_ROOTFS_EXT4FS
211                 default n if USES_UBIFS
212                 help
213                   Include the device tree blob file(s) in the rootfs. Typically the DTBs
214                   are placed below /boot.
215
216 endmenu
217
218 menu "Global build settings"
219
220         config ALL
221                 bool "Select all packages by default"
222                 default n
223
224         comment "General build options"
225
226         config DISPLAY_SUPPORT
227                 bool "Show packages that require graphics support (local or remote)"
228                 default n
229
230         config BUILD_PATENTED
231                 default y
232                 bool "Compile with support for patented functionality"
233                 help
234                   When this option is disabled, software which provides patented functionality will not be built.
235                   In case software provides optional support for patented functionality,
236                   this optional support will get disabled for this package.
237
238         config BUILD_NLS
239                 default n
240                 bool "Compile with full language support"
241                 help
242                   When this option is enabled, packages are built with the full versions of iconv and GNU gettext
243                   instead of the default OpenWrt stubs. If uClibc is used, it is also built with locale support.
244
245         config BUILD_STATIC_TOOLS
246                 default n
247                 bool "Attempt to link host utilities statically"
248                 help
249                   Linking host utilities like sed or firmware-utils statically increases the portability of the
250                   generated ImageBuilder and SDK tarballs, however it may fail on some Linux distributions.
251
252         config SHADOW_PASSWORDS
253                 bool
254                 prompt "Enable shadow password support"
255                 default y
256                 help
257                   Enable shadow password support.
258
259         config CLEAN_IPKG
260                 bool
261                 prompt "Remove ipkg/opkg status data files in final images"
262                 default n
263                 help
264                   This removes all ipkg/opkg status data files from the target directory before building the root fs
265
266         config COLLECT_KERNEL_DEBUG
267                 bool
268                 prompt "Collect kernel debug information"
269                 select KERNEL_DEBUG_INFO
270                 default n
271                 help
272                   This collects debugging symbols from the kernel and all compiled modules.
273                   Useful for release builds, so that kernel issues can be debugged offline later.
274
275         comment "Kernel build options"
276
277         config KERNEL_DEBUG_FS
278                 bool "Compile the kernel with Debug FileSystem enabled"
279                 default y
280                 help
281                   debugfs is a virtual file system that kernel developers use to put
282                   debugging files into. Enable this option to be able to read and
283                   write to these files.
284
285         config KERNEL_PERF_EVENTS
286                 bool
287                 default n
288
289         config KERNEL_PROFILING
290                 bool "Compile the kernel with profiling enabled"
291                 default n
292                 select KERNEL_PERF_EVENTS
293                 help
294                   Enable the extended profiling support mechanisms used by profilers such
295                   as OProfile.
296
297         config KERNEL_KALLSYMS
298                 bool "Compile the kernel with symbol table information"
299                 default y
300                 help
301                   This will give you more information in stack traces from kernel oopses
302
303         config KERNEL_FTRACE
304                 bool "Compile the kernel with tracing support"
305                 default n
306
307         config KERNEL_FTRACE_SYSCALLS
308                 bool "Trace system calls"
309                 depends on KERNEL_FTRACE
310                 default n
311
312         config KERNEL_ENABLE_DEFAULT_TRACERS
313                 bool "Trace process context switches and events"
314                 depends on KERNEL_FTRACE
315                 default n
316
317         config KERNEL_DEBUG_KERNEL
318                 bool
319                 default n
320
321         config KERNEL_DEBUG_INFO
322                 bool "Compile the kernel with debug information"
323                 default y
324                 select KERNEL_DEBUG_KERNEL
325                 help
326                   This will compile your kernel and modules with debug information.
327
328         config KERNEL_DEBUG_LL_UART_NONE
329                 bool
330                 default n
331                 depends on arm
332
333         config KERNEL_DEBUG_LL
334                 bool
335                 default n
336                 depends on arm
337                 select KERNEL_DEBUG_LL_UART_NONE
338                 help
339                   ARM low level debugging
340
341         config KERNEL_EARLY_PRINTK
342                 bool "Compile the kernel with early printk"
343                 default n
344                 depends on arm
345                 select KERNEL_DEBUG_KERNEL
346                 select KERNEL_DEBUG_LL if arm
347                 help
348                   Compile the kernel with early printk support.
349                   This is only useful for debugging purposes to send messages
350                   over the serial console in early boot.
351                   Enable this to debug early boot problems.
352
353         config KERNEL_AIO
354                 bool "Compile the kernel with asynchronous IO support"
355                 default n
356
357         config KERNEL_DIRECT_IO
358                 bool "Compile the kernel with direct IO support"
359                 default n
360
361         config KERNEL_MAGIC_SYSRQ
362                 bool "Compile the kernel with SysRq support"
363                 default y
364
365         config KERNEL_COREDUMP
366                 bool
367
368         config KERNEL_ELF_CORE
369                 bool "Enable process core dump support"
370                 select KERNEL_COREDUMP
371                 default y
372
373         config KERNEL_PROVE_LOCKING
374                 bool "Enable kernel lock checking"
375                 select KERNEL_DEBUG_KERNEL
376                 default n
377
378         config KERNEL_PRINTK_TIME
379                 bool "Enable printk timestamps"
380                 default y
381
382         config KERNEL_RELAY
383                 bool
384
385         config KERNEL_KEXEC
386                 bool "Enable kexec support"
387
388         config USE_RFKILL
389                 bool "Enable rfkill support"
390                 default RFKILL_SUPPORT
391
392         #
393         # CGROUP support symbols
394         #
395
396         config KERNEL_CGROUPS
397                 bool "Enable kernel cgroups"
398                 default n
399
400         if KERNEL_CGROUPS
401
402                 config KERNEL_CGROUP_DEBUG
403                         bool "Example debug cgroup subsystem"
404                         default n
405                         help
406                           This option enables a simple cgroup subsystem that
407                           exports useful debugging information about the cgroups
408                           framework.
409
410                 config KERNEL_FREEZER
411                         bool
412                         default y if KERNEL_CGROUP_FREEZER
413
414                 config KERNEL_CGROUP_FREEZER
415                         bool "Freezer cgroup subsystem"
416                         default n
417                         help
418                           Provides a way to freeze and unfreeze all tasks in a
419                           cgroup.
420
421                 config KERNEL_CGROUP_DEVICE
422                         bool "Device controller for cgroups"
423                         default y
424                         help
425                           Provides a cgroup implementing whitelists for devices which
426                           a process in the cgroup can mknod or open.
427
428                 config KERNEL_CPUSETS
429                         bool "Cpuset support"
430                         default n
431                         help
432                           This option will let you create and manage CPUSETs which
433                           allow dynamically partitioning a system into sets of CPUs and
434                           Memory Nodes and assigning tasks to run only within those sets.
435                           This is primarily useful on large SMP or NUMA systems.
436
437                 config KERNEL_PROC_PID_CPUSET
438                         bool "Include legacy /proc/<pid>/cpuset file"
439                         default n
440                         depends on KERNEL_CPUSETS
441
442                 config KERNEL_CGROUP_CPUACCT
443                         bool "Simple CPU accounting cgroup subsystem"
444                         default n
445                         help
446                           Provides a simple Resource Controller for monitoring the
447                           total CPU consumed by the tasks in a cgroup.
448
449                 config KERNEL_RESOURCE_COUNTERS
450                         bool "Resource counters"
451                         default n
452                         help
453                           This option enables controller independent resource accounting
454                           infrastructure that works with cgroups.
455
456                 config KERNEL_MM_OWNER
457                         bool
458                         default y if KERNEL_MEMCG
459
460                 config KERNEL_MEMCG
461                         bool "Memory Resource Controller for Control Groups"
462                         default n
463                         depends on KERNEL_RESOURCE_COUNTERS
464                         help
465                           Provides a memory resource controller that manages both anonymous
466                           memory and page cache. (See Documentation/cgroups/memory.txt)
467
468                           Note that setting this option increases fixed memory overhead
469                           associated with each page of memory in the system. By this,
470                           20(40)bytes/PAGE_SIZE on 32(64)bit system will be occupied by memory
471                           usage tracking struct at boot. Total amount of this is printed out
472                           at boot.
473
474                           Only enable when you're ok with these trade offs and really
475                           sure you need the memory resource controller. Even when you enable
476                           this, you can set "cgroup_disable=memory" at your boot option to
477                           disable memory resource controller and you can avoid overheads.
478                           (and lose benefits of memory resource controller)
479
480                           This config option also selects MM_OWNER config option, which
481                           could in turn add some fork/exit overhead.
482
483                 config KERNEL_MEMCG_SWAP
484                         bool "Memory Resource Controller Swap Extension"
485                         default n
486                         depends on KERNEL_MEMCG
487                         help
488                           Add swap management feature to memory resource controller. When you
489                           enable this, you can limit mem+swap usage per cgroup. In other words,
490                           when you disable this, memory resource controller has no cares to
491                           usage of swap...a process can exhaust all of the swap. This extension
492                           is useful when you want to avoid exhaustion swap but this itself
493                           adds more overheads and consumes memory for remembering information.
494                           Especially if you use 32bit system or small memory system, please
495                           be careful about enabling this. When memory resource controller
496                           is disabled by boot option, this will be automatically disabled and
497                           there will be no overhead from this. Even when you set this config=y,
498                           if boot option "swapaccount=0" is set, swap will not be accounted.
499                           Now, memory usage of swap_cgroup is 2 bytes per entry. If swap page
500                           size is 4096bytes, 512k per 1Gbytes of swap.
501
502                 config KERNEL_MEMCG_SWAP_ENABLED
503                         bool "Memory Resource Controller Swap Extension enabled by default"
504                         default n
505                         depends on KERNEL_MEMCG_SWAP
506                         help
507                           Memory Resource Controller Swap Extension comes with its price in
508                           a bigger memory consumption. General purpose distribution kernels
509                           which want to enable the feature but keep it disabled by default
510                           and let the user enable it by swapaccount boot command line
511                           parameter should have this option unselected.
512                           For those who want to have the feature enabled by default should
513                           select this option (if, for some reason, they need to disable it
514                           then swapaccount=0 does the trick).
515
516
517                 config KERNEL_MEMCG_KMEM
518                         bool "Memory Resource Controller Kernel Memory accounting (EXPERIMENTAL)"
519                         default n
520                         depends on KERNEL_MEMCG
521                         help
522                           The Kernel Memory extension for Memory Resource Controller can limit
523                           the amount of memory used by kernel objects in the system. Those are
524                           fundamentally different from the entities handled by the standard
525                           Memory Controller, which are page-based, and can be swapped. Users of
526                           the kmem extension can use it to guarantee that no group of processes
527                           will ever exhaust kernel resources alone.
528
529                 config KERNEL_CGROUP_PERF
530                         bool "Enable perf_event per-cpu per-container group (cgroup) monitoring"
531                         default n
532                         select KERNEL_PERF_EVENTS
533                         help
534                           This option extends the per-cpu mode to restrict monitoring to
535                           threads which belong to the cgroup specified and run on the
536                           designated cpu.
537
538                 menuconfig KERNEL_CGROUP_SCHED
539                         bool "Group CPU scheduler"
540                         default n
541                         help
542                           This feature lets CPU scheduler recognize task groups and control CPU
543                           bandwidth allocation to such task groups. It uses cgroups to group
544                           tasks.
545
546                 if KERNEL_CGROUP_SCHED
547
548                         config KERNEL_FAIR_GROUP_SCHED
549                                 bool "Group scheduling for SCHED_OTHER"
550                                 default n
551
552                         config KERNEL_CFS_BANDWIDTH
553                                 bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED"
554                                 default n
555                                 depends on KERNEL_FAIR_GROUP_SCHED
556                                 help
557                                   This option allows users to define CPU bandwidth rates (limits) for
558                                   tasks running within the fair group scheduler.  Groups with no limit
559                                   set are considered to be unconstrained and will run with no
560                                   restriction.
561                                   See tip/Documentation/scheduler/sched-bwc.txt for more information.
562
563                         config KERNEL_RT_GROUP_SCHED
564                                 bool "Group scheduling for SCHED_RR/FIFO"
565                                 default n
566                                 help
567                                   This feature lets you explicitly allocate real CPU bandwidth
568                                   to task groups. If enabled, it will also make it impossible to
569                                   schedule realtime tasks for non-root users until you allocate
570                                   realtime bandwidth for them.
571
572                 endif
573
574                 config KERNEL_BLK_CGROUP
575                         bool "Block IO controller"
576                         default y
577                         help
578                           Generic block IO controller cgroup interface. This is the common
579                           cgroup interface which should be used by various IO controlling
580                           policies.
581
582                           Currently, CFQ IO scheduler uses it to recognize task groups and
583                           control disk bandwidth allocation (proportional time slice allocation)
584                           to such task groups. It is also used by bio throttling logic in
585                           block layer to implement upper limit in IO rates on a device.
586
587                           This option only enables generic Block IO controller infrastructure.
588                           One needs to also enable actual IO controlling logic/policy. For
589                           enabling proportional weight division of disk bandwidth in CFQ, set
590                           CONFIG_CFQ_GROUP_IOSCHED=y; for enabling throttling policy, set
591                           CONFIG_BLK_DEV_THROTTLING=y.
592
593                 config KERNEL_DEBUG_BLK_CGROUP
594                         bool "Enable Block IO controller debugging"
595                         default n
596                         depends on KERNEL_BLK_CGROUP
597                         help
598                           Enable some debugging help. Currently it exports additional stat
599                           files in a cgroup which can be useful for debugging.
600
601                 config KERNEL_NET_CLS_CGROUP
602                         bool "Control Group Classifier"
603                         default y
604
605                 config KERNEL_NETPRIO_CGROUP
606                         bool "Network priority cgroup"
607                         default y
608
609         endif
610
611         #
612         # Namespace support symbols
613         #
614
615         config KERNEL_NAMESPACES
616                 bool "Enable kernel namespaces"
617                 default n
618
619         if KERNEL_NAMESPACES
620
621                 config KERNEL_UTS_NS
622                         bool "UTS namespace"
623                         default y
624                         help
625                           In this namespace tasks see different info provided
626                           with the uname() system call
627
628                 config KERNEL_IPC_NS
629                         bool "IPC namespace"
630                         default y
631                         help
632                           In this namespace tasks work with IPC ids which correspond to
633                           different IPC objects in different namespaces.
634
635                 config KERNEL_USER_NS
636                         bool "User namespace (EXPERIMENTAL)"
637                         default y
638                         help
639                           This allows containers, i.e. vservers, to use user namespaces
640                           to provide different user info for different servers.
641
642                 config KERNEL_PID_NS
643                         bool "PID Namespaces"
644                         default y
645                         help
646                           Support process id namespaces. This allows having multiple
647                           processes with the same pid as long as they are in different
648                           pid namespaces. This is a building block of containers.
649
650                 config KERNEL_NET_NS
651                         bool "Network namespace"
652                         default y
653                         help
654                           Allow user space to create what appear to be multiple instances
655                           of the network stack.
656
657         endif
658
659         #
660         # LXC related symbols
661         #
662
663         config KERNEL_LXC_MISC
664                 bool "Enable miscellaneous LXC related options"
665                 default n
666
667         if KERNEL_LXC_MISC
668
669                 config KERNEL_DEVPTS_MULTIPLE_INSTANCES
670                         bool "Support multiple instances of devpts"
671                         default y
672                         help
673                           Enable support for multiple instances of devpts filesystem.
674                           If you want to have isolated PTY namespaces (eg: in containers),
675                           say Y here. Otherwise, say N. If enabled, each mount of devpts
676                           filesystem with the '-o newinstance' option will create an
677                           independent PTY namespace.
678
679                 config KERNEL_POSIX_MQUEUE
680                         bool "POSIX Message Queues"
681                         default n
682                         help
683                           POSIX variant of message queues is a part of IPC. In POSIX message
684                           queues every message has a priority which decides about succession
685                           of receiving it by a process. If you want to compile and run
686                           programs written e.g. for Solaris with use of its POSIX message
687                           queues (functions mq_*) say Y here.
688
689                           POSIX message queues are visible as a filesystem called 'mqueue'
690                           and can be mounted somewhere if you want to do filesystem
691                           operations on message queues.
692
693         endif
694
695         comment "Package build options"
696
697         config DEBUG
698                 bool
699                 prompt "Compile packages with debugging info"
700                 default n
701                 help
702                   Adds -g3 to the CFLAGS
703
704         config IPV6
705                 bool
706                 prompt "Enable IPv6 support in packages"
707                 default y
708                 help
709                   Enable IPV6 support in packages (passes --enable-ipv6 to configure scripts).
710
711         config PKG_BUILD_PARALLEL
712                 bool
713                 prompt "Compile certain packages parallelized"
714                 default y
715                 help
716                   This adds a -jX option to certain packages that are known to
717                   behave well for parallel build. By default the package make processes
718                   use the main jobserver, in which case this option only takes effect
719                   when you add -jX to the make command.
720
721                   If you are unsure, select N.
722
723         config PKG_BUILD_USE_JOBSERVER
724                 bool
725                 prompt "Use top-level make jobserver for packages"
726                 depends on PKG_BUILD_PARALLEL
727                 default y
728                 help
729                   This passes the main make process jobserver fds to package builds,
730                   enabling full parallelization across different packages
731
732                   Note that disabling this may overcommit CPU resources depending on the
733                   -j level of the main make process, the number of package
734                   submake jobs selected below and the number of actual CPUs present.
735                   Example: If the main make is passed a -j4 and the submake -j
736                   is also set to 4, we may end up with 16 parallel make processes
737                   in the worst case.
738
739
740         config PKG_BUILD_JOBS
741                 int
742                 prompt "Number of package submake jobs (2-512)"
743                 range 2 512
744                 default 2
745                 depends on PKG_BUILD_PARALLEL && !PKG_BUILD_USE_JOBSERVER
746                 help
747                   The number of jobs (-jX) to pass to packages submake.
748
749         config PKG_DEFAULT_PARALLEL
750                 bool
751                 prompt "Parallelize the default package build rule (May break build)"
752                 depends on PKG_BUILD_PARALLEL
753                 depends on BROKEN
754                 default n
755                 help
756                   Always set the default package build rules to parallel build.
757
758                   WARNING: This may break build or kill your cat, as it builds
759                   packages with multiple jobs that are probably not tested in
760                   a parallel build environment.
761
762                   Only say Y, if you don't mind fixing broken packages.
763                   Before reporting build bugs, set this to N and re-run the build.
764
765         comment "Stripping options"
766
767         choice
768                 prompt "Binary stripping method"
769                 default USE_STRIP   if EXTERNAL_TOOLCHAIN
770                 default USE_STRIP   if USE_GLIBC || USE_EGLIBC || USE_MUSL
771                 default USE_SSTRIP
772                 help
773                   Select the binary stripping method you wish to use.
774
775                 config NO_STRIP
776                         bool "none"
777                         help
778                           This will install unstripped binaries (useful for native compiling/debugging)
779
780                 config USE_STRIP
781                         bool "strip"
782                         help
783                           This will install binaries stripped using strip from binutils
784
785
786                 config USE_SSTRIP
787                         bool "sstrip"
788                         depends on !DEBUG
789                         depends on !USE_GLIBC
790                         depends on !USE_EGLIBC
791                         help
792                           This will install binaries stripped using sstrip
793         endchoice
794
795         config STRIP_ARGS
796                 string
797                 prompt "Strip arguments"
798                 depends on USE_STRIP
799                 default "--strip-unneeded --remove-section=.comment --remove-section=.note" if DEBUG
800                 default "--strip-all"
801                 help
802                   Specifies arguments passed to the strip command when stripping binaries
803
804         config STRIP_KERNEL_EXPORTS
805                 bool "Strip unnecessary exports from the kernel image"
806                 help
807                   Reduces kernel size by stripping unused kernel exports from the kernel image
808                   Note that this might make the kernel incompatible with any kernel modules that
809                   were not selected at the time the kernel image was created
810
811         config USE_MKLIBS
812                 bool "Strip unnecessary functions from libraries"
813                 help
814                   Reduces libraries to only those functions that are necessary for using all
815                   selected packages (including those selected as <M>)
816                   Note that this will make the system libraries incompatible with most of the packages
817                   that are not selected during the build process
818
819         choice
820                 prompt "Preferred standard C++ library"
821                 default USE_LIBSTDCXX if USE_EGLIBC
822                 default USE_UCLIBCXX
823                 help
824                   Select the preferred standard C++ library for all packages that support this.
825
826                 config USE_UCLIBCXX
827                         bool "uClibc++"
828
829                 config USE_LIBSTDCXX
830                         bool "libstdc++"
831         endchoice
832
833 endmenu
834
835 menuconfig DEVEL
836         bool "Advanced configuration options (for developers)"
837         default n
838
839         config BROKEN
840                 bool "Show broken platforms / packages" if DEVEL
841                 default n
842
843         config DOWNLOAD_FOLDER
844                 string "Download folder" if DEVEL
845                 default ""
846
847         config LOCALMIRROR
848                 string "Local mirror for source packages" if DEVEL
849                 default ""
850
851         config AUTOREBUILD
852                 bool "Automatic rebuild of packages" if DEVEL
853                 default y
854                 help
855                   Automatically rebuild packages when their files change
856
857         config BUILD_SUFFIX
858                 string "Build suffix to append to the BUILD_DIR variable" if DEVEL
859                 default ""
860                 help
861                   Build suffix to append to the BUILD_DIR variable, i.e: build_dir_suffix
862
863         config TARGET_ROOTFS_DIR
864                 string "Override the default TARGET_ROOTFS_DIR variable" if DEVEL
865                 default ""
866                 help
867                   Override the default TARGET_ROOTFS_DIR variable content $(BUILD_DIR) with custom path.
868                   Use this option to re-define the location of the target root file system directory.
869
870         config CCACHE
871                 bool "Use ccache" if DEVEL
872                 default n
873                 help
874                   Compiler cache; see http://ccache.samba.org/
875
876         config EXTERNAL_KERNEL_TREE
877                 string "Use external kernel tree" if DEVEL
878                 default ""
879
880         config KERNEL_GIT_CLONE_URI
881                 string "Enter git repository to clone" if DEVEL
882                 default ""
883                 help
884                   Enter the full git repository path i.e.:
885                   git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
886                   This will create a git clone of the kernel in your build
887                   directory.
888
889         config KERNEL_GIT_LOCAL_REPOSITORY
890                 string "Enter path to local reference repository" if DEVEL
891                 default ""
892                 help
893                   Enter a full pathname to a local reference git repository.
894                   In this instance, the --refererence option of git clone will
895                   be used thus creating a quick local clone of your repo.
896
897         config BUILD_LOG
898                 bool "Enable log files during build process" if DEVEL
899                 help
900                   If enabled log files will be written to the ./log directory
901
902         config SRC_TREE_OVERRIDE
903                 bool "Enable package source tree override" if DEVEL
904                 help
905                   If enabled, you can force a package to use a git tree as source
906                   code instead of the normal tarball. Create a symlink 'git-src'
907                   in the package directory, pointing to the .git tree that you want
908                   to pull the source code from
909
910         config EXTRA_OPTIMIZATION
911                 string "Additional compiler options" if DEVEL
912                 default "-fno-caller-saves"
913                 help
914                   Extra Target-independent optimizations to use when building for the target.
915
916 menuconfig TARGET_OPTIONS
917         bool "Target Options"  if DEVEL
918
919         config TARGET_OPTIMIZATION
920                 string "Target Optimizations" if TARGET_OPTIONS
921                 default DEFAULT_TARGET_OPTIMIZATION
922                 help
923                   Optimizations to use when building for the target host.
924
925         config SOFT_FLOAT
926                 bool "Use software floating point by default" if TARGET_OPTIONS
927                 default y
928                 depends on (arm || armeb || powerpc || mipsel || mips || mips64el || mips64) && !HAS_FPU
929                 help
930                   If your target CPU does not have a Floating Point Unit (FPU) or a
931                   kernel FPU emulator, but you still wish to support floating point
932                   functions, then everything will need to be compiled with soft floating
933                   point support (-msoft-float).
934
935                   Most people will answer N.
936
937         config USE_MIPS16
938                 bool "Build packages with MIPS16 instructions" if TARGET_OPTIONS
939                 depends on HAS_MIPS16
940                 depends on !GCC_VERSION_4_6
941                 default y
942                 help
943                   If your target CPU does support the MIPS16 instruction set
944                   and you want to use it for packages, enable this option.
945                   MIPS16 produces smaller binaries thus reducing pressure on
946                   caches and TLB.
947
948                   Most people will answer N.
949
950 source "toolchain/Config.in"
951
952 source "target/imagebuilder/Config.in"
953 source "target/sdk/Config.in"
954 source "target/toolchain/Config.in"
955
956 source "tmp/.config-package.in"