1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/intl/icu/source/config/mh-os390 Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,233 @@ 1.4 +## -*-makefile-*- 1.5 +## os/390, z/OS specific setup 1.6 +## Copyright (c) 1999-2013, International Business Machines Corporation and 1.7 +## others. All Rights Reserved. 1.8 + 1.9 +################################################################### 1.10 +# IMPORTANT NOTE # 1.11 +################################################################### 1.12 +# Before you try to run the Makefile, make sure you have the # 1.13 +# environment variables set. # 1.14 +# # 1.15 +# If you are going to do the OS390BATCH build, make sure you have # 1.16 +# the OS390BATCH environment variable set. # 1.17 +# # 1.18 +# export OS390BATCH=1 # 1.19 +# # 1.20 +# To build a version of ICU that does not use IEEE Floating point # 1.21 +# # 1.22 +# export IEEE390=0 # 1.23 +# # 1.24 +# To build a version of ICU which uses a two data libraries # 1.25 +# where the smaller one is loaded first, use OS390_STUBDATA. # 1.26 +# USAGE OF THIS OPTION IS DEPRECATED. You should look into using # 1.27 +# Link Pack Area (LPA), library lookaside facility (LLA) or other # 1.28 +# z/OS options that enable page fault based loading of read-only # 1.29 +# code/data instead of this option. # 1.30 +# This option will be removed in a future version of ICU. # 1.31 +# # 1.32 +# export OS390_STUBDATA=1 # 1.33 +# # 1.34 +# To build a version of ICU which exploits the C/C++ compiler # 1.35 +# and runtime Extra Performance Linkage (XPLINK), specify # 1.36 +# # 1.37 +# export OS390_XPLINK=1 # 1.38 +# # 1.39 +################################################################### 1.40 + 1.41 +# TODO: Fix this configuration so that icu-config will work! 1.42 +# If statements don't work well when icu-config is generated. 1.43 +ifeq (${IEEE390},) 1.44 +IEEE390=1#M# 1.45 +endif 1.46 + 1.47 +ifeq (${IEEE390}, 1) 1.48 +ICU_IEEE =#M# 1.49 +else 1.50 +ICU_IEEE = -Wc,'FLOAT(IEEE)' -DIEEE_754=0#M# 1.51 +endif 1.52 + 1.53 +## Additional flags when building libraries and with threads 1.54 +THREADSCPPFLAGS = -D_OPEN_THREADS 1.55 + 1.56 +# For a dynamically called DLL module to share access to the POSIX external 1.57 +# variables, with its caller, the DLL module must define these _SHR_* macros. 1.58 +SHAREDLIBCPPFLAGS = -D_SHR_TZNAME -D_SHR_TIMEZONE 1.59 + 1.60 +# -Wc,expo is used to export all functions 1.61 +SHAREDLIBCFLAGS = -Wc,expo 1.62 +SHAREDLIBCXXFLAGS = -Wc,expo 1.63 + 1.64 +# TODO: Consider using -Wc,roc,ros for making the data and strings readonly 1.65 +# -Wc,"ros" seems to work, but not the "roc" 1.66 +# The RENT option makes the program reentrant. This may not really have the same 1.67 +# meaning as normal reentrancy on other platforms. See the z/OS documentation 1.68 +# for details. This is the default for C++, but not C. 1.69 +# The DLL option must be used by the callee and caller code when using shared libraries. 1.70 +# NOCSECT might be used as an optimization option. 1.71 +# -+ means accept any file extension as a C++ file. By default only .C is accepted. 1.72 +CFLAGS += -Wc,DLL,ROS,RENT,'ARCH(7)','LOC(POSIX)',NOANSIALIAS,'LANGLVL(EXTENDED)' $(ICU_IEEE) 1.73 +CXXFLAGS += -Wc,DLL,ROS,RTTI,'ARCH(7)','LOC(POSIX)',NOANSIALIAS,'LANGLVL(EXTENDED)' $(ICU_IEEE) -+ 1.74 +ARFLAGS = -cr 1.75 + 1.76 +# _MSE_PROTOS usually interacts with _XOPEN_SOURCE. It affects some standard 1.77 +# C functions that use wchar_t, and it selects behavior for 1.78 +# multibyte extension support (MSE) functions. 1.79 +#DEFS += -D_MSE_PROTOS 1.80 + 1.81 +ifeq (${OS390_XPLINK}, 1) 1.82 +#SH# if [ "x$OS390_XPLINK" = "x1" ]; then 1.83 +# These lines must be the last options specified. 1.84 +# GOFF is is the strategic object module format for S/390. It is required for XPLINK. 1.85 +# NOTEMPINC could be used if ICU starts using templates. 1.86 +ICU_XPLINK_C = -Wc,'xplink(backchain,storeargs),goff' 1.87 +ICU_XPLINK_CXX = -Wc,'xplink(backchain,storeargs),goff' -Wc,'NOTEMPINC' 1.88 +ICU_XPLINK_L = -Wl,xplink 1.89 +#SH# fi 1.90 +endif 1.91 + 1.92 +## OS390BATCH 1.93 +ifeq (${OS390BATCH},1) 1.94 +DEFS += -DOS390BATCH#M# 1.95 +endif 1.96 + 1.97 +## Commands to generate dependency files 1.98 +GEN_DEPS.c= makedep 1.99 +GEN_DEPS.cc= makedep 1.100 + 1.101 +## Commands to compile 1.102 +# _CXX_STEPS="-1" is a prelink step when compiling C and C++, and 1.103 +# it's only needed for long function names 1.104 +COMPILE.c = $(COMPILE_LINK_ENVVAR) $(CC) $(DEFS) $(CPPFLAGS) $(CFLAGS) $(ICU_XPLINK_C) -c 1.105 +COMPILE.cc = $(COMPILE_LINK_ENVVAR) $(CXX) $(DEFS) $(CPPFLAGS) $(CXXFLAGS) $(ICU_XPLINK_CXX) -c 1.106 + 1.107 +# Commands to link 1.108 +LINK.c= $(COMPILE_LINK_ENVVAR) $(CC) $(CFLAGS) -Wl,dll $(LDFLAGS) $(ICU_XPLINK_L) 1.109 +LINK.cc= $(COMPILE_LINK_ENVVAR) $(CXX) $(CXXFLAGS) -Wl,dll $(LDFLAGS) $(ICU_XPLINK_L) 1.110 + 1.111 +## Commands for shared library (dll) 1.112 +SHLIB.c= $(LINK.c) 1.113 +SHLIB.cc= $(LINK.cc) 1.114 + 1.115 +## Compiler switch to embed a runtime search path 1.116 +LD_RPATH= -I 1.117 + 1.118 +## Environment variable to set a runtime search path 1.119 +LDLIBRARYPATH_ENVVAR = LIBPATH 1.120 + 1.121 +## An import library (a.k.a. sidedeck) is needed for z/OS and MSVC 1.122 +IMPORT_LIB_EXT = .x 1.123 + 1.124 +## Versioned target for a shared library. 1.125 +FINAL_SO_TARGET= $(basename $(SO_TARGET))$(SO_TARGET_VERSION).$(SO) 1.126 +MIDDLE_SO_TARGET= $(basename $(SO_TARGET))$(SO_TARGET_VERSION_MAJOR).$(SO) 1.127 + 1.128 +## Versioned import library names. 1.129 +IMPORT_LIB = $(basename $(notdir $(SO_TARGET)))$(IMPORT_LIB_EXT)#M# 1.130 +MIDDLE_IMPORT_LIB = $(basename $(notdir $(MIDDLE_SO_TARGET)))$(IMPORT_LIB_EXT)#M# 1.131 +FINAL_IMPORT_LIB = $(basename $(notdir $(FINAL_SO_TARGET)))$(IMPORT_LIB_EXT)#M# 1.132 + 1.133 +## Non-shared intermediate object suffix 1.134 +STATIC_O = o 1.135 + 1.136 +ifeq ($(OS390_STUBDATA),1) 1.137 +## Suffix of the subset data library for dual common library support 1.138 +STUB_SUFFIX=_stub#M# 1.139 +DEFS += -DOS390_STUBDATA -DU_LIBICUDATA_NAME=\"$(ICUPREFIX)$(DATA_STUBNAME)$(ICULIBSUFFIX)\"#M# 1.140 +endif 1.141 + 1.142 +ifeq ($(OS390BATCH),1) 1.143 +## IXM is used as a name prefix for XML Toolkit, default value 1.144 +ifeq ($(PDS_NAME_PREFIX),) 1.145 +PDS_NAME_PREFIX= IXMI 1.146 +endif 1.147 +ifeq ($(OS390_STUBDATA),1) 1.148 +BATCH_STUB_TARGET= "//'${LOADMOD}(${PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR}D1)'" 1.149 +BATCH_LIBICUDT= "//'${LOADEXP}(${PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR}D1)'" 1.150 +else 1.151 +BATCH_STUB_TARGET= "//'${LOADMOD}(${PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR}DA)'" 1.152 +BATCH_LIBICUDT= "//'${LOADEXP}(${PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR}DA)'" 1.153 +PKGDATA_DEFS += -DU_LIBICUDATA_NAME=\"$(ICUPREFIX)$(DATA_STUBNAME)$(ICULIBSUFFIX)\" 1.154 +endif 1.155 + 1.156 +BATCH_COMMON_TARGET="//'${LOADMOD}(${PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR}UC)'" 1.157 +BATCH_I18N_TARGET="//'${LOADMOD}(${PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR}IN)'" 1.158 +BATCH_IO_TARGET="//'${LOADMOD}(${PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR}IO)'" 1.159 +BATCH_LAYOUT_TARGET="//'${LOADMOD}(${PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR}LE)'" 1.160 +BATCH_LAYOUTEX_TARGET="//'${LOADMOD}(${PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR}LX)'" 1.161 + 1.162 +BATCH_LIBICUUC= "//'${LOADEXP}(${PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR}UC)'" 1.163 +BATCH_LIBICUI18N= "//'${LOADEXP}(${PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR}IN)'" 1.164 +BATCH_LIBICUIO= "//'${LOADEXP}(${PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR}IO)'" 1.165 +BATCH_LIBICULE= "//'${LOADEXP}(${PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR}LE)'" 1.166 +BATCH_LIBICULX= "//'${LOADEXP}(${PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR}LX)'" 1.167 +endif 1.168 + 1.169 + 1.170 +## Link commands to link to ICU libs 1.171 +LIBICUDT= $(top_builddir)/stubdata/$(LIBICU)data$(ICULIBSUFFIX)$(STUB_SUFFIX)$(SO_TARGET_VERSION).x 1.172 +LIBICUUC= $(top_builddir)/common/$(LIBICU)uc$(ICULIBSUFFIX)$(SO_TARGET_VERSION).x 1.173 +LIBICUI18N= $(top_builddir)/i18n/$(LIBICU)i18n$(ICULIBSUFFIX)$(SO_TARGET_VERSION).x 1.174 +LIBICULE= $(top_builddir)/layout/$(LIBICU)le$(ICULIBSUFFIX)$(SO_TARGET_VERSION).x 1.175 +LIBICULX= $(top_builddir)/layoutex/$(LIBICU)lx$(ICULIBSUFFIX)$(SO_TARGET_VERSION).x 1.176 +LIBICUIO= $(top_builddir)/io/$(LIBICU)io$(ICULIBSUFFIX)$(SO_TARGET_VERSION).x 1.177 +LIBCTESTFW= $(top_builddir)/tools/ctestfw/$(LIBICU)test$(ICULIBSUFFIX)$(SO_TARGET_VERSION).x 1.178 +LIBICUTOOLUTIL= $(top_builddir)/tools/toolutil/$(LIBICU)tu$(ICULIBSUFFIX)$(SO_TARGET_VERSION).x 1.179 + 1.180 +ifneq (${ICUDATA_CHAR},e) 1.181 +#SH# if [ "$ICUDATA_CHAR" != "e" ]; then 1.182 +## We're in ASCII mode. 1.183 +CFLAGS += -Wc,'ascii' 1.184 +CXXFLAGS += -Wc,'ascii' 1.185 +SO = so 1.186 +else 1.187 +#SH# else 1.188 +## We're in EBCDIC mode. 1.189 +## Shared object suffix 1.190 +SO = dll 1.191 +endif 1.192 +#SH# fi 1.193 + 1.194 +## Special 390 rules 1.195 + 1.196 +## Build archive from object 1.197 +%.a : $(OBJECTS) 1.198 + $(AR) $(ARFLAGS) $@ $(OBJECTS) 1.199 + 1.200 +## Compilation rules 1.201 +%.$(STATIC_O): $(srcdir)/%.c 1.202 + $(COMPILE.c) $(STATICCPPFLAGS) $(STATICCFLAGS) -o $@ $< 1.203 +%.o: $(srcdir)/%.c 1.204 + $(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) -o $@ $< 1.205 + 1.206 +%.$(STATIC_O): $(srcdir)/%.cpp 1.207 + $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $< 1.208 +%.o: $(srcdir)/%.cpp 1.209 + $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $< 1.210 + 1.211 +## Dependency rules 1.212 +%.d : %.u 1.213 + @$(SHELL) -ec 'cat $< \ 1.214 + | sed '\''s/\($*\)\.o[ :]*/\1.o $@ : /g'\'' > $@; \ 1.215 + [ -s $@ ] || rm -f $@ ; rm -f $<' 1.216 + 1.217 +%.u : $(srcdir)/%.c 1.218 + @echo "generating dependency information for $<" 1.219 + @$(SHELL) -ec 'touch $*.u > /dev/null 2>&1' 1.220 + @$(SHELL) -ec '$(GEN_DEPS.c) -f $*.u $< > /dev/null 2>&1' 1.221 + 1.222 +%.u : $(srcdir)/%.cpp 1.223 + @echo "generating dependency information for $<" 1.224 + @$(SHELL) -ec 'touch $*.u > /dev/null 2>&1' 1.225 + @$(SHELL) -ec '$(GEN_DEPS.cc) -f $*.u $< > /dev/null 2>&1' 1.226 + 1.227 +## Versioned libraries rules 1.228 +%$(SO_TARGET_VERSION_MAJOR).$(SO): %$(SO_TARGET_VERSION).$(SO) 1.229 + $(RM) $@ && ln -s ${*F}$(SO_TARGET_VERSION).$(SO) $@ 1.230 +%.$(SO): %$(SO_TARGET_VERSION).$(SO) 1.231 + $(RM) $@ && ln -s ${*F}$(SO_TARGET_VERSION).$(SO) $@ 1.232 + 1.233 +## Install libraries as executable 1.234 +INSTALL-L=$(INSTALL_PROGRAM) 1.235 + 1.236 +## End 390-specific setup