1193323Sed#
2193323Sed# $FreeBSD: releng/10.3/sys/boot/usb/Makefile 269922 2014-08-13 08:21:52Z hselasky $
3193323Sed#
4193323Sed# Copyright (c) 2013 Hans Petter Selasky. All rights reserved.
5193323Sed#
6193323Sed# Redistribution and use in source and binary forms, with or without
7193323Sed# modification, are permitted provided that the following conditions
8193323Sed# are met:
9193323Sed# 1. Redistributions of source code must retain the above copyright
10193323Sed#    notice, this list of conditions and the following disclaimer.
11193323Sed# 2. Redistributions in binary form must reproduce the above copyright
12193323Sed#    notice, this list of conditions and the following disclaimer in the
13193323Sed#    documentation and/or other materials provided with the distribution.
14193323Sed#
15193323Sed# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16193323Sed# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17193323Sed# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18193323Sed# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19193323Sed# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20193323Sed# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21193323Sed# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22193323Sed# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23193323Sed# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24193323Sed# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25193323Sed# SUCH DAMAGE.
26193323Sed#
27193323Sed
28239462SdimT=${.CURDIR}/tools
29263508SdimS=${.CURDIR}/../..
30239462Sdim
31239462Sdim.PATH: \
32249423Sdim	${.CURDIR} \
33249423Sdim	${S}/dev/usb \
34249423Sdim	${S}/dev/usb/controller \
35249423Sdim	${S}/dev/usb/serial \
36249423Sdim	${S}/dev/usb/storage \
37249423Sdim	${S}/dev/usb/template
38249423Sdim
39193323SedLIB=		usbboot
40243830SdimINTERNALLIB=
41193323SedOBJCOPY?=	objcopy
42193323SedSYSCC?=		cc
43193323Sed
44218893SdimCFLAGS+=	-DBOOTPROG=\"usbloader\"
45193323SedCFLAGS+=	-DUSB_GLOBAL_INCLUDE_FILE=\"bsd_global.h\"
46193323SedCFLAGS+=	-ffunction-sections -fdata-sections
47193323SedCFLAGS+=	-ffreestanding
48193323SedCFLAGS+=	-Wformat -Wall
49193323SedCFLAGS+=	-I${S}
50193323SedCFLAGS+=	-I${T}
51193323SedCFLAGS+=	-I${.CURDIR}
52218893SdimCFLAGS+=	-g
53193323Sed
54218893Sdim.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
55193323SedCFLAGS+=	-march=i386
56193323SedCFLAGS.gcc+=	-mpreferred-stack-boundary=2
57218893Sdim.endif
58218893Sdim.if ${MACHINE_CPUARCH} == "amd64"
59193323SedCFLAGS+=	-m32
60218893Sdim.endif
61193323Sed
62193323Sed#
63193323Sed# Single threaded BSD kernel
64193323Sed#
65193323SedSRCS+=	bsd_kernel.c
66193323Sed
67193323Sed#
68193323Sed# BUSSPACE implementation
69193323Sed#
70193323SedSRCS+=	bsd_busspace.c
71193323Sed
72193323Sed#
73218893Sdim# BUSDMA implementation
74218893Sdim#
75218893SdimSRCS+=	usb_busdma_loader.c
76218893Sdim
77218893Sdim#
78218893Sdim# USB controller drivers
79193323Sed#
80212904SdimSRCS+=	at91dci.c
81218893SdimSRCS+=	atmegadci.c
82218893SdimSRCS+=	avr32dci.c
83212904SdimSRCS+=	dwc_otg.c
84212904SdimSRCS+=	ehci.c
85212904SdimSRCS+=	musb_otg.c
86212904SdimSRCS+=	ohci.c
87212904SdimSRCS+=	uhci.c
88212904SdimSRCS+=	uss820dci.c
89218893SdimSRCS+=	xhci.c
90212904SdimSRCS+=	usb_controller.c
91218893Sdim
92218893SdimCFLAGS += -DUSB_PROBE_LIST="\"xhci\", \"ehci\", \"uhci\", \"ohci\""
93212904Sdim
94221345Sdim#
95221345Sdim# USB core and templates
96218893Sdim#
97221345SdimSRCS+=	usb_core.c
98221345SdimSRCS+=	usb_debug.c
99221345SdimSRCS+=	usb_device.c
100221345SdimSRCS+=	usb_dynamic.c
101221345SdimSRCS+=	usb_error.c
102221345SdimSRCS+=	usb_handle_request.c
103218893SdimSRCS+=	usb_hid.c
104218893SdimSRCS+=	usb_hub.c
105218893SdimSRCS+=	usb_lookup.c
106221345SdimSRCS+=	usb_msctest.c
107221345SdimSRCS+=	usb_parse.c
108212904SdimSRCS+=	usb_request.c
109212904SdimSRCS+=	usb_transfer.c
110212904SdimSRCS+=	usb_util.c
111212904SdimSRCS+=	usb_template.c
112218893SdimSRCS+=	usb_template_cdce.c
113212904SdimSRCS+=	usb_template_msc.c
114218893SdimSRCS+=	usb_template_mtp.c
115212904SdimSRCS+=	usb_template_modem.c
116212904SdimSRCS+=	usb_template_mouse.c
117218893SdimSRCS+=	usb_template_kbd.c
118212904SdimSRCS+=	usb_template_audio.c
119212904SdimSRCS+=	usb_template_phone.c
120212904SdimSRCS+=	sysinit_data.c
121212904SdimSRCS+=	sysuninit_data.c
122218893Sdim
123212904SdimCLEANFILES+= sysinit
124212904SdimCLEANFILES+= sysinit.bin
125212904SdimCLEANFILES+= sysinit_data.c
126212904SdimCLEANFILES+= sysuninit_data.c
127218893Sdim
128212904SdimCLEANFILES+= ${SRCS:C/\.c/.osys/g}
129212904Sdim
130212904Sdim.include <bsd.lib.mk>
131212904Sdim
132212904Sdim#
133212904Sdim# SYSINIT() and SYSUNINIT() handling
134212904Sdim#
135212904Sdimsysinit: ${T}/sysinit.c
136212904Sdim	${SYSCC} -Wall -o ${.TARGET} ${.ALLSRC}
137218893Sdim
138212904Sdimsysinit_data.c: sysinit.bin sysinit
139212904Sdim	${.OBJDIR}/sysinit -i sysinit.bin -o ${.TARGET} -k sysinit -s sysinit_data
140212904Sdim
141212904Sdimsysuninit_data.c: sysinit.bin sysinit
142212904Sdim	${.OBJDIR}/sysinit -i sysinit.bin -o ${.TARGET} -R -k sysuninit -s sysuninit_data
143212904Sdim
144218893Sdim.for F in ${OBJS}
145212904Sdim${F}sys: ${F}
146212904Sdim	${OBJCOPY} -j ".debug.sysinit" -O binary ${F} ${.TARGET}
147212904Sdim	[ -f ${.TARGET} ] || touch ${.TARGET}
148212904Sdim.endfor
149212904Sdim
150218893Sdimsysinit.bin: ${OBJS:C/\.o/.osys/g:C/sysinit_data.osys//g:C/sysuninit_data.osys//g}
151212904Sdim	cat ${.ALLSRC} > sysinit.bin
152221345Sdim