mh-os390 (5748B)
1 ## -*-makefile-*- 2 ## Copyright (C) 2016 and later: Unicode, Inc. and others. 3 ## License & terms of use: http://www.unicode.org/copyright.html 4 ## os/390, z/OS specific setup 5 ## Copyright (c) 1999-2014, International Business Machines Corporation and 6 ## others. All Rights Reserved. 7 8 ################################################################### 9 # IMPORTANT NOTE # 10 ################################################################### 11 # Before you try to run the Makefile, make sure you have the # 12 # environment variables set. # 13 # # 14 # To build a version of ICU that does not use IEEE Floating point # 15 # # 16 # export ICU_IS_NOT_IEEE754=1 # 17 ################################################################### 18 BUILD_HOST_ICU=OS390 19 ifeq (${ICU_IS_NOT_IEEE754}, 1) 20 ICU_IEEE=-mzos-float-kind=hex -DIEEE_754=0 21 else 22 ICU_IEEE=-mzos-float-kind=ieee -DIEEE_754=1 23 endif 24 ifeq (${TARGET_ICU_ARCH},) 25 TARGET_ICU_ARCH=arch10 26 endif 27 ifeq (${ICU_PLUGINS_DD},1) 28 DEFS+=-DICU_PLUGINS_DD 29 endif 30 31 ## Flags for position independent code 32 SHAREDLIBCFLAGS += -fPIC 33 SHAREDLIBCXXFLAGS += -fPIC 34 # For a dynamically called DLL module to share access to the POSIX external 35 # variables, with its caller, the DLL module must define these _SHR_* macros. 36 SHAREDLIBCPPFLAGS +=-D_SHR_TZNAME -D_SHR_TIMEZONE 37 CFLAGS +=$(ICU_IEEE) -march=$(TARGET_ICU_ARCH) -mzos-service="$(LIBICU)v$(SO_TARGET_VERSION)" 38 CXXFLAGS +=$(ICU_IEEE) -march=$(TARGET_ICU_ARCH) -mzos-service="$(LIBICU)v$(SO_TARGET_VERSION)" 39 ARFLAGS =-cr 40 LIBCFLAGS +=-fvisibility=hidden 41 LIBCXXFLAGS +=-fvisibility=hidden 42 43 ## Commands to compile 44 # _CXX_STEPS="-1" is a prelink step when compiling C and C++, and 45 # it's only needed for long function names 46 COMPILE.c=$(COMPILE_LINK_ENVVAR) $(CC) $(DEFS) $(CPPFLAGS) $(CFLAGS) -c 47 COMPILE.cc=$(COMPILE_LINK_ENVVAR) $(CXX) $(DEFS) $(CPPFLAGS) $(CXXFLAGS) -c 48 49 ## Commands for shared library (dll) 50 SHLIB.c=$(COMPILE_LINK_ENVVAR) $(CC) --shared $(LDFLAGS) 51 SHLIB.cc=$(COMPILE_LINK_ENVVAR) $(CXX) --shared $(LDFLAGS) 52 53 ## Compiler switch to embed a runtime search path 54 LD_RPATH=-I 55 56 ## Environment variable to set a runtime search path 57 LDLIBRARYPATH_ENVVAR = LIBPATH 58 59 ## Versioned target for a shared library. 60 FINAL_SO_TARGET=$(basename $(SO_TARGET))$(SO_TARGET_VERSION).$(SO) 61 MIDDLE_SO_TARGET=$(basename $(SO_TARGET))$(SO_TARGET_VERSION_MAJOR).$(SO) 62 63 ## Versioned import library names. 64 IMPORT_LIB=$(basename $(notdir $(SO_TARGET))).x 65 MIDDLE_IMPORT_LIB=$(basename $(notdir $(MIDDLE_SO_TARGET))).x 66 FINAL_IMPORT_LIB=$(basename $(notdir $(FINAL_SO_TARGET))).x 67 68 ## Non-shared intermediate object suffix 69 STATIC_O = o 70 71 ## ICU_PDS_NAME_PREFIX sets the prefix of the PDS dataset name while keeping the ICU version number. 72 ## To use custom names set ICU_PDS_NAME and ICU_PDS_NAME_SUFFIX 73 ifeq ($(ICU_PDS_NAME_PREFIX),) 74 ICU_PDS_NAME_PREFIX=LICU 75 endif 76 ifeq ($(ICU_PDS_NAME),) 77 PDS_FULL_NAME=${ICU_PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR} 78 else 79 PDS_FULL_NAME=${ICU_PDS_NAME} 80 endif 81 BATCH_STUB_TARGET=${PDS_FULL_NAME}DA${ICU_PDS_NAME_SUFFIX} 82 PKGDATA_DEFS+=-DU_LIBICUDATA_NAME=\"$(ICUPREFIX)$(DATA_STUBNAME)$(ICULIBSUFFIX)\" -DBATCH_STUB_TARGET=\"$(BATCH_STUB_TARGET)\" 83 BATCH_COMMON_TARGET=$(LIBDIR)/${PDS_FULL_NAME}UC${ICU_PDS_NAME_SUFFIX} 84 BATCH_I18N_TARGET=$(LIBDIR)/${PDS_FULL_NAME}IN${ICU_PDS_NAME_SUFFIX} 85 BATCH_IO_TARGET=$(LIBDIR)/${PDS_FULL_NAME}IO${ICU_PDS_NAME_SUFFIX} 86 BATCH_LAYOUT_TARGET=$(LIBDIR)/${PDS_FULL_NAME}LE${ICU_PDS_NAME_SUFFIX} 87 BATCH_LAYOUTEX_TARGET=$(LIBDIR)/${PDS_FULL_NAME}LX${ICU_PDS_NAME_SUFFIX} 88 89 BATCH_LIBICUDT=$(top_builddir)/stubdata/${BATCH_STUB_TARGET}.x 90 BATCH_LIBICUUC=${BATCH_COMMON_TARGET}.x 91 BATCH_LIBICUI18N=${BATCH_I18N_TARGET}.x 92 BATCH_LIBICULE=${BATCH_LAYOUT_TARGET}.x 93 BATCH_LIBICULX=${BATCH_LAYOUTEX_TARGET}.x 94 95 ## Link commands to link to ICU libs 96 LIBICUDT=$(top_builddir)/stubdata/$(LIBICU)data$(ICULIBSUFFIX)$(STUB_SUFFIX)$(SO_TARGET_VERSION).x 97 LIBICUUC=$(LIBDIR)/$(LIBICU)uc$(ICULIBSUFFIX)$(SO_TARGET_VERSION).x 98 LIBICUI18N=$(LIBDIR)/$(LIBICU)i18n$(ICULIBSUFFIX)$(SO_TARGET_VERSION).x 99 LIBICULX=$(LIBDIR)/$(LIBICU)lx$(ICULIBSUFFIX)$(SO_TARGET_VERSION).x 100 LIBICUIO=$(LIBDIR)/$(LIBICU)io$(ICULIBSUFFIX)$(SO_TARGET_VERSION).x 101 LIBCTESTFW=$(top_builddir)/tools/ctestfw/$(LIBICU)test$(ICULIBSUFFIX)$(SO_TARGET_VERSION).x 102 LIBICUTOOLUTIL=$(LIBDIR)/$(LIBICU)tu$(ICULIBSUFFIX)$(SO_TARGET_VERSION).x 103 104 ifneq (${ICUDATA_CHAR},e) 105 #SH# if [ "$ICUDATA_CHAR" != "e" ]; then 106 ## We're in ASCII mode. 107 CFLAGS += -Wc,'ascii' 108 CXXFLAGS += -Wc,'ascii' 109 endif 110 SO = so 111 112 ## Special 390 rules 113 114 ## Build archive from object 115 %.a : $(OBJECTS) 116 $(AR) $(ARFLAGS) $@ $(OBJECTS) 117 118 ## Compilation and dependency rules 119 %.$(STATIC_O): $(srcdir)/%.c 120 $(call SILENT_COMPILE,$(strip $(COMPILE.c) $(STATICCPPFLAGS) $(STATICCFLAGS)) -MMD -MT "$*.d $*.o $*.$(STATIC_O)" -o $@ $<) 121 %.o: $(srcdir)/%.c 122 $(call SILENT_COMPILE,$(strip $(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS)) -MMD -MT "$*.d $*.o $*.$(STATIC_O)" -o $@ $<) 123 %.$(STATIC_O): $(srcdir)/%.cpp 124 $(call SILENT_COMPILE,$(strip $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS)) -MMD -MT "$*.d $*.o $*.$(STATIC_O)" -o $@ $<) 125 %.o: $(srcdir)/%.cpp 126 $(call SILENT_COMPILE,$(strip $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS)) -MMD -MT "$*.d $*.o $*.$(STATIC_O)" -o $@ $<) 127 128 ## Versioned libraries rules 129 %$(SO_TARGET_VERSION_MAJOR).$(SO): %$(SO_TARGET_VERSION).$(SO) 130 $(RM) $@ && ln -s ${*F}$(SO_TARGET_VERSION).$(SO) $@ 131 %.$(SO): %$(SO_TARGET_VERSION).$(SO) 132 $(RM) $@ && ln -s ${*F}$(SO_TARGET_VERSION).$(SO) $@ 133 134 ## Install libraries as executable 135 INSTALL-L=$(INSTALL_PROGRAM) 136 137 ## End 390-specific setup