21 |
21 |
22 # |
22 # |
23 # Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved. |
23 # Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved. |
24 # |
24 # |
25 export PARFAIT_BUILD=no |
25 export PARFAIT_BUILD=no |
26 BUILD_BITS= 64 |
26 BUILD_BITS=64 |
27 COMPILER= gcc |
27 COMPILER=gcc |
|
28 |
28 include ../../make-rules/shared-macros.mk |
29 include ../../make-rules/shared-macros.mk |
29 |
30 |
30 COMPONENT_NAME= llvm |
31 COMPONENT_NAME= llvm |
31 COMPONENT_VERSION= 3.6.2 |
32 COMPONENT_VERSION= 3.8.1 |
32 COMPONENT_PROJECT_URL= http://llvm.org/ |
33 COMPONENT_PROJECT_URL= http://llvm.org/ |
|
34 COMPONENT_SRC= $(COMPONENT_NAME) |
|
35 COMPONENT_BUGDB= utility/llvm |
|
36 |
33 COMPONENT_SRC= $(COMPONENT_NAME)-$(COMPONENT_VERSION) |
37 COMPONENT_SRC= $(COMPONENT_NAME)-$(COMPONENT_VERSION) |
34 COMPONENT_SRC_NAME = $(COMPONENT_SRC).src |
38 COMPONENT_SRC_NAME= $(COMPONENT_SRC).src |
35 COMPONENT_ARCHIVE= $(COMPONENT_SRC_NAME).tar.xz |
39 COMPONENT_ARCHIVE= $(COMPONENT_SRC_NAME).tar.xz |
36 COMPONENT_ARCHIVE_HASH= \ |
40 COMPONENT_ARCHIVE_HASH= \ |
37 sha256:f60dc158bfda6822de167e87275848969f0558b3134892ff54fced87e4667b94 |
41 sha256:6e82ce4adb54ff3afc18053d6981b6aed1406751b8742582ed50f04b5ab475f9 |
38 COMPONENT_ARCHIVE_URL= $(COMPONENT_PROJECT_URL)/releases/$(COMPONENT_VERSION)/$(COMPONENT_ARCHIVE) |
42 COMPONENT_ARCHIVE_URL= $(COMPONENT_PROJECT_URL)/releases/$(COMPONENT_VERSION)/$(COMPONENT_ARCHIVE) |
39 |
43 |
40 TPNO= 24358 |
44 TPNO= 28049 |
41 |
45 |
42 COMPONENT_NAME_1 = clang |
46 COMPONENT_NAME_1 = clang |
43 COMPONENT_SRC_1 = cfe-$(COMPONENT_VERSION).src |
47 COMPONENT_SRC_1 = cfe-$(COMPONENT_VERSION).src |
44 COMPONENT_ARCHIVE_1 = $(COMPONENT_SRC_1).tar.xz |
48 COMPONENT_ARCHIVE_1 = $(COMPONENT_SRC_1).tar.xz |
45 COMPONENT_ARCHIVE_HASH_1 = \ |
49 COMPONENT_ARCHIVE_HASH_1 = \ |
46 sha256:ae9180466a23acb426d12444d866b266ff2289b266064d362462e44f8d4699f3 |
50 sha256:4cd3836dfb4b88b597e075341cae86d61c63ce3963e45c7fe6a8bf59bb382cdf |
47 COMPONENT_ARCHIVE_URL_1 = $(COMPONENT_PROJECT_URL)/releases/$(COMPONENT_VERSION)/$(COMPONENT_ARCHIVE_1) |
51 COMPONENT_ARCHIVE_URL_1 = $(COMPONENT_PROJECT_URL)/releases/$(COMPONENT_VERSION)/$(COMPONENT_ARCHIVE_1) |
48 |
52 |
49 COMPONENT_POST_UNPACK_ACTION = \ |
53 COMPONENT_POST_UNPACK_ACTION = \ |
50 ( $(MV) $(COMPONENT_SRC_NAME) $(COMPONENT_SRC) ) |
54 ( $(MV) $(COMPONENT_SRC_NAME) $(COMPONENT_SRC) ) |
51 |
55 |
52 COMPONENT_POST_UNPACK_ACTION_1 = \ |
56 COMPONENT_POST_UNPACK_ACTION_1 = \ |
53 ( $(RM) -rf $(COMPONENT_SRC)/tools/$(COMPONENT_NAME_1) ; \ |
57 ( $(RM) -rf $(COMPONENT_SRC)/tools/$(COMPONENT_NAME_1) ; \ |
54 $(CP) -rp $(COMPONENT_SRC_1) \ |
58 $(CP) -rp $(COMPONENT_SRC_1) \ |
55 $(COMPONENT_SRC)/tools/$(COMPONENT_NAME_1) ) |
59 $(COMPONENT_SRC)/tools/$(COMPONENT_NAME_1) ) |
56 |
60 |
57 COMPONENT_PRE_CONFIGURE_ACTION = \ |
61 # Depends on S12-only changes in gcc; might be able to deal with later, |
58 ( cd $(SOURCE_DIR) ; \ |
62 # but avoid publishing while this is under investigation. |
59 $(CHMOD) 0755 ./autoconf/AutoRegen.sh ; \ |
63 ifeq ($(BUILD_TYPE), evaluation) |
60 ./autoconf/AutoRegen.sh ) |
64 BUILD_64= |
|
65 INSTALL_64= |
|
66 PUBLISH_STAMP= |
|
67 endif |
|
68 |
|
69 BUILD_STYLE = cmake |
|
70 CLONEY = echo |
|
71 GNUCP = /usr/gnu/bin/cp |
|
72 |
|
73 include $(WS_MAKE_RULES)/common.mk |
|
74 |
|
75 PATCH_LEVEL := 0 |
|
76 DEBUG_BUILD := 0 |
|
77 GCC_VERSION := 4.9 |
|
78 HAVE_SPHINX := 0 |
|
79 |
|
80 export PATH=/usr/gnu/bin:/usr/bin:/usr/perl5/$(PERL_VERSION)/bin |
|
81 |
|
82 # We use GCC version 4.9.3, and not another version for now. |
|
83 CC=$(USRDIR)/gcc/$(GCC_VERSION)/bin/gcc |
|
84 CXX=$(USRDIR)/gcc/$(GCC_VERSION)/bin/g++ |
|
85 |
|
86 # We're building with CMake |
|
87 CMAKE=/usr/bin/cmake |
|
88 CMAKE_VERSION := $(shell $(CMAKE) --version 2>&1 | head -n1 \ |
|
89 | $(GSED) 's/cmake version \{1,\}//g') |
|
90 CMAKE_MAJOR_VERSION := $(shell echo $(CMAKE_VERSION) | cut -f1 -d'.') |
|
91 CMAKE_MINOR_VERSION := $(shell echo $(CMAKE_VERSION) | cut -f2 -d'.') |
|
92 CMAKE_MICRO_VERSION := $(shell echo $(CMAKE_VERSION) | cut -f3 -d'.') |
|
93 |
|
94 # CMake prior to 3.6.0 does not define CMAKE_HOST_SOLARIS. |
|
95 # In that case, we pass it in CMAKE_OPTIONS. |
|
96 CMAKE_NEEDS_SOLARIS_HOST := 0 |
|
97 ifeq ($(shell expr $(CMAKE_MAJOR_VERSION) \<= 3 \& \ |
|
98 $(CMAKE_MINOR_VERSION) \<= 5),1) |
|
99 CMAKE_NEEDS_SOLARIS_HOST = 1 |
|
100 endif |
|
101 |
|
102 # All of these shoujld probably be in shared-macros.mk |
|
103 CMAKE_INSTALL_BINDIR.32 = bin |
|
104 CMAKE_INSTALL_BINDIR.64 = bin/$(MACH64) |
|
105 CMAKE_INSTALL_BINDIR = $(CMAKE_INSTALL_BINDIR.$(BITS)) |
|
106 |
|
107 CMAKE_INSTALL_LIBDIR.32 = lib |
|
108 CMAKE_INSTALL_LIBDIR.64 = lib/$(MACH64) |
|
109 CMAKE_INSTALL_LIBDIR = $(CMAKE_INSTALL_LIBDIR.$(BITS)) |
|
110 |
|
111 CMAKE_INSTALL_LIBEXECDIR.32 = libexec |
|
112 CMAKE_INSTALL_LIBEXECDIR.64 = libexec/$(MACH64) |
|
113 CMAKE_INSTALL_LIBEXECDIR = $(CMAKE_INSTALL_LIBEXECDIR.$(BITS)) |
|
114 |
|
115 CMAKE_INSTALL_INCLUDEDIR = include |
|
116 CMAKE_INSTALL_DATADIR = share |
|
117 CMAKE_INSTALL_DATAROOTDIR = share |
|
118 |
|
119 # We need the specific C++ runtime that clang/llvm was built and |
|
120 # linked with, and not some random and incompatible stuff from |
|
121 # /usr/lib. |
|
122 LLVM_RUNPATH_32 = /usr/gcc/$(GCC_VERSION)/lib |
|
123 LLVM_RUNPATH_64 = /usr/gcc/$(GCC_VERSION)/lib/$(MACH64) |
|
124 LLVM_RUNPATH = $(LLVM_RUNPATH_$(BITS)) |
|
125 |
|
126 # -O0. GCC on SPARC dies with an out-memory error in cc1plus when |
|
127 # building with either -O1 or -O2 (32-bit). If it manages to get |
|
128 # through with -O1 or -O2 (64-bit), the resulting bits are unusable. |
|
129 OFLAG="-O0" |
|
130 GFLAG="" |
|
131 |
|
132 ifeq ($(DEBUG_BUILD), 1) |
|
133 OFLAG="-O0" |
|
134 GFLAG="-g3" |
|
135 endif |
|
136 |
|
137 # Because LLVM's install target doesn't install everything that |
|
138 # needs to be installed. |
|
139 EXTRA_INSTALL_BITS=llvm-lto arcmt-test c-arcmt-test c-index-test diagtool |
|
140 LLVM_INSTALL_BINDIR.32=$(PROTOUSRBINDIR) |
|
141 LLVM_INSTALL_BINDIR.64=$(PROTOUSRBINDIR64) |
|
142 LLVM_INSTALL_BINDIR=$(LLVM_INSTALL_BINDIR.$(BITS)) |
|
143 LLVM_BINDIR=$(BUILD_DIR_$(BITS))/bin |
|
144 |
|
145 INSTALL_CXA_FINALIZE := 0 |
|
146 ifeq ($(SOLARIS_11_ONLY),) |
|
147 INSTALL_CXA_FINALIZE = 1 |
|
148 endif |
|
149 |
|
150 SCAN_VIEW_FILES=Reporter.py ScanView.py |
|
151 CLANG_FORMAT_FILES=clang-format-diff.py clang-format-sublime.py \ |
|
152 clang-format.py |
|
153 LLVM_MAN_FILES=FileCheck.1 bugpoint.1 clang.1 lit.1 llc.1 lli.1 \ |
|
154 llvm-ar.1 llvm-as.1 llvm-bcanalyzer.1 llvm-build.1 \ |
|
155 llvm-config.1 llvm-cov.1 llvm-diff.1 llvm-dis.1 \ |
|
156 llvm-dwarfdump.1 llvm-extract.1 llvm-lib.1 llvm-link.1 \ |
|
157 llvm-nm.1 llvm-profdata.1 llvm-readobj.1 llvm-stress.1 \ |
|
158 llvm-symbolizer.1 opt.1 tblgen.1 |
61 |
159 |
62 COMPONENT_POST_BUILD_ACTION = \ |
160 COMPONENT_POST_BUILD_ACTION = \ |
63 if test -d $(COMPONENT_DIR)/cxa_finalize ; then \ |
161 if test -d $(COMPONENT_DIR)/cxa_finalize ; then \ |
|
162 /usr/gnu/bin/touch $(COMPONENT_DIR)/cxa_finalize/.patched ; \ |
|
163 /usr/gnu/bin/touch $(COMPONENT_DIR)/cxa_finalize/.prep ; \ |
64 $(GMAKE) -C $(COMPONENT_DIR)/cxa_finalize build ; \ |
164 $(GMAKE) -C $(COMPONENT_DIR)/cxa_finalize build ; \ |
|
165 /usr/gnu/bin/touch $(COMPONENT_DIR)/cxa_finalize/.built ; \ |
65 fi |
166 fi |
66 |
167 |
67 COMPONENT_POST_INSTALL_ACTION = \ |
168 COMPONENT_POST_INSTALL_ACTION = \ |
68 if test -d $(COMPONENT_DIR)/cxa_finalize ; then \ |
169 if test -d $(COMPONENT_DIR)/cxa_finalize ; then \ |
69 $(GMAKE) -C $(COMPONENT_DIR)/cxa_finalize install ; \ |
170 $(GMAKE) -C $(COMPONENT_DIR)/cxa_finalize install ; \ |
|
171 /usr/gnu/bin/touch $(COMPONENT_DIR)/cxa_finalize/.installed ; \ |
70 fi; |
172 fi; |
71 |
173 |
72 # Depends on S12-only changes in gcc; might be able to deal with later, |
|
73 # but avoid publishing while this is under investigation. |
|
74 ifeq ($(BUILD_TYPE), evaluation) |
|
75 BUILD_64= |
|
76 INSTALL_64= |
|
77 PUBLISH_STAMP= |
|
78 endif |
|
79 |
|
80 TEST_TARGET= |
|
81 include $(WS_MAKE_RULES)/common.mk |
|
82 |
|
83 PATCH_LEVEL := 0 |
|
84 DEBUG_BUILD := 0 |
|
85 GCC_VERSION := 4.9 |
|
86 |
|
87 # We need GCC version 4.9, and not another version. |
|
88 CC=$(USRDIR)/gcc/$(GCC_VERSION)/bin/gcc |
|
89 CXX=$(USRDIR)/gcc/$(GCC_VERSION)/bin/g++ |
|
90 |
|
91 # We need the specific C++ runtime that clang/llvm was built and |
|
92 # linked with, and not some random and incompatible stuff from |
|
93 # /usr/lib. |
|
94 LLVM_RUNPATH_32 = $(USRDIR)/gcc/$(GCC_VERSION)/lib |
|
95 LLVM_RUNPATH_64 = $(USRDIR)/gcc/$(GCC_VERSION)/lib/$(MACH64) |
|
96 LLVM_RUNPATH = $(LLVM_RUNPATH_$(BITS)) |
|
97 |
|
98 # -O0 for now. Ideally we want -O2. |
|
99 OFLAG="-O0" |
|
100 GFLAG="" |
|
101 |
|
102 ifeq ($(DEBUG_BUILD), 1) |
|
103 OFLAG="-O0" |
|
104 GFLAG="-g3" |
|
105 endif |
|
106 |
|
107 export PATH=$(GNUBIN):$(USRDIR)/xpg4/bin:$(USRBINDIR):$(USRDIR)/perl5/5.16/bin |
|
108 |
|
109 # Because LLVM's install target doesn't install everything that |
|
110 # needs to be installed. |
|
111 EXTRA_INSTALL_BITS=llvm-lto arcmt-test c-arcmt-test c-index-test diagtool |
|
112 LLVM_BINDIR=$(BUILD_DIR_64)/Release/bin |
|
113 |
|
114 ifeq ($(DEBUG_BUILD), 1) |
|
115 LLVM_BINDIR=$(BUILD_DIR_64)/Debug+Asserts+Checks/bin |
|
116 endif |
|
117 |
|
118 COMPONENT_POST_INSTALL_ACTION += \ |
174 COMPONENT_POST_INSTALL_ACTION += \ |
119 list1='$(EXTRA_INSTALL_BITS)' ; for f in $$list1 ; do \ |
175 list1='$(EXTRA_INSTALL_BITS)' ; for f in $$list1 ; do \ |
120 $(INSTALL) --mode=755 $(LLVM_BINDIR)/$$f $(PROTOUSRBINDIR)/$$f ; \ |
176 $(INSTALL) --mode=755 $(LLVM_BINDIR)/$$f \ |
121 done; |
177 $(LLVM_INSTALL_BINDIR)/$$f ; \ |
122 |
178 done ; |
123 # No ASLR for compilers. |
179 |
124 ASLR_MODE = $(ASLR_DISABLE) |
180 COMPONENT_POST_INSTALL_ACTION += \ |
|
181 $(MKDIR) \ |
|
182 $(PROTOUSRLIBDIR)/python$(PYTHON_VERSION)/vendor-packages ; \ |
|
183 list2='$(SCAN_VIEW_FILES)' ; for f in $$list2 ; do \ |
|
184 $(INSTALL) --mode=644 $(PROTOUSRSHAREDIR)/scan-view/$$f \ |
|
185 $(PROTOUSRLIBDIR)/python$(PYTHON_VERSION)/vendor-packages/$$f ; \ |
|
186 done ; |
|
187 |
|
188 COMPONENT_POST_INSTALL_ACTION += \ |
|
189 list3='$(CLANG_FORMAT_FILES)' ; for f in $$list3 ; do \ |
|
190 $(INSTALL) --mode=644 $(PROTOUSRSHAREDIR)/clang/$$f \ |
|
191 $(PROTOUSRLIBDIR)/python$(PYTHON_VERSION)/vendor-packages/$$f ; \ |
|
192 done ; |
|
193 |
|
194 COMPONENT_POST_INSTALL_ACTION += \ |
|
195 cd $(COMPONENT_DIR) ; \ |
|
196 $(GNUCP) -rpd $(PROTOUSRLIBDIR64)/clang $(PROTOUSRLIBDIR)/ ; |
|
197 |
|
198 COMPONENT_POST_INSTALL_ACTION += \ |
|
199 cd $(PROTOUSRLIBDIR) ; \ |
|
200 $(PYTHON) -m compileall . ; |
|
201 |
|
202 COMPONENT_POST_INSTALL_ACTION += \ |
|
203 cd $(COMPONENT_DIR) ; \ |
|
204 $(MKDIR) $(PROTOUSRSHAREMAN1DIR) ; \ |
|
205 list4='$(LLVM_MAN_FILES)' ; for f in $$list4 ; do \ |
|
206 $(INSTALL) --mode=644 $(COMPONENT_DIR)/Solaris/man1/$$f \ |
|
207 $(PROTOUSRSHAREMAN1DIR)/$$f ; \ |
|
208 done ; |
|
209 |
|
210 ifeq ($(INSTALL_CXA_FINALIZE),1) |
|
211 COMPONENT_POST_INSTALL_ACTION += \ |
|
212 $(INSTALL) --mode=644 \ |
|
213 $(COMPONENT_DIR)/cxa_finalize/cxa_finalize-32.o \ |
|
214 $(PROTOUSRLIBDIR)/clang/cxa_finalize.o ; \ |
|
215 $(INSTALL) --mode=644 \ |
|
216 $(COMPONENT_DIR)/cxa_finalize/cxa_finalize_pic-32.o \ |
|
217 $(PROTOUSRLIBDIR)/clang/cxa_finalize_pic.o ; \ |
|
218 $(INSTALL) --mode=644 \ |
|
219 $(COMPONENT_DIR)/cxa_finalize/cxa_finalize-64.o \ |
|
220 $(PROTOUSRLIBDIR)/clang/$(MACH64)/cxa_finalize.o ; \ |
|
221 $(INSTALL) --mode=644 \ |
|
222 $(COMPONENT_DIR)/cxa_finalize/cxa_finalize_pic-64.o \ |
|
223 $(PROTOUSRLIBDIR)/clang/$(MACH64)/cxa_finalize_pic.o ; |
|
224 endif |
|
225 |
|
226 # Results output is slightly different on Intel vs. SPARC. |
|
227 # Not enabled just yet because of problems with the way opt |
|
228 # and FileCheck emit and parse the test case results. |
|
229 COMPONENT_TEST_MASTER = \ |
|
230 $(COMPONENT_TEST_RESULTS_DIR)/results-$(MACH).master |
|
231 |
|
232 # Do not change the order of these regexp transforms. |
|
233 COMPONENT_TEST_TRANSFORMS += \ |
|
234 '-e "/gmake -f/d"' \ |
|
235 '-e "/gmake/d"' \ |
|
236 '-e "/--color=/d"' \ |
|
237 '-e "/Entering/d"' \ |
|
238 '-e "/Leaving/d"' \ |
|
239 '-e "/Built target/d"' \ |
|
240 '-e "/Nothing to be done/d"' |
125 |
241 |
126 # GCC options used: |
242 # GCC options used: |
127 # -ftree-vectorize | -fno-tree-vectorize: |
243 # -ftree-vectorize | -fno-tree-vectorize: |
128 # Enable/disable loop vectorization in optimizations. For details: |
244 # Enable/disable loop vectorization in optimizations. For details: |
129 # https://gcc.gnu.org/projects/tree-ssa/vectorization.html |
245 # https://gcc.gnu.org/projects/tree-ssa/vectorization.html |
194 # and practice has shown that it is indeed needed. The disadvantage |
310 # and practice has shown that it is indeed needed. The disadvantage |
195 # of using this flag is that it triggers copy-on-write relocations. |
311 # of using this flag is that it triggers copy-on-write relocations. |
196 # |
312 # |
197 # -mno-sse3 -mno-ssse3: |
313 # -mno-sse3 -mno-ssse3: |
198 # Do not use SSE3/SSSE3 instructions on Intel. These might not be |
314 # Do not use SSE3/SSSE3 instructions on Intel. These might not be |
199 # available. Building for Opteron - which implies SSE2 - is adequate |
315 # available and they always come with side-effects. |
200 # for performance purposes. |
316 # Building for Opteron - which implies SSE2 - is adequate for |
|
317 # performance purposes. |
201 |
318 |
202 CFLAGS = -m$(BITS) $(GFLAG) $(OFLAG) -pthread -std=c99 -fno-strict-aliasing |
319 CFLAGS = -m$(BITS) $(GFLAG) $(OFLAG) -pthread -std=c99 -fno-strict-aliasing |
203 CFLAGS += -fno-tree-slp-vectorize -fno-tree-vectorize |
320 CFLAGS += -fno-tree-slp-vectorize -fno-tree-vectorize |
204 CFLAGS += -fno-reorder-blocks -fno-toplevel-reorder |
321 CFLAGS += -fno-reorder-blocks -fno-toplevel-reorder |
205 CFLAGS += -Wall -Wcast-align -Wno-long-long -Woverflow |
322 CFLAGS += -Wall -Wcast-align -Wno-long-long -Woverflow |
206 CFLAGS += -Wstack-protector -fdata-sections -fstack-protector-all |
323 CFLAGS += -Wstack-protector -fdata-sections -fstack-protector-all |
207 CFLAGS += -fkeep-static-consts -ffunction-sections |
324 CFLAGS += -fkeep-static-consts -ffunction-sections |
208 CFLAGS += -Wl,-z -Wl,relax=common -Wl,-z -Wl,relax=secadj |
325 CFLAGS += -Wl,-z -Wl,relax=common |
209 CFLAGS += -Wl,-z -Wl,relax=transtls -Wl,-R -Wl,$(LLVM_RUNPATH) |
326 CFLAGS += -Wl,-z -Wl,relax=secadj |
|
327 CFLAGS += -Wl,-z -Wl,relax=transtls |
|
328 CFLAGS += -Wl,-z -Wl,relax=symbound |
|
329 CFLAGS += -Wl,-R -Wl,$(LLVM_RUNPATH) |
210 CFLAGS.i386 += -mtune=opteron -mno-sse3 -mno-ssse3 -fno-common |
330 CFLAGS.i386 += -mtune=opteron -mno-sse3 -mno-ssse3 -fno-common |
|
331 ifeq ($(DEBUG_BUILD),1) |
|
332 CFLAGS.i386 += -fno-omit-frame-pointer |
|
333 endif |
211 CFLAGS.sparc += -mtune=ultrasparc -mcpu=ultrasparc -mvis -mhard-float |
334 CFLAGS.sparc += -mtune=ultrasparc -mcpu=ultrasparc -mvis -mhard-float |
212 CFLAGS.sparc += -mptr$(BITS) -fdata-sections -falign-functions=8 |
335 CFLAGS.sparc += -mptr$(BITS) -fdata-sections -falign-functions=8 |
213 CFLAGS.sparc += -mno-unaligned-doubles -mimpure-text |
336 CFLAGS.sparc += -mno-unaligned-doubles -mimpure-text |
214 CFLAGS += $(CFLAGS.$(MACH)) |
337 CFLAGS += $(CFLAGS.$(MACH)) |
215 |
338 |
218 CXXFLAGS += -fno-tree-vectorize -fno-tree-slp-vectorize |
341 CXXFLAGS += -fno-tree-vectorize -fno-tree-slp-vectorize |
219 CXXFLAGS += -fno-reorder-blocks -fno-toplevel-reorder |
342 CXXFLAGS += -fno-reorder-blocks -fno-toplevel-reorder |
220 CXXFLAGS += -Wall -Wcast-align -Wno-long-long -Woverflow |
343 CXXFLAGS += -Wall -Wcast-align -Wno-long-long -Woverflow |
221 CXXFLAGS += -Wstack-protector -fkeep-static-consts |
344 CXXFLAGS += -Wstack-protector -fkeep-static-consts |
222 CXXFLAGS += -std=c++11 -fdata-sections -ffunction-sections |
345 CXXFLAGS += -std=c++11 -fdata-sections -ffunction-sections |
223 CXXFLAGS += -Wl,-z -Wl,relax=common -Wl,-z -Wl,relax=secadj |
346 CXXFLAGS += -Wl,-z -Wl,relax=common |
224 CXXFLAGS += -Wl,-z -Wl,relax=transtls -Wl,-R -Wl,$(LLVM_RUNPATH) |
347 CXXFLAGS += -Wl,-z -Wl,relax=secadj |
|
348 CXXFLAGS += -Wl,-z -Wl,relax=transtls |
|
349 CXXFLAGS += -Wl,-z -Wl,relax=symbound |
|
350 CXXFLAGS += -Wl,-z -Wl,relax=comdat |
|
351 CXXFLAGS += -Wl,-R -Wl,$(LLVM_RUNPATH) |
225 CXXFLAGS.sparc += -mptr$(BITS) |
352 CXXFLAGS.sparc += -mptr$(BITS) |
226 CXXFLAGS += $(CFLAGS.$(MACH)) |
353 CXXFLAGS += $(CFLAGS.$(MACH)) |
227 |
354 |
228 CPPFLAGS = -D_GNU_SOURCE -DLLVM_SOLARIS -I$(USRGNUDIR)/include |
355 CPPFLAGS = -D_GNU_SOURCE -DLLVM_SOLARIS -I/usr/gnu/include |
229 |
356 |
230 ifeq ($(DEBUG_BUILD), 1) |
357 ifeq ($(DEBUG_BUILD),1) |
231 CPPFLAGS += -D_DEBUG |
358 CPPFLAGS += -D_DEBUG |
232 endif |
359 endif |
233 |
360 |
234 CPPFLAGS += -D_REENTRANT -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 |
361 CPPFLAGS += -D_REENTRANT -D_LARGEFILE64_SOURCE |
235 CPPFLAGS += -D_FILE_OFFSET_BITS=64 -D__EXTENSIONS__=1 |
362 CPPFLAGS += -D_FILE_OFFSET_BITS=64 -D__EXTENSIONS__=1 |
236 CPPFLAGS += -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS |
363 CPPFLAGS += -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS |
237 CPPFLAGS += -D__STDC_LIMIT_MACROS -DHAVE_POSIX_MEMALIGN |
364 CPPFLAGS += -D__STDC_LIMIT_MACROS -DHAVE_POSIX_MEMALIGN |
238 CPPFLAGS += -D_GLIBCXX_FULLY_DYNAMIC_STRING=1 |
365 CPPFLAGS += -D_GLIBCXX_FULLY_DYNAMIC_STRING=1 |
239 CPPFLAGS.i386 = -DLLVM_INTEL |
366 CPPFLAGS.i386 = -DLLVM_INTEL |
240 CPPFLAGS.sparc = -DLLVM_SPARC |
367 CPPFLAGS.sparc = -DLLVM_SPARC |
241 CPPFLAGS += $(CPPFLAGS.$(MACH)) |
368 CPPFLAGS += $(CPPFLAGS.$(MACH)) |
242 |
369 |
243 LLVM_LIBEXECDIR_32 = $(USRDIR)/libexec |
370 LLVM_LIBEXECDIR_32 = /usr/libexec |
244 LLVM_LIBEXECDIR_64 = $(USRDIR)/libexec/$(MACH64) |
371 LLVM_LIBEXECDIR_64 = /usr/libexec/$(MACH64) |
245 LLVM_LIBEXECDIR = $(LLVM_LIBEXECDIR_$(BITS)) |
372 LLVM_LIBEXECDIR = $(LLVM_LIBEXECDIR_$(BITS)) |
246 |
373 |
247 CONFIGURE_OPTIONS += --libexecdir=$(LLVM_LIBEXECDIR) |
374 LIBFFI_INCDIR_32 = /usr/lib/libffi-3.0.9/include |
248 CONFIGURE_OPTIONS += --sharedstatedir=/tmp |
375 LIBFFI_INCDIR_64 = /usr/lib/$(MACH64)/libffi-3.0.9/include |
249 CONFIGURE_OPTIONS += --localstatedir=$(VARDIR) |
376 LIBFFI_INCDIR = $(LIBFFI_INCDIR_$(BITS)) |
250 CONFIGURE_OPTIONS += --enable-compiler-version-checks |
377 |
251 CONFIGURE_OPTIONS += --enable-clang-static-analyzer |
378 LIBFFI_LIBDIR_32 = /usr/lib |
252 |
379 LIBFFI_LIBDIR_64 = /usr/lib/$(MACH64) |
253 ifeq ($(DEBUG_BUILD), 1) |
380 LIBFFI_LIBDIR = $(LIBFFI_LIBDIR_$(BITS)) |
254 CONFIGURE_OPTIONS += --enable-assertions |
381 |
255 CONFIGURE_OPTIONS += --disable-optimized |
382 # -Bdirect and -M /usr/lib/ld/map.noexbss break SPARC builds. |
256 CONFIGURE_OPTIONS += --enable-expensive-checks |
383 LD_B_DIRECT = |
257 CONFIGURE_OPTIONS += --enable-debug-runtime |
384 LD_OPTIONS = -M /usr/lib/ld/map.noexstk |
258 CONFIGURE_OPTIONS += --enable-debug-symbols |
385 LD_OPTIONS += -M /usr/lib/ld/map.pagealign |
|
386 LD_OPTIONS_SO = $(LD_Z_DEFS) $(LD_DEF_LIBS) |
|
387 |
|
388 CMAKE_OPTIONS = -DCMAKE_C_COMPILER:FILEPATH=$(CC) |
|
389 CMAKE_OPTIONS += -DCMAKE_CXX_COMPILER:FILEPATH=$(CXX) |
|
390 CMAKE_OPTIONS += -DCMAKE_C_CFLAGS:STRING="$(CPPFLAGS) $(CFLAGS)" |
|
391 CMAKE_OPTIONS += -DCMAKE_CXX_FLAGS:STRING="$(CPPFLAGS) $(CXXFLAGS)" |
|
392 CMAKE_OPTIONS += -DCMAKE_EXE_LINKER_FLAGS:STRING="$(LDFLAGS)" |
|
393 CMAKE_OPTIONS += -DCMAKE_INSTALL_PREFIX:FILEPATH=$(CMAKE_PREFIX) |
|
394 CMAKE_OPTIONS += -DCMAKE_AR:FILEPATH=/usr/bin/ar |
|
395 |
|
396 CMAKE_OPTIONS += -DCMAKE_INSTALL_BINDIR:STRING="$(CMAKE_INSTALL_BINDIR)" |
|
397 CMAKE_OPTIONS += -DCMAKE_INSTALL_LIBDIR:STRING="$(CMAKE_INSTALL_LIBDIR)" |
|
398 CMAKE_OPTIONS += -DCMAKE_INSTALL_LIBEXECDIR:STRING="$(CMAKE_INSTALL_LIBEXECDIR)" |
|
399 CMAKE_OPTIONS += -DCMAKE_INSTALL_INCLUDEDIR:STRING="$(CMAKE_INSTALL_INCLUDEDIR)" |
|
400 CMAKE_OPTIONS += -DCMAKE_INSTALL_DATADIR:STRING="$(CMAKE_INSTALL_DATADIR)" |
|
401 CMAKE_OPTIONS += -DCMAKE_INSTALL_DATAROOTDIR:STRING="$(CMAKE_INSTALL_DATAROOTDIR)" |
|
402 |
|
403 ifeq ($(MACH),sparc) |
|
404 CMAKE_OPTIONS += -DLLVM_TARGETS_TO_BUILD:STRING="Sparc" |
|
405 endif |
|
406 ifeq ($(MACH),i386) |
|
407 CMAKE_OPTIONS += -DLLVM_TARGETS_TO_BUILD:STRING="X86" |
|
408 endif |
|
409 |
|
410 CMAKE_OPTIONS += -DCMAKE_MAKE_PROGRAM:STRING="/usr/bin/gmake" |
|
411 CMAKE_OPTIONS += -DCMAKE_ASM_COMPILER:STRING="/usr/gnu/bin/as" |
|
412 CMAKE_OPTIONS += -DCMAKE_INSTALL_RPATH:STRING="$(LLVM_RUNPATH)" |
|
413 CMAKE_OPTIONS += -DLLVM_BUILD_TOOLS:BOOL=ON |
|
414 CMAKE_OPTIONS += -DLLVM_INCLUDE_TOOLS:BOOL=ON |
|
415 CMAKE_OPTIONS += -DLLVM_BUILD_TESTS:BOOL=ON |
|
416 CMAKE_OPTIONS += -DLLVM_INCLUDE_TESTS:BOOL=ON |
|
417 CMAKE_OPTIONS += -DLLVM_ENABLE_THREADS:BOOL=ON |
|
418 CMAKE_OPTIONS += -DLLVM_BUILD_32_BITS:BOOL=OFF |
|
419 |
|
420 # CMake tries really hard to be too smart for its own good. |
|
421 ifeq ($(DEBUG_BUILD),1) |
|
422 CMAKE_OPTIONS += -DCMAKE_BUILD_TYPE:STRING=Debug |
|
423 CMAKE_OPTIONS += -DCMAKE_C_FLAGS_DEBUG:STRING="$(OFLAG) $(GFLAG)" |
|
424 CMAKE_OPTIONS += -DCMAKE_CXX_FLAGS_DEBUG:STRING="$(OFLAG) $(GFLAG)" |
|
425 CMAKE_OPTIONS += -DCMAKE_ASM_FLAGS_DEBUG:STRING="$(OFLAG) $(GFLAG)" |
|
426 CMAKE_OPTIONS += -DCMAKE_ASM_FLAGS_RELWITHDEBINFO:STRING="$(OFLAG) $(GFLAG)" |
|
427 CMAKE_OPTIONS += -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING="$(OFLAG) $(GFLAG)" |
|
428 CMAKE_OPTIONS += -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING="$(OFLAG) $(GFLAG)" |
|
429 CMAKE_OPTIONS += -DLLVM_BUILD_EXAMPLES:BOOL=ON |
|
430 CMAKE_OPTIONS += -DLLVM_INCLUDE_EXAMPLES:BOOL=ON |
|
431 CMAKE_OPTIONS += -DLLVM_ENABLE_ASSERTIONS:BOOL=ON |
|
432 CMAKE_OPTIONS += -DLLVM_ENABLE_EXPENSIVE_CHECKS:BOOL=ON |
259 else |
433 else |
260 CONFIGURE_OPTIONS += --disable-assertions |
434 CMAKE_OPTIONS += -DCMAKE_BUILD_TYPE:STRING=Release |
261 CONFIGURE_OPTIONS += --enable-optimized |
435 CMAKE_OPTIONS += -DCMAKE_C_FLAGS_DEBUG:STRING="$(OFLAG)" |
262 CONFIGURE_OPTIONS += --disable-expensive-checks |
436 CMAKE_OPTIONS += -DCMAKE_CXX_FLAGS_DEBUG:STRING="$(OFLAG)" |
263 CONFIGURE_OPTIONS += --disable-debug-runtime |
437 CMAKE_OPTIONS += -DCMAKE_ASM_FLAGS_DEBUG:STRING="$(OFLAG)" |
264 CONFIGURE_OPTIONS += --disable-debug-symbols |
438 CMAKE_OPTIONS += -DCMAKE_ASM_FLAGS_RELWITHDEBINFO:STRING="$(OFLAG)" |
265 endif |
439 CMAKE_OPTIONS += -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING="$(OFLAG)" |
266 |
440 CMAKE_OPTIONS += -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING="$(OFLAG)" |
267 CONFIGURE_OPTIONS += --enable-keep-symbols |
441 CMAKE_OPTIONS += -DLLVM_BUILD_EXAMPLES:BOOL=OFF |
268 CONFIGURE_OPTIONS += --enable-jit |
442 CMAKE_OPTIONS += -DLLVM_INCLUDE_EXAMPLES:BOOL=OFF |
269 CONFIGURE_OPTIONS += --disable-docs |
443 CMAKE_OPTIONS += -DLLVM_ENABLE_ASSERTIONS:BOOL=OFF |
270 CONFIGURE_OPTIONS += --disable-doxygen |
444 CMAKE_OPTIONS += -DLLVM_ENABLE_EXPENSIVE_CHECKS:BOOL=OFF |
271 CONFIGURE_OPTIONS += --enable-threads |
445 endif |
272 CONFIGURE_OPTIONS += --enable-pthreads |
446 |
273 CONFIGURE_OPTIONS += --enable-shared |
447 CMAKE_OPTIONS += -DLLVM_ENABLE_EH:BOOL=ON |
274 CONFIGURE_OPTIONS += --enable-zlib |
448 CMAKE_OPTIONS += -DLLVM_ENABLE_PIC:BOOL=ON |
275 CONFIGURE_OPTIONS += --enable-pic |
449 CMAKE_OPTIONS += -DLLVM_ENABLE_RTTI:BOOL=ON |
276 CONFIGURE_OPTIONS += --enable-timestamps |
450 CMAKE_OPTIONS += -DLLVM_ENABLE_WARNINGS:BOOL=ON |
277 CONFIGURE_OPTIONS += --enable-backtraces |
451 CMAKE_OPTIONS += -DLLVM_ENABLE_PEDANTIC:BOOL=ON |
278 CONFIGURE_OPTIONS += --enable-bindings=auto |
452 CMAKE_OPTIONS += -DLLVM_ABI_BREAKING_CHECKS:STRING="FORCE_OFF" |
279 CONFIGURE_OPTIONS += --enable-libffi |
453 CMAKE_OPTIONS += -DLLVM_ENABLE_ZLIB:BOOL=ON |
280 CONFIGURE_OPTIONS += --enable-terminfo |
454 CMAKE_OPTIONS += -DLLVM_ENABLE_FFI:BOOL=ON |
281 CONFIGURE_OPTIONS += --disable-ltdl-install |
455 CMAKE_OPTIONS += -DFFI_INCLUDE_DIR:STRING=$(LIBFFI_INCDIR) |
282 CONFIGURE_OPTIONS += --with-python=$(PYTHON) |
456 CMAKE_OPTIONS += -DFFI_LIBRARY_DIR:STRING=$(LIBFFI_LIBDIR) |
283 |
457 |
284 ifeq ($(MACH),sparc) |
458 ifeq ($(HAVE_SPHINX),1) |
285 CONFIGURE_OPTIONS += --with-extra-ld-options='-lkstat' |
459 CMAKE_OPTIONS += -DSPHINX_EXECUTABLE:STRING="/usr/bin/sphinx-build" |
286 endif |
460 CMAKE_OPTIONS += -DLLVM_ENABLE_SPHINX:BOOL=ON |
287 CONFIGURE_OPTIONS += --with-gcc-toolchain=$(USRDIR)/gcc/$(GCC_VERSION) |
461 CMAKE_OPTIONS += -DLLVM_BUILD_DOCS:BOOL=ON |
288 CONFIGURE_OPTIONS += --with-optimize-option="$(OFLAG) $(GFLAG)" |
462 CMAKE_OPTIONS += -DSPHINX_OUTPUT_HTML:BOOL=ON |
289 |
463 CMAKE_OPTIONS += -DSPHINX_OUTPUT_MAN:BOOL=ON |
290 # Enable the cross-compiler in 3.8.X. |
464 endif |
291 CONFIGURE_OPTIONS.i386 += --enable-targets="x86" |
465 |
292 CONFIGURE_OPTIONS.sparc += --enable-targets="sparc" |
466 # Always build the libLLVM and libclang shared libraries |
|
467 CMAKE_OPTIONS += -DLLVM_BUILD_LLVM_DYLIB:BOOL=ON |
|
468 CMAKE_OPTIONS += -DLLVM_LINK_LLVM_DYLIB:BOOL=ON |
|
469 |
|
470 CMAKE_OPTIONS += -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON |
|
471 |
|
472 CMAKE_OPTIONS += -DLLVM_COMPILER_IS_GCC_COMPATIBLE:BOOL=ON |
|
473 |
|
474 ifeq ($(CMAKE_NEEDS_SOLARIS_HOST),1) |
|
475 CMAKE_OPTIONS += -DCMAKE_HOST_SOLARIS:BOOL=TRUE |
|
476 endif |
|
477 |
|
478 COMPONENT_BUILD_ENV = CC="$(CC)" |
|
479 COMPONENT_BUILD_ENV += CXX="$(CXX)" |
|
480 COMPONENT_BUILD_ENV += CFLAGS="$(CFLAGS)" |
|
481 COMPONENT_BUILD_ENV += CXXFLAGS="$(CXXFLAGS)" |
|
482 COMPONENT_BUILD_ENV += LDFLAGS="$(LDFLAGS)" |
|
483 COMPONENT_BUILD_ENV += LD_OPTIONS="$(LD_OPTIONS)" |
|
484 COMPONENT_BUILD_ENV += PATH="$(PATH)" |
|
485 COMPONENT_BUILD_ENV += LANG="C" |
|
486 COMPONENT_BUILD_ENV += LC_ALL="C" |
|
487 COMPONENT_BUILD_ENV += LD_EXEC_OPTIONS="-zaslr=disable" |
293 |
488 |
294 # Put this here for now until the gpatch problems are resolved. |
489 # Put this here for now until the gpatch problems are resolved. |
295 COMPONENT_BUILD_ARGS += -j8 |
490 COMPONENT_BUILD_ARGS += -j4 |
296 |
491 |
297 # use bash(1) to run the install recipes otherwise clang header installation |
492 # use bash(1) to run the install recipes otherwise clang header installation |
298 # fails |
493 # fails |
299 COMPONENT_INSTALL_ARGS += SHELL=/bin/bash |
494 COMPONENT_INSTALL_ARGS += SHELL=/bin/bash |
300 |
495 |
301 # common targets |
496 COMPONENT_PRE_BUILD_ACTION += cd $(@D) ; |
302 # There are no master test results yet. TBDL in 3.8.X. |
497 COMPONENT_PRE_BUILD_ACTION += echo BITS: $(BITS) ; |
|
498 COMPONENT_PRE_BUILD_ACTION += echo Running cmake with $(CMAKE_OPTIONS) ; |
|
499 COMPONENT_PRE_BUILD_ACTION += /usr/bin/env - $(COMPONENT_BUILD_ENV) \ |
|
500 $(CMAKE) $(CMAKE_OPTIONS) \ |
|
501 $(COMPONENT_DIR)/$(COMPONENT_SRC) ; |
|
502 |
|
503 |
|
504 # There are no master test results just yet. But there will be |
|
505 # very soon. |
303 test: |
506 test: |
304 @echo "Tests not yet implemented (wait for 3.8.X)." |
507 @echo "Tests not yet implemented - coming soon in LLVM 3.8.1." |
|
508 |
|
509 system-test: $(SYSTEM_TESTS_NOT_IMPLEMENTED) |
305 |
510 |
306 REQUIRED_PACKAGES += developer/gcc-4/gcc-common-49 |
511 REQUIRED_PACKAGES += developer/gcc-4/gcc-common-49 |
307 REQUIRED_PACKAGES += developer/gnu-binutils |
512 REQUIRED_PACKAGES += developer/gnu-binutils |
308 REQUIRED_PACKAGES += library/libedit |
513 REQUIRED_PACKAGES += library/libedit |
309 REQUIRED_PACKAGES += library/libffi |
514 REQUIRED_PACKAGES += library/libffi |
310 REQUIRED_PACKAGES += library/libxml2 |
515 REQUIRED_PACKAGES += library/libxml2 |
311 REQUIRED_PACKAGES += library/zlib |
516 REQUIRED_PACKAGES += library/zlib |
|
517 REQUIRED_PACKAGES += runtime/perl-522 |
|
518 REQUIRED_PACKAGES += library/perl-5/xml-libxml |
|
519 REQUIRED_PACKAGES += library/perl-5/xml-namespacesupport |
|
520 REQUIRED_PACKAGES += library/perl-5/xml-parser |
|
521 REQUIRED_PACKAGES += library/perl-5/xml-sax |
|
522 REQUIRED_PACKAGES += library/perl-5/xml-sax-base |
|
523 REQUIRED_PACKAGES += library/perl-5/xml-simple |
312 REQUIRED_PACKAGES += runtime/python-27 |
524 REQUIRED_PACKAGES += runtime/python-27 |
313 REQUIRED_PACKAGES += system/core-os |
525 REQUIRED_PACKAGES += system/core-os |
314 REQUIRED_PACKAGES += system/header |
526 REQUIRED_PACKAGES += system/header |
315 REQUIRED_PACKAGES += system/library/gcc/gcc-runtime-49 |
527 REQUIRED_PACKAGES += system/library/gcc/gcc-runtime-49 |
316 REQUIRED_PACKAGES += system/library/gcc/gcc-c++-runtime-49 |
528 REQUIRED_PACKAGES += system/library/gcc/gcc-c++-runtime-49 |
317 REQUIRED_PACKAGES += system/library/gcc/gcc-c-runtime-49 |
529 REQUIRED_PACKAGES += system/library/gcc/gcc-c-runtime-49 |
318 REQUIRED_PACKAGES += system/library/gcc/gcc-gobjc-runtime-49 |
530 REQUIRED_PACKAGES += system/library/gcc/gcc-gobjc-runtime-49 |
319 REQUIRED_PACKAGES += system/library/math |
531 REQUIRED_PACKAGES += system/library/math |
320 REQUIRED_PACKAGES += system/linker |
532 REQUIRED_PACKAGES += system/linker |
|
533 |