sngrep: fix error if gnutls and openssl are both enabled
[buildroot-gz.git] / Config.in
blobccd777e8bb00e56cec09a61f630dda8773e31d28
3 mainmenu "Buildroot $BR2_VERSION Configuration"
5 config BR2_HAVE_DOT_CONFIG
6         bool
7         default y
9 config BR2_VERSION
10         string
11         option env="BR2_VERSION_FULL"
13 config BR2_HOSTARCH
14         string
15         option env="HOSTARCH"
17 config BR2_BUILD_DIR
18         string
19         option env="BUILD_DIR"
21 # Hidden config symbols for packages to check system gcc version
22 config BR2_HOST_GCC_VERSION
23         string
24         option env="HOST_GCC_VERSION"
26 config BR2_HOST_GCC_AT_LEAST_4_5
27         bool
28         default y if BR2_HOST_GCC_VERSION = "4 5"
30 config BR2_HOST_GCC_AT_LEAST_4_6
31         bool
32         default y if BR2_HOST_GCC_VERSION = "4 6"
33         select BR2_HOST_GCC_AT_LEAST_4_5
35 config BR2_HOST_GCC_AT_LEAST_4_7
36         bool
37         default y if BR2_HOST_GCC_VERSION = "4 7"
38         select BR2_HOST_GCC_AT_LEAST_4_6
40 config BR2_HOST_GCC_AT_LEAST_4_8
41         bool
42         default y if BR2_HOST_GCC_VERSION = "4 8"
43         select BR2_HOST_GCC_AT_LEAST_4_7
45 config BR2_HOST_GCC_AT_LEAST_4_9
46         bool
47         default y if BR2_HOST_GCC_VERSION = "4 9"
48         select BR2_HOST_GCC_AT_LEAST_4_8
50 config BR2_HOST_GCC_AT_LEAST_5
51         bool
52         default y if BR2_HOST_GCC_VERSION = "5"
53         select BR2_HOST_GCC_AT_LEAST_4_9
55 config BR2_HOST_GCC_AT_LEAST_6
56         bool
57         default y if BR2_HOST_GCC_VERSION = "6"
58         select BR2_HOST_GCC_AT_LEAST_5
60 # Hidden boolean selected by packages in need of Java in order to build
61 # (example: xbmc)
62 config BR2_NEEDS_HOST_JAVA
63         bool
65 # Hidden boolean selected by packages in need of javac in order to build
66 # (example: classpath)
67 config BR2_NEEDS_HOST_JAVAC
68         bool
70 # Hidden boolean selected by packages in need of jar in order to build
71 # (example: classpath)
72 config BR2_NEEDS_HOST_JAR
73         bool
75 # Hidden boolean selected by pre-built packages for x86, when they
76 # need to run on x86-64 machines (example: pre-built external
77 # toolchains, binary tools like SAM-BA, etc.).
78 config BR2_HOSTARCH_NEEDS_IA32_LIBS
79         bool
81 # Hidden boolean selected by packages that need to build 32 bits
82 # binaries with the host compiler, even on 64 bits build machines (e.g
83 # bootloaders).
84 config BR2_HOSTARCH_NEEDS_IA32_COMPILER
85         bool
87 # Hidden boolean selected by packages that need the host to have an
88 # UTF8 locale.
89 config BR2_NEEDS_HOST_UTF8_LOCALE
90         bool
92 source "arch/Config.in"
94 menu "Build options"
96 menu "Commands"
98 config BR2_WGET
99         string "Wget command"
100         default "wget --passive-ftp -nd -t 3"
102 config BR2_SVN
103         string "Subversion (svn) command"
104         default "svn"
106 config BR2_BZR
107         string "Bazaar (bzr) command"
108         default "bzr"
110 config BR2_GIT
111         string "Git command"
112         default "git"
114 config BR2_CVS
115         string "CVS command"
116         default "cvs"
118 config BR2_LOCALFILES
119         string "Local files retrieval command"
120         default "cp"
122 config BR2_SCP
123         string "Secure copy (scp) command"
124         default "scp"
126 config BR2_SSH
127         string "Secure shell (ssh) command"
128         default "ssh"
130 config BR2_HG
131         string "Mercurial (hg) command"
132         default "hg"
134 config BR2_ZCAT
135         string "zcat command"
136         default "gzip -d -c"
137         help
138           Command to be used to extract a gzip'ed file to stdout. zcat
139           is identical to gunzip -c except that the former may not be
140           available on your system.
141           Default is "gzip -d -c"
142           Other possible values include "gunzip -c" or "zcat".
144 config BR2_BZCAT
145         string "bzcat command"
146         default "bzcat"
147         help
148           Command to be used to extract a bzip2'ed file to stdout.
149           bzcat is identical to bunzip2 -c except that the former may
150           not be available on your system.
151           Default is "bzcat"
152           Other possible values include "bunzip2 -c" or "bzip2 -d -c".
154 config BR2_XZCAT
155         string "xzcat command"
156         default "xzcat"
157         help
158           Command to be used to extract a xz'ed file to stdout.
159           Default is "xzcat"
161 config BR2_TAR_OPTIONS
162         string "Tar options"
163         default ""
164         help
165           Options to pass to tar when extracting the sources.
166           E.g. " -v --exclude='*.svn*'" to exclude all .svn internal files
167           and to be verbose.
169 endmenu
171 config BR2_DEFCONFIG_FROM_ENV
172         string
173         option env="BR2_DEFCONFIG"
175 config BR2_DEFCONFIG
176         string "Location to save buildroot config"
177         default BR2_DEFCONFIG_FROM_ENV if BR2_DEFCONFIG_FROM_ENV != ""
178         default "$(CONFIG_DIR)/defconfig"
179         help
180           When running 'make savedefconfig', the defconfig file will be
181           saved in this location.
183 config BR2_DL_DIR
184         string "Download dir"
185         default "$(TOPDIR)/dl"
186         help
187           Directory to store all the source files that we need to fetch.
188           If the Linux shell environment has defined the BR2_DL_DIR
189           environment variable, then this overrides this configuration
190           item.
192           The default is $(TOPDIR)/dl
194 config BR2_HOST_DIR
195         string "Host dir"
196         default "$(BASE_DIR)/host"
197         help
198           Directory to store all the binary files that are built for the
199           host. This includes the cross compilation toolchain when
200           building the internal buildroot toolchain.
202           The default is $(BASE_DIR)/host
204 menu "Mirrors and Download locations"
206 config BR2_PRIMARY_SITE
207         string "Primary download site"
208         default ""
209         help
210           Primary site to download from. If this option is set then
211           buildroot will try to download package source first from this
212           site and try the default if the file is not found.
213           Valid URIs are:
214             - URIs recognized by $(WGET)
215             - local URIs of the form file://absolutepath
216             - scp URIs of the form scp://[user@]host:path.
218 config BR2_PRIMARY_SITE_ONLY
219         bool "Only allow downloads from primary download site"
220         depends on BR2_PRIMARY_SITE != ""
221         help
222           If this option is enabled, downloads will only be attempted
223           from the primary download site. Other locations, like the
224           package's official download location or the backup download
225           site, will not be considered. Therefore, if the package is not
226           present on the primary site, the download fails.
228           This is useful for project developers who want to ensure that
229           the project can be built even if the upstream tarball
230           locations disappear.
232 if !BR2_PRIMARY_SITE_ONLY
234 config BR2_BACKUP_SITE
235         string "Backup download site"
236         default "http://sources.buildroot.net"
237         help
238           Backup site to download from. If this option is set then
239           buildroot will fall back to download package sources from here
240           if the normal location fails.
242 config BR2_KERNEL_MIRROR
243         string "Kernel.org mirror"
244         default "https://cdn.kernel.org/pub"
245         help
246           kernel.org is mirrored on a number of servers around the
247           world. The following allows you to select your preferred
248           mirror. By default, a CDN is used, which automatically
249           redirects to a mirror geographically close to you.
251           Have a look on the kernel.org site for a list of mirrors, then
252           enter the URL to the base directory. Examples:
254              http://www.XX.kernel.org/pub (XX = country code)
255              http://mirror.aarnet.edu.au/pub/ftp.kernel.org
257 config BR2_GNU_MIRROR
258         string "GNU Software mirror"
259         default "http://ftpmirror.gnu.org"
260         help
261           GNU has multiple software mirrors scattered around the
262           world. The following allows you to select your preferred
263           mirror. By default, a generic address is used, which
264           automatically selects an up-to-date and local mirror.
266           Have a look on the gnu.org site for a list of mirrors, then
267           enter the URL to the base directory. Examples:
269              http://ftp.gnu.org/pub/gnu
270              http://mirror.aarnet.edu.au/pub/gnu
272 config BR2_LUAROCKS_MIRROR
273         string "LuaRocks mirror"
274         default "http://rocks.moonscript.org"
275         help
276           LuaRocks repository.
278           See http://luarocks.org
280 config BR2_CPAN_MIRROR
281         string "CPAN mirror (Perl packages)"
282         default "http://cpan.metacpan.org"
283         help
284           CPAN (Comprehensive Perl Archive Network) is a repository of
285           Perl packages. It has multiple software mirrors scattered
286           around the world. This option allows you to select a mirror.
288           The list of mirrors is available at:
289           http://search.cpan.org/mirror
291 endif
293 endmenu
295 config BR2_JLEVEL
296         int "Number of jobs to run simultaneously (0 for auto)"
297         default "0"
298         help
299           Number of jobs to run simultaneously. If 0, determine
300           automatically according to number of CPUs on the host system.
302 config BR2_CCACHE
303         bool "Enable compiler cache"
304         help
305           This option will enable the use of ccache, a compiler cache.
306           It will cache the result of previous builds to speed up future
307           builds. By default, the cache is stored in
308           $HOME/.buildroot-ccache.
310           Note that Buildroot does not try to invalidate the cache
311           contents when the compiler changes in an incompatible way.
312           Therefore, if you make a change to the compiler version and/or
313           configuration, you are responsible for purging the ccache
314           cache by removing the $HOME/.buildroot-ccache directory.
316 if BR2_CCACHE
318 config BR2_CCACHE_DIR
319         string "Compiler cache location"
320         default "$(HOME)/.buildroot-ccache"
321         help
322           Where ccache should store cached files.
324 config BR2_CCACHE_INITIAL_SETUP
325         string "Compiler cache initial setup"
326         help
327           Initial ccache settings to apply, such as --max-files or
328           --max-size.
330           For example, if your project is known to require more space
331           than the default max cache size, then you might want to
332           increase the cache size to a suitable amount using the -M
333           (--max-size) option.
335           The string you specify here is passed verbatim to ccache.
336           Refer to ccache documentation for more details.
338           These initial settings are applied after ccache has been
339           compiled.
341 config BR2_CCACHE_USE_BASEDIR
342         bool "Use relative paths"
343         default y
344         help
345           Allow ccache to convert absolute paths within the output
346           directory into relative paths.
348           During the build, many -I include directives are given with an
349           absolute path. These absolute paths end up in the hashes that
350           are computed by ccache. Therefore, when you build from a
351           different directory, the hash will be different and the cached
352           object will not be used.
354           To improve cache performance, set this option to y. This
355           allows ccache to rewrite absolute paths within the output
356           directory into relative paths. Note that only paths within the
357           output directory will be rewritten; therefore, if you change
358           BR2_HOST_DIR to point outside the output directory and
359           subsequently move it to a different location, this will lead
360           to cache misses.
362           This option has as a result that the debug information in the
363           object files also has only relative paths. Therefore, make
364           sure you cd to the build directory before starting gdb. See
365           the section "COMPILING IN DIFFERENT DIRECTORIES" in the ccache
366           manual for more information.
368 endif
370 config BR2_ENABLE_DEBUG
371         bool "build packages with debugging symbols"
372         help
373           Build packages with debugging symbols enabled. All libraries
374           and binaries in the 'staging' directory will have debugging
375           symbols, which allows remote debugging even if libraries and
376           binaries are stripped on the target. Whether libraries and
377           binaries are stripped on the target is controlled by the
378           BR2_STRIP_* options below.
380 if BR2_ENABLE_DEBUG
381 choice
382         prompt "gcc debug level"
383         default BR2_DEBUG_2
384         help
385           Set the debug level for gcc
387 config BR2_DEBUG_1
388         bool "debug level 1"
389         help
390           Debug level 1 produces minimal information, enough for making
391           backtraces in parts of the program that you don't plan to
392           debug. This includes descriptions of functions and external
393           variables, but no information about local variables and no
394           line numbers.
396 config BR2_DEBUG_2
397         bool "debug level 2"
398         help
399           The default gcc debug level is 2
401 config BR2_DEBUG_3
402         bool "debug level 3"
403         help
404           Level 3 includes extra information, such as all the macro
405           definitions present in the program. Some debuggers support
406           macro expansion when you use -g3.
407 endchoice
408 endif
410 choice
411         prompt "strip command for binaries on target"
412         default BR2_STRIP_strip
414 config BR2_STRIP_strip
415         bool "strip"
416         depends on !BR2_PACKAGE_HOST_ELF2FLT
417         help
418           Binaries and libraries in the target filesystem will be
419           stripped using the normal 'strip' command. This allows to save
420           space, mainly by removing debugging symbols. Debugging symbols
421           on the target are needed for native debugging, but not when
422           remote debugging is used.
424 config BR2_STRIP_none
425         bool "none"
426         help
427           Do not strip binaries and libraries in the target filesystem.
428 endchoice
430 config BR2_STRIP_EXCLUDE_FILES
431         string "executables that should not be stripped"
432         depends on !BR2_STRIP_none
433         default ""
434         help
435           You may specify a space-separated list of binaries and
436           libraries here that should not be stripped on the target.
438 config BR2_STRIP_EXCLUDE_DIRS
439         string "directories that should be skipped when stripping"
440         depends on !BR2_STRIP_none
441         default ""
442         help
443           You may specify a space-separated list of directories that
444           should be skipped when stripping. Binaries and libraries in
445           these directories will not be touched. The directories should
446           be specified relative to the target directory, without leading
447           slash.
449 choice
450         prompt "gcc optimization level"
451         default BR2_OPTIMIZE_S
452         help
453           Set the optimization level for gcc
455 config BR2_OPTIMIZE_0
456         bool "optimization level 0"
457         help
458           Do not optimize. This is the default.
460 config BR2_OPTIMIZE_1
461         bool "optimization level 1"
462         help
463           Optimize. Optimizing compilation takes somewhat more time, and
464           a lot more memory for a large function. With -O, the compiler
465           tries to reduce code size and execution time, without
466           performing any optimizations that take a great deal of
467           compilation time. -O turns on the following optimization
468           flags: -fdefer-pop -fdelayed-branch -fguess-branch-probability
469           -fcprop-registers -floop-optimize -fif-conversion
470           -fif-conversion2 -ftree-ccp -ftree-dce -ftree-dominator-opts
471           -ftree-dse -ftree-ter -ftree-lrs -ftree-sra -ftree-copyrename
472           -ftree-fre -ftree-ch -funit-at-a-time -fmerge-constants. -O
473           also turns on -fomit-frame-pointer on machines where doing so
474           does not interfere with debugging.
476 config BR2_OPTIMIZE_2
477         bool "optimization level 2"
478         help
479           Optimize even more. GCC performs nearly all supported
480           optimizations that do not involve a space-speed tradeoff. The
481           compiler does not perform loop unrolling or function inlining
482           when you specify -O2. As compared to -O, this option increases
483           both compilation time and the performance of the generated
484           code. -O2 turns on all optimization flags specified by -O. It
485           also turns on the following optimization flags:
486           -fthread-jumps -fcrossjumping -foptimize-sibling-calls
487           -fcse-follow-jumps -fcse-skip-blocks -fgcse  -fgcse-lm
488           -fexpensive-optimizations -fstrength-reduce
489           -frerun-cse-after-loop -frerun-loop-opt -fcaller-saves
490           -fpeephole2 -fschedule-insns -fschedule-insns2
491           -fsched-interblock -fsched-spec -fregmove -fstrict-aliasing
492           -fdelete-null-pointer-checks -freorder-blocks
493           -freorder-functions -falign-functions -falign-jumps
494           -falign-loops -falign-labels -ftree-vrp -ftree-pre. Please
495           note the warning under -fgcse about invoking -O2 on programs
496           that use computed gotos.
498 config BR2_OPTIMIZE_3
499         bool "optimization level 3"
500         help
501           Optimize yet more. -O3 turns on all optimizations specified by
502           -O2 and also turns on the -finline-functions, -funswitch-loops
503           and -fgcse-after-reload options.
505 config BR2_OPTIMIZE_G
506         bool "optimize for debugging"
507         depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
508         help
509           Optimize for debugging. This enables optimizations that do not
510           interfere with debugging. It should be the optimization level
511           of choice for the standard edit-compile-debug cycle, offering
512           a reasonable level of optimization while maintaining fast
513           compilation and a good debugging experience.
515 config BR2_OPTIMIZE_S
516         bool "optimize for size"
517         help
518           Optimize for size. -Os enables all -O2 optimizations that do
519           not typically increase code size. It also performs further
520           optimizations designed to reduce code size. -Os disables the
521           following optimization flags: -falign-functions -falign-jumps
522           -falign-loops -falign-labels -freorder-blocks
523           -freorder-blocks-and-partition -fprefetch-loop-arrays
524           -ftree-vect-loop-version
526 endchoice
528 config BR2_GOOGLE_BREAKPAD_ENABLE
529         bool "Enable google-breakpad support"
530         select BR2_PACKAGE_GOOGLE_BREAKPAD
531         depends on BR2_INSTALL_LIBSTDCPP
532         depends on BR2_HOST_GCC_AT_LEAST_4_8 # C++11
533         depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11
534         depends on BR2_USE_WCHAR
535         depends on BR2_TOOLCHAIN_HAS_THREADS
536         depends on (BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_UCLIBC)
537         depends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS
538         help
539           This option will enable the use of google breakpad, a library
540           and tool suite that allows you to distribute an application to
541           users with compiler-provided debugging information removed,
542           record crashes in compact "minidump" files, send them back to
543           your server and produce C and C++ stack traces from these
544           minidumps. Breakpad can also write minidumps on request for
545           programs that have not crashed.
547 if BR2_GOOGLE_BREAKPAD_ENABLE
549 config BR2_GOOGLE_BREAKPAD_INCLUDE_FILES
550         string "List of executables and libraries to extract symbols from"
551         default ""
552         help
553           You may specify a space-separated list of binaries and
554           libraries with full paths relative to $(TARGET_DIR) of which
555           debug symbols will be dumped for further use with google
556           breakpad.
558           A directory structure that can be used by minidump-stackwalk
559           will be created at:
561           $(STAGING_DIR)/usr/share/google-breakpad-symbols
563 endif
565 choice
566         bool "build code with Stack Smashing Protection"
567         default BR2_SSP_ALL if BR2_ENABLE_SSP # legacy
568         depends on BR2_TOOLCHAIN_HAS_SSP
569         help
570           Enable stack smashing protection support using GCC's
571           -fstack-protector option family.
573           See
574           http://www.linuxfromscratch.org/hints/downloads/files/ssp.txt
575           for details.
577           Note that this requires the toolchain to have SSP support.
578           This is always the case for glibc and eglibc toolchain, but is
579           optional in uClibc toolchains.
581 config BR2_SSP_NONE
582         bool "None"
583         help
584           Disable stack-smashing protection.
586 config BR2_SSP_REGULAR
587         bool "-fstack-protector"
588         help
589           Emit extra code to check for buffer overflows, such as stack
590           smashing attacks. This is done by adding a guard variable to
591           functions with vulnerable objects. This includes functions
592           that call alloca, and functions with buffers larger than 8
593           bytes. The guards are initialized when a function is entered
594           and then checked when the function exits. If a guard check
595           fails, an error message is printed and the program exits.
597 config BR2_SSP_STRONG
598         bool "-fstack-protector-strong"
599         depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
600         help
601           Like -fstack-protector but includes additional functions to be
602           protected - those that have local array definitions, or have
603           references to local frame addresses.
605 comment "Stack Smashing Protection strong needs a toolchain w/ gcc >= 4.9"
606         depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
608 config BR2_SSP_ALL
609         bool "-fstack-protector-all"
610         help
611           Like -fstack-protector except that all functions are
612           protected. This option might have a significant performance
613           impact on the compiled binaries.
615 endchoice
617 comment "Stack Smashing Protection needs a toolchain w/ SSP"
618         depends on !BR2_TOOLCHAIN_HAS_SSP
620 choice
621         bool "libraries"
622         default BR2_SHARED_LIBS if BR2_BINFMT_SUPPORTS_SHARED
623         default BR2_STATIC_LIBS if !BR2_BINFMT_SUPPORTS_SHARED
624         help
625           Select the type of libraries you want to use on the target.
627           The default is to build dynamic libraries and use those on the
628           target filesystem, except when the architecture and/or the
629           selected binary format does not support shared libraries.
631 config BR2_STATIC_LIBS
632         bool "static only"
633         help
634           Build and use only static libraries. No shared libraries will
635           be installed on the target. This potentially increases your
636           code size and should only be used if you know what you are
637           doing. Note that some packages may not be available when this
638           option is enabled, due to their need for dynamic library
639           support.
641 config BR2_SHARED_LIBS
642         bool "shared only"
643         depends on BR2_BINFMT_SUPPORTS_SHARED
644         help
645           Build and use only shared libraries. This is the recommended
646           solution as it saves space and build time.
648 config BR2_SHARED_STATIC_LIBS
649         bool "both static and shared"
650         depends on BR2_BINFMT_SUPPORTS_SHARED
651         help
652           Build both shared and static libraries, but link executables
653           dynamically. While building both shared and static libraries
654           take more time and more disk space, having static libraries
655           may be useful to link some of the applications statically.
657 endchoice
660 config BR2_PACKAGE_OVERRIDE_FILE
661         string "location of a package override file"
662         default "$(CONFIG_DIR)/local.mk"
663         help
664           A package override file is a short makefile that contains
665           variable definitions of the form <pkg>_OVERRIDE_SRCDIR, which
666           allows to tell Buildroot to use an existing directory as the
667           source directory for a particular package. See the Buildroot
668           documentation for more details on this feature.
670 config BR2_GLOBAL_PATCH_DIR
671         string "global patch directories"
672         help
673           You may specify a space separated list of one or more
674           directories containing global package patches. For a specific
675           version <packageversion> of a specific package <packagename>,
676           patches are applied as follows:
678           First, the default Buildroot patch set for the package is
679           applied from the package's directory in Buildroot.
681           Then for every directory - <global-patch-dir> - that exists in
682           BR2_GLOBAL_PATCH_DIR, if the directory
683           <global-patch-dir>/<packagename>/<packageversion>/ exists,
684           then all *.patch files in this directory will be applied.
686           Otherwise, if the directory <global-patch-dir>/<packagename>
687           exists, then all *.patch files in the directory will be
688           applied.
690 menu "Advanced"
692 config BR2_COMPILER_PARANOID_UNSAFE_PATH
693         bool "paranoid check of library/header paths"
694         default y
695         help
696           By default, when this option is disabled, when the Buildroot
697           cross-compiler will encounter an unsafe library or header path
698           (such as /usr/include, or /usr/lib), the compiler will display
699           a warning.
701           By enabling this option, this warning is turned into an error,
702           which will completely abort the build when such unsafe paths
703           are encountered.
705           Note that this mechanism is available for both the internal
706           toolchain (through the toolchain wrapper and binutils patches)
707           and external toolchain backends (through the toolchain wrapper).
709 config BR2_REPRODUCIBLE
710         bool "Make the build reproducible (experimental)"
711         help
712           This option will remove all sources of non-reproducibility
713           from the build process. For a given Buildroot configuration,
714           this allows to generate exactly identical binaries from one
715           build to the other, including on different machines.
717           The current implementation is restricted to builds with the
718           same output directory. Many (absolute) paths are recorded in
719           intermediary files, and it is very likely that some of these
720           paths leak into the target rootfs. If you build with the
721           same O=... path, however, the result is identical.
723           This is labeled as an experimental feature, as not all
724           packages behave properly to ensure reproducibility.
726 endmenu
728 endmenu
730 source "toolchain/Config.in"
732 source "system/Config.in"
734 source "linux/Config.in"
736 source "package/Config.in"
738 source "fs/Config.in"
740 source "boot/Config.in"
742 source "package/Config.in.host"
744 source "Config.in.legacy"
746 source "$BR2_BUILD_DIR/.br2-external.in"