# Copyright (C) 2006-2013 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#

menuconfig TARGET_OPTIONS
	bool "Target Options"  if DEVEL

	config TARGET_OPTIMIZATION
		string "Target Optimizations" if TARGET_OPTIONS
		default DEFAULT_TARGET_OPTIMIZATION
		help
		  Optimizations to use when building for the target host.

	config SOFT_FLOAT
		bool "Use software floating point by default" if TARGET_OPTIONS
		default y if !HAS_FPU
		depends on arm || armeb || powerpc || mipsel || mips || mips64el || mips64
		help
		  If your target CPU does not have a Floating Point Unit (FPU) or a
		  kernel FPU emulator, but you still wish to support floating point
		  functions, then everything will need to be compiled with soft floating
		  point support (-msoft-float).

		  Most people will answer N.

	config USE_MIPS16
		bool "Build packages with MIPS16 instructions" if TARGET_OPTIONS
		depends on HAS_MIPS16
		depends on !GCC_VERSION_4_6
		default y
		help
		  If your target CPU does support the MIPS16 instruction set
		  and you want to use it for packages, enable this option.
		  MIPS16 produces smaller binaries thus reducing pressure on
		  caches and TLB.

		  Most people will answer N.


menuconfig EXTERNAL_TOOLCHAIN
	bool
	prompt "Use external toolchain"  if DEVEL
	help
	  If enabled, OpenWrt will compile using an existing toolchain instead of
	  compiling one.

	config NATIVE_TOOLCHAIN
		bool
		prompt "Use host's toolchain"  if DEVEL
		depends on EXTERNAL_TOOLCHAIN
		select NO_STRIP
		help
		  If enabled, OpenWrt will compile using the native toolchain for your
		  host instead of compiling one.

	config TARGET_NAME
		string
		prompt "Target name"  if DEVEL
		depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
		default "arm-unknown-linux-gnu"      if arm
		default "armeb-unknown-linux-gnu"    if armeb
		default "i486-unknown-linux-gnu"     if i386
		default "mips-unknown-linux-gnu"     if mips
		default "mipsel-unknown-linux-gnu"   if mipsel
		default "powerpc-unknown-linux-gnu"  if powerpc
		default "x86_64-unknown-linux-gnu"   if x86_64

	config TOOLCHAIN_PREFIX
		string
		prompt "Toolchain prefix"  if DEVEL
		depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
		default "arm-unknown-linux-gnu-"      if arm
		default "armeb-unknown-linux-gnu-"    if armeb
		default "i486-unknown-linux-gnu-"     if i386
		default "mips-unknown-linux-gnu-"     if mips
		default "mipsel-unknown-linux-gnu-"   if mipsel
		default "powerpc-unknown-linux-gnu-"  if powerpc
		default "x86_64-unknown-linux-gnu-"   if x86_64

	config TOOLCHAIN_ROOT
		string
		prompt "Toolchain root"  if DEVEL
		depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
		default "/opt/cross/arm-unknown-linux-gnu"      if arm
		default "/opt/cross/armeb-unknown-linux-gnu"    if armeb
		default "/opt/cross/i486-unknown-linux-gnu"     if i386
		default "/opt/cross/mips-unknown-linux-gnu"     if mips
		default "/opt/cross/mipsel-unknown-linux-gnu"   if mipsel
		default "/opt/cross/powerpc-unknown-linux-gnu"  if powerpc
		default "/opt/cross/x86_64-unknown-linux-gnu"   if x86_64

	config TOOLCHAIN_LIBC
		string
		prompt "Toolchain libc"  if DEVEL
		depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
		default "uclibc"
		help
		  Specify the libc type used by the external toolchain. The given value
		  is passed as -m flag to all gcc and g++ invocations. This is mainly
		  intended for multilib toolchains which support glibc and uclibc at
		  the same time. If no value is specified, no -m flag is passed.

	config TOOLCHAIN_BIN_PATH
		string
		prompt "Toolchain program path"  if DEVEL
		depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
		default "./usr/bin ./bin"
		help
		  Specify additional directories searched for toolchain binaries
		  (override PATH). Use ./DIR for directories relative to the root above.

	config TOOLCHAIN_INC_PATH
		string
		prompt "Toolchain include path"  if DEVEL
		depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
		default "./usr/include ./include"
		help
		  Specify additional directories searched for header files (override
		  CPPFLAGS). Use ./DIR for directories relative to the root above.

	config TOOLCHAIN_LIB_PATH
		string
		prompt "Toolchain library path"  if DEVEL
		depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
		default "./usr/lib ./lib"
		help
		  Specify additional directories searched for libraries (override LDFLAGS).
		  Use ./DIR for directories relative to the root above.

config NEED_TOOLCHAIN
	bool
	depends on DEVEL
	default y if !EXTERNAL_TOOLCHAIN

menuconfig TOOLCHAINOPTS
	bool "Toolchain Options"  if DEVEL
	depends on NEED_TOOLCHAIN

menuconfig EXTRA_TARGET_ARCH
	bool
	prompt "Enable an extra toolchain target architecture" if TOOLCHAINOPTS
	depends on !sparc
	default y	if powerpc64
	default n
	help
	  Some builds may require a 'biarch' toolchain. This option
	  allows you to specify an additional target arch.

	  Most people will answer N here.

	config EXTRA_TARGET_ARCH_NAME
		string
		default "powerpc64"	if powerpc64
		prompt "Extra architecture name" if EXTRA_TARGET_ARCH
		help
		  Specify the cpu name (eg powerpc64 or x86_64) of the
		  additional target architecture.

	config EXTRA_TARGET_ARCH_OPTS
		string
		default "-m64"		if powerpc64
		prompt "Extra architectur<style>pre { line-height: 125%; margin: 0; }
td.linenos pre { color: #000000; background-color: #f0f0f0; padding: 0 5px 0 5px; }
span.linenos { color: #000000; background-color: #f0f0f0; padding: 0 5px 0 5px; }
td.linenos pre.special { color: #000000; background-color: #ffffc0; padding: 0 5px 0 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding: 0 5px 0 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight { background: #ffffff; }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008800 } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #336699 } /* Name.Attribute */
.highlight .nb { color: #003388 } /* Name.Builtin */
.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555 } /* Name.Decorator */
.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
.highlight .vm { color: #336699 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */</style><div class="highlight"><pre><span></span><span class="c">#</span>
<span class="c"># Copyright (C) 2006-2011 OpenWrt.org</span>
<span class="c">#</span>
<span class="c"># This is free software, licensed under the GNU General Public License v2.</span>
<span class="c"># See /LICENSE for more information.</span>
<span class="c">#</span>
<span class="cp">include $(TOPDIR)/rules.mk</span>
<span class="cp">include $(INCLUDE_DIR)/host.mk</span>

<span class="c"># UML only makes sense on linux</span>
<span class="cp">ifeq ($(HOST_OS),Linux)</span>

<span class="nv">ARCH</span><span class="o">:=</span><span class="k">$(</span>shell uname -m <span class="p">|</span> sed <span class="se">\</span>
	-e <span class="s1">&#39;s/i[3-9]86/i386/&#39;</span> <span class="se">\</span>
	-e <span class="s1">&#39;s/mipsel/mips/&#39;</span> <span class="se">\</span>
	-e <span class="s1">&#39;s/mipseb/mips/&#39;</span> <span class="se">\</span>
	-e <span class="s1">&#39;s/powerpc/ppc/&#39;</span> <span class="se">\</span>
	-e <span class="s1">&#39;s/sh[234]/sh/&#39;</span> <span class="se">\</span>
	-e <span class="s1">&#39;s/armeb/arm/&#39;</span> <span class="se">\</span>
<span class="err">)</span>
<span class="nv">BOARD</span><span class="o">:=</span>uml
<span class="nv">BOARDNAME</span><span class="o">:=</span>User Mode Linux
<span class="nv">FEATURES</span><span class="o">:=</span>ext4 audio
<span class="nv">MAINTAINER</span><span class="o">:=</span>Florian Fainelli &lt;florian@openwrt.org&gt;

<span class="nv">KERNEL_PATCHVER</span><span class="o">:=</span><span class="m">4</span>.4

<span class="cp">include $(INCLUDE_DIR)/target.mk</span>

<span class="cp">define Kernel/Patch</span>
	mkdir -p <span class="k">$(</span>LINUX_DIR<span class="k">)</span>/arch/um/include/uapi
	mv <span class="k">$(</span>LINUX_DIR<span class="k">)</span>/arch/um/include/asm <span class="k">$(</span>LINUX_DIR<span class="k">)</span>/arch/um/include/uapi/
	<span class="k">$(</span>Kernel/Patch/Default<span class="k">)</span>
<span class="cp">endef</span>

<span class="nv">LINUX_TARGET_CONFIG</span><span class="o">:=</span><span class="k">$(</span>CURDIR<span class="k">)</span>/config/<span class="k">$(</span>ARCH<span class="k">)</span>

<span class="nv">DEFAULT_PACKAGES</span> <span class="o">+=</span> wpad-mini kmod-mac80211-hwsim

<span class="cp">endif</span>

<span class="k">$(</span><span class="nv">eval</span> <span class="k">$(</span><span class="nv">call</span> <span class="nv">BuildTarget</span><span class="k">))</span>
</pre></div>
</code></pre></td></tr></table>
</div> <!-- class=content -->
<div class='footer'>generated by <a href='https://git.zx2c4.com/cgit/about/'>cgit v1.2.3</a> (<a href='https://git-scm.com/'>git 2.25.1</a>) at 2025-03-10 21:51:12 +0000</div>
</div> <!-- id=cgit -->
</body>
</html>