diff options
Diffstat (limited to 'third_party/yasm/BUILD.gn')
-rw-r--r-- | third_party/yasm/BUILD.gn | 524 |
1 files changed, 0 insertions, 524 deletions
diff --git a/third_party/yasm/BUILD.gn b/third_party/yasm/BUILD.gn deleted file mode 100644 index c6543a530..000000000 --- a/third_party/yasm/BUILD.gn +++ /dev/null @@ -1,524 +0,0 @@ -# Copyright 2014 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -# The yasm build process creates a slew of small C subprograms that -# dynamically generate files at various point in the build process. This makes -# the build integration moderately complex. -# -# There are three classes of dynamically generated files: -# 1) C source files that should be included in the build (eg., lc3bid.c) -# 2) C source files that are #included by static C sources (eg., license.c) -# 3) Intermediate files that are used as input by other subprograms to -# further generate files in category #1 or #2. (eg., version.mac) -# -# This structure is represented with the following targets: -# 1) yasm -- Sources, flags for the main yasm executable. Also has most of -# of the actions and rules that invoke the subprograms. -# 2) yasm_config -- General build configuration including setting a -# inputs listing the checked in version of files -# generated by manually running configure. These manually -# generated files are used by all binaries. -# 3) yasm_utils -- Object files with memory management and hashing utilities -# shared between yasm and the genperf subprogram. -# 4) genmacro, genmodule, etc. -- One executable target for each subprogram. -# 5) generate_license, generate_module, etc. -- Actions that invoke programs -# built in #4 to generate .c files. -# 6) compile_gperf, compile_re2c, etc. -- Actions that invoke programs that -# turn intermediate files into .c files. - -import("//build/config/compiler/compiler.gni") - -configs_to_delete = [] -configs_to_add = [] -if (is_debug) { - configs_to_delete += [ - # Build with full optimizations even on debug configurations, because some - # yasm build steps (highbd_sad4d_sse2.asm) can take ~33 seconds or more in - # debug component builds on Windows. Enabling compiler optimizations saves - # ~5 seconds. - "//build/config/compiler:default_optimization", - - # Don't define _DEBUG. Modest savings, but good for consistency. - "//build/config:debug", - - # Don't enable sanitizers for build tools. They slow down the overall build. - "//build/config/sanitizers:default_sanitizer_flags", - ] - - configs_to_add += [ - "//build/config:release", - "//build/config/compiler:optimize_max", - ] - if (is_win) { - # This switches to using the release CRT. On debug component builds of - # highbd_sad4d_sse2.asm on Windows this saves about 15 s. - configs_to_delete += [ "//build/config/win:default_crt" ] - configs_to_add += [ "//build/config/win:release_crt" ] - - # Without no_default_deps, an implicit dependency on libc++ is added. - # libc++ may have been built referencing the debug CRT, but since we're - # explicitly using the release CRT, this would result in undefined symbol - # errors when linking, so we need to remove the implicit libc++ dependency. - no_default_deps = true - } -} - -if (current_toolchain == host_toolchain) { - # Various files referenced by multiple targets. yasm_gen_include_dir was moved - # from $target_gen_dir/include to avoid conflicts with x86insn_gas.c and - # x86insn_nasm.c. These files were previously generated during the build but - # are now shipped pre-generated by yasm. - yasm_gen_include_dir = "$target_gen_dir/gen_include" - config_makefile = "source/config/Makefile" - version_file = "version.mac" - - import("//build/compiled_action.gni") - - config("yasm_config") { - configs = [ "//build/config/sanitizers:cfi_icall_generalize_pointers" ] - include_dirs = [ - "source/config/$host_os", - "source/patched-yasm", - ] - defines = [ "HAVE_CONFIG_H" ] - if (is_posix || is_fuchsia) { - cflags = [ "-std=gnu99" ] - } - } - - executable("genmacro") { - sources = [ "source/patched-yasm/tools/genmacro/genmacro.c" ] - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ - ":yasm_config", - "//build/config/compiler:no_chromium_code", - ] - deps = [ - # Default manifest on Windows (a no-op elsewhere). - "//build/win:default_exe_manifest", - ] - } - - executable("genmodule") { - sources = [ "source/patched-yasm/libyasm/genmodule.c" ] - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ - ":yasm_config", - "//build/config/compiler:no_chromium_code", - ] - deps = [ - # Default manifest on Windows (a no-op elsewhere). - "//build/win:default_exe_manifest", - ] - } - - executable("genperf") { - sources = [ - "source/patched-yasm/tools/genperf/genperf.c", - "source/patched-yasm/tools/genperf/perfect.c", - ] - - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ - ":yasm_config", - "//build/config/compiler:no_chromium_code", - ] - - # Must be compatible with yasm_utils/yasm - configs -= configs_to_delete - configs += configs_to_add - - deps = [ - ":yasm_utils", - - # Default manifest on Windows (a no-op elsewhere). - "//build/win:default_exe_manifest", - ] - } - - # Used by both yasm and genperf binaries. - static_library("yasm_utils") { - sources = [ - "source/patched-yasm/libyasm/phash.c", - "source/patched-yasm/libyasm/xmalloc.c", - "source/patched-yasm/libyasm/xstrdup.c", - ] - - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ - ":yasm_config", - "//build/config/compiler:no_chromium_code", - ] - - # Must be compatible with yasm - configs -= configs_to_delete - configs += configs_to_add - } - - executable("genstring") { - sources = [ "source/patched-yasm/genstring.c" ] - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ - ":yasm_config", - "//build/config/compiler:no_chromium_code", - ] - deps = [ - # Default manifest on Windows (a no-op elsewhere). - "//build/win:default_exe_manifest", - ] - } - - executable("genversion") { - sources = [ "source/patched-yasm/modules/preprocs/nasm/genversion.c" ] - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ - ":yasm_config", - "//build/config/compiler:no_chromium_code", - ] - deps = [ - # Default manifest on Windows (a no-op elsewhere). - "//build/win:default_exe_manifest", - ] - } - - config("re2c_warnings") { - # re2c is missing CLOSEVOP from one switch. - if (is_clang) { - cflags = [ - # re2c is missing CLOSEVOP from one switch. - "-Wno-switch", - - # re2c contains many static functions in headers (because it's - # a C library predating C99.) - "-Wno-unused-function", - ] - } - } - - executable("re2c") { - sources = [ - "source/patched-yasm/tools/re2c/actions.c", - "source/patched-yasm/tools/re2c/code.c", - "source/patched-yasm/tools/re2c/dfa.c", - "source/patched-yasm/tools/re2c/main.c", - "source/patched-yasm/tools/re2c/mbo_getopt.c", - "source/patched-yasm/tools/re2c/parser.c", - "source/patched-yasm/tools/re2c/scanner.c", - "source/patched-yasm/tools/re2c/substr.c", - "source/patched-yasm/tools/re2c/translate.c", - ] - - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ - ":yasm_config", - "//build/config/compiler:no_chromium_code", - - # Must be after no_chromium_code for warning flags to be ordered - # correctly. - ":re2c_warnings", - ] - deps = [ - # Default manifest on Windows (a no-op elsewhere). - "//build/win:default_exe_manifest", - ] - } - - config("yasm_warnings") { - if (is_clang) { - cflags = [ - # reg3264type in x86expr.c is unused. - "-Wno-unused-local-typedef", - ] - } else if (is_linux) { - cflags = [ - # dosexe_objfmt_output ignores the return value of ftruncate. - "-Wno-unused-result", - ] - } - } - - executable("yasm") { - sources = [ - "source/patched-yasm/frontends/yasm/yasm-options.c", - "source/patched-yasm/frontends/yasm/yasm.c", - "source/patched-yasm/libyasm/assocdat.c", - "source/patched-yasm/libyasm/bc-align.c", - "source/patched-yasm/libyasm/bc-data.c", - "source/patched-yasm/libyasm/bc-incbin.c", - "source/patched-yasm/libyasm/bc-org.c", - "source/patched-yasm/libyasm/bc-reserve.c", - "source/patched-yasm/libyasm/bitvect.c", - "source/patched-yasm/libyasm/bytecode.c", - "source/patched-yasm/libyasm/errwarn.c", - "source/patched-yasm/libyasm/expr.c", - "source/patched-yasm/libyasm/file.c", - "source/patched-yasm/libyasm/floatnum.c", - "source/patched-yasm/libyasm/hamt.c", - "source/patched-yasm/libyasm/insn.c", - "source/patched-yasm/libyasm/intnum.c", - "source/patched-yasm/libyasm/inttree.c", - "source/patched-yasm/libyasm/linemap.c", - "source/patched-yasm/libyasm/md5.c", - "source/patched-yasm/libyasm/mergesort.c", - "source/patched-yasm/libyasm/section.c", - "source/patched-yasm/libyasm/strcasecmp.c", - "source/patched-yasm/libyasm/strsep.c", - "source/patched-yasm/libyasm/symrec.c", - "source/patched-yasm/libyasm/valparam.c", - "source/patched-yasm/libyasm/value.c", - "source/patched-yasm/modules/arch/lc3b/lc3barch.c", - "source/patched-yasm/modules/arch/lc3b/lc3bbc.c", - "source/patched-yasm/modules/arch/x86/x86arch.c", - "source/patched-yasm/modules/arch/x86/x86bc.c", - "source/patched-yasm/modules/arch/x86/x86expr.c", - "source/patched-yasm/modules/arch/x86/x86id.c", - "source/patched-yasm/modules/dbgfmts/codeview/cv-dbgfmt.c", - "source/patched-yasm/modules/dbgfmts/codeview/cv-symline.c", - "source/patched-yasm/modules/dbgfmts/codeview/cv-type.c", - "source/patched-yasm/modules/dbgfmts/dwarf2/dwarf2-aranges.c", - "source/patched-yasm/modules/dbgfmts/dwarf2/dwarf2-dbgfmt.c", - "source/patched-yasm/modules/dbgfmts/dwarf2/dwarf2-info.c", - "source/patched-yasm/modules/dbgfmts/dwarf2/dwarf2-line.c", - "source/patched-yasm/modules/dbgfmts/null/null-dbgfmt.c", - "source/patched-yasm/modules/dbgfmts/stabs/stabs-dbgfmt.c", - "source/patched-yasm/modules/listfmts/nasm/nasm-listfmt.c", - "source/patched-yasm/modules/objfmts/bin/bin-objfmt.c", - "source/patched-yasm/modules/objfmts/coff/coff-objfmt.c", - "source/patched-yasm/modules/objfmts/coff/win64-except.c", - "source/patched-yasm/modules/objfmts/dbg/dbg-objfmt.c", - "source/patched-yasm/modules/objfmts/elf/elf-objfmt.c", - "source/patched-yasm/modules/objfmts/elf/elf-x86-amd64.c", - "source/patched-yasm/modules/objfmts/elf/elf-x86-x32.c", - "source/patched-yasm/modules/objfmts/elf/elf-x86-x86.c", - "source/patched-yasm/modules/objfmts/elf/elf.c", - "source/patched-yasm/modules/objfmts/macho/macho-objfmt.c", - "source/patched-yasm/modules/objfmts/rdf/rdf-objfmt.c", - "source/patched-yasm/modules/objfmts/xdf/xdf-objfmt.c", - "source/patched-yasm/modules/parsers/gas/gas-parse-intel.c", - "source/patched-yasm/modules/parsers/gas/gas-parse.c", - "source/patched-yasm/modules/parsers/gas/gas-parser.c", - "source/patched-yasm/modules/parsers/nasm/nasm-parse.c", - "source/patched-yasm/modules/parsers/nasm/nasm-parser.c", - "source/patched-yasm/modules/preprocs/cpp/cpp-preproc.c", - "source/patched-yasm/modules/preprocs/gas/gas-eval.c", - "source/patched-yasm/modules/preprocs/gas/gas-preproc.c", - "source/patched-yasm/modules/preprocs/nasm/nasm-eval.c", - "source/patched-yasm/modules/preprocs/nasm/nasm-pp.c", - "source/patched-yasm/modules/preprocs/nasm/nasm-preproc.c", - "source/patched-yasm/modules/preprocs/nasm/nasmlib.c", - "source/patched-yasm/modules/preprocs/raw/raw-preproc.c", - - # Files generated by compile_gperf - "$target_gen_dir/x86cpu.c", - "$target_gen_dir/x86regtmod.c", - - # Files generated by compile_re2c - "$target_gen_dir/gas-token.c", - "$target_gen_dir/nasm-token.c", - - # File generated by compile_re2c_lc3b - "$target_gen_dir/lc3bid.c", - - # File generated by generate_module - "$target_gen_dir/module.c", - ] - - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ - ":yasm_config", - "//build/config/compiler:no_chromium_code", - "//build/config/compiler:no_incompatible_pointer_warnings", - - # Must be after no_chromium_code for warning flags to be ordered - # correctly. - ":yasm_warnings", - ] - - # Disable WPO for yasm: crbug.com/604808 - if (is_official_build && full_wpo_on_official) { - configs -= [ "//build/config/compiler:default_optimization" ] - configs += [ "//build/config/compiler:optimize_no_wpo" ] - } else { - configs -= configs_to_delete - configs += configs_to_add - } - - # Yasm generates a bunch of .c files which its source file #include. These - # are placed in |yasm_gen_include_dir|. - include_dirs = [ yasm_gen_include_dir ] - - if (!is_win) { - cflags = [ - "-std=c89", - "-pedantic", - ] - } - - # TODO(ajwong): This should take most of the generated output as - # inputs. - deps = [ - ":compile_gperf", - ":compile_gperf_for_include", - ":compile_nasm_macros", - ":compile_nasm_version", - ":compile_re2c", - ":compile_re2c_lc3b", - ":compile_win64_gas", - ":compile_win64_nasm", - ":generate_license", - ":generate_module", - ":generate_version", - ":yasm_utils", - - # Default manifest on Windows (a no-op elsewhere). - "//build/win:default_exe_manifest", - ] - } - - compiled_action_foreach("compile_gperf") { - tool = ":genperf" - sources = [ - "source/patched-yasm/modules/arch/x86/x86cpu.gperf", - "source/patched-yasm/modules/arch/x86/x86regtmod.gperf", - ] - - outputs = [ "$target_gen_dir/{{source_name_part}}.c" ] - args = [ - "{{source}}", - rebase_path(target_gen_dir, root_build_dir) + "/{{source_name_part}}.c", - ] - } - - # This differs from |compile_gperf| in where it places it output files. - compiled_action_foreach("compile_gperf_for_include") { - tool = ":genperf" - sources = [ - # Make sure the generated gperf files in $target_gen_dir are synced with - # the outputs for the related generate_*_insn actions in the - # generate_files target below. - # - # The output for these two are #included by - # source/patched-yasm/modules/arch/x86/x86id.c - "source/patched-yasm/x86insn_gas.gperf", - "source/patched-yasm/x86insn_nasm.gperf", - ] - - outputs = [ "$yasm_gen_include_dir/{{source_name_part}}.c" ] - args = [ - "{{source}}", - rebase_path(yasm_gen_include_dir, root_build_dir) + - "/{{source_name_part}}.c", - ] - } - - template("compile_macro") { - compiled_action(target_name) { - tool = ":genmacro" - - # Output #included by source/patched-yasm/frontends/yasm/yasm.c. - inputs = invoker.sources - outputs = invoker.outputs - args = [ - rebase_path(outputs[0], root_build_dir), - invoker.macro_varname, - rebase_path(inputs[0], root_build_dir), - ] - if (defined(invoker.deps)) { - deps = invoker.deps - } - } - } - - compile_macro("compile_nasm_macros") { - # Output #included by - # source/patched-yasm/modules/preprocs/nasm/nasm-parser.c - sources = [ "source/patched-yasm/modules/parsers/nasm/nasm-std.mac" ] - outputs = [ "$yasm_gen_include_dir/nasm-macros.c" ] - macro_varname = "nasm_standard_mac" - } - - compile_macro("compile_nasm_version") { - # Output #included by - # source/patched-yasm/modules/preprocs/nasm/nasm-preproc.c - sources = [ "$target_gen_dir/$version_file" ] - outputs = [ "$yasm_gen_include_dir/nasm-version.c" ] - macro_varname = "nasm_version_mac" - deps = [ ":generate_version" ] - } - - compile_macro("compile_win64_gas") { - # Output #included by source/patched-yasm/frontends/yasm/yasm.c. - sources = [ "source/patched-yasm/modules/objfmts/coff/win64-gas.mac" ] - outputs = [ "$yasm_gen_include_dir/win64-gas.c" ] - macro_varname = "win64_gas_stdmac" - } - - compile_macro("compile_win64_nasm") { - # Output #included by source/patched-yasm/frontends/yasm/yasm.c. - sources = [ "source/patched-yasm/modules/objfmts/coff/win64-nasm.mac" ] - outputs = [ "$yasm_gen_include_dir/win64-nasm.c" ] - macro_varname = "win64_nasm_stdmac" - } - - compiled_action_foreach("compile_re2c") { - tool = ":re2c" - sources = [ - "source/patched-yasm/modules/parsers/gas/gas-token.re", - "source/patched-yasm/modules/parsers/nasm/nasm-token.re", - ] - outputs = [ "$target_gen_dir/{{source_name_part}}.c" ] - args = [ - "-b", - "-o", - rebase_path(target_gen_dir, root_build_dir) + "/{{source_name_part}}.c", - "{{source}}", - ] - } - - # This call doesn't fit into the re2c template above. - compiled_action("compile_re2c_lc3b") { - tool = ":re2c" - inputs = [ "source/patched-yasm/modules/arch/lc3b/lc3bid.re" ] - outputs = [ "$target_gen_dir/lc3bid.c" ] - args = [ - "-s", - "-o", - rebase_path(outputs[0], root_build_dir), - rebase_path(inputs[0], root_build_dir), - ] - } - - compiled_action("generate_license") { - tool = ":genstring" - - # Output #included by source/patched-yasm/frontends/yasm/yasm.c. - inputs = [ "source/patched-yasm/COPYING" ] - outputs = [ "$yasm_gen_include_dir/license.c" ] - args = [ - "license_msg", - rebase_path(outputs[0], root_build_dir), - rebase_path(inputs[0], root_build_dir), - ] - } - - compiled_action("generate_module") { - tool = ":genmodule" - inputs = [ - "source/patched-yasm/libyasm/module.in", - config_makefile, - ] - outputs = [ "$target_gen_dir/module.c" ] - args = [ - rebase_path(inputs[0], root_build_dir), - rebase_path(config_makefile, root_build_dir), - rebase_path(outputs[0], root_build_dir), - ] - } - - compiled_action("generate_version") { - tool = ":genversion" - outputs = [ "$target_gen_dir/$version_file" ] - args = [ rebase_path(outputs[0], root_build_dir) ] - } -} |