blob: 31378215f4b7e162446ff25c81b79d2da8f2f862 [file] [log] [blame]
#
# Makefile.config
#
# Common configuration and setup file to generate the ACPICA tools and
# utilities: the iASL compiler, acpiexec, acpihelp, acpinames, acpisrc,
# acpixtract, acpibin.
#
# 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/unix. It specifically
# places all object files in a generate/unix 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
#
# OPT_CFLAGS can be overridden on the make command line by
# adding OPT_CFLAGS="..." to the invocation.
#
# Notes:
# gcc should be version 4 or greater, otherwise some of the options
# used will not be recognized.
# Optional: Set HOST to an appropriate value (_LINUX, _FreeBSD, _APPLE, _CYGWIN, etc.)
# See include/platform/acenv.h for supported values.
# Note: HOST is not nearly as important for applications as it
# is for the kernel-resident version of ACPICA, and it may
# not be necessary to change it.
#
.SUFFIXES :
PROGS = acpibin acpidump acpiexamples acpiexec acpihelp acpinames acpisrc acpixtract iasl
HOST ?= _CYGWIN
CC = gcc
#
# Common defines
#
OBJDIR = obj
BINDIR = bin
COMPILEOBJ = $(CC) -c $(CFLAGS) $(OPT_CFLAGS) -o $@ $<
LINKPROG = $(CC) $(OBJECTS) -o $(PROG) $(LDFLAGS)
PREFIX ?= /usr
INSTALLDIR = $(PREFIX)/bin
UNAME_S := $(shell uname -s)
#
# Host detection and configuration
#
ifeq ($(UNAME_S), Darwin) # Mac OS X
HOST = _APPLE
endif
ifeq ($(UNAME_S), DragonFly)
HOST = _DragonFly
endif
ifeq ($(UNAME_S), FreeBSD)
HOST = _FreeBSD
endif
ifeq ($(UNAME_S), NetBSD)
HOST = _NetBSD
endif
ifeq ($(HOST), _APPLE)
INSTALL = cp
INSTALLFLAGS ?= -f
else
INSTALL = install
INSTALLFLAGS ?= -m 555 -s
endif
INSTALLPROG = \
mkdir -p $(DESTDIR)$(INSTALLDIR); \
$(INSTALL) $(INSTALLFLAGS) ../$(BINDIR)/$(PROG) $(DESTDIR)$(INSTALLDIR)/$(PROG)
#
# Rename a .exe file if necessary
#
RENAMEPROG = \
@if [ -e "$(PROG).exe" ] ; then \
mv $(PROG).exe $(PROG); \
echo "Renamed $(PROG).exe to $(PROG)"; \
fi;
#
# Copy the final executable to the local bin directory
#
COPYPROG = \
@mkdir -p ../$(BINDIR); \
cp -f $(PROG) ../$(BINDIR); \
echo "Copied $(PROG) to $(FINAL_PROG)";
#
# 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_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
#
ACPIBIN = $(ACPICA_TOOLS)/acpibin
ACPIDUMP = $(ACPICA_TOOLS)/acpidump
ACPIEXAMPLES = $(ACPICA_TOOLS)/examples
ACPIEXEC = $(ACPICA_TOOLS)/acpiexec
ACPIHELP = $(ACPICA_TOOLS)/acpihelp
ACPINAMES = $(ACPICA_TOOLS)/acpinames
ACPISRC = $(ACPICA_TOOLS)/acpisrc
ACPIXTRACT = $(ACPICA_TOOLS)/acpixtract
ASL_COMPILER = $(ACPICA_SRC)/compiler
#
# Common ACPICA header files
#
ACPICA_HEADERS = \
$(wildcard $(ACPICA_INCLUDE)/*.h) \
$(wildcard $(ACPICA_INCLUDE)/platform/*.h)
#
# 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
CFLAGS += \
-D$(HOST)\
-D_GNU_SOURCE\
-I$(ACPICA_INCLUDE)
#
# Common compiler warning flags. The warning flags in addition
# to -Wall are not automatically included in -Wall.
#
CWARNINGFLAGS = \
-std=c99\
-Wall\
-Wbad-function-cast\
-Wdeclaration-after-statement\
-Werror\
-Wformat=2\
-Wmissing-declarations\
-Wmissing-prototypes\
-Wstrict-aliasing=0\
-Wstrict-prototypes\
-Wswitch-default\
-Wpointer-arith\
-Wundef
#
# Common gcc 4+ warning flags
#
CWARNINGFLAGS += \
-Waddress\
-Waggregate-return\
-Winit-self\
-Winline\
-Wmissing-declarations\
-Wmissing-field-initializers\
-Wnested-externs\
-Wold-style-definition\
-Wno-format-nonliteral\
-Wredundant-decls
#
# Per-host flags and exclusions
#
ifneq ($(HOST), _FreeBSD)
CWARNINGFLAGS += \
-Wempty-body
ifneq ($(HOST), _APPLE)
CWARNINGFLAGS += \
-Woverride-init\
-Wlogical-op\
-Wmissing-parameter-type\
-Wold-style-declaration\
-Wtype-limits
endif
endif
#
# Extra warning flags (for possible future use)
#
#CWARNINGFLAGS += \
# -Wcast-qual\
# -Wconversion\
# -Wshadow\
#
# M4 macro processor is used to build the final parser file
#
# 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
#
# Berkeley yacc configuration
#
#YACC= byacc
#YFLAGS +=
#
YACC= bison
YFLAGS += -y
MACROPROC= m4
MFLAGS= -P -I$(ASL_COMPILER)
LEX= flex
LFLAGS += -i -s