fritzkink
2024-03-20 73c51c566ac5fcd15763f26539f6f2196d8af04e
commit | author | age
65f501 1 #
F 2 # This file and its contents are supplied under the terms of the
3 # Common Development and Distribution License ("CDDL"), version 1.0.
4 # You may only use this file in accordance with the terms of version
5 # 1.0 of the CDDL.
6 #
7 # A full copy of the text of the CDDL should have accompanied this
8 # source.  A copy of the CDDL is also available via the Internet at
9 # http://www.illumos.org/license/CDDL.
10 #
11
12 #
13 # Copyright 2016 Aurelien Larcher.  All rights reserved.
14 # Copyright 2019 Alexander Pyhalov
15 # Copyright 2019 Michal Nowak
16 # Copyright 2019 Till Wegmüller
17 # Copyright 2022 Klaus Ziegler
18 # Copyright 2024 Friedrich Kink
19 #
20
21 BUILD_BITS= 64
22 BUILD_STYLE= cmake
73c51c 23 USE_PARALLEL_BUILD= yes
F 24
65f501 25 include ../../../make-rules/shared-macros.mk
F 26
27 COMPONENT_MJR_VERSION=    18
28 COMPONENT_BASE_VERSION=    $(COMPONENT_MJR_VERSION).1
29 COMPONENT_NAME=        clang-$(COMPONENT_MJR_VERSION)
30 COMPONENT_VERSION=    $(COMPONENT_BASE_VERSION).1
73c51c 31 COMPONENT_REVISION=    1
65f501 32 COMPONENT_SUMMARY=    LLVM tools and Clang compiler
F 33 COMPONENT_PROJECT_URL=    https://llvm.org/
34 COMPONENT_SRC=        $(LLVM_NAME)-$(COMPONENT_VERSION).src
35 COMPONENT_ARCHIVE=    $(COMPONENT_SRC).tar.xz
36 COMPONENT_ARCHIVE_HASH= sha256:ab0508d02b2d126ceb98035c28638a9d7b1e7fa5ef719396236e72f59a02e1ac
37 COMPONENT_ARCHIVE_URL=  https://github.com/llvm/llvm-project/releases/download/llvmorg-$(COMPONENT_VERSION)/$(COMPONENT_ARCHIVE)
38 COMPONENT_FMRI=        developer/$(COMPONENT_NAME)
39 COMPONENT_CLASSIFICATION=    Development/C
40 COMPONENT_LICENSE=    BSD
41 COMPONENT_LICENSE_FILE=    LICENSE.TXT
42
43 LLVM_NAME= llvm
44 CLANG_NAME= clang
45
46 COMPONENT_ARCHIVE_1=    $(CLANG_NAME)-$(COMPONENT_VERSION).src.tar.xz
47 COMPONENT_ARCHIVE_HASH_1= sha256:412a482b81a969846b127552f8fa2251c7d57a82337f848fe7fea8e6ce614836
48 COMPONENT_ARCHIVE_URL_1=https://github.com/llvm/llvm-project/releases/download/llvmorg-$(COMPONENT_VERSION)/$(COMPONENT_ARCHIVE_1)
49
50 COMPONENT_ARCHIVE_2=    cmake-$(COMPONENT_VERSION).src.tar.xz
51 COMPONENT_ARCHIVE_HASH_2= sha256:5308023d1c1e9feb264c14f58db35c53061123300a7eb940364f46d574c8b2d6
52 COMPONENT_ARCHIVE_URL_2=https://github.com/llvm/llvm-project/releases/download/llvmorg-$(COMPONENT_VERSION)/$(COMPONENT_ARCHIVE_2)
53
54 COMPONENT_ARCHIVE_3=    third-party-$(COMPONENT_VERSION).src.tar.xz
55 COMPONENT_ARCHIVE_HASH_3= sha256:41cdf4fe95faa54f497677313b906e04e74079a03defa9fdc2f07ed5f259f1ef
56 COMPONENT_ARCHIVE_URL_3=https://github.com/llvm/llvm-project/releases/download/llvmorg-$(COMPONENT_VERSION)/$(COMPONENT_ARCHIVE_3)
57
58 include $(WS_MAKE_RULES)/common.mk
59
60 CMAKE_PREFIX= /usr/clang/$(COMPONENT_BASE_VERSION)
61
62 PKG_MACROS += GCC_VERSION=$(GCC_VERSION)
63
64 COMPONENT_POST_UNPACK_ACTION += \
65   $(UNPACK) $(USERLAND_ARCHIVES)$(COMPONENT_ARCHIVE_1) && \
66     $(MV) $(CLANG_NAME)-$(COMPONENT_VERSION).src $(COMPONENT_SRC)/tools/clang && \
67   $(UNPACK) $(USERLAND_ARCHIVES)$(COMPONENT_ARCHIVE_2) && \
68     $(MV) cmake-$(COMPONENT_VERSION).src/Modules $(COMPONENT_SRC)/cmake/ && \
69   $(RM) -r cmake-$(COMPONENT_VERSION).src && \
70   $(UNPACK) $(USERLAND_ARCHIVES)$(COMPONENT_ARCHIVE_3) && \
71         $(MKDIR) $(COMPONENT_SRC)/third-party && \
72     $(MV) third-party-$(COMPONENT_VERSION).src/unittest $(COMPONENT_SRC)/third-party && \
73     $(MV) third-party-$(COMPONENT_VERSION).src/benchmark $(COMPONENT_SRC)/third-party && \
74   $(RM) -r third-party-$(COMPONENT_VERSION).src
75
76 COMPONENT_PRE_CONFIGURE_ACTION = ( $(CLONEY) $(SOURCE_DIR) $(@D); )
77
78 COMPONENT_POST_INSTALL_ACTION =  \
79         for file in `echo $(PROTO_DIR)/$(CMAKE_PREFIX)/bin/*`; do \
80                 /usr/bin/elfedit -e 'dyn:runpath $(GCC_LIBDIR):$(CMAKE_PREFIX)/lib' $$file ; \
81         done && \
82         for file in \
83                 `ggrep -rlh '^\#!*/usr/bin/env python' $(PROTO_DIR)/$(CMAKE_PREFIX)`; do \
84           sed -i -e 's:\#!/usr/bin/env.*:\#!$(PYTHON):' $$file; \
85         done
86
87 CMAKE_OPTIONS += -DCMAKE_C_COMPILER=$(CC)
88 CMAKE_OPTIONS += -DCMAKE_CXX_COMPILER=$(CXX)
89 CMAKE_OPTIONS += -DGCC_INSTALL_PREFIX=$(GCC_ROOT)
90 CMAKE_OPTIONS += -DCMAKE_CXX_LINK_FLAGS="-L$(GCC_LIBDIR) -Wl,-rpath,$(GCC_LIBDIR)"
91 CMAKE_OPTIONS += -DCMAKE_BUILD_TYPE=Release
92 CMAKE_OPTIONS += -DCLANG_DEFAULT_LINKER="/usr/bin/ld"
93 CMAKE_OPTIONS += -DLLVM_ENABLE_EH=ON
94 CMAKE_OPTIONS += -DLLVM_ENABLE_RTTI=ON
95 CMAKE_OPTIONS += -DLLVM_LINK_LLVM_DYLIB=ON
96 CMAKE_OPTIONS += -DLLVM_INCLUDE_BENCHMARKS=OFF
97 CMAKE_OPTIONS += -DLLVM_INSTALL_UTILS=ON
98 CMAKE_OPTIONS += -DCLANG_DEFAULT_RTLIB=libgcc
99 CMAKE_OPTIONS += -DCLANG_DEFAULT_CXX_STDLIB=libstdc++
100 CMAKE_OPTIONS += -DPYTHON_EXECUTABLE="$(PYTHON)"
101 CMAKE_OPTIONS += -DCMAKE_MODULE_PATH="$(SOURCE_DIR)/$(COMPONENT_SRC)/cmake/Modules"
102
103 unexport SHELLOPTS
104
105 COMPONENT_TEST_CMD = $(GMAKE)
106 COMPONENT_TEST_TARGETS = check-all
107 COMPONENT_TEST_ENV += PATH=$(PATH.gnu)
108
109 # Do not change the order of these regexp transforms.
110 COMPONENT_TEST_TRANSFORMS += \
111     '-e "/^Testing Time: .*$$/d" ' \
112     '-e "/^make.*$$/d" ' \
113     '-e "/^Failed Tests /,/Unexpected Passed:/p" ' \
114     '-e "" ' \
115     '-e "/.*/d" '
116
117 TESTSUITE_MAKE = $(GMAKE)
118
119 # Auto-generated dependencies
120 PYTHON_REQUIRED_PACKAGES += runtime/python
121 REQUIRED_PACKAGES += $(GCC_RUNTIME_PKG)
122 REQUIRED_PACKAGES += $(GXX_RUNTIME_PKG)
123 REQUIRED_PACKAGES += SUNWcs
124 REQUIRED_PACKAGES += compress/zstd
125 REQUIRED_PACKAGES += library/libedit
126 REQUIRED_PACKAGES += library/libxml2
127 REQUIRED_PACKAGES += library/zlib
128 REQUIRED_PACKAGES += system/library
129 REQUIRED_PACKAGES += system/library/math