1*b1cdbd2cSJim Jagielski#**************************************************************
2*b1cdbd2cSJim Jagielski#
3*b1cdbd2cSJim Jagielski#  Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski#  or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski#  distributed with this work for additional information
6*b1cdbd2cSJim Jagielski#  regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski#  to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski#  "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski#  with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski#
11*b1cdbd2cSJim Jagielski#    http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski#
13*b1cdbd2cSJim Jagielski#  Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski#  software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski#  KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski#  specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski#  under the License.
19*b1cdbd2cSJim Jagielski#
20*b1cdbd2cSJim Jagielski#**************************************************************
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim JagielskiPRJ=..
25*b1cdbd2cSJim JagielskiPRJNAME=external
26*b1cdbd2cSJim JagielskiTARGET=mingwheaders
27*b1cdbd2cSJim Jagielski
28*b1cdbd2cSJim Jagielski.INCLUDE :  settings.mk
29*b1cdbd2cSJim Jagielski
30*b1cdbd2cSJim Jagielski.IF "$(OS)$(COM)" == "WNTGCC"
31*b1cdbd2cSJim Jagielski
32*b1cdbd2cSJim Jagielski# Cygwin and MinGW use different directories for the W32API headers
33*b1cdbd2cSJim Jagielski.IF "$(USE_MINGW)" == "cygwin"
34*b1cdbd2cSJim JagielskiMINGW_INCLUDE_DIR=$/usr$/include/mingw/
35*b1cdbd2cSJim JagielskiMINGW_W32API_INCLUDE_DIR=$/usr$/include/w32api/
36*b1cdbd2cSJim JagielskiMINGW_W32API_LIB_DIR=$/usr$/include/w32api/
37*b1cdbd2cSJim Jagielski.ELSE
38*b1cdbd2cSJim JagielskiMINGW_INCLUDE_DIR=$(COMPATH)$/include/
39*b1cdbd2cSJim JagielskiMINGW_W32API_INCLUDE_DIR=$(COMPATH)$/include/
40*b1cdbd2cSJim JagielskiMINGW_W32API_LIB_DIR=$(COMPATH)$/lib/
41*b1cdbd2cSJim Jagielski.ENDIF
42*b1cdbd2cSJim Jagielski
43*b1cdbd2cSJim JagielskiSYS_INCLUDE_DIR=$(MINGW_INCLUDE_DIR)$/sys/
44*b1cdbd2cSJim Jagielski
45*b1cdbd2cSJim JagielskiPSDK_INCLUDE_DIR=$(PSDK_HOME)$/include$/
46*b1cdbd2cSJim Jagielski
47*b1cdbd2cSJim JagielskiATL_INCLUDE_DIR=$(PSDK_HOME)$/include$/atl$/
48*b1cdbd2cSJim Jagielski
49*b1cdbd2cSJim JagielskiDIRECTXSDK_INCLUDE_DIR=$(DIRECTXSDK_HOME)$/include$/
50*b1cdbd2cSJim Jagielski
51*b1cdbd2cSJim JagielskiFILES_TO_COPY_FROM_MINGW= \
52*b1cdbd2cSJim Jagielski	excpt.h \
53*b1cdbd2cSJim Jagielski	 tchar.h
54*b1cdbd2cSJim Jagielski
55*b1cdbd2cSJim JagielskiFILES_TO_COPY_FROM_W32API= \
56*b1cdbd2cSJim Jagielski	amvideo.h \
57*b1cdbd2cSJim Jagielski	basetyps.h \
58*b1cdbd2cSJim Jagielski	objidl.h \
59*b1cdbd2cSJim Jagielski	specstrings.h \
60*b1cdbd2cSJim Jagielski	uxtheme.h \
61*b1cdbd2cSJim Jagielski	winbase.h \
62*b1cdbd2cSJim Jagielski	windef.h \
63*b1cdbd2cSJim Jagielski	wininet.h \
64*b1cdbd2cSJim Jagielski	winver.h \
65*b1cdbd2cSJim Jagielski	wtypes.h
66*b1cdbd2cSJim Jagielski
67*b1cdbd2cSJim JagielskiFILES_TO_COPY_FROM_SYS= \
68*b1cdbd2cSJim Jagielski	stat.h
69*b1cdbd2cSJim Jagielski
70*b1cdbd2cSJim JagielskiFILES_TO_COPY_FROM_PSDK= \
71*b1cdbd2cSJim Jagielski	adoctint.h \
72*b1cdbd2cSJim Jagielski	adodef.h \
73*b1cdbd2cSJim Jagielski	adoguids.h \
74*b1cdbd2cSJim Jagielski	adoint.h \
75*b1cdbd2cSJim Jagielski	bcrypt.h \
76*b1cdbd2cSJim Jagielski	commctrl.h \
77*b1cdbd2cSJim Jagielski	control.h \
78*b1cdbd2cSJim Jagielski	dispex.h \
79*b1cdbd2cSJim Jagielski	filter.h \
80*b1cdbd2cSJim Jagielski	gdiplusbitmap.h \
81*b1cdbd2cSJim Jagielski	gdiplusbrush.h \
82*b1cdbd2cSJim Jagielski	gdiplusenums.h \
83*b1cdbd2cSJim Jagielski	gdiplusfont.h \
84*b1cdbd2cSJim Jagielski	gdiplusheaders.h \
85*b1cdbd2cSJim Jagielski	gdiplusimageattributes.h \
86*b1cdbd2cSJim Jagielski	gdiplusimaging.h \
87*b1cdbd2cSJim Jagielski	gdiplusmatrix.h \
88*b1cdbd2cSJim Jagielski	gdipluspath.h \
89*b1cdbd2cSJim Jagielski	gdipluspen.h \
90*b1cdbd2cSJim Jagielski	gdiplusregion.h \
91*b1cdbd2cSJim Jagielski	gdiplusstringformat.h \
92*b1cdbd2cSJim Jagielski	imm.h \
93*b1cdbd2cSJim Jagielski	imagehlp.h \
94*b1cdbd2cSJim Jagielski	mapiwin.h \
95*b1cdbd2cSJim Jagielski	msdasc.h \
96*b1cdbd2cSJim Jagielski	msi.h \
97*b1cdbd2cSJim Jagielski	msiquery.h \
98*b1cdbd2cSJim Jagielski	multimon.h \
99*b1cdbd2cSJim Jagielski	ntquery.h \
100*b1cdbd2cSJim Jagielski	oaidl.h \
101*b1cdbd2cSJim Jagielski	ocidl.h \
102*b1cdbd2cSJim Jagielski	oleauto.h \
103*b1cdbd2cSJim Jagielski	olectl.h \
104*b1cdbd2cSJim Jagielski	oledb.h \
105*b1cdbd2cSJim Jagielski	oleidl.h \
106*b1cdbd2cSJim Jagielski	propidl.h \
107*b1cdbd2cSJim Jagielski	propkeydef.h \
108*b1cdbd2cSJim Jagielski	propsys.h \
109*b1cdbd2cSJim Jagielski	propvarutil.h \
110*b1cdbd2cSJim Jagielski	shlobj.h \
111*b1cdbd2cSJim Jagielski	shobjidl.h \
112*b1cdbd2cSJim Jagielski	shtypes.h \
113*b1cdbd2cSJim Jagielski	sspi.h \
114*b1cdbd2cSJim Jagielski	strmif.h \
115*b1cdbd2cSJim Jagielski	strsafe.h \
116*b1cdbd2cSJim Jagielski	structuredquery.h \
117*b1cdbd2cSJim Jagielski	urlmon.h \
118*b1cdbd2cSJim Jagielski	wincrypt.h \
119*b1cdbd2cSJim Jagielski	winerror.h \
120*b1cdbd2cSJim Jagielski	wingdi.h \
121*b1cdbd2cSJim Jagielski	wintrust.h \
122*b1cdbd2cSJim Jagielski	winuser.h \
123*b1cdbd2cSJim Jagielski	wspiapi.h \
124*b1cdbd2cSJim Jagielski	exdispid.h \
125*b1cdbd2cSJim Jagielski	dshow.h \
126*b1cdbd2cSJim Jagielski	gdiplus.h \
127*b1cdbd2cSJim Jagielski	msxml.h \
128*b1cdbd2cSJim Jagielski	ncrypt.h \
129*b1cdbd2cSJim Jagielski	shlguid.h \
130*b1cdbd2cSJim Jagielski	transact.h
131*b1cdbd2cSJim Jagielski
132*b1cdbd2cSJim Jagielski.IF "$(DISABLE_ATL)"==""
133*b1cdbd2cSJim JagielskiMINGWHEADER_ATL_PATCH_TARGET=$(MISC)$/mingwheader_atl_patch
134*b1cdbd2cSJim JagielskiMINGWHEADER_ATL_COPY_TARGET=$(MISC)$/mingwheader_atl_copy
135*b1cdbd2cSJim JagielskiFILES_TO_COPY_FROM_ATL= \
136*b1cdbd2cSJim Jagielski	atlbase.h \
137*b1cdbd2cSJim Jagielski	atlcom.h \
138*b1cdbd2cSJim Jagielski	atlconv.h \
139*b1cdbd2cSJim Jagielski	atlctl.h \
140*b1cdbd2cSJim Jagielski	atlwin.h \
141*b1cdbd2cSJim Jagielski	statreg.h
142*b1cdbd2cSJim Jagielski.ENDIF
143*b1cdbd2cSJim Jagielski
144*b1cdbd2cSJim JagielskiFILES_TO_COPY_FROM_DIRECTXSDK= \
145*b1cdbd2cSJim Jagielski	d3dtypes.h \
146*b1cdbd2cSJim Jagielski	d3dx9core.h \
147*b1cdbd2cSJim Jagielski	d3dx9math.h \
148*b1cdbd2cSJim Jagielski	d3dx9math.inl \
149*b1cdbd2cSJim Jagielski	dxtrans.h \
150*b1cdbd2cSJim Jagielski	d3dx9.h
151*b1cdbd2cSJim Jagielski
152*b1cdbd2cSJim Jagielski$(MISC)$/mingwheader_patch_all : $(MISC)$/mingwheader_patch $(MINGWHEADER_ATL_PATCH_TARGET) $(LB)$/libmsvcrt.a
153*b1cdbd2cSJim Jagielski
154*b1cdbd2cSJim Jagielski$(MISC)$/mingwheader_patch : $(MISC)$/mingwheader_copy
155*b1cdbd2cSJim Jagielski	patch -bd $(MISC)$/mingw -p0 -N -f -Z <mingw_headers.patch
156*b1cdbd2cSJim Jagielski	$(TOUCH) $(MISC)$/mingwheader_patch
157*b1cdbd2cSJim Jagielski
158*b1cdbd2cSJim Jagielski.IF "$(DISABLE_ATL)"==""
159*b1cdbd2cSJim Jagielski$(MINGWHEADER_ATL_PATCH_TARGET) : $(MINGWHEADER_ATL_COPY_TARGET)
160*b1cdbd2cSJim Jagielski	patch -bd $(MISC)$/mingw -p0 -N -f -Z <mingw_atl_headers.patch
161*b1cdbd2cSJim Jagielski	$(TOUCH) $(MINGWHEADER_ATL_PATCH_TARGET)
162*b1cdbd2cSJim Jagielski.ENDIF
163*b1cdbd2cSJim Jagielski
164*b1cdbd2cSJim Jagielski$(MISC)$/mingwheader_copy:
165*b1cdbd2cSJim Jagielski	$(MKDIRHIER) $(MISC)$/mingw$/include
166*b1cdbd2cSJim Jagielski	$(MKDIRHIER) $(MISC)$/mingw$/include/sys
167*b1cdbd2cSJim Jagielski	$(COPY) $(FILES_TO_COPY_FROM_MINGW:^$(MINGW_INCLUDE_DIR)) $(MISC)$/mingw$/include
168*b1cdbd2cSJim Jagielski	$(COPY) $(FILES_TO_COPY_FROM_W32API:^$(MINGW_W32API_INCLUDE_DIR)) $(MISC)$/mingw$/include
169*b1cdbd2cSJim Jagielski	$(COPY) $(FILES_TO_COPY_FROM_SYS:^$(SYS_INCLUDE_DIR)) $(MISC)$/mingw$/include$/sys
170*b1cdbd2cSJim Jagielski	$(COPY) $(FILES_TO_COPY_FROM_PSDK:^$(PSDK_INCLUDE_DIR)) $(MISC)$/mingw$/include
171*b1cdbd2cSJim Jagielski	$(COPY) $(FILES_TO_COPY_FROM_DIRECTXSDK:^$(DIRECTXSDK_INCLUDE_DIR)) $(MISC)$/mingw$/include
172*b1cdbd2cSJim Jagielski	$(TOUCH) $(MISC)$/mingwheader_copy
173*b1cdbd2cSJim Jagielski
174*b1cdbd2cSJim Jagielski.IF "$(DISABLE_ATL)"==""
175*b1cdbd2cSJim Jagielski$(MINGWHEADER_ATL_COPY_TARGET):
176*b1cdbd2cSJim Jagielski	$(MKDIRHIER) $(MISC)$/mingw$/include/atl
177*b1cdbd2cSJim Jagielski	$(COPY) $(FILES_TO_COPY_FROM_ATL:^$(ATL_INCLUDE_DIR)) $(MISC)$/mingw$/include$/atl
178*b1cdbd2cSJim Jagielski 	$(TOUCH) $(MINGWHEADER_ATL_COPY_TARGET)
179*b1cdbd2cSJim Jagielski.ENDIF
180*b1cdbd2cSJim Jagielski
181*b1cdbd2cSJim Jagielski$(LB)$/libmsvcrt.a:
182*b1cdbd2cSJim Jagielski.IF "$(USE_MINGW)" == "cygwin"
183*b1cdbd2cSJim Jagielski	$(COPY) $(COMPATH)$/lib/mingw/libmsvcrt.a $(LB)$/libmsvcrt_orig.a
184*b1cdbd2cSJim Jagielski.ELSE
185*b1cdbd2cSJim Jagielski	$(COPY) $(COMPATH)$/lib/libmsvcrt.a $(LB)$/libmsvcrt_orig.a
186*b1cdbd2cSJim Jagielski.ENDIF
187*b1cdbd2cSJim Jagielski	cd $(LB) && ar -x libmsvcrt_orig.a ofmt_stub.o
188*b1cdbd2cSJim Jagielski	ar -d $(LB)$/libmsvcrt_orig.a ofmt_stub.o
189*b1cdbd2cSJim Jagielski	nm -g --defined-only $(LB)$/libmsvcrt_orig.a > $(MISC)$/msvcrt.nm
190*b1cdbd2cSJim Jagielski	echo EXPORTS > $(MISC)$/msvcrt.def
191*b1cdbd2cSJim Jagielski	sed -ne 's/.* T _//p' $(MISC)$/msvcrt.nm | sort >> $(MISC)$/msvcrt.def
192*b1cdbd2cSJim Jagielski	-sed -ne 's/.* I __imp__//p' $(MISC)$/msvcrt.nm | sort | diff - $(MISC)$/msvcrt.def | \
193*b1cdbd2cSJim Jagielski		sed -ne 's/^< \(.*\)$/\1 DATA/p' > $(MISC)$/msvcrtdata.def
194*b1cdbd2cSJim Jagielski	cat $(MISC)$/msvcrtdata.def >> $(MISC)$/msvcrt.def
195*b1cdbd2cSJim Jagielski	dlltool --dllname msvcrt.dll --input-def=$(MISC)$/msvcrt.def --kill-at --output-lib=$(LB)$/libmsvcrt.a
196*b1cdbd2cSJim Jagielski	cd $(LB) && ar -rs libmsvcrt.a ofmt_stub.o
197*b1cdbd2cSJim Jagielski
198*b1cdbd2cSJim Jagielskiclean:
199*b1cdbd2cSJim Jagielski	-$(RM) $(MISC)$/mingw$/include$/*.h
200*b1cdbd2cSJim Jagielski	-$(RM) $(MISC)$/mingwheader_copy
201*b1cdbd2cSJim Jagielski	-$(RM) $(MISC)$/mingwheader_patch
202*b1cdbd2cSJim Jagielski
203*b1cdbd2cSJim Jagielski.ENDIF
204*b1cdbd2cSJim Jagielski
205*b1cdbd2cSJim Jagielski.INCLUDE :  target.mk
206*b1cdbd2cSJim Jagielski
207