Blame source/config/mh-mingw

Packit 85c618
## -*-makefile-*-
Packit 85c618
## Cygwin/MinGW specific setup
Packit 85c618
## Copyright (c) 2001-2014, International Business Machines Corporation and
Packit 85c618
## others. All Rights Reserved.
Packit 85c618
Packit 85c618
# TODO: Finish the rest of this port. This platform port is incomplete.
Packit 85c618
Packit 85c618
# This file is similar to mh-mingw64
Packit 85c618
# Any changes made here may also need to be made in mh-mingw64
Packit 85c618
Packit 85c618
# We install sbin tools into the same bin directory because
Packit 85c618
# pkgdata needs some of the tools in sbin, and we can't always depend on
Packit 85c618
# icu-config working on Windows.
Packit 85c618
sbindir=$(bindir)
Packit 85c618
Packit 85c618
## Commands to generate dependency files
Packit 85c618
GEN_DEPS.c=	$(CC) -E -MM $(DEFS) $(CPPFLAGS)
Packit 85c618
GEN_DEPS.cc=	$(CXX) -E -MM $(DEFS) $(CPPFLAGS)
Packit 85c618
Packit 85c618
## Flags to create/use a static library
Packit 85c618
ifneq ($(ENABLE_SHARED),YES)
Packit 85c618
## Make sure that the static libraries can be built and used
Packit 85c618
CPPFLAGS += -DU_STATIC_IMPLEMENTATION
Packit 85c618
else
Packit 85c618
## Make sure that the static libraries can be built
Packit 85c618
STATICCPPFLAGS = -DU_STATIC_IMPLEMENTATION
Packit 85c618
endif
Packit 85c618
Packit 85c618
## Flags for position independent code
Packit 85c618
SHAREDLIBCFLAGS = 
Packit 85c618
SHAREDLIBCXXFLAGS = 
Packit 85c618
SHAREDLIBCPPFLAGS = -DPIC
Packit 85c618
Packit 85c618
## Additional flags when building libraries and with threads
Packit 85c618
THREADSCFLAGS = -mthreads
Packit 85c618
THREADSCXXFLAGS = -mthreads
Packit 85c618
LIBCPPFLAGS =
Packit 85c618
Packit 85c618
# Commands to link. Link with C++ in case static libraries are used.
Packit 85c618
LINK.c=       $(CXX) $(CXXFLAGS) $(LDFLAGS)
Packit 85c618
#LINK.cc=      $(CXX) $(CXXFLAGS) $(LDFLAGS)
Packit 85c618
Packit 85c618
## Shared library options
Packit 85c618
LD_SOOPTIONS= -Wl,-Bsymbolic
Packit 85c618
Packit 85c618
## Commands to make a shared library
Packit 85c618
SHLIB.c=	$(CC) $(CFLAGS) $(LDFLAGS) -shared $(LD_SOOPTIONS) -Wl,--enable-auto-import -Wl,--out-implib=$(dir $@)lib$(notdir $(@:$(SO_TARGET_VERSION_MAJOR).$(SO)=))$(IMPORT_LIB_EXT)#M#
Packit 85c618
SHLIB.cc=	$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(LD_SOOPTIONS) -Wl,--enable-auto-import -Wl,--out-implib=$(dir $@)lib$(notdir $(@:$(SO_TARGET_VERSION_MAJOR).$(SO)=))$(IMPORT_LIB_EXT)#M#
Packit 85c618
Packit 85c618
## Compiler switch to embed a runtime search path
Packit 85c618
LD_RPATH=	
Packit 85c618
LD_RPATH_PRE=	-Wl,-rpath,
Packit 85c618
Packit 85c618
## Compiler switch to embed a library name
Packit 85c618
LD_SONAME = 
Packit 85c618
Packit 85c618
## Shared object suffix
Packit 85c618
SO = dll
Packit 85c618
## Non-shared intermediate object suffix
Packit 85c618
STATIC_O = ao
Packit 85c618
Packit 85c618
ifeq ($(ENABLE_SHARED),YES)
Packit 85c618
SO_TARGET_VERSION_SUFFIX = $(SO_TARGET_VERSION_MAJOR)
Packit 85c618
else
Packit 85c618
SO_TARGET_VERSION_SUFFIX = 
Packit 85c618
endif
Packit 85c618
Packit 85c618
# Static library prefix and file extension
Packit Service 42ab05
LIBSICU = lib$(LIBPREFIX)$(STATIC_PREFIX)$(ICUPREFIX)
Packit 85c618
A = a
Packit 85c618
Packit 85c618
## An import library is needed for z/OS and MSVC
Packit 85c618
IMPORT_LIB_EXT = .dll.a
Packit 85c618
Packit 85c618
LIBPREFIX=
Packit 85c618
Packit Service 42ab05
# Change the stubnames so that poorly working FAT disks and installation programs can work.
Packit Service 42ab05
# This is also for backwards compatibility.
Packit Service 42ab05
DATA_STUBNAME = dt
Packit Service 42ab05
I18N_STUBNAME = in
Packit Service 42ab05
LIBICU = $(STATIC_PREFIX_WHEN_USED)$(ICUPREFIX)
Packit 85c618
Packit 85c618
#SH### copied from Makefile.inc
Packit 85c618
#SH## for icu-config to test with
Packit 85c618
#SH#ICULIBS_COMMON_LIB_NAME="${LIBICU}${COMMON_STUBNAME}${ICULIBSUFFIX}${ICULIBSUFFIX_VERSION}.${SO}"
Packit 85c618
#SH#ICULIBS_COMMON_LIB_NAME_A="${LIBICU}${COMMON_STUBNAME}${ICULIBSUFFIX}.${A}"
Packit 85c618
Packit Service 42ab05
#SH#ICULIBS_DATA="-l$(ICUPREFIX)$(DATA_STUBNAME)$(ICULIBSUFFIX)$(ICULIBSUFFIX_VERSION)"
Packit Service 42ab05
#SH#ICULIBS_I18N="-l$(ICUPREFIX)$(I18N_STUBNAME)$(ICULIBSUFFIX)$(ICULIBSUFFIX_VERSION)"
Packit Service 42ab05
#SH#
Packit 85c618
#SH## ICULIBS is the set of libraries your application should link
Packit 85c618
#SH## with usually. Many applications will want to add ${ICULIBS_I18N} as well. 
Packit 85c618
#SH#ICULIBS="${ICULIBS_BASE} ${ICULIBS_I18N} ${ICULIBS_COMMON} ${ICULIBS_DATA} "
Packit 85c618
Packit 85c618
# The #M# is used to delete lines for icu-config
Packit 85c618
# Current full path directory.
Packit 85c618
#CURR_FULL_DIR=$(shell pwd -W)#M# for MSYS
Packit 85c618
CURR_FULL_DIR?=$(subst \,/,$(shell cmd /c cd))#M# for Cygwin shell
Packit 85c618
# Current full path directory for use in source code in a -D compiler option.
Packit 85c618
#CURR_SRCCODE_FULL_DIR=$(subst /,\\\\,$(shell pwd -W))#M# for MSYS
Packit 85c618
CURR_SRCCODE_FULL_DIR=$(subst \,/,$(shell cmd /c cd))#M# for Cygwin shell
Packit 85c618
Packit 85c618
## Compilation rules
Packit 85c618
%.$(STATIC_O): $(srcdir)/%.c
Packit 85c618
	$(COMPILE.c) $(STATICCPPFLAGS) $(STATICCFLAGS) -o $@ $<
Packit 85c618
%.o: $(srcdir)/%.c
Packit 85c618
	$(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) -o $@ $<
Packit 85c618
Packit 85c618
%.$(STATIC_O): $(srcdir)/%.cpp
Packit 85c618
	$(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $<
Packit 85c618
%.o: $(srcdir)/%.cpp
Packit 85c618
	$(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $<
Packit 85c618
Packit 85c618
Packit 85c618
## Dependency rules
Packit 85c618
%.d: $(srcdir)/%.c
Packit 85c618
	@echo "generating dependency information for $<"
Packit 85c618
	@echo -n "$@ " > $@
Packit 85c618
	@$(GEN_DEPS.c) $< >> $@ || (rm -f $@ && FALSE)
Packit 85c618
Packit 85c618
%.d: $(srcdir)/%.cpp
Packit 85c618
	@echo "generating dependency information for $<"
Packit 85c618
	@echo -n "$@ " > $@
Packit 85c618
	@$(GEN_DEPS.cc) $< >> $@ || (rm -f $@ && FALSE)
Packit 85c618
Packit 85c618
## Versioned target for a shared library.
Packit 85c618
## Since symbolic links don't work the same way on Windows,
Packit 85c618
## we only use the version major number.
Packit 85c618
#FINAL_SO_TARGET=$(basename $(SO_TARGET))$(SO_TARGET_VERSION).$(SO)
Packit 85c618
FINAL_SO_TARGET=$(basename $(SO_TARGET))$(SO_TARGET_VERSION_MAJOR).$(SO)
Packit 85c618
MIDDLE_SO_TARGET=$(FINAL_SO_TARGET)
Packit 85c618
Packit 85c618
FINAL_IMPORT_LIB = $(dir $(SO_TARGET))lib$(notdir $(basename $(SO_TARGET)))$(IMPORT_LIB_EXT)#M#
Packit 85c618
IMPORT_LIB = $(FINAL_IMPORT_LIB)#M#
Packit 85c618
MIDDLE_IMPORT_LIB = $(FINAL_IMPORT_LIB)#M#
Packit 85c618
Packit 85c618
## Special pkgdata information that is needed
Packit 85c618
PKGDATA_VERSIONING = -r $(SO_TARGET_VERSION_MAJOR)
Packit 85c618
#ICUPKGDATA_INSTALL_DIR = $(shell cygpath -dma $(DESTDIR)$(ICUPKGDATA_DIR))#M#
Packit 85c618
#ICUPKGDATA_INSTALL_LIBDIR = $(shell cygpath -dma $(DESTDIR)$(libdir))#M#
Packit 85c618
Packit 85c618
## Versioned libraries rules
Packit 85c618
#%$(SO_TARGET_VERSION_MAJOR).$(SO): %$(SO_TARGET_VERSION).$(SO)
Packit 85c618
#	$(RM) $@ && cp ${
Packit 85c618
%.$(SO): %$(SO_TARGET_VERSION_MAJOR).$(SO)
Packit 85c618
	@echo -n
Packit 85c618
Packit 85c618
# Environment variable to set a runtime search path
Packit 85c618
LDLIBRARYPATH_ENVVAR = PATH
Packit 85c618
Packit 85c618
# The type of assembly to write for generating an object file
Packit 85c618
GENCCODE_ASSEMBLY=-a gcc-cygwin
Packit 85c618
Packit 85c618
# These are needed to allow the pkgdata GNU make files to work
Packit 85c618
PKGDATA_DEFS = -DU_MAKE=\"$(MAKE)\"
Packit 85c618
Packit 85c618
## End Cygwin/MinGW specific setup
Packit 85c618