1123795Snjl# $FreeBSD$
2123795Snjl
3215201Sjkim.if !defined(FORCE_BUILD)
4215201Sjkim.error "The ACPI module is deprecated, set FORCE_BUILD to force it"
5215201Sjkim.endif
6215201Sjkim
7211690Simp.if ${MACHINE_CPUARCH} == "ia64"
8204877Sjkim.error "ACPI can only be compiled into the kernel on the ia64 platform"
9167814Sjkim.endif
10167814Sjkim
11204877Sjkim.if ${MACHINE} != "amd64" && ${MACHINE} != "i386"
12204877Sjkim.error "The ACPI module is only for amd64 and i386"
13165320Stakawata.endif
14165320Stakawata
15193530Sjkim.PATH:	${.CURDIR}/../../../contrib/dev/acpica/debugger \
16193530Sjkim	${.CURDIR}/../../../contrib/dev/acpica/disassembler \
17193530Sjkim	${.CURDIR}/../../../contrib/dev/acpica/dispatcher \
18193530Sjkim	${.CURDIR}/../../../contrib/dev/acpica/events \
19193530Sjkim	${.CURDIR}/../../../contrib/dev/acpica/executer \
20193530Sjkim	${.CURDIR}/../../../contrib/dev/acpica/hardware \
21193530Sjkim	${.CURDIR}/../../../contrib/dev/acpica/namespace \
22193530Sjkim	${.CURDIR}/../../../contrib/dev/acpica/parser \
23193530Sjkim	${.CURDIR}/../../../contrib/dev/acpica/resources \
24193530Sjkim	${.CURDIR}/../../../contrib/dev/acpica/tables \
25193530Sjkim	${.CURDIR}/../../../contrib/dev/acpica/utilities \
26193530Sjkim	${.CURDIR}/../../../pci \
27193530Sjkim	${.CURDIR}/../../../dev/acpica \
28193530Sjkim	${.CURDIR}/../../../dev/acpica/Osd \
29215012Sjhb	${.CURDIR}/../../../${MACHINE_CPUARCH}/acpica \
30215012Sjhb	${.CURDIR}/../../../x86/acpica
31123795Snjl
32123795SnjlKMOD=	acpi
33123795Snjl
34123795Snjl# ACPI CA sources
35218590SjkimSRCS+=	dbcmds.c dbdisply.c dbexec.c dbfileio.c dbhistry.c dbinput.c dbmethod.c
36218590SjkimSRCS+=	dbnames.c dbstats.c dbutils.c dbxface.c
37197688SjkimSRCS+=	dmbuffer.c dmnames.c dmopcode.c dmobject.c dmresrc.c dmresrcl.c
38197688SjkimSRCS+=	dmresrcs.c dmutils.c dmwalk.c
39218590SjkimSRCS+=	dsargs.c dscontrol.c dsfield.c dsinit.c dsmethod.c dsmthdat.c
40218590SjkimSRCS+=	dsobject.c dsopcode.c dsutils.c dswexec.c dswload.c dswload2.c
41218590SjkimSRCS+=	dswscope.c dswstate.c
42220663SjkimSRCS+=	evevent.c evglock.c evgpe.c evgpeblk.c evgpeinit.c evgpeutil.c evmisc.c
43216471SjkimSRCS+=	evregion.c evrgnini.c evsci.c evxface.c evxfevnt.c evxfgpe.c evxfregn.c
44204874SjkimSRCS+=	exconfig.c exconvrt.c excreate.c exdebug.c exdump.c exfield.c
45204874SjkimSRCS+=	exfldio.c exmisc.c exmutex.c exnames.c exoparg1.c exoparg2.c
46204874SjkimSRCS+=	exoparg3.c exoparg6.c exprep.c exregion.c exresnte.c exresolv.c
47204874SjkimSRCS+=	exresop.c exstore.c exstoren.c exstorob.c exsystem.c exutils.c
48212761SjkimSRCS+=	hwacpi.c hwgpe.c hwpci.c hwregs.c hwsleep.c hwtimer.c hwvalid.c
49212761SjkimSRCS+=	hwxface.c
50167814SjkimSRCS+=	nsaccess.c nsalloc.c nsdump.c nseval.c nsinit.c nsload.c nsnames.c
51199338SjkimSRCS+=	nsobject.c nsparse.c nspredef.c nsrepair.c nsrepair2.c nssearch.c
52199338SjkimSRCS+=	nsutils.c nswalk.c nsxfeval.c nsxfname.c nsxfobj.c
53167814SjkimSRCS+=	psargs.c psloop.c psopcode.c psparse.c psscope.c pstree.c psutils.c
54167814SjkimSRCS+=	pswalk.c psxface.c
55167814SjkimSRCS+=	rsaddr.c rscalc.c rscreate.c rsdump.c rsinfo.c rsio.c rsirq.c rslist.c
56167814SjkimSRCS+=	rsmemory.c rsmisc.c rsutils.c rsxface.c
57167814SjkimSRCS+=	tbfadt.c tbfind.c tbinstal.c tbutils.c tbxface.c tbxfroot.c
58218590SjkimSRCS+=	utalloc.c utcache.c utcopy.c utdebug.c utdecode.c utdelete.c uteval.c
59218590SjkimSRCS+=	utglobal.c utids.c utinit.c utlock.c utmath.c utmisc.c utmutex.c
60218590SjkimSRCS+=	utobject.c utosi.c utresrc.c utstate.c utxface.c utxferror.c
61123795Snjl
62128509Snjl# OSPM layer and core hardware drivers
63167814SjkimSRCS+=	acpi.c acpi_button.c acpi_isab.c acpi_package.c acpi_pci.c acpi_pcib.c
64167814SjkimSRCS+=	acpi_pcib_acpi.c acpi_pcib_pci.c acpi_powerres.c acpi_quirk.c
65167814SjkimSRCS+=	acpi_resource.c acpi_timer.c acpi_pci_link.c acpi_thermal.c
66128509Snjl
67128509Snjl# ACPI hardware drivers, mostly used for mobile systems.
68167814SjkimSRCS+=	acpi_acad.c acpi_battery.c acpi_cmbat.c acpi_cpu.c acpi_ec.c
69167814SjkimSRCS+=	acpi_hpet.c acpi_lid.c acpi_perf.c acpi_smbat.c acpi_throttle.c
70128509Snjl
71123795Snjl# OSD layer
72167814SjkimSRCS+=	OsdDebug.c
73167814SjkimSRCS+=	OsdHardware.c OsdInterrupt.c OsdMemory.c OsdSchedule.c OsdStream.c
74167814SjkimSRCS+=	OsdSynch.c OsdTable.c OsdEnvironment.c
75167814SjkimSRCS+=	opt_acpi.h opt_bus.h opt_ddb.h acpi_if.h acpi_quirks.h bus_if.h
76167814SjkimSRCS+=	cpufreq_if.h device_if.h isa_if.h pci_if.h pcib_if.h
77124255Snjl
78146020Smarks# XXX ACPI should not depend on the following headers but this is currently
79146020Smarks# needed for the build of assym.s.
80146020Smarks# This obviously needs a better and more structural fix.
81188516Sn_hibmaSRCS+=	opt_kstack_pages.h opt_nfs.h opt_apic.h opt_compat.h opt_hwpmc_hooks.h
82146020Smarks
83151350Syar.if !defined(KERNBUILDDIR)
84172313Snjl.if KTR
85172313SnjlCFLAGS+=-DKTR
86172313Snjl.endif
87194312Sjkim.if ACPI_MAX_TASKS
88194313SjkimCFLAGS+=-DACPI_MAX_TASKS=${ACPI_MAX_TASKS}
89194312Sjkim.endif
90123795Snjl.if ACPI_MAX_THREADS
91123795SnjlCFLAGS+=-DACPI_MAX_THREADS=${ACPI_MAX_THREADS}
92123795Snjl.endif
93123795Snjl.if ACPI_DEBUG
94123795SnjlCFLAGS+=-DACPI_DEBUG
95123795Snjlopt_ddb.h: Makefile
96123962Sbde	echo "#define DDB 1" > ${.TARGET}
97123795Snjl.else
98123795Snjlopt_ddb.h: Makefile
99123795Snjl	echo -n > ${.TARGET}
100123795Snjl.endif
101151350Syar.endif
102123795Snjl
103123795Snjl# Machine-specific code such as sleep/wakeup
104215200SjkimSRCS+=	acpi_apm.c acpi_machdep.c acpi_wakecode.h acpi_wakedata.h acpi_wakeup.c
105197688SjkimSRCS+=	assym.s madt.c
106215200SjkimCLEANFILES+=acpi_wakecode.bin acpi_wakecode.h acpi_wakecode.o acpi_wakedata.h
107204877Sjkim
108211690SimpSRCS+=	opt_global.h
109211690Simp
110215200SjkimASM_CFLAGS=	-x assembler-with-cpp -DLOCORE ${CFLAGS}
111215200SjkimNORMAL_S=	${CC} -c ${ASM_CFLAGS} ${WERROR} ${.IMPSRC}
112215200SjkimNM?=		nm
113215200Sjkim
114211690Simp.if ${MACHINE_CPUARCH} == "amd64"
115210005Sjkim.if !defined(KERNBUILDDIR)
116210005SjkimCFLAGS+=-DSMP
117210005Sjkim.endif
118215200SjkimSRCS+=	acpi_switch.S
119204877Sjkimacpi_switch.o:	acpi_switch.S
120213884Sjkim	${NORMAL_S}
121215200Sjkim.endif
122209957Sjkimacpi_wakecode.o: acpi_wakecode.S assym.s
123213884Sjkim	${NORMAL_S}
124209957Sjkimacpi_wakecode.bin: acpi_wakecode.o
125209957Sjkim	objcopy -S -O binary acpi_wakecode.o ${.TARGET}
126209957Sjkimacpi_wakecode.h: acpi_wakecode.bin
127209957Sjkim	file2c -sx 'static char wakecode[] = {' '};' < acpi_wakecode.bin > \
128209957Sjkim	    ${.TARGET}
129209957Sjkimacpi_wakedata.h: acpi_wakecode.o
130213884Sjkim	${NM} -n --defined-only acpi_wakecode.o | \
131213884Sjkim	    while read offset dummy what; do \
132213884Sjkim	    echo "#define	$${what}	0x$${offset}"; \
133213884Sjkim	    done > ${.TARGET}
134123795Snjl
135123795Snjl.include <bsd.kmod.mk>
136