Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

package updates #1343

Merged
merged 26 commits into from
Sep 24, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build/clang/build-13.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ DESC+="infrastructure for languages in the C language family (C, C++, "
DESC+="Objective C/C++, OpenCL, CUDA, and RenderScript) for the LLVM project"

set_arch 64
[ $RELVER -ge 151041 ] && set_clangver
test_relver '>=' 151041 && set_clangver
set_builddir llvm-project-$VER.src/$PROG

SKIP_RTIME_CHECK=1
Expand Down
92 changes: 92 additions & 0 deletions build/clang/build-17.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
#!/usr/bin/bash
#
# {{{ CDDL HEADER
#
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"), version 1.0.
# You may only use this file in accordance with the terms of version
# 1.0 of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
# source. A copy of the CDDL is also available via the Internet at
# http://www.illumos.org/license/CDDL.
# }}}

# Copyright 2023 OmniOS Community Edition (OmniOSce) Association.

. ../../lib/build.sh

PROG=clang
PKG=ooce/developer/clang-17
VER=17.0.1
SUMMARY="C language family frontend for LLVM"
DESC="The Clang project provides a language front-end and tooling "
DESC+="infrastructure for languages in the C language family (C, C++, "
DESC+="Objective C/C++, OpenCL, CUDA, and RenderScript) for the LLVM project"

min_rel 151047

set_arch 64
set_clangver
set_builddir llvm-project-$VER.src/$PROG

SKIP_RTIME_CHECK=1
NO_SONAME_EXPECTED=1

MAJVER=${VER%%.*}
MINVER=${VER%.*}
set_patchdir patches-$MAJVER

# Using the = prefix to require the specific matching version of llvm
BUILD_DEPENDS_IPS="=ooce/developer/llvm-$MAJVER@$VER"

RUN_DEPENDS_IPS="=ooce/developer/llvm-$MAJVER@$MINVER"

OPREFIX=$PREFIX
PREFIX+=/llvm-$MAJVER

PKGDIFFPATH="${PREFIX#/}/lib/$PROG"
PKGDIFF_HELPER="
s:$PKGDIFFPATH/[0-9][0-9.]*:$PKGDIFFPATH/VERSION:
"

XFORM_ARGS="
-DPREFIX=${PREFIX#/}
-DOPREFIX=${OPREFIX#/}
-DPROG=$PROG
-DPKGROOT=llvm-$MAJVER
-DMEDIATOR=$PROG -DMEDIATOR_VERSION=$MAJVER
-DVERSION=$MAJVER
"

CONFIGURE_OPTS[amd64]=
CONFIGURE_OPTS[amd64_WS]="
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX=\"$PREFIX\"
-DCMAKE_C_COMPILER=\"$CC\"
-DCMAKE_CXX_COMPILER=\"$CXX\"
-DCMAKE_C_LINK_FLAGS=\"${LDFLAGS[amd64]}\"
-DCMAKE_CXX_LINK_FLAGS=\"${LDFLAGS[amd64]}\"
-DGCC_INSTALL_PREFIX=\"$GCCPATH\"
-DCLANG_VENDOR=\"$DISTRO/$RELVER\"
-DCLANG_DEFAULT_RTLIB=libgcc
-DCLANG_DEFAULT_CXX_STDLIB=libstdc++
-DLLVM_DIR=\"$PREFIX/lib/cmake/llvm\"
-DLLVM_INCLUDE_TESTS=OFF
"
LDFLAGS+=" -lm"
# we want to end up with '$ORIGIN/../lib' as runpath and not with
# '$PREFIX/lib:$ORIGIN/../lib'; yet we need to find libLLVM during build time
export LD_LIBRARY_PATH="$PREFIX/lib"

init
download_source llvm llvm-project $VER.src
patch_source
prep_build cmake+ninja
build -noctf # C++
strip_install
make_package
clean_up

# Vim hints
# vim:ts=4:sw=4:et:fdm=marker
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
diff -wpruN --no-dereference '--exclude=*.orig' a~/lib/Basic/Targets/OSTargets.h a/lib/Basic/Targets/OSTargets.h
--- a~/lib/Basic/Targets/OSTargets.h 1970-01-01 00:00:00
+++ a/lib/Basic/Targets/OSTargets.h 1970-01-01 00:00:00
@@ -625,6 +625,7 @@ protected:
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple,
MacroBuilder &Builder) const override {
DefineStd(Builder, "sun", Opts);
+ Builder.defineMacro("__illumos__");
DefineStd(Builder, "unix", Opts);
Builder.defineMacro("__svr4__");
Builder.defineMacro("__SVR4");
61 changes: 61 additions & 0 deletions build/clang/patches-17/add-rpath-for-libstdcxx.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
diff -wpruN --no-dereference '--exclude=*.orig' a~/lib/Driver/ToolChain.cpp a/lib/Driver/ToolChain.cpp
--- a~/lib/Driver/ToolChain.cpp 1970-01-01 00:00:00
+++ a/lib/Driver/ToolChain.cpp 1970-01-01 00:00:00
@@ -1187,9 +1187,7 @@ void ToolChain::AddClangCXXStdlibIsystem
}

bool ToolChain::ShouldLinkCXXStdlib(const llvm::opt::ArgList &Args) const {
- return getDriver().CCCIsCXX() &&
- !Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs,
- options::OPT_nostdlibxx);
+ return getDriver().CCCIsCXX() && !Args.hasArg(options::OPT_nostdlibxx);
}

void ToolChain::AddCXXStdlibLibArgs(const ArgList &Args,
diff -wpruN --no-dereference '--exclude=*.orig' a~/lib/Driver/ToolChains/Solaris.cpp a/lib/Driver/ToolChains/Solaris.cpp
--- a~/lib/Driver/ToolChains/Solaris.cpp 1970-01-01 00:00:00
+++ a/lib/Driver/ToolChains/Solaris.cpp 1970-01-01 00:00:00
@@ -128,10 +128,11 @@ void solaris::Linker::ConstructJob(Compi
bool NeedsSanitizerDeps = addSanitizerRuntimes(getToolChain(), Args, CmdArgs);
AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs, JA);

+ if (getToolChain().ShouldLinkCXXStdlib(Args) && !Args.hasArg(options::OPT_r))
+ getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
+
if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs,
options::OPT_r)) {
- if (getToolChain().ShouldLinkCXXStdlib(Args))
- getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
// LLVM support for atomics on 32-bit SPARC V8+ is incomplete, so
// forcibly link with libatomic as a workaround.
if (getToolChain().getTriple().getArch() == llvm::Triple::sparc) {
@@ -305,3 +306,16 @@ void Solaris::addLibStdCxxIncludePaths(
TripleStr, Multilib.includeSuffix(), DriverArgs,
CC1Args);
}
+
+void Solaris::AddCXXStdlibLibArgs(const ArgList &Args,
+ ArgStringList &CmdArgs) const {
+ Generic_ELF::AddCXXStdlibLibArgs(Args, CmdArgs);
+
+ if (GetCXXStdlibType(Args) != ToolChain::CST_Libstdcxx)
+ return;
+
+ StringRef LibSuffix = getSolarisLibSuffix(getTriple());
+ std::string MajVer = GCCInstallation.getVersion().MajorStr;
+ CmdArgs.push_back(Args.MakeArgString(StringRef("-R")
+ + "/usr/gcc/" + MajVer + "/lib" + LibSuffix));
+}
diff -wpruN --no-dereference '--exclude=*.orig' a~/lib/Driver/ToolChains/Solaris.h a/lib/Driver/ToolChains/Solaris.h
--- a~/lib/Driver/ToolChains/Solaris.h 1970-01-01 00:00:00
+++ a/lib/Driver/ToolChains/Solaris.h 1970-01-01 00:00:00
@@ -62,6 +62,9 @@ public:
addLibStdCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
llvm::opt::ArgStringList &CC1Args) const override;

+ void AddCXXStdlibLibArgs(const llvm::opt::ArgList &Args,
+ llvm::opt::ArgStringList &CmdArgs) const override;
+
SanitizerMask getSupportedSanitizers() const override;
unsigned GetDefaultDwarfVersion() const override { return 2; }

34 changes: 34 additions & 0 deletions build/clang/patches-17/default-preprocessor-definition.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
$NetBSD: patch-lib_Basic_Targets_OSTargets.h,v 1.4 2019/10/19 13:54:29 adam Exp $

Sync SunOS default defines with a working reality.

diff -wpruN --no-dereference '--exclude=*.orig' a~/lib/Basic/Targets/OSTargets.h a/lib/Basic/Targets/OSTargets.h
--- a~/lib/Basic/Targets/OSTargets.h 1970-01-01 00:00:00
+++ a/lib/Basic/Targets/OSTargets.h 1970-01-01 00:00:00
@@ -628,22 +628,15 @@ protected:
DefineStd(Builder, "unix", Opts);
Builder.defineMacro("__svr4__");
Builder.defineMacro("__SVR4");
- // Solaris headers require _XOPEN_SOURCE to be set to 600 for C99 and
- // newer, but to 500 for everything else. feature_test.h has a check to
- // ensure that you are not using C99 with an old version of X/Open or C89
- // with a new version.
- if (Opts.C99)
- Builder.defineMacro("_XOPEN_SOURCE", "600");
- else
- Builder.defineMacro("_XOPEN_SOURCE", "500");
+ // Compatibility with GCC to satisfy <sys/feature_tests.h> requirements.
if (Opts.CPlusPlus) {
- Builder.defineMacro("__C99FEATURES__");
+ Builder.defineMacro("__STDC_VERSION__", "199901L");
+ Builder.defineMacro("_XOPEN_SOURCE", "600");
Builder.defineMacro("_FILE_OFFSET_BITS", "64");
- }
- // GCC restricts the next two to C++.
Builder.defineMacro("_LARGEFILE_SOURCE");
Builder.defineMacro("_LARGEFILE64_SOURCE");
Builder.defineMacro("__EXTENSIONS__");
+ }
if (Opts.POSIXThreads)
Builder.defineMacro("_REENTRANT");
if (this->HasFloat128)
21 changes: 21 additions & 0 deletions build/clang/patches-17/no-default-libgcc_s-linking.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
diff -wpruN --no-dereference '--exclude=*.orig' a~/lib/Driver/ToolChains/Solaris.cpp a/lib/Driver/ToolChains/Solaris.cpp
--- a~/lib/Driver/ToolChains/Solaris.cpp 1970-01-01 00:00:00
+++ a/lib/Driver/ToolChains/Solaris.cpp 1970-01-01 00:00:00
@@ -53,6 +53,7 @@ void solaris::Linker::ConstructJob(Compi
const ArgList &Args,
const char *LinkingOutput) const {
ArgStringList CmdArgs;
+ const Driver &D = getToolChain().getDriver();

// Demangle C++ names in errors
CmdArgs.push_back("-C");
@@ -138,7 +139,8 @@ void solaris::Linker::ConstructJob(Compi
CmdArgs.push_back("-latomic");
CmdArgs.push_back(getAsNeededOption(getToolChain(), false));
}
- CmdArgs.push_back("-lgcc_s");
+ if (D.CCCIsCXX())
+ CmdArgs.push_back("-lgcc_s");
CmdArgs.push_back("-lc");
if (!Args.hasArg(options::OPT_shared)) {
CmdArgs.push_back("-lgcc");
12 changes: 12 additions & 0 deletions build/clang/patches-17/no-default-libm-linking.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
diff -wpruN --no-dereference '--exclude=*.orig' a~/lib/Driver/ToolChains/Solaris.cpp a/lib/Driver/ToolChains/Solaris.cpp
--- a~/lib/Driver/ToolChains/Solaris.cpp 1970-01-01 00:00:00
+++ a/lib/Driver/ToolChains/Solaris.cpp 1970-01-01 00:00:00
@@ -145,6 +145,7 @@ void solaris::Linker::ConstructJob(Compi
CmdArgs.push_back("-lc");
if (!Args.hasArg(options::OPT_shared)) {
CmdArgs.push_back("-lgcc");
+ if (D.CCCIsCXX())
- CmdArgs.push_back("-lm");
+ CmdArgs.push_back("-lm");
}
const SanitizerArgs &SA = getToolChain().getSanitizerArgs(Args);
13 changes: 13 additions & 0 deletions build/clang/patches-17/no-sanitizer-runtime-lib-linking.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
diff -wpruN --no-dereference '--exclude=*.orig' a~/lib/Driver/ToolChains/CommonArgs.cpp a/lib/Driver/ToolChains/CommonArgs.cpp
--- a~/lib/Driver/ToolChains/CommonArgs.cpp 1970-01-01 00:00:00
+++ a/lib/Driver/ToolChains/CommonArgs.cpp 1970-01-01 00:00:00
@@ -1009,6 +1009,9 @@ const char *tools::getAsNeededOption(con

void tools::linkSanitizerRuntimeDeps(const ToolChain &TC,
ArgStringList &CmdArgs) {
+ if (TC.getTriple().isOSSolaris())
+ return;
+
// Force linking against the system libraries sanitizers depends on
// (see PR15823 why this is necessary).
CmdArgs.push_back(getAsNeededOption(TC, false));
17 changes: 17 additions & 0 deletions build/clang/patches-17/no-ssp-linking.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
diff -wpruN --no-dereference '--exclude=*.orig' a~/lib/Driver/ToolChains/Solaris.cpp a/lib/Driver/ToolChains/Solaris.cpp
--- a~/lib/Driver/ToolChains/Solaris.cpp 1970-01-01 00:00:00
+++ a/lib/Driver/ToolChains/Solaris.cpp 1970-01-01 00:00:00
@@ -131,13 +131,6 @@ void solaris::Linker::ConstructJob(Compi
options::OPT_r)) {
if (getToolChain().ShouldLinkCXXStdlib(Args))
getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
- if (Args.hasArg(options::OPT_fstack_protector) ||
- Args.hasArg(options::OPT_fstack_protector_strong) ||
- Args.hasArg(options::OPT_fstack_protector_all)) {
- // Explicitly link ssp libraries, not folded into Solaris libc.
- CmdArgs.push_back("-lssp_nonshared");
- CmdArgs.push_back("-lssp");
- }
// LLVM support for atomics on 32-bit SPARC V8+ is incomplete, so
// forcibly link with libatomic as a workaround.
if (getToolChain().getTriple().getArch() == llvm::Triple::sparc) {
12 changes: 12 additions & 0 deletions build/clang/patches-17/no-symbolic-functions.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
diff -wpruN --no-dereference '--exclude=*.orig' a~/tools/clang-shlib/CMakeLists.txt a/tools/clang-shlib/CMakeLists.txt
--- a~/tools/clang-shlib/CMakeLists.txt 1970-01-01 00:00:00
+++ a/tools/clang-shlib/CMakeLists.txt 1970-01-01 00:00:00
@@ -50,7 +50,7 @@ add_clang_library(clang-cpp
${_DEPS})
# Optimize function calls for default visibility definitions to avoid PLT and
# reduce dynamic relocations.
-if (NOT APPLE AND NOT MINGW)
+if (NOT APPLE AND NOT MINGW AND NOT ${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
target_link_options(clang-cpp PRIVATE LINKER:-Bsymbolic-functions)
endif()
if (MINGW OR CYGWIN)
24 changes: 24 additions & 0 deletions build/clang/patches-17/no-usr-local-include.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
diff -wpruN --no-dereference '--exclude=*.orig' a~/lib/Driver/ToolChains/Solaris.cpp a/lib/Driver/ToolChains/Solaris.cpp
--- a~/lib/Driver/ToolChains/Solaris.cpp 1970-01-01 00:00:00
+++ a/lib/Driver/ToolChains/Solaris.cpp 1970-01-01 00:00:00
@@ -246,9 +246,6 @@ void Solaris::AddClangSystemIncludeArgs(
if (DriverArgs.hasArg(clang::driver::options::OPT_nostdinc))
return;

- if (!DriverArgs.hasArg(options::OPT_nostdlibinc))
- addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/usr/local/include");
-
if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) {
SmallString<128> P(D.ResourceDir);
llvm::sys::path::append(P, "include");
diff -wpruN --no-dereference '--exclude=*.orig' a~/lib/Lex/InitHeaderSearch.cpp a/lib/Lex/InitHeaderSearch.cpp
--- a~/lib/Lex/InitHeaderSearch.cpp 1970-01-01 00:00:00
+++ a/lib/Lex/InitHeaderSearch.cpp 1970-01-01 00:00:00
@@ -234,6 +234,7 @@ void InitHeaderSearch::AddDefaultCInclud
case llvm::Triple::CloudABI:
case llvm::Triple::NaCl:
case llvm::Triple::ELFIAMCU:
+ case llvm::Triple::Solaris:
break;
case llvm::Triple::Win32:
if (triple.getEnvironment() != llvm::Triple::Cygnus)
12 changes: 12 additions & 0 deletions build/clang/patches-17/no-version-script.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
diff -wpruN --no-dereference '--exclude=*.orig' a~/tools/libclang/CMakeLists.txt a/tools/libclang/CMakeLists.txt
--- a~/tools/libclang/CMakeLists.txt 1970-01-01 00:00:00
+++ a/tools/libclang/CMakeLists.txt 1970-01-01 00:00:00
@@ -97,7 +97,7 @@ if(MSVC)
set(LLVM_EXPORTED_SYMBOL_FILE)
endif()

-if (UNIX AND NOT APPLE)
+if (UNIX AND NOT APPLE AND NOT ${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
set(LLVM_EXPORTED_SYMBOL_FILE)
set(USE_VERSION_SCRIPT ${LLVM_HAVE_LINK_VERSION_SCRIPT})
endif()
11 changes: 11 additions & 0 deletions build/clang/patches-17/series
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
use-gas.patch
no-ssp-linking.patch
default-preprocessor-definition.patch
no-usr-local-include.patch
no-default-libgcc_s-linking.patch
add-rpath-for-libstdcxx.patch
no-version-script.patch
no-symbolic-functions.patch
no-sanitizer-runtime-lib-linking.patch
no-default-libm-linking.patch
add-__illumos__-preprocessor-definition.patch
12 changes: 12 additions & 0 deletions build/clang/patches-17/use-gas.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
diff -wpruN --no-dereference '--exclude=*.orig' a~/lib/Driver/ToolChains/Solaris.cpp a/lib/Driver/ToolChains/Solaris.cpp
--- a~/lib/Driver/ToolChains/Solaris.cpp 1970-01-01 00:00:00
+++ a/lib/Driver/ToolChains/Solaris.cpp 1970-01-01 00:00:00
@@ -42,7 +42,7 @@ void solaris::Assembler::ConstructJob(Co
for (const auto &II : Inputs)
CmdArgs.push_back(II.getFilename());

- const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("as"));
+ const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("gas"));
C.addCommand(std::make_unique<Command>(JA, *this, ResponseFileSupport::None(),
Exec, CmdArgs, Inputs, Output));
}
2 changes: 1 addition & 1 deletion build/cmake/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
. ../../lib/build.sh

PROG=cmake
VER=3.27.4
VER=3.27.6
PKG=ooce/developer/cmake
SUMMARY="Build coordinator"
DESC="An extensible system that manages the build process in a "
Expand Down
2 changes: 1 addition & 1 deletion build/cups/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
. ../../lib/build.sh

PROG=cups
VER=2.4.6
VER=2.4.7
PKG=ooce/print/cups
SUMMARY="Common UNIX Printing System"
DESC="Standards-based, open source printing system for UNIX operating systems"
Expand Down
4 changes: 2 additions & 2 deletions build/fuse/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@
# http://www.illumos.org/license/CDDL.
# }}}

# Copyright 2022 OmniOS Community Edition (OmniOSce) Association.
# Copyright 2023 OmniOS Community Edition (OmniOSce) Association.

. ../../lib/build.sh

PROG=fuse
VER=1.4
VER=1.5
PKG=ooce/driver/fuse
SUMMARY="$PROG"
DESC="fuse kernel module for illumos"
Expand Down
Loading
Loading