1 ## -*-makefile-*- 2 ## Copyright (C) 2016 and later: Unicode, Inc. and others. 3 ## License & terms of use: http://www.unicode.org/copyright.html 4 ## Solaris-specific setup using Sun's compilers 5 ## Copyright (c) 1999-2010, International Business Machines Corporation and 6 ## others. All Rights Reserved. 7 8 ## Flags for ICU 59+ 9 CXXFLAGS += -std=c++11 10 CFLAGS += -std=c11 11 12 ## Flags for position independent code 13 SHAREDLIBCFLAGS = -KPIC 14 SHAREDLIBCXXFLAGS = -KPIC 15 SHAREDLIBCPPFLAGS = -DPIC 16 17 ## Commands to generate dependency files 18 GEN_DEPS.c= $(CC) -xM $(DEFS) $(CPPFLAGS) 19 GEN_DEPS.cc= $(CXX) -xM $(DEFS) $(CPPFLAGS) 20 21 ifeq ($(UCLN_NO_AUTO_CLEANUP),0) 22 # set up init point. 23 UCLN_FINI = ucln_fini$(TARGET_STUBNAME)_$(SO_TARGET_VERSION_MAJOR)$(ICULIBSUFFIXCNAME) 24 CPPFLAGS_FINI = -DUCLN_FINI=$(UCLN_FINI) 25 LDFLAGS_FINI = -zfiniarray=$(UCLN_FINI) 26 27 CPPFLAGSICUUC += $(CPPFLAGS_FINI) 28 LDFLAGSICUUC += $(LDFLAGS_FINI) 29 CPPFLAGSICUIO += $(CPPFLAGS_FINI) 30 LDFLAGSICUIO += $(LDFLAGS_FINI) 31 CPPFLAGSICUI18N += $(CPPFLAGS_FINI) 32 LDFLAGSICUI18N += $(LDFLAGS_FINI) 33 CPPFLAGSCTESTFW += $(CPPFLAGS_FINI) 34 LDFLAGSCTESTFW += $(LDFLAGS_FINI) 35 36 # ICUUC, ICUIO, ICUI18N, CTESTFW 37 endif 38 39 # -mt means 'compiles and links a multithreaded program' 40 THREADSCFLAGS += -mt 41 THREADSCXXFLAGS += -mt 42 43 ## Commands to link 44 ## For Sun Workshop, use CC to link to bring in C++ runtime 45 LINK.c= $(CXX) $(CXXFLAGS) $(LDFLAGS) 46 LINK.cc= $(CXX) $(CXXFLAGS) $(LDFLAGS) 47 48 ## Commands to make a shared library 49 SHLIB.c= $(CC) $(CFLAGS) $(LDFLAGS) -G 50 SHLIB.cc= $(CXX) $(CXXFLAGS) $(LDFLAGS) -G 51 52 ## Compiler switch to embed a runtime search path 53 LD_RPATH= -R'$$'ORIGIN 54 LD_RPATH_PRE= -R 55 56 #LIBRARY_PATH_PREFIX=/usr/lib/lwp: 57 58 ## Compiler switch to embed a library name 59 LD_SONAME = -h $(notdir $(MIDDLE_SO_TARGET)) 60 61 ## Shared object suffix 62 SO= so 63 ## Non-shared intermediate object suffix 64 STATIC_O = o 65 66 # This causes escapesrc to be built before other ICU targets. 67 NEED_ESCAPING=YES 68 69 ## Compilation rules 70 %.$(STATIC_O): $(srcdir)/%.c 71 $(COMPILE.c) $(STATICCPPFLAGS) $(STATICCFLAGS) -o $@ $< 72 %.o: $(srcdir)/%.c 73 $(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) -o $@ $< 74 75 ifneq ($(SKIP_ESCAPING),) 76 %.o: $(srcdir)/%.cpp 77 $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $< 78 %.$(STATIC_O): $(srcdir)/%.cpp 79 $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $< 80 else 81 # convert *.cpp files to _*.cpp with \u / \U escaping 82 CLEANFILES += _*.cpp 83 84 # the actual escaping 85 _%.cpp: $(srcdir)/%.cpp 86 @$(BINDIR)/escapesrc$(EXEEXT) $< $@ 87 88 # no escaping - bootstrap 89 %.$(STATIC_O): _%.cpp 90 $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $< 91 %.o: _%.cpp 92 $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $< 93 endif 94 95 ## Dependency rules 96 %.d : $(srcdir)/%.c 97 @echo "generating dependency information for $<" 98 @$(GEN_DEPS.c) $< > $@ 99 100 %.d : $(srcdir)/%.cpp 101 @echo "generating dependency information for $<" 102 @$(GEN_DEPS.cc) $< > $@ 103 104 ## Versioned libraries rules 105 106 %.$(SO).$(SO_TARGET_VERSION_MAJOR): %.$(SO).$(SO_TARGET_VERSION) 107 $(RM) $@ && ln -s ${<F} $@ 108 %.$(SO): %.$(SO).$(SO_TARGET_VERSION_MAJOR) 109 $(RM) $@ && ln -s ${*F}.$(SO).$(SO_TARGET_VERSION) $@ 110 111 # 112 ifeq (strip $(GENCCODE_ASSEMBLY),) 113 BIR_LDFLAGS= -Wl,-M,$(NAME).map -Wl,-B,symbolic -Wl,-B,eliminate 114 BIR_DEPS= $(NAME).map 115 endif 116 117 ## Remove shared library 's' 118 STATIC_PREFIX_WHEN_USED = 119 STATIC_PREFIX = 120 121 ## End Solaris-specific setup 122