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