| # Copyright 2019 The Fuchsia Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import("$zx_build/public/gn/config/globals.gni") |
| |
| declare_args() { |
| # Enable debug output in the ACPI library (used by the ACPI bus driver). |
| acpica_debug_output = false |
| } |
| |
| group("headers") { |
| public_configs = [ |
| ":headers.config", |
| ":disable_warnings", |
| ] |
| } |
| |
| config("headers.config") { |
| visibility = [ ":headers" ] |
| include_dirs = [ "include" ] |
| |
| # UBSan warns on a few instances of misaligned loads. Define this macro to |
| # perform byte-by-byte accesses. |
| defines = [ "ACPI_MISALIGNMENT_NOT_SUPPORTED" ] |
| } |
| |
| # Disable warnings we won't fix in third-party code. Putting this in a |
| # separate config rather than directly in the target gets these flags |
| # correctly ordered after the $zx/public/gn/config:default_warnings flags. |
| config("disable_warnings") { |
| visibility = [ ":*" ] |
| |
| cflags = [ |
| "-Wno-implicit-fallthrough", |
| "-Wno-incompatible-pointer-types-discards-qualifiers", |
| "-Wno-null-pointer-arithmetic", |
| ] |
| } |
| |
| static_library("acpica") { |
| public_deps = [ ":headers" ] |
| |
| # Local sources use #include "acpi.h", not #include <acpica/acpi.h>. |
| include_dirs = [ "source/include" ] |
| |
| configs += [ ":disable_warnings" ] |
| |
| # We need to specify -fno-strict-aliasing, since ACPICA has a habit of |
| # violating strict aliasing rules in some of its macros. Rewriting this |
| # code would increase the maintenance cost of bringing in the latest |
| # upstream ACPICA, so instead we mitigate the problem with a compile-time |
| # flag. We take the more conservative approach of disabling |
| # strict-aliasing-based optimizations, rather than disabling warnings. |
| cflags = [ "-fno-strict-aliasing" ] |
| |
| sources = [ |
| "$zx/system/ulib/acpica/osfuchsia.cc", |
| "source/common/ahids.c", |
| "source/common/ahpredef.c", |
| "source/common/ahtable.c", |
| "source/common/dmtbdump.c", |
| "source/common/dmtbdump1.c", |
| "source/common/dmtbdump2.c", |
| "source/common/dmtbdump3.c", |
| "source/common/dmtbinfo.c", |
| "source/common/dmtbinfo1.c", |
| "source/common/dmtbinfo2.c", |
| "source/common/dmtbinfo3.c", |
| "source/components/dispatcher/dsargs.c", |
| "source/components/dispatcher/dscontrol.c", |
| "source/components/dispatcher/dsdebug.c", |
| "source/components/dispatcher/dsfield.c", |
| "source/components/dispatcher/dsinit.c", |
| "source/components/dispatcher/dsmethod.c", |
| "source/components/dispatcher/dsmthdat.c", |
| "source/components/dispatcher/dsobject.c", |
| "source/components/dispatcher/dsopcode.c", |
| "source/components/dispatcher/dspkginit.c", |
| "source/components/dispatcher/dsutils.c", |
| "source/components/dispatcher/dswexec.c", |
| "source/components/dispatcher/dswload.c", |
| "source/components/dispatcher/dswload2.c", |
| "source/components/dispatcher/dswscope.c", |
| "source/components/dispatcher/dswstate.c", |
| "source/components/events/evevent.c", |
| "source/components/events/evglock.c", |
| "source/components/events/evgpe.c", |
| "source/components/events/evgpeblk.c", |
| "source/components/events/evgpeinit.c", |
| "source/components/events/evgpeutil.c", |
| "source/components/events/evhandler.c", |
| "source/components/events/evmisc.c", |
| "source/components/events/evregion.c", |
| "source/components/events/evrgnini.c", |
| "source/components/events/evsci.c", |
| "source/components/events/evxface.c", |
| "source/components/events/evxfevnt.c", |
| "source/components/events/evxfgpe.c", |
| "source/components/events/evxfregn.c", |
| "source/components/executer/exconcat.c", |
| "source/components/executer/exconfig.c", |
| "source/components/executer/exconvrt.c", |
| "source/components/executer/excreate.c", |
| "source/components/executer/exdebug.c", |
| "source/components/executer/exdump.c", |
| "source/components/executer/exfield.c", |
| "source/components/executer/exfldio.c", |
| "source/components/executer/exmisc.c", |
| "source/components/executer/exmutex.c", |
| "source/components/executer/exnames.c", |
| "source/components/executer/exoparg1.c", |
| "source/components/executer/exoparg2.c", |
| "source/components/executer/exoparg3.c", |
| "source/components/executer/exoparg6.c", |
| "source/components/executer/exprep.c", |
| "source/components/executer/exregion.c", |
| "source/components/executer/exresnte.c", |
| "source/components/executer/exresolv.c", |
| "source/components/executer/exresop.c", |
| "source/components/executer/exserial.c", |
| "source/components/executer/exstore.c", |
| "source/components/executer/exstoren.c", |
| "source/components/executer/exstorob.c", |
| "source/components/executer/exsystem.c", |
| "source/components/executer/extrace.c", |
| "source/components/executer/exutils.c", |
| "source/components/hardware/hwacpi.c", |
| "source/components/hardware/hwesleep.c", |
| "source/components/hardware/hwgpe.c", |
| "source/components/hardware/hwpci.c", |
| "source/components/hardware/hwregs.c", |
| "source/components/hardware/hwsleep.c", |
| "source/components/hardware/hwtimer.c", |
| "source/components/hardware/hwvalid.c", |
| "source/components/hardware/hwxface.c", |
| "source/components/hardware/hwxfsleep.c", |
| "source/components/namespace/nsaccess.c", |
| "source/components/namespace/nsalloc.c", |
| "source/components/namespace/nsarguments.c", |
| "source/components/namespace/nsconvert.c", |
| "source/components/namespace/nsdump.c", |
| "source/components/namespace/nsdumpdv.c", |
| "source/components/namespace/nseval.c", |
| "source/components/namespace/nsinit.c", |
| "source/components/namespace/nsload.c", |
| "source/components/namespace/nsnames.c", |
| "source/components/namespace/nsobject.c", |
| "source/components/namespace/nsparse.c", |
| "source/components/namespace/nspredef.c", |
| "source/components/namespace/nsprepkg.c", |
| "source/components/namespace/nsrepair.c", |
| "source/components/namespace/nsrepair2.c", |
| "source/components/namespace/nssearch.c", |
| "source/components/namespace/nsutils.c", |
| "source/components/namespace/nswalk.c", |
| "source/components/namespace/nsxfeval.c", |
| "source/components/namespace/nsxfname.c", |
| "source/components/namespace/nsxfobj.c", |
| "source/components/parser/psargs.c", |
| "source/components/parser/psloop.c", |
| "source/components/parser/psobject.c", |
| "source/components/parser/psopcode.c", |
| "source/components/parser/psopinfo.c", |
| "source/components/parser/psparse.c", |
| "source/components/parser/psscope.c", |
| "source/components/parser/pstree.c", |
| "source/components/parser/psutils.c", |
| "source/components/parser/pswalk.c", |
| "source/components/parser/psxface.c", |
| "source/components/resources/rsaddr.c", |
| "source/components/resources/rscalc.c", |
| "source/components/resources/rscreate.c", |
| "source/components/resources/rsdumpinfo.c", |
| "source/components/resources/rsinfo.c", |
| "source/components/resources/rsio.c", |
| "source/components/resources/rsirq.c", |
| "source/components/resources/rslist.c", |
| "source/components/resources/rsmemory.c", |
| "source/components/resources/rsmisc.c", |
| "source/components/resources/rsserial.c", |
| "source/components/resources/rsutils.c", |
| "source/components/resources/rsxface.c", |
| "source/components/tables/tbdata.c", |
| "source/components/tables/tbfadt.c", |
| "source/components/tables/tbfind.c", |
| "source/components/tables/tbinstal.c", |
| "source/components/tables/tbprint.c", |
| "source/components/tables/tbutils.c", |
| "source/components/tables/tbxface.c", |
| "source/components/tables/tbxfload.c", |
| "source/components/tables/tbxfroot.c", |
| "source/components/utilities/utaddress.c", |
| "source/components/utilities/utalloc.c", |
| "source/components/utilities/utascii.c", |
| "source/components/utilities/utbuffer.c", |
| "source/components/utilities/utcache.c", |
| "source/components/utilities/utclib.c", |
| "source/components/utilities/utcopy.c", |
| "source/components/utilities/utdebug.c", |
| "source/components/utilities/utdecode.c", |
| "source/components/utilities/utdelete.c", |
| "source/components/utilities/uterror.c", |
| "source/components/utilities/uteval.c", |
| "source/components/utilities/utexcep.c", |
| "source/components/utilities/utglobal.c", |
| "source/components/utilities/uthex.c", |
| "source/components/utilities/utids.c", |
| "source/components/utilities/utinit.c", |
| "source/components/utilities/utlock.c", |
| "source/components/utilities/utmath.c", |
| "source/components/utilities/utmisc.c", |
| "source/components/utilities/utmutex.c", |
| "source/components/utilities/utnonansi.c", |
| "source/components/utilities/utobject.c", |
| "source/components/utilities/utosi.c", |
| "source/components/utilities/utownerid.c", |
| "source/components/utilities/utpredef.c", |
| "source/components/utilities/utresdecode.c", |
| "source/components/utilities/utresrc.c", |
| "source/components/utilities/utstate.c", |
| "source/components/utilities/utstring.c", |
| "source/components/utilities/utstrsuppt.c", |
| "source/components/utilities/utstrtoul64.c", |
| "source/components/utilities/uttrack.c", |
| "source/components/utilities/utuuid.c", |
| "source/components/utilities/utxface.c", |
| "source/components/utilities/utxferror.c", |
| "source/components/utilities/utxfinit.c", |
| "source/components/utilities/utxfmutex.c", |
| ] |
| deps = [ |
| "//zircon/public/lib/ddk", |
| "//zircon/public/lib/fbl", |
| "//zircon/public/lib/pci", |
| "//zircon/public/lib/zircon-internal", |
| ] |
| defines = [ "_ALL_SOURCE" ] |
| if (acpica_debug_output) { |
| defines += [ "ACPI_DEBUG_OUTPUT" ] |
| } |
| |
| # TODO(41663): UBSan has found an instance of undefined behavior in this target. |
| # Disable UBSan for this target temporarily until it is migrated into CI/CQ. |
| if (!is_gcc) { |
| cflags += [ "-fno-sanitize=undefined" ] |
| } |
| } |