blob: 3adf3442504aa5a919c7cb3277506f3a298666eb [file] [log] [blame]
# Copyright 2016 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.
LOCAL_DIR := $(GET_LOCAL_DIR)
MODULE := $(LOCAL_DIR)
MODULE_TYPE := userlib
SRC_DIR := third_party/lib/acpica/source
ifeq ($(call TOBOOL, $(ENABLE_USER_PCI)), true)
MODULE_DEFINES += ENABLE_USER_PCI=1
endif
# We currently only support ACPICA on x86, so compile to an empty
# lib if we're on non-x86.
ifeq ($(ARCH),x86)
MODULE_SRCS += \
$(SRC_DIR)/components/hardware/hwacpi.c \
$(SRC_DIR)/components/hardware/hwxfsleep.c \
$(SRC_DIR)/components/hardware/hwgpe.c \
$(SRC_DIR)/components/hardware/hwxface.c \
$(SRC_DIR)/components/hardware/hwregs.c \
$(SRC_DIR)/components/hardware/hwpci.c \
$(SRC_DIR)/components/hardware/hwvalid.c \
$(SRC_DIR)/components/hardware/hwtimer.c \
$(SRC_DIR)/components/hardware/hwesleep.c \
$(SRC_DIR)/components/hardware/hwsleep.c \
$(SRC_DIR)/components/executer/exstore.c \
$(SRC_DIR)/components/executer/exoparg3.c \
$(SRC_DIR)/components/executer/exutils.c \
$(SRC_DIR)/components/executer/exfield.c \
$(SRC_DIR)/components/executer/exnames.c \
$(SRC_DIR)/components/executer/exstoren.c \
$(SRC_DIR)/components/executer/exstorob.c \
$(SRC_DIR)/components/executer/exresop.c \
$(SRC_DIR)/components/executer/exfldio.c \
$(SRC_DIR)/components/executer/exmutex.c \
$(SRC_DIR)/components/executer/exdump.c \
$(SRC_DIR)/components/executer/exoparg2.c \
$(SRC_DIR)/components/executer/exsystem.c \
$(SRC_DIR)/components/executer/exmisc.c \
$(SRC_DIR)/components/executer/exoparg6.c \
$(SRC_DIR)/components/executer/excreate.c \
$(SRC_DIR)/components/executer/exresnte.c \
$(SRC_DIR)/components/executer/exconfig.c \
$(SRC_DIR)/components/executer/exresolv.c \
$(SRC_DIR)/components/executer/exregion.c \
$(SRC_DIR)/components/executer/exconvrt.c \
$(SRC_DIR)/components/executer/exprep.c \
$(SRC_DIR)/components/executer/exdebug.c \
$(SRC_DIR)/components/executer/extrace.c \
$(SRC_DIR)/components/executer/exoparg1.c \
$(SRC_DIR)/components/namespace/nsnames.c \
$(SRC_DIR)/components/namespace/nspredef.c \
$(SRC_DIR)/components/namespace/nsaccess.c \
$(SRC_DIR)/components/namespace/nsrepair2.c \
$(SRC_DIR)/components/namespace/nsprepkg.c \
$(SRC_DIR)/components/namespace/nswalk.c \
$(SRC_DIR)/components/namespace/nsxfeval.c \
$(SRC_DIR)/components/namespace/nsconvert.c \
$(SRC_DIR)/components/namespace/nsdumpdv.c \
$(SRC_DIR)/components/namespace/nsparse.c \
$(SRC_DIR)/components/namespace/nsxfname.c \
$(SRC_DIR)/components/namespace/nsdump.c \
$(SRC_DIR)/components/namespace/nsarguments.c \
$(SRC_DIR)/components/namespace/nssearch.c \
$(SRC_DIR)/components/namespace/nsalloc.c \
$(SRC_DIR)/components/namespace/nsutils.c \
$(SRC_DIR)/components/namespace/nsinit.c \
$(SRC_DIR)/components/namespace/nsobject.c \
$(SRC_DIR)/components/namespace/nsload.c \
$(SRC_DIR)/components/namespace/nseval.c \
$(SRC_DIR)/components/namespace/nsrepair.c \
$(SRC_DIR)/components/namespace/nsxfobj.c \
$(SRC_DIR)/components/resources/rsaddr.c \
$(SRC_DIR)/components/resources/rscalc.c \
$(SRC_DIR)/components/resources/rsserial.c \
$(SRC_DIR)/components/resources/rscreate.c \
$(SRC_DIR)/components/resources/rsutils.c \
$(SRC_DIR)/components/resources/rslist.c \
$(SRC_DIR)/components/resources/rsmemory.c \
$(SRC_DIR)/components/resources/rsinfo.c \
$(SRC_DIR)/components/resources/rsxface.c \
$(SRC_DIR)/components/resources/rsmisc.c \
$(SRC_DIR)/components/resources/rsio.c \
$(SRC_DIR)/components/resources/rsdumpinfo.c \
$(SRC_DIR)/components/resources/rsirq.c \
$(SRC_DIR)/components/tables/tbinstal.c \
$(SRC_DIR)/components/tables/tbprint.c \
$(SRC_DIR)/components/tables/tbfadt.c \
$(SRC_DIR)/components/tables/tbxfroot.c \
$(SRC_DIR)/components/tables/tbfind.c \
$(SRC_DIR)/components/tables/tbxface.c \
$(SRC_DIR)/components/tables/tbxfload.c \
$(SRC_DIR)/components/tables/tbdata.c \
$(SRC_DIR)/components/tables/tbutils.c \
$(SRC_DIR)/components/parser/psloop.c \
$(SRC_DIR)/components/parser/psutils.c \
$(SRC_DIR)/components/parser/pstree.c \
$(SRC_DIR)/components/parser/pswalk.c \
$(SRC_DIR)/components/parser/psargs.c \
$(SRC_DIR)/components/parser/psopinfo.c \
$(SRC_DIR)/components/parser/psxface.c \
$(SRC_DIR)/components/parser/psscope.c \
$(SRC_DIR)/components/parser/psobject.c \
$(SRC_DIR)/components/parser/psparse.c \
$(SRC_DIR)/components/parser/psopcode.c \
$(SRC_DIR)/components/dispatcher/dsdebug.c \
$(SRC_DIR)/components/dispatcher/dsobject.c \
$(SRC_DIR)/components/dispatcher/dswexec.c \
$(SRC_DIR)/components/dispatcher/dswscope.c \
$(SRC_DIR)/components/dispatcher/dsinit.c \
$(SRC_DIR)/components/dispatcher/dsutils.c \
$(SRC_DIR)/components/dispatcher/dswstate.c \
$(SRC_DIR)/components/dispatcher/dswload2.c \
$(SRC_DIR)/components/dispatcher/dsfield.c \
$(SRC_DIR)/components/dispatcher/dsmthdat.c \
$(SRC_DIR)/components/dispatcher/dscontrol.c \
$(SRC_DIR)/components/dispatcher/dswload.c \
$(SRC_DIR)/components/dispatcher/dsopcode.c \
$(SRC_DIR)/components/dispatcher/dsargs.c \
$(SRC_DIR)/components/dispatcher/dsmethod.c \
$(SRC_DIR)/components/events/evxfevnt.c \
$(SRC_DIR)/components/events/evgpeblk.c \
$(SRC_DIR)/components/events/evgpe.c \
$(SRC_DIR)/components/events/evxfgpe.c \
$(SRC_DIR)/components/events/evrgnini.c \
$(SRC_DIR)/components/events/evgpeutil.c \
$(SRC_DIR)/components/events/evglock.c \
$(SRC_DIR)/components/events/evregion.c \
$(SRC_DIR)/components/events/evxfregn.c \
$(SRC_DIR)/components/events/evevent.c \
$(SRC_DIR)/components/events/evsci.c \
$(SRC_DIR)/components/events/evgpeinit.c \
$(SRC_DIR)/components/events/evhandler.c \
$(SRC_DIR)/components/events/evmisc.c \
$(SRC_DIR)/components/events/evxface.c \
$(SRC_DIR)/components/utilities/utxferror.c \
$(SRC_DIR)/components/utilities/utxfmutex.c \
$(SRC_DIR)/components/utilities/utmisc.c \
$(SRC_DIR)/components/utilities/utmutex.c \
$(SRC_DIR)/components/utilities/utbuffer.c \
$(SRC_DIR)/components/utilities/utobject.c \
$(SRC_DIR)/components/utilities/uterror.c \
$(SRC_DIR)/components/utilities/utstring.c \
$(SRC_DIR)/components/utilities/utmath.c \
$(SRC_DIR)/components/utilities/utpredef.c \
$(SRC_DIR)/components/utilities/utprint.c \
$(SRC_DIR)/components/utilities/utdecode.c \
$(SRC_DIR)/components/utilities/utosi.c \
$(SRC_DIR)/components/utilities/utdebug.c \
$(SRC_DIR)/components/utilities/utaddress.c \
$(SRC_DIR)/components/utilities/utuuid.c \
$(SRC_DIR)/components/utilities/utcache.c \
$(SRC_DIR)/components/utilities/utexcep.c \
$(SRC_DIR)/components/utilities/uttrack.c \
$(SRC_DIR)/components/utilities/uthex.c \
$(SRC_DIR)/components/utilities/uteval.c \
$(SRC_DIR)/components/utilities/utxface.c \
$(SRC_DIR)/components/utilities/utownerid.c \
$(SRC_DIR)/components/utilities/utstate.c \
$(SRC_DIR)/components/utilities/utlock.c \
$(SRC_DIR)/components/utilities/utnonansi.c \
$(SRC_DIR)/components/utilities/utdelete.c \
$(SRC_DIR)/components/utilities/utresrc.c \
$(SRC_DIR)/components/utilities/utcopy.c \
$(SRC_DIR)/components/utilities/utalloc.c \
$(SRC_DIR)/components/utilities/utxfinit.c \
$(SRC_DIR)/components/utilities/utglobal.c \
$(SRC_DIR)/components/utilities/utinit.c \
$(SRC_DIR)/components/utilities/utclib.c \
$(SRC_DIR)/components/utilities/utids.c \
$(SRC_DIR)/common/getopt.c \
$(SRC_DIR)/common/ahpredef.c \
$(SRC_DIR)/common/ahids.c \
$(SRC_DIR)/common/ahtable.c \
$(SRC_DIR)/os_specific/service_layers/osfuchsia.cpp
else
MODULE_SRCS += $(LOCAL_DIR)/empty.c
endif
# Disable warnings we won't fix in third-party code.
MODULE_CFLAGS += -Wno-implicit-fallthrough
ifeq ($(call TOBOOL,$(USE_CLANG)),false)
MODULE_CFLAGS += \
-Wno-discarded-qualifiers \
-Wno-format-signedness
else
MODULE_CFLAGS += \
-Wno-incompatible-pointer-types-discards-qualifiers \
-Wno-null-pointer-arithmetic
endif
# 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.
MODULE_CFLAGS += -fno-strict-aliasing
MODULE_COMPILEFLAGS += -I$(SRC_DIR)/include/acpica
ifeq ($(call TOBOOL,$(ENABLE_ACPI_DEBUG)),true)
MODULE_COMPILEFLAGS += -DACPI_DEBUG_OUTPUT
endif
MODULE_STATIC_LIBS := \
system/ulib/ddk \
system/ulib/fbl \
system/ulib/zxcpp \
MODULE_LIBS := \
system/ulib/c \
system/ulib/pci \
include make/module.mk