summaryrefslogtreecommitdiffstats
path: root/intl/icu/source/config/mh-os400
blob: 82d7b500f09e0392c18c06b08d8773f2edba2f7a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
## -*-makefile-*-
## Copyright (C) 2016 and later: Unicode, Inc. and others.
## License & terms of use: http://www.unicode.org/copyright.html
## OS400-specific setup (for cross build)
## Copyright (c) 1999-2013, International Business Machines Corporation and
## others. All Rights Reserved.

# This otherwise breaks on OS400 - can't find "shell"
CURR_FULL_DIR=.
CURR_SRCCODE_FULL_DIR=.

GEN_DEPS.c=	$(CC1) -E -M $(DEFS) $(CPPFLAGS)
GEN_DEPS.cc=	$(CXX1) -E -M $(DEFS) $(CPPFLAGS)

THREADSCPPFLAGS = -D_MULTI_THREADED

# put this in the environment to get threading
THREADSENVFLAGS = QIBM_MULTI_THREADED=Y ;

## Commands to compile
# -qTERASPACE: large pointers
# -qPFROPT=*STRDONLY: Strings are read-only
COMPILE.c=	$(CC) $(DEFS) $(CPPFLAGS) $(CFLAGS) -c -qTERASPACE=*YES -qSTGMDL=*INHERIT -qPFROPT=*STRDONLY
COMPILE.cc=	$(CXX) $(DEFS) $(CPPFLAGS) $(CXXFLAGS) -c -qTERASPACE=*YES -qSTGMDL=*INHERIT -qPFROPT=*STRDONLY -qRTTIALL

## ICULD program - run bldiculd.sh in icu/as_is/os400/ to build it
ICULD=/qsys.lib/$(OUTPUTDIR).lib/iculd.pgm

## Commands to link
## We need to use the C++ linker, even when linking C programs, since
##  our libraries contain C++ code (C++ static init not called)
LINK.c=		$(ICULD)  $(CXXFLAGS) $(LDFLAGS) -qOPTION='*DUPPROC *DUPVAR'
LINK.cc=	$(ICULD) $(CXXFLAGS) $(LDFLAGS) -qOPTION='*DUPPROC *DUPVAR'

## Commands to make a shared library
# -qALWLIBUPD: It allows the compiled service program to have dependencies on
#	service programs in a different library than that specified originally
#	by CRTSRVPGM after having used the UPDSRVPGM command.
#	Similar to -fPIC and -install_name on other compilers, but different.
SHLIB.c=   ld -v -qOPTION='*DUPPROC *DUPVAR' -qALWLIBUPD=*YES
SHLIB.cc=	 ld -v -qOPTION='*DUPPROC *DUPVAR' -qALWLIBUPD=*YES
AR = qar
ARFLAGS = -cuv

## Compiler switch to embed a runtime search path
LD_RPATH=	-I
LD_RPATH_PRE=	-I

## Make target to rebind the common library
## to the actual data versus the stub data
POST_DATA_BUILD = os400-data-rebind

# The stubdata directory is the same directory as the normal data library.
STUBDATA_LIBDIR = $(LIBDIR)/

## Versioned target for a shared library.
FINAL_SO_TARGET = $(SO_TARGET)
MIDDLE_SO_TARGET = 

# this one is for icudefs.mk's use
ifeq ($(ENABLE_SHARED),YES)
SO_TARGET_VERSION_SUFFIX = $(SO_TARGET_VERSION_MAJOR)
endif

# this one is for the individual make files and linking
ICULIBSUFFIX = $(SO_TARGET_VERSION_SUFFIX)

##  object suffix
TO=		o

## Shared object suffix
SO=	so
## Non-shared intermediate object suffix
STATIC_O = o

## Platform command to remove or move executable target
RMV = del
## Platform commands to remove or move executable and library targets
INSTALL-S =  cp -fph
INSTALL-L = $(INSTALL-S)

# Stub name overrides for iSeries
DATA_STUBNAME = dt
I18N_STUBNAME = in
CTESTFW_STUBNAME = tf

## Link commands to link to ICU service programs
LIBICUDT = $(LIBDIR)/$(LIBICU)$(DATA_STUBNAME)$(ICULIBSUFFIX).$(SO)
LIBICUUC = $(LIBDIR)/$(LIBICU)$(COMMON_STUBNAME)$(ICULIBSUFFIX).$(SO)
LIBICUI18N = $(LIBDIR)/$(LIBICU)$(I18N_STUBNAME)$(ICULIBSUFFIX).$(SO)
LIBICULE = $(LIBDIR)/$(LIBICU)$(LAYOUT_STUBNAME)$(ICULIBSUFFIX).$(SO)
LIBICULX = $(LIBDIR)/$(LIBICU)$(LAYOUTEX_STUBNAME)$(ICULIBSUFFIX).$(SO)
LIBCTESTFW = $(top_builddir)/tools/ctestfw/$(LIBICU)$(CTESTFW_STUBNAME)$(ICULIBSUFFIX).$(SO)
LIBICUTOOLUTIL = $(LIBDIR)/$(LIBICU)$(TOOLUTIL_STUBNAME)$(ICULIBSUFFIX).$(SO)
LIBICUIO= $(LIBDIR)/$(LIBICU)$(IO_STUBNAME)$(ICULIBSUFFIX).$(SO)

## Special OS400 rules

## Build archive from shared object
%.a : %.o
	$(AR) $(ARFLAGS) $@ $<

## Build import list from export list
%.e : %.exp
	@echo "Building an import list for $<"
	@$(SHELL) -ec "echo '#! $*.a($*.so)' | cat - $< > $@"

## Compilation rules
%.$(STATIC_O): $(srcdir)/%.c
	$(COMPILE.c) $(STATICCPPFLAGS) $(STATICCFLAGS) -o $@ $<
%.o: $(srcdir)/%.c
	$(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) -o $@ $<

%.$(STATIC_O): $(srcdir)/%.cpp
	$(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $<
%.o: $(srcdir)/%.cpp
	$(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $<

%.qwobj : $(srcdir)/%.c
	$(COMPILE.c) -o $@ $<

%.qwobj : $(srcdir)/%.cpp
	$(COMPILE.cc) -o $@ $<

## Dependency rules
%.d : %.u
#	@$(SHELL) -ec 'cat $<  \
#		| sed '\''s/\($*\)\.o[ :]*/\1.o $@ : /g'\'' > $@; \
#		[ -s $@ ] || rm -f $@ ; rm -f $<'

%.u : $(srcdir)/%.c
	@echo "generating dependency information for $<"
#	@$(SHELL) -ec 'touch            $*.u  > /dev/null 2>&1'
#	@$(SHELL) -ec '$(GEN_DEPS.c) -f $*.u $< > /dev/null 2>&1'

%.u : $(srcdir)/%.cpp
	@echo "generating dependency information for $<"
#	@$(SHELL) -ec 'touch              $*.u  > /dev/null 2>&1'
#	@$(SHELL) -ec '$(GEN_DEPS.cc)  -f $*.u $< > /dev/null 2>&1'

## End OS400-specific setup