audk/BaseTools
Ard Biesheuvel b048a2204d BaseTools/tools_def ARM CLANG35: work around -mno-movt option name change
PE/COFF only has a very limited id space for runtime relocations, and
so it defines only a single relocation for movw/movt instruction pairs,
which can be combined to load a 32-bit symbol reference into a register.
For this to work as expected, these instructions must always appear in
the same order and adjacently, and this is something few compilers take
into account, unless they target PE/COFF explicitly (and this is not the
case for our ELF based toolchains)

For Clang 3.6 and later, we can pass the -mno-movt option to suppress
movw/movt pairs entirely, which works around the issue. Unfortunately,
for Clang 3.5, the option is called differently (-mllvm -arm-use-movt=0)
and mutually incompatible between 3.5 and 3.6.

Since it is desirable for the CLANG35 toolchain to be usable on newer
versions of Clang as well (given that it is the only non-LTO alternative
to CLANG38), let's work around this issue in a way that permits versions
3.5 and newer of Clang to be used with the CLANG35 profile.

So pass the -mkernel flag instead (and add -Qunused-argument so Clang
does not complain about the -mno-unaligned-access in ARM_CC_XIPFLAGS).
This also inhibits movw/movt generation, along with some other changes
(e.g., long calls) which do affect code generation but not in an
undesirable manner.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Acked-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
Reviewed-by: Liming Gao <liming.gao@intel.com>
2018-12-13 12:46:31 +01:00
..
Bin Revert BaseTools: PYTHON3 migration 2018-10-15 08:29:14 +08:00
BinWrappers BaseTools: Remove tools only used by DuetPkg 2018-12-06 14:32:04 +08:00
Conf BaseTools/tools_def ARM CLANG35: work around -mno-movt option name change 2018-12-13 12:46:31 +01:00
Scripts BaseTools Script: Update ConvertFceToStructurePcd to report warning messages 2018-11-29 08:30:52 +08:00
Source BaseTools/GenFw ARM: don't permit R_ARM_GOT_PREL relocations 2018-12-12 08:36:59 +01:00
Tests Revert BaseTools: PYTHON3 migration 2018-10-15 08:29:14 +08:00
UserManuals BaseTools: Remove tools only used by DuetPkg 2018-12-06 14:32:04 +08:00
gcc BaseTools: Clean up source files 2018-07-09 10:25:47 +08:00
.gitignore BaseTools gitignore: Ignore VS intermediate files *.obj and *.pdb 2016-11-18 11:07:46 +08:00
BuildEnv BaseTools/BuildEnv: override "set -C" (noclobber) in sourcing shell env 2017-10-18 11:34:03 +02:00
BuildNotes.txt BaseTools: Remove the step to freeze python tool 2018-10-19 08:21:47 +08:00
GNUmakefile BaseTools: Update BaseTools top GNUMakefile with the clear dependency 2017-11-30 13:06:49 +08:00
Makefile BaseTools: Remove the step to freeze python tool 2018-10-19 08:21:47 +08:00
ReadMe.txt BaseTools: Remove the step to freeze python tool 2018-10-19 08:21:47 +08:00
building-gcc.txt Sync BaseTool trunk (version r2649) into EDKII BaseTools. 2014-01-27 05:23:15 +00:00
get_vsvars.bat BaseTools: Update VS batch file to auto detect VS2017 2017-11-29 16:03:12 +08:00
set_vsprefix_envs.bat BaseTools: Update VS batch file to auto detect VS2017 2017-11-29 16:03:12 +08:00
toolsetup.bat BaseTools: Remove tools only used by DuetPkg 2018-12-06 14:32:04 +08:00

ReadMe.txt

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This directory contains the next generation of EDK II build tools and template files.
Templates are located in the Conf directory, while the tools executables for
Microsoft Windows 32-bit Operating Systems are located in the Bin\Win32 directory, other
directory contatins tools source.

1. Build step to generate the binary tools.

=== Windows/Visual Studio Notes ===

To build the BaseTools, you should run the standard vsvars32.bat script
from your preferred Visual Studio installation or you can run get_vsvars.bat
to use latest automatically detected version.

In addition to this, you should set the following environment variables:

 * EDK_TOOLS_PATH - Path to the BaseTools sub directory under the edk2 tree
 * BASE_TOOLS_PATH - The directory where the BaseTools source is located.
   (It is the same directory where this README.txt is located.)

After this, you can run the toolsetup.bat file, which is in the same
directory as this file.  It should setup the remainder of the environment,
and build the tools if necessary.

Please also refer to the 'BuildNotes.txt' file for more information on
building under Windows.

=== Unix-like operating systems ===

To build on Unix-like operating systems, you only need to type 'make' in
the base directory of the project.

=== Ubuntu Notes ===

On Ubuntu, the following command should install all the necessary build
packages to build all the C BaseTools:

  sudo apt-get install build-essential uuid-dev

=== Python sqlite3 module ===
On Windows, the cx_freeze will not copy the sqlite3.dll to the frozen
binary directory (the same directory as build.exe and GenFds.exe).
Please copy it manually from <PythonHome>\DLLs.

The Python distributed with most recent Linux will have sqlite3 module
built in. If not, please install sqlit3 package separately.

26-OCT-2011