10d02842fSSascha Wildner# 20d02842fSSascha Wildner# Makefile.config 30d02842fSSascha Wildner# 40d02842fSSascha Wildner# Common configuration and setup file to generate the ACPICA tools and 5*d0dff17aSSascha Wildner# utilities: the iASL compiler, acpiexec, acpihelp, acpisrc, acpixtract, 6*d0dff17aSSascha Wildner# acpibin. 70d02842fSSascha Wildner# 80d02842fSSascha Wildner# This file is included by the individual makefiles for each tool. 90d02842fSSascha Wildner# 100d02842fSSascha Wildner 110d02842fSSascha Wildner# 120d02842fSSascha Wildner# Note: This makefile is intended to be used from within the native 130d02842fSSascha Wildner# ACPICA directory structure, from under generate/unix. It specifically 140d02842fSSascha Wildner# places all object files in a generate/unix subdirectory, not within 150d02842fSSascha Wildner# the various ACPICA source directories. This prevents collisions 160d02842fSSascha Wildner# between different compilations of the same source file with different 170d02842fSSascha Wildner# compile options, and prevents pollution of the source code. 180d02842fSSascha Wildner# 190d02842fSSascha Wildner 200d02842fSSascha Wildner# 210d02842fSSascha Wildner# Configuration 220d02842fSSascha Wildner# 230d02842fSSascha Wildner# OPT_CFLAGS can be overridden on the make command line by 240d02842fSSascha Wildner# adding OPT_CFLAGS="..." to the invocation. 250d02842fSSascha Wildner# 260d02842fSSascha Wildner# Notes: 270d02842fSSascha Wildner# gcc should be version 4 or greater, otherwise some of the options 280d02842fSSascha Wildner# used will not be recognized. 29ff3cb46dSSascha Wildner# Optional: Set ACPI_HOST to an appropriate value (_LINUX, _FreeBSD, _APPLE, _CYGWIN, etc.) 300d02842fSSascha Wildner# See include/platform/acenv.h for supported values. 31ff3cb46dSSascha Wildner# Note: ACPI_HOST is not nearly as important for applications as it 320d02842fSSascha Wildner# is for the kernel-resident version of ACPICA, and it may 330d02842fSSascha Wildner# not be necessary to change it. 340d02842fSSascha Wildner# 350d02842fSSascha Wildner.SUFFIXES : 36*d0dff17aSSascha WildnerPROGS = acpibin acpidump acpiexamples acpiexec acpihelp acpisrc acpixtract iasl 37ff3cb46dSSascha WildnerACPI_HOST ?= _CYGWIN 387bcb6cafSSascha WildnerCC ?= gcc 390d02842fSSascha Wildner 400d02842fSSascha Wildner# 410d02842fSSascha Wildner# Common defines 420d02842fSSascha Wildner# 430d02842fSSascha WildnerOBJDIR = obj 440d02842fSSascha WildnerBINDIR = bin 450d02842fSSascha WildnerCOMPILEOBJ = $(CC) -c $(CFLAGS) $(OPT_CFLAGS) -o $@ $< 463c639e0cSSascha WildnerLINKPROG = $(CC) $(OBJECTS) -o $(PROG) $(LDFLAGS) $(OPT_LDFLAGS) 470d02842fSSascha WildnerPREFIX ?= /usr 480d02842fSSascha WildnerINSTALLDIR = $(PREFIX)/bin 499e1c0880SSascha WildnerUNAME_S := $(shell uname -s) 509e1c0880SSascha Wildner 519e1c0880SSascha Wildner# 529e1c0880SSascha Wildner# Host detection and configuration 539e1c0880SSascha Wildner# 549e1c0880SSascha Wildnerifeq ($(UNAME_S), Darwin) # Mac OS X 55ff3cb46dSSascha WildnerACPI_HOST = _APPLE 569e1c0880SSascha Wildnerendif 579e1c0880SSascha Wildner 58896f2e3aSSascha Wildnerifeq ($(UNAME_S), DragonFly) 59ff3cb46dSSascha WildnerACPI_HOST = _DragonFly 60896f2e3aSSascha Wildnerendif 61896f2e3aSSascha Wildner 629e1c0880SSascha Wildnerifeq ($(UNAME_S), FreeBSD) 63ff3cb46dSSascha WildnerACPI_HOST = _FreeBSD 649e1c0880SSascha Wildnerendif 650d02842fSSascha Wildner 665943f66cSSascha Wildnerifeq ($(UNAME_S), NetBSD) 67ff3cb46dSSascha WildnerACPI_HOST = _NetBSD 685943f66cSSascha Wildnerendif 695943f66cSSascha Wildner 702ffe9f16SSascha Wildnerifeq ($(UNAME_S), QNX) 71ff3cb46dSSascha WildnerACPI_HOST = _QNX 722ffe9f16SSascha Wildnerendif 732ffe9f16SSascha Wildner 74ff3cb46dSSascha Wildnerifeq ($(ACPI_HOST), _APPLE) 750d02842fSSascha WildnerINSTALL = cp 760d02842fSSascha WildnerINSTALLFLAGS ?= -f 770d02842fSSascha Wildnerelse 780d02842fSSascha WildnerINSTALL = install 790d02842fSSascha WildnerINSTALLFLAGS ?= -m 555 -s 800d02842fSSascha Wildnerendif 810d02842fSSascha Wildner 820d02842fSSascha WildnerINSTALLPROG = \ 830d02842fSSascha Wildner mkdir -p $(DESTDIR)$(INSTALLDIR); \ 840d02842fSSascha Wildner $(INSTALL) $(INSTALLFLAGS) ../$(BINDIR)/$(PROG) $(DESTDIR)$(INSTALLDIR)/$(PROG) 850d02842fSSascha Wildner 860d02842fSSascha Wildner# 870d02842fSSascha Wildner# Rename a .exe file if necessary 880d02842fSSascha Wildner# 890d02842fSSascha WildnerRENAMEPROG = \ 900d02842fSSascha Wildner @if [ -e "$(PROG).exe" ] ; then \ 910d02842fSSascha Wildner mv $(PROG).exe $(PROG); \ 921093ca81SSascha Wildner echo "- Rename $(PROG).exe to $(PROG)"; \ 930d02842fSSascha Wildner fi; 940d02842fSSascha Wildner 950d02842fSSascha Wildner# 960d02842fSSascha Wildner# Copy the final executable to the local bin directory 970d02842fSSascha Wildner# 980d02842fSSascha WildnerCOPYPROG = \ 990d02842fSSascha Wildner @mkdir -p ../$(BINDIR); \ 1000d02842fSSascha Wildner cp -f $(PROG) ../$(BINDIR); \ 1011093ca81SSascha Wildner echo "- Copy $(PROG) to $(FINAL_PROG)"; 1020d02842fSSascha Wildner 1030d02842fSSascha Wildner# 1040d02842fSSascha Wildner# Main ACPICA source directories 1050d02842fSSascha Wildner# 1060d02842fSSascha WildnerACPICA_SRC = ../../../source 1070d02842fSSascha WildnerACPICA_COMMON = $(ACPICA_SRC)/common 1080d02842fSSascha WildnerACPICA_TOOLS = $(ACPICA_SRC)/tools 1090d02842fSSascha WildnerACPICA_OSL = $(ACPICA_SRC)/os_specific/service_layers 1100d02842fSSascha WildnerACPICA_CORE = $(ACPICA_SRC)/components 1110d02842fSSascha WildnerACPICA_INCLUDE = $(ACPICA_SRC)/include 1120d02842fSSascha WildnerACPICA_DEBUGGER = $(ACPICA_CORE)/debugger 1130d02842fSSascha WildnerACPICA_DISASSEMBLER = $(ACPICA_CORE)/disassembler 1140d02842fSSascha WildnerACPICA_DISPATCHER = $(ACPICA_CORE)/dispatcher 1150d02842fSSascha WildnerACPICA_EVENTS = $(ACPICA_CORE)/events 1160d02842fSSascha WildnerACPICA_EXECUTER = $(ACPICA_CORE)/executer 1170d02842fSSascha WildnerACPICA_HARDWARE = $(ACPICA_CORE)/hardware 1180d02842fSSascha WildnerACPICA_NAMESPACE = $(ACPICA_CORE)/namespace 1190d02842fSSascha WildnerACPICA_PARSER = $(ACPICA_CORE)/parser 1200d02842fSSascha WildnerACPICA_RESOURCES = $(ACPICA_CORE)/resources 1210d02842fSSascha WildnerACPICA_TABLES = $(ACPICA_CORE)/tables 1220d02842fSSascha WildnerACPICA_UTILITIES = $(ACPICA_CORE)/utilities 1230d02842fSSascha Wildner 1240d02842fSSascha Wildner# 1250d02842fSSascha Wildner# ACPICA tool and utility source directories 1260d02842fSSascha Wildner# 1270d02842fSSascha WildnerACPIBIN = $(ACPICA_TOOLS)/acpibin 1280d02842fSSascha WildnerACPIDUMP = $(ACPICA_TOOLS)/acpidump 1290d02842fSSascha WildnerACPIEXAMPLES = $(ACPICA_TOOLS)/examples 1300d02842fSSascha WildnerACPIEXEC = $(ACPICA_TOOLS)/acpiexec 1310d02842fSSascha WildnerACPIHELP = $(ACPICA_TOOLS)/acpihelp 1320d02842fSSascha WildnerACPISRC = $(ACPICA_TOOLS)/acpisrc 1330d02842fSSascha WildnerACPIXTRACT = $(ACPICA_TOOLS)/acpixtract 1340d02842fSSascha WildnerASL_COMPILER = $(ACPICA_SRC)/compiler 1350d02842fSSascha Wildner 1360d02842fSSascha Wildner# 1370d02842fSSascha Wildner# Common ACPICA header files 1380d02842fSSascha Wildner# 1390d02842fSSascha WildnerACPICA_HEADERS = \ 1400d02842fSSascha Wildner $(wildcard $(ACPICA_INCLUDE)/*.h) \ 1410d02842fSSascha Wildner $(wildcard $(ACPICA_INCLUDE)/platform/*.h) 1420d02842fSSascha Wildner 1430d02842fSSascha Wildner# 1440d02842fSSascha Wildner# Common compiler flags 1450d02842fSSascha Wildner# The _GNU_SOURCE symbol is required for many hosts. 1460d02842fSSascha Wildner# 1470d02842fSSascha WildnerOPT_CFLAGS ?= $(CWARNINGFLAGS) 1480d02842fSSascha Wildner 1490d02842fSSascha Wildner# 150e5412f1eSSascha Wildner# Debug flags 151e5412f1eSSascha Wildner# 152e5412f1eSSascha Wildnerifeq ($(DEBUG),TRUE) 153e5412f1eSSascha WildnerCFLAGS +=-g 154e5412f1eSSascha WildnerLDFLAGS +=-g 155e5412f1eSSascha Wildnerendif 156e5412f1eSSascha Wildner 157e5412f1eSSascha Wildner# 158b4315fc7SSascha Wildner# Common compiler flags 159b4315fc7SSascha Wildner# The _GNU_SOURCE symbol is required for many hosts. 160b4315fc7SSascha Wildner# 161b4315fc7SSascha Wildnerifeq ($(M32),TRUE) 162b4315fc7SSascha WildnerCFLAGS +=-m32 163b4315fc7SSascha WildnerLDFLAGS +=-m32 164b4315fc7SSascha Wildnerendif 165b4315fc7SSascha Wildner 166b4315fc7SSascha Wildner# 1670d02842fSSascha Wildner# Optionally disable optimizations. Optimization causes problems on 1680d02842fSSascha Wildner# some compilers such as gcc 4.4 1690d02842fSSascha Wildner# 1700d02842fSSascha Wildnerifneq ($(NOOPT),TRUE) 171fe7b5cb4SSascha WildnerOPT_CFLAGS += -O2 1723c639e0cSSascha Wildnerelse 1733c639e0cSSascha WildnerOPT_CFLAGS += -O0 174fe7b5cb4SSascha Wildnerendif 175fe7b5cb4SSascha Wildner 176fe7b5cb4SSascha Wildner# 177fe7b5cb4SSascha Wildner# Optionally disable fortify source. This option can cause 178fe7b5cb4SSascha Wildner# compile errors in toolchains where it is already defined. 179fe7b5cb4SSascha Wildner# 180fe7b5cb4SSascha Wildnerifneq ($(NOFORTIFY),TRUE) 181fe7b5cb4SSascha WildnerOPT_CFLAGS += -D_FORTIFY_SOURCE=2 1820d02842fSSascha Wildnerendif 1830d02842fSSascha Wildner 1840d02842fSSascha WildnerCFLAGS += \ 185ff3cb46dSSascha Wildner -D$(ACPI_HOST)\ 1860d02842fSSascha Wildner -D_GNU_SOURCE\ 1870d02842fSSascha Wildner -I$(ACPICA_INCLUDE) 1880d02842fSSascha Wildner 1890d02842fSSascha Wildner# 1902ffe9f16SSascha Wildner# QNX requires __EXT to enable most functions in its C library, analogous 1912ffe9f16SSascha Wildner# to _GNU_SOURCE. 1922ffe9f16SSascha Wildner# 193ff3cb46dSSascha Wildnerifeq ($(ACPI_HOST), _QNX) 1942ffe9f16SSascha Wildner CFLAGS+=-D__EXT 1952ffe9f16SSascha Wildnerendif 1962ffe9f16SSascha Wildner 1972ffe9f16SSascha Wildner# 1980d02842fSSascha Wildner# Common compiler warning flags. The warning flags in addition 1990d02842fSSascha Wildner# to -Wall are not automatically included in -Wall. 2000d02842fSSascha Wildner# 2010d02842fSSascha WildnerCWARNINGFLAGS = \ 2025943f66cSSascha Wildner -std=c99\ 2030d02842fSSascha Wildner -Wall\ 2040d02842fSSascha Wildner -Wbad-function-cast\ 2050d02842fSSascha Wildner -Wdeclaration-after-statement\ 2060d02842fSSascha Wildner -Werror\ 2070d02842fSSascha Wildner -Wformat=2\ 2080d02842fSSascha Wildner -Wmissing-declarations\ 2090d02842fSSascha Wildner -Wmissing-prototypes\ 2100d02842fSSascha Wildner -Wstrict-aliasing=0\ 2110d02842fSSascha Wildner -Wstrict-prototypes\ 2120d02842fSSascha Wildner -Wswitch-default\ 2130d02842fSSascha Wildner -Wpointer-arith\ 2140d02842fSSascha Wildner -Wundef 2150d02842fSSascha Wildner 2160d02842fSSascha Wildner# 2170d02842fSSascha Wildner# Common gcc 4+ warning flags 2180d02842fSSascha Wildner# 2190d02842fSSascha WildnerCWARNINGFLAGS += \ 2200d02842fSSascha Wildner -Waddress\ 2210d02842fSSascha Wildner -Waggregate-return\ 2226a0135c2SSascha Wildner -Winit-self\ 2236a0135c2SSascha Wildner -Winline\ 2240d02842fSSascha Wildner -Wmissing-declarations\ 2250d02842fSSascha Wildner -Wmissing-field-initializers\ 2260d02842fSSascha Wildner -Wnested-externs\ 2270d02842fSSascha Wildner -Wold-style-definition\ 2280d02842fSSascha Wildner -Wno-format-nonliteral\ 2290d02842fSSascha Wildner -Wredundant-decls 2300d02842fSSascha Wildner# 2310d02842fSSascha Wildner# Per-host flags and exclusions 2320d02842fSSascha Wildner# 233ff3cb46dSSascha Wildnerifneq ($(ACPI_HOST), _FreeBSD) 2340d02842fSSascha Wildner CWARNINGFLAGS += \ 2350d02842fSSascha Wildner -Wempty-body 2360d02842fSSascha Wildner 237ff3cb46dSSascha Wildner ifneq ($(ACPI_HOST), _APPLE) 2380d02842fSSascha Wildner CWARNINGFLAGS += \ 239c6400d37SSascha Wildner -Woverride-init\ 2400d02842fSSascha Wildner -Wlogical-op\ 2410d02842fSSascha Wildner -Wmissing-parameter-type\ 2420d02842fSSascha Wildner -Wold-style-declaration\ 2430d02842fSSascha Wildner -Wtype-limits 2440d02842fSSascha Wildner endif 2450d02842fSSascha Wildnerendif 2460d02842fSSascha Wildner 2470d02842fSSascha Wildner# 2480d02842fSSascha Wildner# Extra warning flags (for possible future use) 2490d02842fSSascha Wildner# 2500d02842fSSascha Wildner#CWARNINGFLAGS += \ 2510d02842fSSascha Wildner# -Wcast-qual\ 2520d02842fSSascha Wildner# -Wconversion\ 2530d02842fSSascha Wildner# -Wshadow\ 2540d02842fSSascha Wildner 2550d02842fSSascha Wildner# 25679eafdd7SSascha Wildner# M4 macro processor is used to build the final parser file 25779eafdd7SSascha Wildner# 2580d02842fSSascha Wildner# Bison/Flex configuration 2590d02842fSSascha Wildner# 2600d02842fSSascha Wildner# -y: act like yacc 2610d02842fSSascha Wildner# 2620d02842fSSascha Wildner# -i: generate case insensitive scanner 2630d02842fSSascha Wildner# -s: suppress default rule, abort on unknown input 2640d02842fSSascha Wildner# 2650d02842fSSascha Wildner# Optional for Bison/yacc: 2660d02842fSSascha Wildner# -v: verbose, produces a .output file 2670d02842fSSascha Wildner# -d: produces the defines header file 2680d02842fSSascha Wildner# 2690d02842fSSascha Wildner# Berkeley yacc configuration 2700d02842fSSascha Wildner# 2710d02842fSSascha Wildner#YACC= byacc 2720d02842fSSascha Wildner#YFLAGS += 2730d02842fSSascha Wildner# 2740d02842fSSascha WildnerYACC= bison 2750d02842fSSascha WildnerYFLAGS += -y 2760d02842fSSascha Wildner 27779eafdd7SSascha WildnerMACROPROC= m4 27879eafdd7SSascha WildnerMFLAGS= -P -I$(ASL_COMPILER) 27979eafdd7SSascha Wildner 2800d02842fSSascha WildnerLEX= flex 2810d02842fSSascha WildnerLFLAGS += -i -s 282e5412f1eSSascha WildnerDLFLAGS += -i 283