|
1 ## -*-makefile-*- |
|
2 ## HP/UX-specific setup using aCC |
|
3 ## Copyright (c) 1999-2012, International Business Machines Corporation and |
|
4 ## others. All Rights Reserved. |
|
5 |
|
6 ## Commands to generate dependency files |
|
7 GEN_DEPS.c= : |
|
8 GEN_DEPS.cc= : |
|
9 |
|
10 ## Flags for position independent code |
|
11 SHAREDLIBCFLAGS = +Z |
|
12 SHAREDLIBCXXFLAGS = +Z |
|
13 |
|
14 ## Additional flags when building libraries with threads |
|
15 ## We use this instead of -mt, which isn't available in all versions of aCC |
|
16 ## Our tools won't compile with -D_POSIX_C_SOURCE=199506L |
|
17 THREADSCPPFLAGS = -D_REENTRANT -D_THREAD_SAFE |
|
18 |
|
19 # Use Extended ANSI mode, which is useful for 64-bit numbers |
|
20 # +W ignores some warnings |
|
21 # 740 Unsafe cast between pointers/references to incomplete classes... |
|
22 # 749 This operation is non-portable and potentially unsafe. |
|
23 # (Ironically the solution to fix this warning is non-portable) |
|
24 # 823 Redundant preprocessing concatenation operation results in two valid |
|
25 # preprocessing tokens. This comes from INT64_C in <inttypes.h> |
|
26 # 4232 conversion to a more strictly aligned type may cause misaligned access. |
|
27 CFLAGS += -Ae +Olit=all |
|
28 CXXFLAGS += -AA -Wc,-ansi_for_scope,on +W740 +W749 +W823 +W4232 |
|
29 |
|
30 ifeq ($(UCLN_NO_AUTO_CLEANUP),0) |
|
31 # set up init point. |
|
32 UCLN_FINI = ucln_fini$(TARGET_STUBNAME)_$(SO_TARGET_VERSION_MAJOR)$(ICULIBSUFFIXCNAME) |
|
33 CPPFLAGS_FINI = -DUCLN_FINI=$(UCLN_FINI) |
|
34 LDFLAGS_FINI = -Wl,+fini,$(UCLN_FINI) |
|
35 |
|
36 CPPFLAGSICUUC += $(CPPFLAGS_FINI) |
|
37 LDFLAGSICUUC += $(LDFLAGS_FINI) |
|
38 CPPFLAGSICUIO += $(CPPFLAGS_FINI) |
|
39 LDFLAGSICUIO += $(LDFLAGS_FINI) |
|
40 CPPFLAGSICUI18N += $(CPPFLAGS_FINI) |
|
41 LDFLAGSICUI18N += $(LDFLAGS_FINI) |
|
42 CPPFLAGSCTESTFW += $(CPPFLAGS_FINI) |
|
43 LDFLAGSCTESTFW += $(LDFLAGS_FINI) |
|
44 |
|
45 # ICUUC, ICUIO, ICUI18N, CTESTFW |
|
46 endif |
|
47 |
|
48 # -Bhidden_def Hides all symbols defined in the module. |
|
49 #LIBCFLAGS = -Bhidden_def |
|
50 #LIBCXXFLAGS = -Bhidden_def |
|
51 |
|
52 ## Commands to compile |
|
53 COMPILE.c= $(CC) $(DEFS) $(CPPFLAGS) $(CFLAGS) -c |
|
54 COMPILE.cc= $(CXX) $(DEFS) $(CPPFLAGS) $(CXXFLAGS) -c |
|
55 |
|
56 ## Common 'default' path to ensure the sanity of users. Search the current |
|
57 ## directory, at least. |
|
58 LD_DEFAULTPATH= -Wl,+b,'$$'ORIGIN/ |
|
59 |
|
60 # Use SHLIB_PATH and LD_LIBRARY_PATH to locate shared libraries |
|
61 LDFLAGS += -Wl,+s $(LD_DEFAULTPATH) |
|
62 |
|
63 ## Commands to link |
|
64 ## For aCC, use the C++ linker so that __shlinit gets defined |
|
65 LINK.c= $(CXX) $(CXXFLAGS) $(LDFLAGS) |
|
66 LINK.cc= $(CXX) $(CXXFLAGS) $(LDFLAGS) |
|
67 |
|
68 ## Shared library options |
|
69 ## HPUX PA-risc does not recognize -Bprotected_def aC++ option. |
|
70 ## Use linker option -Wl,-B,symbolic instead. |
|
71 ifeq ($(shell uname -m),ia64) |
|
72 LD_SOOPTIONS= -Bprotected_def |
|
73 else |
|
74 LD_SOOPTIONS= -Wl,-B,symbolic |
|
75 endif |
|
76 |
|
77 ## Commands to make a shared library |
|
78 #SHLIB.c= $(LD) $(LDFLAGS) -b |
|
79 SHLIB.c= $(CXX) $(CXXFLAGS) $(LDFLAGS) -b $(LD_SOOPTIONS) |
|
80 SHLIB.cc= $(CXX) $(CXXFLAGS) $(LDFLAGS) -b $(LD_SOOPTIONS) |
|
81 |
|
82 ## Compiler switch to embed a runtime search path |
|
83 LD_RPATH= -Wl,+b, |
|
84 LD_RPATH_PRE= |
|
85 |
|
86 ## Environment variable to set a runtime search path |
|
87 LDLIBRARYPATH_ENVVAR = SHLIB_PATH |
|
88 |
|
89 ## Compiler switch to embed a library name |
|
90 LD_SONAME = -Wl,+h,$(notdir $(MIDDLE_SO_TARGET)) |
|
91 |
|
92 ## The type of assembly needed when pkgdata is used for generating shared libraries. |
|
93 # Commented out for now because the hp1 test machine runs out of memory. |
|
94 #GENCCODE_ASSEMBLY=-a aCC-parisc |
|
95 |
|
96 ## Shared object suffix |
|
97 SO= sl |
|
98 ## Non-shared intermediate object suffix |
|
99 STATIC_O = o |
|
100 |
|
101 ## Compilation rules |
|
102 %.$(STATIC_O): $(srcdir)/%.c |
|
103 $(COMPILE.c) $(STATICCPPFLAGS) $(STATICCFLAGS) -o $@ $< |
|
104 %.o: $(srcdir)/%.c |
|
105 $(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) -o $@ $< |
|
106 |
|
107 %.$(STATIC_O): $(srcdir)/%.cpp |
|
108 $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $< |
|
109 %.o: $(srcdir)/%.cpp |
|
110 $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $< |
|
111 |
|
112 |
|
113 ## Dependency rules |
|
114 %.d : $(srcdir)/%.c |
|
115 @echo "generating dependency information for $<" |
|
116 @$(GEN_DEPS.c) $< > $@ |
|
117 |
|
118 %.d : $(srcdir)/%.cpp |
|
119 @echo "generating dependency information for $<" |
|
120 @$(GEN_DEPS.cc) $< > $@ |
|
121 |
|
122 ## Versioned libraries rules |
|
123 |
|
124 %.$(SO).$(SO_TARGET_VERSION_MAJOR): %.$(SO).$(SO_TARGET_VERSION) |
|
125 $(RM) $@ && ln -s ${<F} $@ |
|
126 %.$(SO): %.$(SO).$(SO_TARGET_VERSION_MAJOR) |
|
127 $(RM) $@ && ln -s ${*F}.$(SO).$(SO_TARGET_VERSION) $@ |
|
128 |
|
129 ## Install libraries as executable |
|
130 INSTALL-L=$(INSTALL_PROGRAM) |
|
131 |
|
132 ## Remove shared library 's' |
|
133 STATIC_PREFIX_WHEN_USED = |
|
134 STATIC_PREFIX = |
|
135 |
|
136 ## End HP/UX-specific setup |