mh-cygwin-msvc revision 85bf2e2fbc60a9f938064abc8127d61da7d19882
1cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project## Cygwin with Microsoft Visual C++ compiler specific setup
2cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project## Copyright (c) 2001-2008, International Business Machines Corporation and
3cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project## others. All Rights Reserved.
4cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
5cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# We install sbin tools into the same bin directory because
6cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# pkgdata needs some of the tools in sbin, and we can't always depend on
7cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# icu-config working on Windows.
8cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectsbindir=$(bindir)
9cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
10cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project## Commands to generate dependency files
11172b266ed7845eac2edc7e7f8a72371356a9a277Nick KralevichGEN_DEPS.c=	:
12172b266ed7845eac2edc7e7f8a72371356a9a277Nick KralevichGEN_DEPS.cc=	:
13cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#GEN_DEPS.c=	$(COMPILE.c) /E
14cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#GEN_DEPS.cc=	$(COMPILE.cc) /E
15cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
16cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project## Flags to create/use a static library
17cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectifneq ($(ENABLE_SHARED),YES)
18cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project## Make sure that the static libraries can be built and used
19cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectCPPFLAGS += -DU_STATIC_IMPLEMENTATION#M#
20cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectelse
21cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project## Make sure that the static libraries can be built
22cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectSTATICCPPFLAGS = -DU_STATIC_IMPLEMENTATION
23cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectendif
24cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
25cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project## Flags for position independent code
26cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectSHAREDLIBCFLAGS = 
27cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectSHAREDLIBCXXFLAGS = 
28cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectSHAREDLIBCPPFLAGS =
29cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
30cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project## Additional flags when building libraries and with threads
31cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectLIBCPPFLAGS = 
32cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
33cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectifeq ($(ENABLE_RELEASE),1)
34cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# Make sure that assertions are disabled
35cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectCPPFLAGS+=-DU_RELEASE=1#M#
36cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectendif
37cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
38cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectifeq ($(ENABLE_DEBUG),1)
39cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# Pass debugging flag through
40cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectCPPFLAGS+=-D_DEBUG=1#M#
41cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectICULIBSUFFIX:=$(ICULIBSUFFIX)d#M#
42cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectendif
43cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
44cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# /GF pools strings and places them into read-only memory
45cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# /EHsc enables exception handling
46cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# /Zc:wchar_t makes wchar_t a native type. Required for C++ ABI compatibility.
47cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# -D_CRT_SECURE_NO_DEPRECATE is needed to quiet warnings about using standard C functions.
48cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectCFLAGS+=/GF /nologo
49cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectCXXFLAGS+=/GF /nologo /EHsc /Zc:wchar_t
50cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectCPPFLAGS+=-D_CRT_SECURE_NO_DEPRECATE
51cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectDEFS+=-DWIN32
52cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectDEFS+=-DCYGWINMSVC
53cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectLDFLAGS+=/nologo
54cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
55cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# Commands to compile
56cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectCOMPILE.c=	$(CC) $(CPPFLAGS) $(DEFS) $(CFLAGS) /c
57cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectCOMPILE.cc=	$(CXX) $(CPPFLAGS) $(DEFS) $(CXXFLAGS) /c
58cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
59cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# Commands to link
60cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectLINK.c=		LINK.EXE /subsystem:console $(LDFLAGS)
61cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectLINK.cc=	LINK.EXE /subsystem:console $(LDFLAGS)
62cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
63cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project## Commands to make a shared library
64cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectSHLIB.c=	LINK.EXE /DLL $(LDFLAGS)
65cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectSHLIB.cc=	LINK.EXE /DLL $(LDFLAGS)
66cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
67cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project## Compiler switch to embed a runtime search path
68cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectLD_RPATH=	
69cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectLD_RPATH_PRE=
70cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
71cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project## Compiler switch to embed a library name
72cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectLD_SONAME = /IMPLIB:$(SO_TARGET:.dll=.lib)
73cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
74cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project## Shared object suffix
75cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectSO = dll
76cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project## Non-shared intermediate object suffix
77cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectSTATIC_O = ao
78cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# OUTOPT is for creating a specific output name
79cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectOUTOPT = /out:
80cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
81cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# Static library prefix and file extension
82cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectLIBSICU = $(STATIC_PREFIX)$(ICUPREFIX)
83cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectA = lib
84cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
85cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# Cygwin's ar can't handle Win64 right now. So we use Microsoft's tool instead.
86cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectAR = LIB.EXE#M#
87cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectARFLAGS := /nologo $(ARFLAGS:r=)#M#
88cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectRANLIB = ls -s#M#
89cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectAR_OUTOPT = /OUT:#M#
90cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
91cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project## An import library is needed for z/OS, MSVC and Cygwin
92cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectIMPORT_LIB_EXT = .lib
93cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
94cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectLIBPREFIX=
95cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectDEFAULT_LIBS = advapi32.lib
96cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
97cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# Change the stubnames so that poorly working FAT disks and installation programs can work.
98cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# This is also for backwards compatibility.
99cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectDATA_STUBNAME = dt
100cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectI18N_STUBNAME = in
101cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectLIBICU = $(STATIC_PREFIX_WHEN_USED)$(ICUPREFIX)
102cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
103cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project## Link commands to link to ICU libs
104cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectifeq ($(wildcard $(LIBDIR)/$(LIBICU)$(DATA_STUBNAME)$(ICULIBSUFFIX).lib),)
105cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectLIBICUDT=	$(top_builddir)/stubdata/$(LIBICU)$(DATA_STUBNAME)$(ICULIBSUFFIX).lib
106cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectelse
107cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectLIBICUDT=	$(LIBDIR)/$(LIBICU)$(DATA_STUBNAME)$(ICULIBSUFFIX).lib
108cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectendif
109cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectLIBICUUC=	$(LIBDIR)/$(LIBICU)$(COMMON_STUBNAME)$(ICULIBSUFFIX).lib $(LIBICUDT)
110cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectLIBICUI18N=	$(LIBDIR)/$(LIBICU)$(I18N_STUBNAME)$(ICULIBSUFFIX).lib
111cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectLIBICULE=	$(LIBDIR)/$(LIBICU)$(LAYOUT_STUBNAME)$(ICULIBSUFFIX).lib
112cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectLIBICULX=	$(LIBDIR)/$(LIBICU)$(LAYOUTEX_STUBNAME)$(ICULIBSUFFIX).lib
113cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectLIBICUIO=	$(LIBDIR)/$(LIBICU)$(IO_STUBNAME)$(ICULIBSUFFIX).lib
114cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectLIBCTESTFW=	$(top_builddir)/tools/ctestfw/$(LIBICU)$(CTESTFW_STUBNAME)$(ICULIBSUFFIX).lib
115cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectLIBICUTOOLUTIL=	$(LIBDIR)/$(LIBICU)$(TOOLUTIL_STUBNAME)$(ICULIBSUFFIX).lib
116cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
117cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project## These are the library specific LDFLAGS
118cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectLDFLAGSICUDT+=	/base:"0x4ad00000" /NOENTRY# The NOENTRY option is required for creating a resource-only DLL.
119cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectLDFLAGSICUUC=	/base:"0x4a800000"# in-uc = 1MB
120cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectLDFLAGSICUI18N=	/base:"0x4a900000"# io-in = 2MB
121cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectLDFLAGSICUIO=	/base:"0x4ab00000"# le-io = 1MB
122cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectLDFLAGSICULE=	/base:"0x4ac00000"# lx-le = 512KB
123cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectLDFLAGSICULX=	/base:"0x4ac80000"
124cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectLDFLAGSCTESTFW=# Unused for now.
125cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectLDFLAGSICUTOOLUTIL=	/base:"0x4ac00000"# Same as layout. Layout and tools probably won't mix.
126cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
127cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# The #M# is used to delete lines for icu-config
128cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# Current full path directory.
129cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectCURR_FULL_DIR=$(subst \,/,$(shell cygpath -da .))#M# -m isn't used because it doesn't work on Win98
130cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# Current full path directory for use in source code in a -D compiler option.
131cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectCURR_SRCCODE_FULL_DIR=$(subst \,\\,$(shell cygpath -da .))#M#
132cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
133cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectifeq ($(srcdir),.)
134cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectSOURCE_FILE=$<
135cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectelse
136cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectSOURCE_FILE=$(shell cygpath -dma $<)#M#
137cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectendif
138cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
139cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project## Compilation rules
140cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project%.$(STATIC_O): $(srcdir)/%.c
141cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project	$(COMPILE.c) $(STATICCPPFLAGS) $(STATICCFLAGS) /Fo$@ $(SOURCE_FILE)
142cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project%.o: $(srcdir)/%.c
143cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project	$(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) /Fo$@ $(SOURCE_FILE)
144cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
145cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project%.$(STATIC_O): $(srcdir)/%.cpp
146cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project	$(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) /Fo$@ $(SOURCE_FILE)
147cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project%.o: $(srcdir)/%.cpp
148cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project	$(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) /Fo$@ $(SOURCE_FILE)
149cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
150cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
151cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project## Dependency rules
152cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project## This is a start to how depdendencies could work
153cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# The commented out rules may not properly delete the file when ^C is pressed
154cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#   or the compiler fails.
155cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# make currently doesn't like rules with C:\\PROGRA~1\\.. in the depedency.
156cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#   So system headers are ignored by ignoring \\
157cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project%.d : $(srcdir)/%.c
158cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project	@echo "generating dependency information for $<"
159cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project	@$(GEN_DEPS.c) $< > $@
160cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#	@echo -n "generating dependency information for "
161cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#	@echo -n "$@ $(basename $<).o : " > $@
162cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#	@$(SHELL) -ec '$(GEN_DEPS.c) $< \
163cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#		| grep "#line 1 " | grep -v \\\\ | cut -d " " -f 3 \
164cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#		| /usr/bin/sort -u | sed s/\"$$/\\\\/ | sed s/^\"/\	/ >> $@ \
165cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#		|| (rm -f $@ && echo $@ && false)'
166cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
167cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project%.d : $(srcdir)/%.cpp
168cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project	@echo "generating dependency information for $<"
169cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project	@$(GEN_DEPS.cc) $< > $@
170cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#	@echo -n "generating dependency information for "
171cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#	@echo -n "$@ $(basename $<).o : " > $@
172cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#	@$(SHELL) -ec '$(GEN_DEPS.cc) $< \
173cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#		| grep "#line 1 " | grep -v \\\\ | cut -d " " -f 3 \
174cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#		| /usr/bin/sort -u | sed s/\"$$/\\\\/ | sed s/^\"/\	/ >> $@ \
175cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#		|| (rm -f $@ && echo $@ && false)'
176cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
177cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project## Compile a Windows resource file
178cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project%.res : $(srcdir)/%.rc
179cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project	rc.exe /fo$@ $(CPPFLAGS) $(SOURCE_FILE)
180cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
181cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project## Versioned target for a shared library.
182cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectFINAL_SO_TARGET= $(basename $(SO_TARGET))$(SO_TARGET_VERSION_MAJOR).$(SO)
183cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectMIDDLE_SO_TARGET=$(FINAL_SO_TARGET)
184cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
185cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project## Starting in MSVC 2005, manifest files are required. This reduces the obnoxiousness of this feature.
186cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project	POST_SO_BUILD_STEP = @([ -e $<.manifest ] && \
187cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project	( echo Embedding manifest into $< && mt.exe -nologo -manifest $<.manifest -outputresource:"$<;2" && rm -rf $<.manifest )) \
188cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project	|| true
189cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project	POST_BUILD_STEP = @([ -e $@.manifest ] && \
190cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project	( echo Embedding manifest into $@ && mt.exe -nologo -manifest $@.manifest -outputresource:"$@;1" && rm -rf $@.manifest )) \
191cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project	|| true
192cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
193cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project## Special pkgdata information that is needed
194cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectPKGDATA_VERSIONING = -r $(SO_TARGET_VERSION_MAJOR)
195cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectICUPKGDATA_INSTALL_DIR = $(shell mkdir -p  $(DESTDIR)$(ICUPKGDATA_DIR) ;  cygpath -dma $(DESTDIR)$(ICUPKGDATA_DIR))#M#
196cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectICUPKGDATA_INSTALL_LIBDIR = $(shell mkdir -p  $(DESTDIR)$(libdir) ; cygpath -dma $(DESTDIR)$(libdir))#M#
197cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
198cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project## Versioned import library names. The library names are versioned,
199cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project## but the import libraries do not need versioning.
200cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectIMPORT_LIB = $(basename $(SO_TARGET))$(IMPORT_LIB_EXT)#M#
201cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectMIDDLE_IMPORT_LIB = $(IMPORT_LIB)#M#
202cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectFINAL_IMPORT_LIB = $(MIDDLE_IMPORT_LIB)#M#
203cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
204cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# The following is for Makefile.inc's use.
205cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectICULIBSUFFIX_VERSION = $(LIB_VERSION_MAJOR)
206cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
207cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project## Versioned libraries rules
208cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#%$(SO_TARGET_VERSION_MAJOR).$(SO): %$(SO_TARGET_VERSION).$(SO)
209cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#	$(RM) $@ && cp ${<F} $@
210cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
211cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# The following rule is sometimes a no op.
212cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# We only want to do a post-build step when a manifest file doesn't exist.
213cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project%.$(SO): %$(SO_TARGET_VERSION_MAJOR).$(SO)
214cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project	@echo -n
215cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project	$(POST_SO_BUILD_STEP)
216cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
217cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project## Install libraries as executable
218cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectINSTALL-L=$(INSTALL_PROGRAM)
219cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
220cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# Environment variable to set a runtime search path
221cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectLDLIBRARYPATH_ENVVAR = PATH
222cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
223cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# These are needed to allow the pkgdata nmake files to work
224cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectPKGDATA_OPTS = -v
225cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectPKGDATA_INVOKE_OPTS = MAKEFLAGS=
226cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
227cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project# Include the version information in the shared library
228cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectENABLE_SO_VERSION_DATA=1
229cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
230cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project## End Cygwin-specific setup
231cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project
232cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project