1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Cygwin with Microsoft Visual C++ compiler specific setup
264339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert## Copyright (C) 2016 and later: Unicode, Inc. and others.
364339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert## License & terms of use: http://www.unicode.org/copyright.html
48393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius## Copyright (c) 2001-2013, International Business Machines Corporation and
5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## others. All Rights Reserved.
6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# We install sbin tools into the same bin directory because
8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# pkgdata needs some of the tools in sbin, and we can't always depend on
9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# icu-config working on Windows.
10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querusbindir=$(bindir)
11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Commands to generate dependency files
13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruGEN_DEPS.c=	:
14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruGEN_DEPS.cc=	:
15fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#GEN_DEPS.c=	$(COMPILE.c) -E
16fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#GEN_DEPS.cc=	$(COMPILE.cc) -E
17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
18b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Flags to create/use a static library
19b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruifneq ($(ENABLE_SHARED),YES)
20b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Make sure that the static libraries can be built and used
21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruCPPFLAGS += -DU_STATIC_IMPLEMENTATION#M#
22b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruelse
23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Make sure that the static libraries can be built
24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruSTATICCPPFLAGS = -DU_STATIC_IMPLEMENTATION
25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruendif
26b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Flags for position independent code
28b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruSHAREDLIBCFLAGS = 
29b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruSHAREDLIBCXXFLAGS = 
30b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruSHAREDLIBCPPFLAGS =
31b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
32b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Additional flags when building libraries and with threads
33b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLIBCPPFLAGS = 
34b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruifeq ($(ENABLE_RELEASE),1)
36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# Make sure that assertions are disabled
37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruCPPFLAGS+=-DU_RELEASE=1#M#
38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruendif
39b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
40c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queruifeq ($(ENABLE_DEBUG),1)
41c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru# Pass debugging flag through
42c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste QueruCPPFLAGS+=-D_DEBUG=1#M#
43c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste QueruICULIBSUFFIX:=$(ICULIBSUFFIX)d#M#
44c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queruendif
45c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
46b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# /GF pools strings and places them into read-only memory
47b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# /EHsc enables exception handling
48b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# /Zc:wchar_t makes wchar_t a native type. Required for C++ ABI compatibility.
49b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# -D_CRT_SECURE_NO_DEPRECATE is needed to quiet warnings about using standard C functions.
50fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusCFLAGS+=-GF -nologo
51fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusCXXFLAGS+=-GF -nologo -EHsc -Zc:wchar_t
52c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste QueruCPPFLAGS+=-D_CRT_SECURE_NO_DEPRECATE
53103e9ffba2cba345d0078eb8b8db33249f81840aCraig CorneliusDEFS+=-DWIN32 -DCYGWINMSVC
54fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusLDFLAGS+=-nologo
55b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
56b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# Commands to compile
57fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusCOMPILE.c=	$(CC) $(CPPFLAGS) $(DEFS) $(CFLAGS) -c
58fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusCOMPILE.cc=	$(CXX) $(CPPFLAGS) $(DEFS) $(CXXFLAGS) -c
59b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
60b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# Commands to link
61fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusLINK.c=		LINK.EXE -subsystem:console $(LDFLAGS)
62fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusLINK.cc=	LINK.EXE -subsystem:console $(LDFLAGS)
63b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
64b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Commands to make a shared library
65fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusSHLIB.c=	LINK.EXE -DLL $(LDFLAGS)
66fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusSHLIB.cc=	LINK.EXE -DLL $(LDFLAGS)
67b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
68b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Compiler switch to embed a runtime search path
69b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLD_RPATH=	
70b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLD_RPATH_PRE=
71b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
72b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Compiler switch to embed a library name
73fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusLD_SONAME = -IMPLIB:$(SO_TARGET:.dll=.lib)
74b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
75b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Shared object suffix
76b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruSO = dll
77b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Non-shared intermediate object suffix
78b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruSTATIC_O = ao
79b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# OUTOPT is for creating a specific output name
80fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusOUTOPT = -out:
81b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
82b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# Static library prefix and file extension
83b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLIBSICU = $(STATIC_PREFIX)$(ICUPREFIX)
84b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruA = lib
85b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
86b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# Cygwin's ar can't handle Win64 right now. So we use Microsoft's tool instead.
87b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruAR = LIB.EXE#M#
88fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusARFLAGS := -nologo $(ARFLAGS:r=)#M#
89b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruRANLIB = ls -s#M#
90fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusAR_OUTOPT = -OUT:#M#
91b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
92b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru## An import library is needed for z/OS, MSVC and Cygwin
93b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruIMPORT_LIB_EXT = .lib
94b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
95b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLIBPREFIX=
96b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDEFAULT_LIBS = advapi32.lib
97b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
98b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# Change the stubnames so that poorly working FAT disks and installation programs can work.
99b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# This is also for backwards compatibility.
100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDATA_STUBNAME = dt
101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruI18N_STUBNAME = in
102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLIBICU = $(STATIC_PREFIX_WHEN_USED)$(ICUPREFIX)
103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Link commands to link to ICU libs
105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruifeq ($(wildcard $(LIBDIR)/$(LIBICU)$(DATA_STUBNAME)$(ICULIBSUFFIX).lib),)
106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLIBICUDT=	$(top_builddir)/stubdata/$(LIBICU)$(DATA_STUBNAME)$(ICULIBSUFFIX).lib
107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruelse
108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLIBICUDT=	$(LIBDIR)/$(LIBICU)$(DATA_STUBNAME)$(ICULIBSUFFIX).lib
109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruendif
110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLIBICUUC=	$(LIBDIR)/$(LIBICU)$(COMMON_STUBNAME)$(ICULIBSUFFIX).lib $(LIBICUDT)
111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLIBICUI18N=	$(LIBDIR)/$(LIBICU)$(I18N_STUBNAME)$(ICULIBSUFFIX).lib
112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLIBICULE=	$(LIBDIR)/$(LIBICU)$(LAYOUT_STUBNAME)$(ICULIBSUFFIX).lib
113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLIBICULX=	$(LIBDIR)/$(LIBICU)$(LAYOUTEX_STUBNAME)$(ICULIBSUFFIX).lib
114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLIBICUIO=	$(LIBDIR)/$(LIBICU)$(IO_STUBNAME)$(ICULIBSUFFIX).lib
115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLIBCTESTFW=	$(top_builddir)/tools/ctestfw/$(LIBICU)$(CTESTFW_STUBNAME)$(ICULIBSUFFIX).lib
116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLIBICUTOOLUTIL=	$(LIBDIR)/$(LIBICU)$(TOOLUTIL_STUBNAME)$(ICULIBSUFFIX).lib
117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## These are the library specific LDFLAGS
119fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusLDFLAGSICUDT+=	-base:"0x4ad00000" -NOENTRY# The NOENTRY option is required for creating a resource-only DLL.
120fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusLDFLAGSICUUC=	-base:"0x4a800000"# in-uc = 1MB
121fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusLDFLAGSICUI18N=	-base:"0x4a900000"# io-in = 2MB
122fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusLDFLAGSICUIO=	-base:"0x4ab00000"# le-io = 1MB
123fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusLDFLAGSICULX=	-base:"0x4ac80000"
124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLDFLAGSCTESTFW=# Unused for now.
125fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusLDFLAGSICUTOOLUTIL=	-base:"0x4ac00000"# Same as layout. Layout and tools probably won't mix.
126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# The #M# is used to delete lines for icu-config
128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# Current full path directory.
1298393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig CorneliusCURR_FULL_DIR?=$(subst \,/,$(shell cygpath -da .))#M# -m isn't used because it doesn't work on Win98
130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# Current full path directory for use in source code in a -D compiler option.
131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruCURR_SRCCODE_FULL_DIR=$(subst \,\\,$(shell cygpath -da .))#M#
132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruifeq ($(srcdir),.)
134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruSOURCE_FILE=$<
135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruelse
136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruSOURCE_FILE=$(shell cygpath -dma $<)#M#
137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruendif
138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Compilation rules
140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%.$(STATIC_O): $(srcdir)/%.c
141fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius	$(COMPILE.c) $(STATICCPPFLAGS) $(STATICCFLAGS) -Fo$@ $(SOURCE_FILE)
142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%.o: $(srcdir)/%.c
143fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius	$(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) -Fo$@ $(SOURCE_FILE)
144b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
145b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%.$(STATIC_O): $(srcdir)/%.cpp
146fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius	$(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -Fo$@ $(SOURCE_FILE)
147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%.o: $(srcdir)/%.cpp
148fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius	$(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -Fo$@ $(SOURCE_FILE)
149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Dependency rules
152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## This is a start to how depdendencies could work
153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# The commented out rules may not properly delete the file when ^C is pressed
154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#   or the compiler fails.
155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# make currently doesn't like rules with C:\\PROGRA~1\\.. in the depedency.
156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#   So system headers are ignored by ignoring \\
157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%.d : $(srcdir)/%.c
158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru	@echo "generating dependency information for $<"
159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru	@$(GEN_DEPS.c) $< > $@
160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#	@echo -n "generating dependency information for "
161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#	@echo -n "$@ $(basename $<).o : " > $@
162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#	@$(SHELL) -ec '$(GEN_DEPS.c) $< \
163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#		| grep "#line 1 " | grep -v \\\\ | cut -d " " -f 3 \
164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#		| /usr/bin/sort -u | sed s/\"$$/\\\\/ | sed s/^\"/\	/ >> $@ \
165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#		|| (rm -f $@ && echo $@ && false)'
166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%.d : $(srcdir)/%.cpp
168b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru	@echo "generating dependency information for $<"
169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru	@$(GEN_DEPS.cc) $< > $@
170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#	@echo -n "generating dependency information for "
171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#	@echo -n "$@ $(basename $<).o : " > $@
172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#	@$(SHELL) -ec '$(GEN_DEPS.cc) $< \
173b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#		| grep "#line 1 " | grep -v \\\\ | cut -d " " -f 3 \
174b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#		| /usr/bin/sort -u | sed s/\"$$/\\\\/ | sed s/^\"/\	/ >> $@ \
175b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#		|| (rm -f $@ && echo $@ && false)'
176b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Compile a Windows resource file
178b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%.res : $(srcdir)/%.rc
179fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius	rc.exe -fo$@ $(CPPFLAGS) $(SOURCE_FILE)
180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
181b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Versioned target for a shared library.
182b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruFINAL_SO_TARGET= $(basename $(SO_TARGET))$(SO_TARGET_VERSION_MAJOR).$(SO)
183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruMIDDLE_SO_TARGET=$(FINAL_SO_TARGET)
184b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
185b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Starting in MSVC 2005, manifest files are required. This reduces the obnoxiousness of this feature.
186b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru	POST_SO_BUILD_STEP = @([ -e $<.manifest ] && \
187b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru	( echo Embedding manifest into $< && mt.exe -nologo -manifest $<.manifest -outputresource:"$<;2" && rm -rf $<.manifest )) \
188b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru	|| true
189b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru	POST_BUILD_STEP = @([ -e $@.manifest ] && \
190b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru	( echo Embedding manifest into $@ && mt.exe -nologo -manifest $@.manifest -outputresource:"$@;1" && rm -rf $@.manifest )) \
191b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru	|| true
192b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
193b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Special pkgdata information that is needed
194b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruPKGDATA_VERSIONING = -r $(SO_TARGET_VERSION_MAJOR)
195b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste QueruICUPKGDATA_INSTALL_DIR = $(shell mkdir -p  $(DESTDIR)$(ICUPKGDATA_DIR) ;  cygpath -dma $(DESTDIR)$(ICUPKGDATA_DIR))#M#
196b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste QueruICUPKGDATA_INSTALL_LIBDIR = $(shell mkdir -p  $(DESTDIR)$(libdir) ; cygpath -dma $(DESTDIR)$(libdir))#M#
197b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
198b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Versioned import library names. The library names are versioned,
199b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## but the import libraries do not need versioning.
200b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruIMPORT_LIB = $(basename $(SO_TARGET))$(IMPORT_LIB_EXT)#M#
201b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruMIDDLE_IMPORT_LIB = $(IMPORT_LIB)#M#
202b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruFINAL_IMPORT_LIB = $(MIDDLE_IMPORT_LIB)#M#
203b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
204b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# The following is for Makefile.inc's use.
205b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruICULIBSUFFIX_VERSION = $(LIB_VERSION_MAJOR)
206b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
207b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Versioned libraries rules
208b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#%$(SO_TARGET_VERSION_MAJOR).$(SO): %$(SO_TARGET_VERSION).$(SO)
209b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#	$(RM) $@ && cp ${<F} $@
210b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
211b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# The following rule is sometimes a no op.
212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# We only want to do a post-build step when a manifest file doesn't exist.
213b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru%.$(SO): %$(SO_TARGET_VERSION_MAJOR).$(SO)
214b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru	@echo -n
215b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru	$(POST_SO_BUILD_STEP)
216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
217b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## Install libraries as executable
218b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruINSTALL-L=$(INSTALL_PROGRAM)
219b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
220b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# Environment variable to set a runtime search path
221b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLDLIBRARYPATH_ENVVAR = PATH
222b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
223b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# These are needed to allow the pkgdata nmake files to work
224b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruPKGDATA_INVOKE_OPTS = MAKEFLAGS=
225b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
226b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# Include the version information in the shared library
227b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruENABLE_SO_VERSION_DATA=1
228b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
229b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru## End Cygwin-specific setup
230b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
231