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