# Makefile.config # # Common configuration and setup file to generate the ACPICA tools and # utilities: the acpidump. # # This file is included by the individual makefiles for each tool. # # # Note: This makefile is intended to be used from within the native # ACPICA directory structure, from under generate/efi. It specifically # places all object files in a generate/efi subdirectory, not within # the various ACPICA source directories. This prevents collisions # between different compilations of the same source file with different # compile options, and prevents pollution of the source code. # # # Configuration # # TARGET Build target platform can be overridden on the make command # line by adding the following to the invocation: # TARGET="..." # Possible target (ia32, x86_64, etc.) can be used to initiate # a possible cross build. # OPT_CFLAGS Optimization CFLAGS can be overridden on the make command # line by adding the following to the invocation: # OPT_CFLAGS="..." # # Notes: # gcc should be version 4 or greater, otherwise some of the options # used will not be recognized. # .SUFFIXES : # # Common defines # PROGS = acpidump efihello ACPI_HOST = $(shell uname -m | sed s,i[3456789]86,ia32,) TARGET = $(shell uname -m | sed s,i[3456789]86,ia32,) OBJDIR = obj BINDIR = bin # # Main ACPICA source directories # ACPICA_SRC = ../../../source ACPICA_COMMON = $(ACPICA_SRC)/common ACPICA_TOOLS = $(ACPICA_SRC)/tools ACPICA_OSL = $(ACPICA_SRC)/os_specific/service_layers ACPICA_EFI = $(ACPICA_SRC)/os_specific/efi ACPICA_CORE = $(ACPICA_SRC)/components ACPICA_INCLUDE = $(ACPICA_SRC)/include ACPICA_DEBUGGER = $(ACPICA_CORE)/debugger ACPICA_DISASSEMBLER = $(ACPICA_CORE)/disassembler ACPICA_DISPATCHER = $(ACPICA_CORE)/dispatcher ACPICA_EVENTS = $(ACPICA_CORE)/events ACPICA_EXECUTER = $(ACPICA_CORE)/executer ACPICA_HARDWARE = $(ACPICA_CORE)/hardware ACPICA_NAMESPACE = $(ACPICA_CORE)/namespace ACPICA_PARSER = $(ACPICA_CORE)/parser ACPICA_RESOURCES = $(ACPICA_CORE)/resources ACPICA_TABLES = $(ACPICA_CORE)/tables ACPICA_UTILITIES = $(ACPICA_CORE)/utilities # # ACPICA tool and utility source directories # ACPIDUMP = $(ACPICA_TOOLS)/acpidump EFIHELLO = $(ACPICA_TOOLS)/efihello # # Common ACPICA header files # ACPICA_HEADERS = \ $(wildcard $(ACPICA_INCLUDE)/*.h) \ $(wildcard $(ACPICA_INCLUDE)/platform/*.h) # # GCC configuration # CC = gcc LD = ld OBJCOPY = objcopy CFLAGS = \ --save-temps\ -nostdinc\ -nostdlib\ -std=c99\ -U__linux__\ -U_LINUX\ -D_GNU_EFI\ -D_GNU_SOURCE\ -fno-builtin\ -iwithprefix include\ -fno-stack-protector\ -fno-strict-aliasing\ -fpic\ -fshort-wchar\ -I$(ACPICA_INCLUDE) LDFLAGS = \ -nostdinc\ -nostdlib\ -znocombreloc\ -Bsymbolic\ -shared\ -no-undefined OBJCOPYFLAGS = \ -j .text\ -j .sdata\ -j .data\ -j .dynamic\ -j .dynsym\ -j .rel\ -j .rela\ -j .reloc\ --target=efi-app-$(TARGET) # # Common compiler flags # The _GNU_SOURCE symbol is required for many hosts. # OPT_CFLAGS ?= $(CWARNINGFLAGS) # # Optionally disable optimizations. Optimization causes problems on # some compilers such as gcc 4.4 # ifneq ($(NOOPT),TRUE) OPT_CFLAGS += -O2 endif # # Optionally disable fortify source. This option can cause # compile errors in toolchains where it is already defined. # ifneq ($(NOFORTIFY),TRUE) OPT_CFLAGS += -D_FORTIFY_SOURCE=2 endif # Common compiler warning flags. The warning flags in addition # to -Wall are not automatically included in -Wall. # CWARNINGFLAGS = \ -Wall\ -Wbad-function-cast\ -Wdeclaration-after-statement\ -Wformat=2\ -Wmissing-declarations\ -Wmissing-prototypes\ -Wstrict-aliasing=0\ -Wswitch-default\ -Wpointer-arith\ -Wempty-body\ -Wlogical-op\ -Wmissing-parameter-type\ -Wold-style-declaration\ -Wtype-limits ifneq ($(NOWERROR),TRUE) CWARNINGFLAGS += -Werror endif # # Extra warning flags (for possible future use) # #CWARNINGFLAGS += \ # -Wcast-qual\ # -Wconversion\ # -Wshadow\ # -Wstrict-prototypes\ # -Wundef\ CFLAGS += $(OPT_CFLAGS) # # EFI environment definitions # EFIINC = /usr/include/efi ifeq ($(TARGET),ia32) CFLAGS += -DACPI_MACHINE_WIDTH=32 ifeq ($(ACPI_HOST),x86_64) EFILIB = /usr/lib32 CFLAGS += -m32 LDFLAGS += -melf_i386 else # ACPI_HOST eq ia32 EFILIB = /usr/lib endif else # TARGET eq x86_64 CFLAGS += \ -DEFI_FUNCTION_WRAPPER\ -DACPI_MACHINE_WIDTH=64 ifeq ($(ACPI_HOST),ia32) EFILIB = /usr/lib64 CFLAGS += -m64 LDFLAGS += -melf_x86_64 else # ACPI_HOST eq x86_64 EFILIB = /usr/lib endif endif CFLAGS += \ -I$(EFIINC)\ -I$(EFIINC)/$(TARGET)\ -I$(EFIINC)/protocol LDFLAGS += \ -T $(EFILIB)/elf_$(TARGET)_efi.lds\ -L$(EFILIB)\ $(EFILIB)/crt0-efi-$(TARGET).o LIBS = \ -lefi\ -lgnuefi\ $(shell $(CC) -print-libgcc-file-name) # # Bison/Flex configuration # # -y: act like yacc # # -i: generate case insensitive scanner # -s: suppress default rule, abort on unknown input # # Optional for Bison/yacc: # -v: verbose, produces a .output file # -d: produces the defines header file # YACC= bison YFLAGS += -y LEX= flex LFLAGS += -i -s # # Command definitions # COMPILEOBJ = $(CC) -c $(CFLAGS) -o $@ $< LINKPROG = $(LD) $(LDFLAGS) $(OBJECTS) -o $@ $(LIBS) OBJCOPYPROG = $(OBJCOPY) $(OBJCOPYFLAGS) $< $@ COPYPROG = \ @mkdir -p ../$(BINDIR); \ cp -f $< ../$(BINDIR); \ echo "Copied $< to $@";