1f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## -*-makefile-*- 2f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Cygwin-specific setup 3f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Copyright (c) 2001-2010, International Business Machines Corporation and 4f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## others. All Rights Reserved. 5f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 6f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Commands to generate dependency files 7f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)GEN_DEPS.c= $(CC) -E -MM $(DEFS) $(CPPFLAGS) 8f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)GEN_DEPS.cc= $(CXX) -E -MM $(DEFS) $(CPPFLAGS) 9f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 10f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Flags to create/use a static library 11f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)ifneq ($(ENABLE_SHARED),YES) 12f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Make sure that the static libraries can be built and used 13f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)CPPFLAGS += -DU_STATIC_IMPLEMENTATION 14f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)else 15f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Make sure that the static libraries can be built 16f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)STATICCPPFLAGS = -DU_STATIC_IMPLEMENTATION 17f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)endif 18f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 19f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Flags for position independent code 20f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)SHAREDLIBCFLAGS = 21f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)SHAREDLIBCXXFLAGS = 22f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)SHAREDLIBCPPFLAGS = -DPIC 23f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 24f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Additional flags when building libraries and with threads 25f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)THREADSCPPFLAGS = -D_REENTRANT 26f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)LIBCPPFLAGS = 27f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 28f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# Commands to link. Link with C++ in case static libraries are used. 29f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)LINK.c= $(CXX) $(CXXFLAGS) $(LDFLAGS) 30f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#LINK.cc= $(CXX) $(CXXFLAGS) $(LDFLAGS) 31f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 32f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Shared library options 33f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)LD_SOOPTIONS= -Wl,-Bsymbolic 34f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 35f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Commands to make a shared library 36f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# $(subst) won't work in shell script. #M# at the end omits these 37f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# lines from the shell script (Make only) 38f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)SHLIB.c= $(CC) $(CFLAGS) $(LDFLAGS) -shared $(LD_SOOPTIONS) -Wl,--enable-auto-import -Wl,--out-implib=$(subst cyg,lib,$@).$(A)#M# 39f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)SHLIB.cc= $(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(LD_SOOPTIONS) -Wl,--enable-auto-import -Wl,--out-implib=$(subst cyg,lib,$@).$(A)#M# 40f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# the #SH# lines don't go through further postprocessing. 41f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# so, they must be valid shell script starting from column 4 42f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#SH#SHLIB_c="$(CC) $(CFLAGS) $(LDFLAGS) -shared " 43f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#SH#SHLIB_cc="$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared " 44f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 45f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 46f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Compiler switch to embed a runtime search path 47f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)LD_RPATH= 48f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)LD_RPATH_PRE= -Wl,-rpath, 49f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 50f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Compiler switch to embed a library name 51f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)LD_SONAME = 52f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 53f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Shared object suffix 54f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)SO = dll 55f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Non-shared intermediate object suffix 56f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)STATIC_O = ao 57f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)LIBICU = cyg$(ICUPREFIX) 58f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## To have an import library is better on Cygwin 59f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)IMPORT_LIB_EXT = .dll.a 60f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 61f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Compilation rules 62f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)%.$(STATIC_O): $(srcdir)/%.c 63f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) $(COMPILE.c) $(STATICCPPFLAGS) $(STATICCFLAGS) -o $@ $< 64f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)%.o: $(srcdir)/%.c 65f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) $(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) -o $@ $< 66f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 67f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)%.$(STATIC_O): $(srcdir)/%.cpp 68f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $< 69f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)%.o: $(srcdir)/%.cpp 70f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $< 71f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 72f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 73f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Dependency rules 74f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)%.d: $(srcdir)/%.c 75f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) @echo "generating dependency information for $<" 76f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) @echo -n "$@ " > $@ 77f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) @$(GEN_DEPS.c) $< >> $@ || (rm -f $@ && FALSE) 78f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 79f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)%.d: $(srcdir)/%.cpp 80f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) @echo "generating dependency information for $<" 81f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) @echo -n "$@ " > $@ 82f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) @$(GEN_DEPS.cc) $< >> $@ || (rm -f $@ && FALSE) 83f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 84f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Versioned target for a shared library. 85f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Since symbolic links don't work the same way on Windows, 86f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## we only use the version major number. 87f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#FINAL_SO_TARGET=$(basename $(SO_TARGET))$(SO_TARGET_VERSION).$(SO) 88f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)FINAL_SO_TARGET=$(basename $(SO_TARGET))$(SO_TARGET_VERSION_MAJOR).$(SO) 89f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)MIDDLE_SO_TARGET=$(FINAL_SO_TARGET) 90f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 91f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)IMPORT_LIB = $(subst cyg,lib,$(FINAL_SO_TARGET)).$(A)#M# 92f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)MIDDLE_IMPORT_LIB = $(subst cyg,lib,$(basename $(SO_TARGET)))$(SO_TARGET_VERSION_MAJOR).$(SO).$(A)#M# 93f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)FINAL_IMPORT_LIB = $(IMPORT_LIB)#M# 94f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 95f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# The following is for Makefile.inc's use. 96f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)ICULIBSUFFIX_VERSION = $(LIB_VERSION_MAJOR) 97f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 98f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Versioned libraries rules 99f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#%$(SO_TARGET_VERSION_MAJOR).$(SO): %$(SO_TARGET_VERSION).$(SO) 100f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# $(RM) $@ && cp ${<F} $@ 101f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)%.$(SO): %$(SO_TARGET_VERSION_MAJOR).$(SO) 102f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) $(RM) $(subst cyg,lib,$@).$(A) && ln -s $(subst cyg,lib,${<F}).$(A) $(subst cyg,lib,$@).$(A) 103f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 104f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Install libraries as executable 105f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)INSTALL-L=$(INSTALL_PROGRAM) 106f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 107f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## Bind internal references 108f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 109f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# LDflags that pkgdata will use 110f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)BIR_LDFLAGS= -Wl,-Bsymbolic 111f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 112f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# Dependencies [i.e. map files] for the final library 113f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)BIR_DEPS= 114f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 115f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# Environment variable to set a runtime search path 116f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)LDLIBRARYPATH_ENVVAR = PATH 117f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 118f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# The type of assembly to write for generating an object file 119f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)GENCCODE_ASSEMBLY=-a gcc-cygwin 120f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 121f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# put this here again so it gets cyguc... 122f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 123f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#SH#ICULIBS_COMMON_LIB_NAME="${LIBICU}uc${ICULIBSUFFIX}${ICULIBSUFFIX_VERSION}.${SO}" 124f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 125f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)# for icu-config 126f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 127f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#SH### copied from Makefile.inc 128f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#SH#ICULIBS_COMMON="-l${LIBICU}uc${ICULIBSUFFIX}${ICULIBSUFFIX_VERSION}" 129f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#SH#ICULIBS_DATA="-l${LIBICU}${DATA_STUBNAME}${ICULIBSUFFIX}${ICULIBSUFFIX_VERSION}" 130f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#SH#ICULIBS_I18N="-l${LIBICU}${I18N_STUBNAME}${ICULIBSUFFIX}${ICULIBSUFFIX_VERSION}" 131f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#SH#ICULIBS_TOOLUTIL="-l${LIBICU}tu${ICULIBSUFFIX}${ICULIBSUFFIX_VERSION}" 132f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#SH#ICULIBS_CTESTFW="-l${LIBICU}ctestfw${ICULIBSUFFIX}${ICULIBSUFFIX_VERSION}" 133f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#SH#ICULIBS_ICUIO="-l${LIBICU}io${ICULIBSUFFIX}${ICULIBSUFFIX_VERSION}" 134f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#SH#ICULIBS_OBSOLETE="-l${LIBICU}obsolete${ICULIBSUFFIX}${ICULIBSUFFIX_VERSION}" 135f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#SH#ICULIBS_LAYOUT="-l${LIBICU}le${ICULIBSUFFIX}${ICULIBSUFFIX_VERSION}" 136f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#SH#ICULIBS_LAYOUTEX="-l${LIBICU}lx${ICULIBSUFFIX}${ICULIBSUFFIX_VERSION}" 137f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#SH#ICULIBS_BASE="${LIBS} -L${libdir}" 138f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#SH#ICULIBS="${ICULIBS_BASE} ${ICULIBS_I18N} ${ICULIBS_COMMON} ${ICULIBS_DATA}" 139f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 140f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)## End Cygwin-specific setup 141f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 142