From 5387b271a03fe6207e3f7298c6fe3e05fc421d18 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Fri, 22 Apr 2022 17:35:49 +0000 Subject: [PATCH 01/61] gdb: New package to help debugging --- cross/binutils/Makefile | 16 ++++++++++++++++ cross/binutils/PLIST | 17 +++++++++++++++++ cross/binutils/digests | 3 +++ cross/gdb/Makefile | 6 +++--- cross/gdb/PLIST | 4 +++- cross/gdb/digests | 6 +++--- spk/gdb/Makefile | 19 +++++++++++++++++++ spk/gdb/src/gdb.png | Bin 0 -> 20165 bytes 8 files changed, 64 insertions(+), 7 deletions(-) create mode 100644 cross/binutils/Makefile create mode 100644 cross/binutils/PLIST create mode 100644 cross/binutils/digests create mode 100644 spk/gdb/Makefile create mode 100644 spk/gdb/src/gdb.png diff --git a/cross/binutils/Makefile b/cross/binutils/Makefile new file mode 100644 index 00000000000..0d35876c446 --- /dev/null +++ b/cross/binutils/Makefile @@ -0,0 +1,16 @@ +PKG_NAME = binutils +PKG_VERS = 2.38 +PKG_EXT = tar.xz +PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) +PKG_DIST_SITE = https://ftp.gnu.org/gnu/binutils/ +PKG_DIR = $(PKG_NAME)-$(PKG_VERS) + +DEPENDS = + +HOMEPAGE = https://www.gnu.org/software/binutils/ +COMMENT = GNU Binutils +LICENSE = GPLv2/LGPLv2 + +GNU_CONFIGURE = 1 + +include ../../mk/spksrc.cross-cc.mk diff --git a/cross/binutils/PLIST b/cross/binutils/PLIST new file mode 100644 index 00000000000..a8d384f8293 --- /dev/null +++ b/cross/binutils/PLIST @@ -0,0 +1,17 @@ +bin:bin/addr2line +bin:bin/ar +bin:bin/as +bin:bin/c++filt +bin:bin/elfedit +bin:bin/gprof +bin:bin/ld +bin:bin/ld.bfd +bin:bin/nm +bin:bin/objcopy +bin:bin/objdump +bin:bin/ranlib +bin:bin/readelf +bin:bin/size +bin:bin/strings +bin:bin/strip +lib:lib/bfd-plugins/libdep.so diff --git a/cross/binutils/digests b/cross/binutils/digests new file mode 100644 index 00000000000..e24b7cd4492 --- /dev/null +++ b/cross/binutils/digests @@ -0,0 +1,3 @@ +binutils-2.38.tar.xz SHA1 15d42de8f15404a4a43a912440cf367f994779d7 +binutils-2.38.tar.xz SHA256 e316477a914f567eccc34d5d29785b8b0f5a10208d36bbacedcc39048ecfe024 +binutils-2.38.tar.xz MD5 6e39cad1bb414add02b5b1169c18fdc5 diff --git a/cross/gdb/Makefile b/cross/gdb/Makefile index f9a891b6b6a..70dcf1fb260 100644 --- a/cross/gdb/Makefile +++ b/cross/gdb/Makefile @@ -1,11 +1,11 @@ PKG_NAME = gdb -PKG_VERS = 7.6 -PKG_EXT = tar.bz2 +PKG_VERS = 11.2 +PKG_EXT = tar.xz PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) PKG_DIST_SITE = https://ftp.gnu.org/gnu/gdb PKG_DIR = $(PKG_NAME)-$(PKG_VERS) -DEPENDS = cross/termcap +DEPENDS = cross/libexpat cross/gmp cross/ncursesw HOMEPAGE = https://www.gnu.org/software/gdb/ COMMENT = The GNU Project Debugger diff --git a/cross/gdb/PLIST b/cross/gdb/PLIST index bd628afd70d..745e6146ae0 100644 --- a/cross/gdb/PLIST +++ b/cross/gdb/PLIST @@ -1,3 +1,5 @@ +bin:bin/gcore bin:bin/gdb +bin:bin/gdb-add-index bin:bin/gdbserver -bin:bin/run +lib:lib/libinproctrace.so diff --git a/cross/gdb/digests b/cross/gdb/digests index 932ba36a73d..efc3e4c2ebb 100644 --- a/cross/gdb/digests +++ b/cross/gdb/digests @@ -1,3 +1,3 @@ -gdb-7.6.tar.bz2 SHA1 b64095579a20e011beeaa5b264fe23a9606ee40f -gdb-7.6.tar.bz2 SHA256 a410e8f35ee70cce83dbbf1da9e2a8373f271ac0e4b71db4336ae293fc7bdf1b -gdb-7.6.tar.bz2 MD5 fda57170e4d11cdde74259ca575412a8 +gdb-11.2.tar.xz SHA1 7c72b1d4a38bb6e155aaad29f4c1abf818b4595d +gdb-11.2.tar.xz SHA256 1497c36a71881b8671a9a84a0ee40faab788ca30d7ba19d8463c3cc787152e32 +gdb-11.2.tar.xz MD5 433bd0904caa31c247b1b1867f2f911d diff --git a/spk/gdb/Makefile b/spk/gdb/Makefile new file mode 100644 index 00000000000..fba367c0b47 --- /dev/null +++ b/spk/gdb/Makefile @@ -0,0 +1,19 @@ +SPK_NAME = gdb +SPK_VERS = 11.2 +SPK_REV = 1 +SPK_ICON = src/gdb.png +CHANGELOG = "1. Initial release of gdb 11.2 including binutils 2.38" + +DEPENDS = cross/$(SPK_NAME) cross/binutils + +MAINTAINER = th0ma7 +DESCRIPTION = The GNU Debugger (GDB) is a portable debugger that runs on many Unix-like systems and works for many programming languages, including Ada, C, C++, Objective-C, Free Pascal, Fortran, Go and partially others. +DISPLAY_NAME = gdb +STARTABLE = no + +HOMEPAGE = https://www.sourceware.org/gdb/ +LICENSE = GPLv2 + +STRIP_TARGET = nop + +include ../../mk/spksrc.spk.mk diff --git a/spk/gdb/src/gdb.png b/spk/gdb/src/gdb.png new file mode 100644 index 0000000000000000000000000000000000000000..9de7be8b8c9259083e6f800511cd5c77d9c9ca77 GIT binary patch literal 20165 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 m#@s7I`}HVDHUvETS Date: Fri, 22 Apr 2022 18:48:04 +0000 Subject: [PATCH 02/61] gdb: Does not support armv5 & ppc (qoriq) --- cross/gdb/Makefile | 2 ++ spk/gdb/Makefile | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/cross/gdb/Makefile b/cross/gdb/Makefile index 70dcf1fb260..639eb57dd0b 100644 --- a/cross/gdb/Makefile +++ b/cross/gdb/Makefile @@ -13,4 +13,6 @@ LICENSE = GPLv2/LGPLv2 GNU_CONFIGURE = 1 +UNSUPPORTED_ARCHS = $(ARMv5_ARCHS) $(PPC_ARCHS) + include ../../mk/spksrc.cross-cc.mk diff --git a/spk/gdb/Makefile b/spk/gdb/Makefile index fba367c0b47..e70cbec7924 100644 --- a/spk/gdb/Makefile +++ b/spk/gdb/Makefile @@ -14,6 +14,6 @@ STARTABLE = no HOMEPAGE = https://www.sourceware.org/gdb/ LICENSE = GPLv2 -STRIP_TARGET = nop +UNSUPPORTED_ARCHS = $(ARMv5_ARCHS) $(PPC_ARCHS) include ../../mk/spksrc.spk.mk From 2e1083bb414e44a9f8dec5b10cebf15619bd5cb6 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Sun, 24 Apr 2022 14:46:22 +0000 Subject: [PATCH 03/61] gdb: Fix variable PLIST entries per arch using PLIST.auto --- cross/gdb/Makefile | 4 +++- cross/gdb/PLIST | 5 ----- cross/gdb/PLIST.auto | 0 3 files changed, 3 insertions(+), 6 deletions(-) delete mode 100644 cross/gdb/PLIST create mode 100644 cross/gdb/PLIST.auto diff --git a/cross/gdb/Makefile b/cross/gdb/Makefile index 639eb57dd0b..26f5acbbbd5 100644 --- a/cross/gdb/Makefile +++ b/cross/gdb/Makefile @@ -5,13 +5,15 @@ PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) PKG_DIST_SITE = https://ftp.gnu.org/gnu/gdb PKG_DIR = $(PKG_NAME)-$(PKG_VERS) -DEPENDS = cross/libexpat cross/gmp cross/ncursesw +DEPENDS = cross/zlib cross/libexpat cross/gmp cross/ncursesw cross/mpfr HOMEPAGE = https://www.gnu.org/software/gdb/ COMMENT = The GNU Project Debugger LICENSE = GPLv2/LGPLv2 GNU_CONFIGURE = 1 +CONFIGURE_ARGS += --enable-host-shared +CONFIGURE_ARGS += --with-system-zlib UNSUPPORTED_ARCHS = $(ARMv5_ARCHS) $(PPC_ARCHS) diff --git a/cross/gdb/PLIST b/cross/gdb/PLIST deleted file mode 100644 index 745e6146ae0..00000000000 --- a/cross/gdb/PLIST +++ /dev/null @@ -1,5 +0,0 @@ -bin:bin/gcore -bin:bin/gdb -bin:bin/gdb-add-index -bin:bin/gdbserver -lib:lib/libinproctrace.so diff --git a/cross/gdb/PLIST.auto b/cross/gdb/PLIST.auto new file mode 100644 index 00000000000..e69de29bb2d From 67da46fac18bece2b4f856170fee9b243b8769ed Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Sun, 24 Apr 2022 15:04:11 +0000 Subject: [PATCH 04/61] gdb: Adjust PLIST_TRANSFORM to remove libs per archs --- cross/gdb/Makefile | 5 +++++ cross/gdb/PLIST | 6 ++++++ cross/gdb/PLIST.auto | 0 3 files changed, 11 insertions(+) create mode 100644 cross/gdb/PLIST delete mode 100644 cross/gdb/PLIST.auto diff --git a/cross/gdb/Makefile b/cross/gdb/Makefile index 26f5acbbbd5..420492bd3a0 100644 --- a/cross/gdb/Makefile +++ b/cross/gdb/Makefile @@ -18,3 +18,8 @@ CONFIGURE_ARGS += --with-system-zlib UNSUPPORTED_ARCHS = $(ARMv5_ARCHS) $(PPC_ARCHS) include ../../mk/spksrc.cross-cc.mk + +# Library is not created under armv7 +ifeq ($(findstring $(ARCH),$(ARMv7_ARCHS) $(ARMv7L_ARCHS)),$(ARCH)) +PLIST_TRANSFORM = sed -e 's?lib:lib/libinproctrace.so??g' +endif diff --git a/cross/gdb/PLIST b/cross/gdb/PLIST new file mode 100644 index 00000000000..12703d13d4b --- /dev/null +++ b/cross/gdb/PLIST @@ -0,0 +1,6 @@ +bin:bin/gcore +bin:bin/gdb +bin:bin/gdb-add-index +bin:bin/gdbserver +bin:bin/run +lib:lib/libinproctrace.so diff --git a/cross/gdb/PLIST.auto b/cross/gdb/PLIST.auto deleted file mode 100644 index e69de29bb2d..00000000000 From aba9104f187164a0f3adf20cc861a5df542e406c Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Tue, 27 Dec 2022 14:10:47 +0000 Subject: [PATCH 05/61] mpfr: Update from version 4.0.2 to 4.1.1 --- cross/mpfr/Makefile | 9 +- cross/mpfr/PLIST | 2 +- cross/mpfr/digests | 6 +- .../patches/001-allpatches-20190602.patch | 47 ----------- .../patches/001-allpatches-20221227.patch | 83 +++++++++++++++++++ 5 files changed, 92 insertions(+), 55 deletions(-) delete mode 100644 cross/mpfr/patches/001-allpatches-20190602.patch create mode 100644 cross/mpfr/patches/001-allpatches-20221227.patch diff --git a/cross/mpfr/Makefile b/cross/mpfr/Makefile index 5b6725bdde0..46232cd00de 100644 --- a/cross/mpfr/Makefile +++ b/cross/mpfr/Makefile @@ -1,5 +1,5 @@ PKG_NAME = mpfr -PKG_VERS = 4.0.2 +PKG_VERS = 4.1.1 PKG_EXT = tar.xz PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) PKG_DIST_SITE = https://ftp.gnu.org/gnu/mpfr @@ -11,11 +11,12 @@ HOMEPAGE = https://www.mpfr.org/ COMMENT = C library for multiple-precision floating-point computations with correct rounding. LICENSE = GNU Lesser GPL -# Cumulative patches from https://www.mpfr.org/mpfr-4.0.2/allpatches -# for version 4.0.2-p1 - GNU_CONFIGURE = 1 +# Cumulative patches for version 4.1.1-p1 +# https://www.mpfr.org/mpfr-4.1.1/allpatches +PATCHES_LEVEL = 1 + CONFIGURE_ARGS = --with-gmp=$(STAGING_INSTALL_PREFIX) CONFIGURE_ARGS += --disable-static diff --git a/cross/mpfr/PLIST b/cross/mpfr/PLIST index 3a55eb06838..08c6ba632ab 100644 --- a/cross/mpfr/PLIST +++ b/cross/mpfr/PLIST @@ -1,3 +1,3 @@ lnk:lib/libmpfr.so lnk:lib/libmpfr.so.6 -lib:lib/libmpfr.so.6.0.2 +lib:lib/libmpfr.so.6.1.1 diff --git a/cross/mpfr/digests b/cross/mpfr/digests index c9b44fb8557..27d75389354 100644 --- a/cross/mpfr/digests +++ b/cross/mpfr/digests @@ -1,3 +1,3 @@ -mpfr-4.0.2.tar.xz SHA1 52c1f2a4c9a202f46cf3275a8d46b562aa584208 -mpfr-4.0.2.tar.xz SHA256 1d3be708604eae0e42d578ba93b390c2a145f17743a744d8f3f8c2ad5855a38a -mpfr-4.0.2.tar.xz MD5 320fbc4463d4c8cb1e566929d8adc4f8 +mpfr-4.1.1.tar.xz SHA1 2355e921d6c97c898cfe7a57dd7e72725f1fded4 +mpfr-4.1.1.tar.xz SHA256 ffd195bd567dbaffc3b98b23fd00aad0537680c9896171e44fe3ff79e28ac33d +mpfr-4.1.1.tar.xz MD5 d182b62e811f744d149b14540d8e922b diff --git a/cross/mpfr/patches/001-allpatches-20190602.patch b/cross/mpfr/patches/001-allpatches-20190602.patch deleted file mode 100644 index dc73f98bf59..00000000000 --- a/cross/mpfr/patches/001-allpatches-20190602.patch +++ /dev/null @@ -1,47 +0,0 @@ -official patch file from https://www.mpfr.org/mpfr-4.0.2/allpatches - - -diff -Naurd PATCHES PATCHES ---- PATCHES 2019-06-02 17:05:36.121226916 +0000 -+++ PATCHES 2019-06-02 17:05:36.157226621 +0000 -@@ -0,0 +1 @@ -+include-float -diff -Naurd VERSION VERSION ---- VERSION 2019-01-31 20:29:48.000000000 +0000 -+++ VERSION 2019-06-02 17:05:36.157226621 +0000 -@@ -1 +1 @@ --4.0.2 -+4.0.2-p1 -diff -Naurd src/mpfr-impl.h src/mpfr-impl.h ---- src/mpfr-impl.h 2019-01-27 18:30:16.000000000 +0000 -+++ src/mpfr-impl.h 2019-06-02 17:05:36.145226719 +0000 -@@ -57,6 +57,7 @@ - - #include - #include -+#include /* for FLT_RADIX, etc., tested below */ - - - /****************************************************** -diff -Naurd src/mpfr.h src/mpfr.h ---- src/mpfr.h 2019-01-31 20:29:48.000000000 +0000 -+++ src/mpfr.h 2019-06-02 17:05:36.153226653 +0000 -@@ -27,7 +27,7 @@ - #define MPFR_VERSION_MAJOR 4 - #define MPFR_VERSION_MINOR 0 - #define MPFR_VERSION_PATCHLEVEL 2 --#define MPFR_VERSION_STRING "4.0.2" -+#define MPFR_VERSION_STRING "4.0.2-p1" - - /* User macros: - MPFR_USE_FILE: Define it to make MPFR define functions dealing -diff -Naurd src/version.c src/version.c ---- src/version.c 2019-01-31 20:29:48.000000000 +0000 -+++ src/version.c 2019-06-02 17:05:36.153226653 +0000 -@@ -25,5 +25,5 @@ - const char * - mpfr_get_version (void) - { -- return "4.0.2"; -+ return "4.0.2-p1"; - } diff --git a/cross/mpfr/patches/001-allpatches-20221227.patch b/cross/mpfr/patches/001-allpatches-20221227.patch new file mode 100644 index 00000000000..0566c80b378 --- /dev/null +++ b/cross/mpfr/patches/001-allpatches-20221227.patch @@ -0,0 +1,83 @@ +diff -Naurd mpfr-4.1.1-a/PATCHES mpfr-4.1.1-b/PATCHES +--- mpfr-4.1.1-a/PATCHES 2022-11-23 11:45:26.800476079 +0000 ++++ mpfr-4.1.1-b/PATCHES 2022-11-23 11:45:26.844475966 +0000 +@@ -0,0 +1 @@ ++mpfr_custom_get_kind +diff -Naurd mpfr-4.1.1-a/VERSION mpfr-4.1.1-b/VERSION +--- mpfr-4.1.1-a/VERSION 2022-11-17 13:28:44.000000000 +0000 ++++ mpfr-4.1.1-b/VERSION 2022-11-23 11:45:26.844475966 +0000 +@@ -1 +1 @@ +-4.1.1 ++4.1.1-p1 +diff -Naurd mpfr-4.1.1-a/src/mpfr.h mpfr-4.1.1-b/src/mpfr.h +--- mpfr-4.1.1-a/src/mpfr.h 2022-11-17 13:28:44.000000000 +0000 ++++ mpfr-4.1.1-b/src/mpfr.h 2022-11-23 11:45:26.840475978 +0000 +@@ -27,7 +27,7 @@ + #define MPFR_VERSION_MAJOR 4 + #define MPFR_VERSION_MINOR 1 + #define MPFR_VERSION_PATCHLEVEL 1 +-#define MPFR_VERSION_STRING "4.1.1" ++#define MPFR_VERSION_STRING "4.1.1-p1" + + /* User macros: + MPFR_USE_FILE: Define it to make MPFR define functions dealing +@@ -1027,7 +1027,7 @@ + #if __GNUC__ > 2 || __GNUC_MINOR__ >= 95 + #define mpfr_custom_get_kind(x) \ + __extension__ ({ \ +- mpfr_ptr _x = (x); \ ++ mpfr_srcptr _x = (x); \ + _x->_mpfr_exp > __MPFR_EXP_INF ? \ + (mpfr_int) MPFR_REGULAR_KIND * MPFR_SIGN (_x) \ + : _x->_mpfr_exp == __MPFR_EXP_INF ? \ +diff -Naurd mpfr-4.1.1-a/src/version.c mpfr-4.1.1-b/src/version.c +--- mpfr-4.1.1-a/src/version.c 2022-11-17 13:28:44.000000000 +0000 ++++ mpfr-4.1.1-b/src/version.c 2022-11-23 11:45:26.844475966 +0000 +@@ -25,5 +25,5 @@ + const char * + mpfr_get_version (void) + { +- return "4.1.1"; ++ return "4.1.1-p1"; + } +diff -Naurd mpfr-4.1.1-a/tests/tstckintc.c mpfr-4.1.1-b/tests/tstckintc.c +--- mpfr-4.1.1-a/tests/tstckintc.c 2022-05-06 13:47:17.000000000 +0000 ++++ mpfr-4.1.1-b/tests/tstckintc.c 2022-11-23 11:45:26.836475987 +0000 +@@ -295,14 +295,16 @@ + test_nan_inf_zero (void) + { + mpfr_ptr val; ++ mpfr_srcptr sval; /* for compilation error checking */ + int sign; + int kind; + + reset_stack (); + + val = new_mpfr (MPFR_PREC_MIN); ++ sval = val; + mpfr_set_nan (val); +- kind = (mpfr_custom_get_kind) (val); ++ kind = (mpfr_custom_get_kind) (sval); + if (kind != MPFR_NAN_KIND) + { + printf ("mpfr_custom_get_kind error: "); +@@ -380,7 +382,8 @@ + dummy_set_si (long si) + { + mpfr_t x; +- long * r = dummy_new (); ++ mpfr_srcptr px; /* for compilation error checking */ ++ long *r = dummy_new (); + int i1, i2, i3, i4, i5; + + /* Check that the type "void *" can be used, like with the function. +@@ -405,7 +408,8 @@ + MPFR_ASSERTN (i5 == 1); + + mpfr_set_si (x, si, MPFR_RNDN); +- r[0] = mpfr_custom_get_kind (x); ++ px = x; ++ r[0] = mpfr_custom_get_kind (px); + + /* Check that the type "void *" can be used in C, like with the function + (forbidden in C++). Also check side effects. */ From 079bc902015bd39953e2cf681f41cb5cfd31be9e Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Tue, 27 Dec 2022 14:28:00 +0000 Subject: [PATCH 06/61] binutils: Update from version 2.38 to 2.39 --- cross/binutils/Makefile | 2 +- cross/binutils/PLIST | 2 +- cross/binutils/digests | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cross/binutils/Makefile b/cross/binutils/Makefile index 0d35876c446..861a245e574 100644 --- a/cross/binutils/Makefile +++ b/cross/binutils/Makefile @@ -1,5 +1,5 @@ PKG_NAME = binutils -PKG_VERS = 2.38 +PKG_VERS = 2.39 PKG_EXT = tar.xz PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) PKG_DIST_SITE = https://ftp.gnu.org/gnu/binutils/ diff --git a/cross/binutils/PLIST b/cross/binutils/PLIST index a8d384f8293..368945d9227 100644 --- a/cross/binutils/PLIST +++ b/cross/binutils/PLIST @@ -3,7 +3,7 @@ bin:bin/ar bin:bin/as bin:bin/c++filt bin:bin/elfedit -bin:bin/gprof +bin:bin/gp* bin:bin/ld bin:bin/ld.bfd bin:bin/nm diff --git a/cross/binutils/digests b/cross/binutils/digests index e24b7cd4492..ae5b1b78484 100644 --- a/cross/binutils/digests +++ b/cross/binutils/digests @@ -1,3 +1,3 @@ -binutils-2.38.tar.xz SHA1 15d42de8f15404a4a43a912440cf367f994779d7 -binutils-2.38.tar.xz SHA256 e316477a914f567eccc34d5d29785b8b0f5a10208d36bbacedcc39048ecfe024 -binutils-2.38.tar.xz MD5 6e39cad1bb414add02b5b1169c18fdc5 +binutils-2.39.tar.xz SHA1 f17653e7b1d1fa5242a408919845da23e8cc5141 +binutils-2.39.tar.xz SHA256 645c25f563b8adc0a81dbd6a41cffbf4d37083a382e02d5d3df4f65c09516d00 +binutils-2.39.tar.xz MD5 f7e986ae9ff06405cafb2e585ee36d27 From 9ba53cdbe5be65bed19dafab2ac103c8a07ffe34 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Tue, 27 Dec 2022 14:28:47 +0000 Subject: [PATCH 07/61] gdb: Update from version 11.2 to 12.1 --- cross/gdb/Makefile | 5 ++++- cross/gdb/digests | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/cross/gdb/Makefile b/cross/gdb/Makefile index 420492bd3a0..98e699948e2 100644 --- a/cross/gdb/Makefile +++ b/cross/gdb/Makefile @@ -1,5 +1,5 @@ PKG_NAME = gdb -PKG_VERS = 11.2 +PKG_VERS = 12.1 PKG_EXT = tar.xz PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) PKG_DIST_SITE = https://ftp.gnu.org/gnu/gdb @@ -22,4 +22,7 @@ include ../../mk/spksrc.cross-cc.mk # Library is not created under armv7 ifeq ($(findstring $(ARCH),$(ARMv7_ARCHS) $(ARMv7L_ARCHS)),$(ARCH)) PLIST_TRANSFORM = sed -e 's?lib:lib/libinproctrace.so??g' +# binary only created on armv7 +else +PLIST_TRANSFORM = sed -e 's?bin:bin/run??g' endif diff --git a/cross/gdb/digests b/cross/gdb/digests index efc3e4c2ebb..bcfe62b0d7f 100644 --- a/cross/gdb/digests +++ b/cross/gdb/digests @@ -1,3 +1,3 @@ -gdb-11.2.tar.xz SHA1 7c72b1d4a38bb6e155aaad29f4c1abf818b4595d -gdb-11.2.tar.xz SHA256 1497c36a71881b8671a9a84a0ee40faab788ca30d7ba19d8463c3cc787152e32 -gdb-11.2.tar.xz MD5 433bd0904caa31c247b1b1867f2f911d +gdb-12.1.tar.xz SHA1 2edabd9f5766b84889b07b366b4438e93e994005 +gdb-12.1.tar.xz SHA256 0e1793bf8f2b54d53f46dea84ccfd446f48f81b297b28c4f7fc017b818d69fed +gdb-12.1.tar.xz MD5 759a1b8d2b4d403367dd0e14fa04643d From dc671faa8261b7466504e68666ecfe341d38f554 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Tue, 27 Dec 2022 14:29:10 +0000 Subject: [PATCH 08/61] gdb: Update package information --- spk/gdb/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spk/gdb/Makefile b/spk/gdb/Makefile index e70cbec7924..bfc62b2e681 100644 --- a/spk/gdb/Makefile +++ b/spk/gdb/Makefile @@ -1,8 +1,8 @@ SPK_NAME = gdb -SPK_VERS = 11.2 +SPK_VERS = 12.1 SPK_REV = 1 SPK_ICON = src/gdb.png -CHANGELOG = "1. Initial release of gdb 11.2 including binutils 2.38" +CHANGELOG = "1. Initial release of gdb 12.1 including binutils 2.39" DEPENDS = cross/$(SPK_NAME) cross/binutils From 0cde1dd4a02f34396458ea7f247f5c2256139642 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Tue, 27 Dec 2022 20:35:03 +0000 Subject: [PATCH 09/61] binutils-legacy: Provide a compatible version for older archs --- cross/binutils-legacy/Makefile | 16 ++++++++++++++++ cross/binutils-legacy/PLIST | 17 +++++++++++++++++ cross/binutils-legacy/digests | 3 +++ 3 files changed, 36 insertions(+) create mode 100644 cross/binutils-legacy/Makefile create mode 100644 cross/binutils-legacy/PLIST create mode 100644 cross/binutils-legacy/digests diff --git a/cross/binutils-legacy/Makefile b/cross/binutils-legacy/Makefile new file mode 100644 index 00000000000..0d35876c446 --- /dev/null +++ b/cross/binutils-legacy/Makefile @@ -0,0 +1,16 @@ +PKG_NAME = binutils +PKG_VERS = 2.38 +PKG_EXT = tar.xz +PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) +PKG_DIST_SITE = https://ftp.gnu.org/gnu/binutils/ +PKG_DIR = $(PKG_NAME)-$(PKG_VERS) + +DEPENDS = + +HOMEPAGE = https://www.gnu.org/software/binutils/ +COMMENT = GNU Binutils +LICENSE = GPLv2/LGPLv2 + +GNU_CONFIGURE = 1 + +include ../../mk/spksrc.cross-cc.mk diff --git a/cross/binutils-legacy/PLIST b/cross/binutils-legacy/PLIST new file mode 100644 index 00000000000..368945d9227 --- /dev/null +++ b/cross/binutils-legacy/PLIST @@ -0,0 +1,17 @@ +bin:bin/addr2line +bin:bin/ar +bin:bin/as +bin:bin/c++filt +bin:bin/elfedit +bin:bin/gp* +bin:bin/ld +bin:bin/ld.bfd +bin:bin/nm +bin:bin/objcopy +bin:bin/objdump +bin:bin/ranlib +bin:bin/readelf +bin:bin/size +bin:bin/strings +bin:bin/strip +lib:lib/bfd-plugins/libdep.so diff --git a/cross/binutils-legacy/digests b/cross/binutils-legacy/digests new file mode 100644 index 00000000000..e24b7cd4492 --- /dev/null +++ b/cross/binutils-legacy/digests @@ -0,0 +1,3 @@ +binutils-2.38.tar.xz SHA1 15d42de8f15404a4a43a912440cf367f994779d7 +binutils-2.38.tar.xz SHA256 e316477a914f567eccc34d5d29785b8b0f5a10208d36bbacedcc39048ecfe024 +binutils-2.38.tar.xz MD5 6e39cad1bb414add02b5b1169c18fdc5 From ac46d045f86ad823bdff1c2b57c1ff1b12dff7ec Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Tue, 27 Dec 2022 20:51:19 +0000 Subject: [PATCH 10/61] gdb-legacy: Add old gdb version that compiles without c++11 --- cross/gdb-legacy/Makefile | 53 +++++++++++++++++++++++++++++++++++++++ cross/gdb-legacy/PLIST | 5 ++++ cross/gdb-legacy/digests | 3 +++ 3 files changed, 61 insertions(+) create mode 100644 cross/gdb-legacy/Makefile create mode 100644 cross/gdb-legacy/PLIST create mode 100644 cross/gdb-legacy/digests diff --git a/cross/gdb-legacy/Makefile b/cross/gdb-legacy/Makefile new file mode 100644 index 00000000000..e55336d56c9 --- /dev/null +++ b/cross/gdb-legacy/Makefile @@ -0,0 +1,53 @@ +PKG_NAME = gdb +PKG_VERS = 7.12.1 +PKG_EXT = tar.xz +PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) +PKG_DIST_SITE = https://ftp.gnu.org/gnu/gdb +PKG_DIR = $(PKG_NAME)-$(PKG_VERS) + +DEPENDS = cross/zlib cross/libexpat cross/gmp cross/ncursesw cross/mpfr + +HOMEPAGE = https://www.gnu.org/software/gdb/ +COMMENT = The GNU Project Debugger +LICENSE = GPLv2/LGPLv2 + +UNSUPPORTED_ARCHS = $(PPC_ARCHS) + +GNU_CONFIGURE = 1 + +CONFIGURE_TARGET = gdb_configure +COMPILE_TARGET = gdb_compile +INSTALL_TARGET = gdb_install + +include ../../mk/spksrc.common.mk + +CONFIGURE_ARGS += $(TC_CONFIGURE_ARGS) +CONFIGURE_ARGS += --prefix=$(INSTALL_PREFIX) +CONFIGURE_ARGS += --enable-host-shared +CONFIGURE_ARGS += --with-system-zlib +ifeq ($(call version_ge, ${TCVERSION}, 7.0),1) +CONFIGURE_ARGS += --localstatedir=$(INSTALL_PREFIX_VAR) +endif + +include ../../mk/spksrc.cross-cc.mk + +# Library is not created under armv5 and armv7 +ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS) $(ARMv7_ARCHS) $(ARMv7L_ARCHS)),$(ARCH)) +PLIST_TRANSFORM = sed -e 's?lib:lib/libinproctrace.so??g' +# binary only created on armv7 +else +PLIST_TRANSFORM = sed -e 's?bin:bin/run??g' +endif + +.PHONY: gdb_configure +gdb_configure: + @$(RUN) mkdir -p build + @$(RUN) ; cd build ; PATH=$(TC_PATH):$$PATH CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" CPPFLAGS="$(CPPFLAGS)" CXXFLAGS="$(CXXFLAGS)" $(WORK_DIR)/$(PKG_DIR)/configure $(CONFIGURE_ARGS) + +.PHONY: gdb_compile +gdb_compile: + @$(RUN) ; cd build ; PATH=$(TC_PATH):$$PATH make + +.PHONY: gdb_install +gdb_install: + @$(RUN) ; cd build ; PATH=$(TC_PATH):$$PATH make install DESTDIR=$(INSTALL_DIR) diff --git a/cross/gdb-legacy/PLIST b/cross/gdb-legacy/PLIST new file mode 100644 index 00000000000..314a2d95b4f --- /dev/null +++ b/cross/gdb-legacy/PLIST @@ -0,0 +1,5 @@ +bin:bin/gcore +bin:bin/gdb +bin:bin/gdbserver +bin:bin/run +lib:lib/libinproctrace.so diff --git a/cross/gdb-legacy/digests b/cross/gdb-legacy/digests new file mode 100644 index 00000000000..adc2710f1fe --- /dev/null +++ b/cross/gdb-legacy/digests @@ -0,0 +1,3 @@ +gdb-7.12.1.tar.xz SHA1 ef77c5345d6f9fdcdf7a5d8503301242b701936e +gdb-7.12.1.tar.xz SHA256 4607680b973d3ec92c30ad029f1b7dbde3876869e6b3a117d8a7e90081113186 +gdb-7.12.1.tar.xz MD5 193453347ddced7acb6b1cd2ee8f2e4b From e5670de2d696f4a8241c323e351d687327fe4a0e Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Tue, 27 Dec 2022 20:51:54 +0000 Subject: [PATCH 11/61] synocli-devel: Switch to calling the package synocli-devel --- spk/gdb/Makefile | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/spk/gdb/Makefile b/spk/gdb/Makefile index bfc62b2e681..0908a72d8de 100644 --- a/spk/gdb/Makefile +++ b/spk/gdb/Makefile @@ -1,19 +1,37 @@ -SPK_NAME = gdb -SPK_VERS = 12.1 +SPK_NAME = synocli-devel +SPK_VERS = 1.0 SPK_REV = 1 SPK_ICON = src/gdb.png -CHANGELOG = "1. Initial release of gdb 12.1 including binutils 2.39" +CHANGELOG = "1. Initial release of synocli-devel" -DEPENDS = cross/$(SPK_NAME) cross/binutils +DEPENDS = cross/$(SPK_NAME) MAINTAINER = th0ma7 DESCRIPTION = The GNU Debugger (GDB) is a portable debugger that runs on many Unix-like systems and works for many programming languages, including Ada, C, C++, Objective-C, Free Pascal, Fortran, Go and partially others. -DISPLAY_NAME = gdb +DISPLAY_NAME = synocli-devel STARTABLE = no HOMEPAGE = https://www.sourceware.org/gdb/ LICENSE = GPLv2 -UNSUPPORTED_ARCHS = $(ARMv5_ARCHS) $(PPC_ARCHS) +UNSUPPORTED_ARCHS = $(PPC_ARCHS) + +# ******* Fails to build on PPC ******* +#ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS) $(PPC_ARCHS)),$(ARCH)) +ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS))),$(ARCH)) +DEPENDS += cross/gdb-legacy +CHANGELOG += "
2. Include gdb 7.12.1" +else +DEPENDS += cross/gdb +CHANGELOG += "
2. Include gdb 12.1" +endif + +ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS) $(PPC_ARCHS) $(i686_ARCHS)),$(ARCH)) +DEPENDS += cross/binutils-legacy +CHANGELOG += "
3. Include binutils 2.38" +else +DEPENDS += cross/binutils +CHANGELOG += "
3. Include binutils 2.39" +endif include ../../mk/spksrc.spk.mk From 4ad91dd871b7fd089b3de337aa135997bf88cf26 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Tue, 27 Dec 2022 20:56:44 +0000 Subject: [PATCH 12/61] synoclie-devel: Remove obsolete DEPENDS --- spk/gdb/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spk/gdb/Makefile b/spk/gdb/Makefile index 0908a72d8de..5be26218f92 100644 --- a/spk/gdb/Makefile +++ b/spk/gdb/Makefile @@ -4,7 +4,7 @@ SPK_REV = 1 SPK_ICON = src/gdb.png CHANGELOG = "1. Initial release of synocli-devel" -DEPENDS = cross/$(SPK_NAME) +#DEPENDS = cross/$(SPK_NAME) MAINTAINER = th0ma7 DESCRIPTION = The GNU Debugger (GDB) is a portable debugger that runs on many Unix-like systems and works for many programming languages, including Ada, C, C++, Objective-C, Free Pascal, Fortran, Go and partially others. From daa4f1c55cdf3bb87abddc0b8740bd8b66235799 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Tue, 27 Dec 2022 20:57:36 +0000 Subject: [PATCH 13/61] synocli-devel: Rename the directory to match new package naming --- spk/{gdb => synocli-devel}/Makefile | 0 spk/{gdb => synocli-devel}/src/gdb.png | Bin 2 files changed, 0 insertions(+), 0 deletions(-) rename spk/{gdb => synocli-devel}/Makefile (100%) rename spk/{gdb => synocli-devel}/src/gdb.png (100%) diff --git a/spk/gdb/Makefile b/spk/synocli-devel/Makefile similarity index 100% rename from spk/gdb/Makefile rename to spk/synocli-devel/Makefile diff --git a/spk/gdb/src/gdb.png b/spk/synocli-devel/src/gdb.png similarity index 100% rename from spk/gdb/src/gdb.png rename to spk/synocli-devel/src/gdb.png From 49d1ad53b7bfb37612cb2620df74ba9d30fc64f7 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Wed, 28 Dec 2022 00:26:40 +0000 Subject: [PATCH 14/61] synocli-devel: include arch definitions to handle exceptions --- spk/synocli-devel/Makefile | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/spk/synocli-devel/Makefile b/spk/synocli-devel/Makefile index 5be26218f92..aed9bef1eb2 100644 --- a/spk/synocli-devel/Makefile +++ b/spk/synocli-devel/Makefile @@ -7,8 +7,8 @@ CHANGELOG = "1. Initial release of synocli-devel" #DEPENDS = cross/$(SPK_NAME) MAINTAINER = th0ma7 -DESCRIPTION = The GNU Debugger (GDB) is a portable debugger that runs on many Unix-like systems and works for many programming languages, including Ada, C, C++, Objective-C, Free Pascal, Fortran, Go and partially others. -DISPLAY_NAME = synocli-devel +DESCRIPTION = SynoCli Development Tools provides a set of command-line utilities for system development and debugging: $(OPTIONAL_DESC). +DISPLAY_NAME = SynoCli Development Tools STARTABLE = no HOMEPAGE = https://www.sourceware.org/gdb/ @@ -16,22 +16,24 @@ LICENSE = GPLv2 UNSUPPORTED_ARCHS = $(PPC_ARCHS) +include ../../mk/spksrc.archs.mk + # ******* Fails to build on PPC ******* #ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS) $(PPC_ARCHS)),$(ARCH)) -ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS))),$(ARCH)) +ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS)),$(ARCH)) DEPENDS += cross/gdb-legacy -CHANGELOG += "
2. Include gdb 7.12.1" +OPTIONAL_DESC += "gdb 7.12.1" else DEPENDS += cross/gdb -CHANGELOG += "
2. Include gdb 12.1" +OPTIONAL_DESC += "gdb 12.1" endif ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS) $(PPC_ARCHS) $(i686_ARCHS)),$(ARCH)) DEPENDS += cross/binutils-legacy -CHANGELOG += "
3. Include binutils 2.38" +OPTIONAL_DESC += ", binutils 2.38" else DEPENDS += cross/binutils -CHANGELOG += "
3. Include binutils 2.39" +OPTIONAL_DESC += ", binutils 2.39" endif include ../../mk/spksrc.spk.mk From d11f888c901f6361ff6b63cccc7345a84900055e Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Wed, 28 Dec 2022 01:57:05 +0000 Subject: [PATCH 15/61] synocli-devel: Inverse gdb vs binutils build and add bc --- spk/synocli-devel/Makefile | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/spk/synocli-devel/Makefile b/spk/synocli-devel/Makefile index aed9bef1eb2..2f53908e339 100644 --- a/spk/synocli-devel/Makefile +++ b/spk/synocli-devel/Makefile @@ -4,10 +4,10 @@ SPK_REV = 1 SPK_ICON = src/gdb.png CHANGELOG = "1. Initial release of synocli-devel" -#DEPENDS = cross/$(SPK_NAME) +DEPENDS = cross/bc MAINTAINER = th0ma7 -DESCRIPTION = SynoCli Development Tools provides a set of command-line utilities for system development and debugging: $(OPTIONAL_DESC). +DESCRIPTION = SynoCli Development Tools provides a set of command-line utilities for system development and debugging: bc$(OPTIONAL_DESC). DISPLAY_NAME = SynoCli Development Tools STARTABLE = no @@ -18,16 +18,6 @@ UNSUPPORTED_ARCHS = $(PPC_ARCHS) include ../../mk/spksrc.archs.mk -# ******* Fails to build on PPC ******* -#ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS) $(PPC_ARCHS)),$(ARCH)) -ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS)),$(ARCH)) -DEPENDS += cross/gdb-legacy -OPTIONAL_DESC += "gdb 7.12.1" -else -DEPENDS += cross/gdb -OPTIONAL_DESC += "gdb 12.1" -endif - ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS) $(PPC_ARCHS) $(i686_ARCHS)),$(ARCH)) DEPENDS += cross/binutils-legacy OPTIONAL_DESC += ", binutils 2.38" @@ -36,4 +26,14 @@ DEPENDS += cross/binutils OPTIONAL_DESC += ", binutils 2.39" endif +# ******* Fails to build on PPC ******* +#ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS) $(PPC_ARCHS)),$(ARCH)) +ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS)),$(ARCH)) +DEPENDS += cross/gdb-legacy +OPTIONAL_DESC += ", gdb 7.12.1" +else +DEPENDS += cross/gdb +OPTIONAL_DESC += ", gdb 12.1" +endif + include ../../mk/spksrc.spk.mk From 66df09430b58fee8f050444693ca74fe99267b2a Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Wed, 28 Dec 2022 12:11:05 +0000 Subject: [PATCH 16/61] binutils: Move to include/binutils for armv5 and enable other opt --- cross/binutils-legacy/Makefile | 12 +++++++++++- cross/binutils-legacy/PLIST | 4 ++-- cross/binutils/Makefile | 6 +++++- cross/binutils/PLIST | 4 ++-- 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/cross/binutils-legacy/Makefile b/cross/binutils-legacy/Makefile index 0d35876c446..85d6b5c473e 100644 --- a/cross/binutils-legacy/Makefile +++ b/cross/binutils-legacy/Makefile @@ -5,7 +5,7 @@ PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) PKG_DIST_SITE = https://ftp.gnu.org/gnu/binutils/ PKG_DIR = $(PKG_NAME)-$(PKG_VERS) -DEPENDS = +DEPENDS = cross/zlib cross/gmp cross/mpfr HOMEPAGE = https://www.gnu.org/software/binutils/ COMMENT = GNU Binutils @@ -13,4 +13,14 @@ LICENSE = GPLv2/LGPLv2 GNU_CONFIGURE = 1 +include ../../mk/spksrc.archs.mk + +CONFIGURE_ARGS += --enable-host-shared +CONFIGURE_ARGS += --with-system-zlib +CONFIGURE_ARGS += --enable-gold=yes +# On armv5 bfd.h include file conflicts with gdb's version +ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS)),$(ARCH)) +CONFIGURE_ARGS += --includedir=$(INSTALL_PREFIX)/include/binutils +endif + include ../../mk/spksrc.cross-cc.mk diff --git a/cross/binutils-legacy/PLIST b/cross/binutils-legacy/PLIST index 368945d9227..e4234e0ab90 100644 --- a/cross/binutils-legacy/PLIST +++ b/cross/binutils-legacy/PLIST @@ -2,10 +2,10 @@ bin:bin/addr2line bin:bin/ar bin:bin/as bin:bin/c++filt +bin:bin/dwp bin:bin/elfedit bin:bin/gp* -bin:bin/ld -bin:bin/ld.bfd +bin:bin/ld* bin:bin/nm bin:bin/objcopy bin:bin/objdump diff --git a/cross/binutils/Makefile b/cross/binutils/Makefile index 861a245e574..72b4ff29883 100644 --- a/cross/binutils/Makefile +++ b/cross/binutils/Makefile @@ -5,7 +5,7 @@ PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) PKG_DIST_SITE = https://ftp.gnu.org/gnu/binutils/ PKG_DIR = $(PKG_NAME)-$(PKG_VERS) -DEPENDS = +DEPENDS = cross/zlib cross/gmp cross/mpfr HOMEPAGE = https://www.gnu.org/software/binutils/ COMMENT = GNU Binutils @@ -13,4 +13,8 @@ LICENSE = GPLv2/LGPLv2 GNU_CONFIGURE = 1 +CONFIGURE_ARGS += --enable-host-shared +CONFIGURE_ARGS += --with-system-zlib +CONFIGURE_ARGS += --enable-gold=yes + include ../../mk/spksrc.cross-cc.mk diff --git a/cross/binutils/PLIST b/cross/binutils/PLIST index 368945d9227..e4234e0ab90 100644 --- a/cross/binutils/PLIST +++ b/cross/binutils/PLIST @@ -2,10 +2,10 @@ bin:bin/addr2line bin:bin/ar bin:bin/as bin:bin/c++filt +bin:bin/dwp bin:bin/elfedit bin:bin/gp* -bin:bin/ld -bin:bin/ld.bfd +bin:bin/ld* bin:bin/nm bin:bin/objcopy bin:bin/objdump From 181945ec7686b1543e4a6268c568b9196de8cf67 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Wed, 28 Dec 2022 12:39:13 +0000 Subject: [PATCH 17/61] gdb: Add a diyspk for gdb --- diyspk/gdb/Makefile | 32 ++++++++++++++++++++++++++++++++ diyspk/gdb/src/gdb.png | Bin 0 -> 20165 bytes 2 files changed, 32 insertions(+) create mode 100644 diyspk/gdb/Makefile create mode 100644 diyspk/gdb/src/gdb.png diff --git a/diyspk/gdb/Makefile b/diyspk/gdb/Makefile new file mode 100644 index 00000000000..74333db6871 --- /dev/null +++ b/diyspk/gdb/Makefile @@ -0,0 +1,32 @@ +SPK_NAME = gdb +SPK_REV = 1 +SPK_ICON = src/gdb.png + +MAINTAINER = th0ma7 +DESCRIPTION = The GNU Debugger (GDB) is a portable debugger that runs on many Unix-like systems and works for many programming languages, including Ada, C, C++, Objective-C, Free Pascal, Fortran, Go and partially others. +STARTABLE = no + +HOMEPAGE = https://www.sourceware.org/gdb/ +LICENSE = GPLv2 + +UNSUPPORTED_ARCHS = $(PPC_ARCHS) + +include ../../mk/spksrc.archs.mk + +ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS)),$(ARCH)) +DEPENDS = cross/gdb-legacy +SPK_VERS = 7.12.1 +else +DEPENDS = cross/gdb +SPK_VERS = 12.1 +endif + +SPK_COMMANDS = bin/gcore +SPK_COMMANDS += bin/gdb +SPK_COMMANDS += bin/gdb-add-index +SPK_COMMANDS += bin/gdbserver +ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS) $(ARMv7_ARCHS) $(ARMv7L_ARCHS)),$(ARCH)) +SPK_COMMANDS += bin/run +endif + +include ../../mk/spksrc.spk.mk diff --git a/diyspk/gdb/src/gdb.png b/diyspk/gdb/src/gdb.png new file mode 100644 index 0000000000000000000000000000000000000000..9de7be8b8c9259083e6f800511cd5c77d9c9ca77 GIT binary patch literal 20165 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 m#@s7I`}HVDHUvETS Date: Wed, 28 Dec 2022 13:01:32 +0000 Subject: [PATCH 18/61] binutils: Move includes as conflicting with gdb's version --- cross/binutils/Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cross/binutils/Makefile b/cross/binutils/Makefile index 72b4ff29883..0add7b7fdd2 100644 --- a/cross/binutils/Makefile +++ b/cross/binutils/Makefile @@ -16,5 +16,7 @@ GNU_CONFIGURE = 1 CONFIGURE_ARGS += --enable-host-shared CONFIGURE_ARGS += --with-system-zlib CONFIGURE_ARGS += --enable-gold=yes +# Otherwise conflicts with gdb +CONFIGURE_ARGS += --includedir=$(INSTALL_PREFIX)/include/binutils include ../../mk/spksrc.cross-cc.mk From f3c8e42c65dae62c1698adab7d2b9b97b849196a Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Wed, 28 Dec 2022 13:01:56 +0000 Subject: [PATCH 19/61] synocli-develop: Include @hgy59 proposed icon --- spk/synocli-devel/src/synocli-develop.png | Bin 0 -> 71246 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 spk/synocli-devel/src/synocli-develop.png diff --git a/spk/synocli-devel/src/synocli-develop.png b/spk/synocli-devel/src/synocli-develop.png new file mode 100644 index 0000000000000000000000000000000000000000..407d6c3d6a6190c5ffa4db967c300087dbc51111 GIT binary patch literal 71246 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 M>vP!0r%6fw1+JS|IRF3v literal 0 HcmV?d00001 From 2ca653c9ac8c9ba19096633ca70c70464ac32fa7 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Wed, 28 Dec 2022 13:02:21 +0000 Subject: [PATCH 20/61] synocli-devel: Multiple changes + adding symlinks for all binaries --- spk/synocli-devel/Makefile | 49 +++++++++++++++++++++++++++++--------- 1 file changed, 38 insertions(+), 11 deletions(-) diff --git a/spk/synocli-devel/Makefile b/spk/synocli-devel/Makefile index 2f53908e339..bbe435a2d07 100644 --- a/spk/synocli-devel/Makefile +++ b/spk/synocli-devel/Makefile @@ -1,13 +1,11 @@ SPK_NAME = synocli-devel SPK_VERS = 1.0 SPK_REV = 1 -SPK_ICON = src/gdb.png +SPK_ICON = src/synocli-develop.png CHANGELOG = "1. Initial release of synocli-devel" -DEPENDS = cross/bc - -MAINTAINER = th0ma7 -DESCRIPTION = SynoCli Development Tools provides a set of command-line utilities for system development and debugging: bc$(OPTIONAL_DESC). +MAINTAINER = SynoCommunity +DESCRIPTION = SynoCli Development Tools provides a set of command-line utilities for system development and debugging: binutils 2.39$(OPTIONAL_DESC). DISPLAY_NAME = SynoCli Development Tools STARTABLE = no @@ -18,13 +16,34 @@ UNSUPPORTED_ARCHS = $(PPC_ARCHS) include ../../mk/spksrc.archs.mk -ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS) $(PPC_ARCHS) $(i686_ARCHS)),$(ARCH)) -DEPENDS += cross/binutils-legacy -OPTIONAL_DESC += ", binutils 2.38" -else -DEPENDS += cross/binutils -OPTIONAL_DESC += ", binutils 2.39" +DEPENDS = cross/binutils + +SPK_COMMANDS += bin/addr2line +SPK_COMMANDS += bin/ar +SPK_COMMANDS += bin/as +SPK_COMMANDS += bin/c++filt +SPK_COMMANDS += bin/dwp +SPK_COMMANDS += bin/elfedit +ifeq ($(findstring $(ARCH),$(64bit_ARCHS)),$(ARCH)) +SPK_COMMANDS += bin/gp-archive +SPK_COMMANDS += bin/gp-collect-app +SPK_COMMANDS += bin/gp-display-html +SPK_COMMANDS += bin/gp-display-src +SPK_COMMANDS += bin/gp-display-text +SPK_COMMANDS += bin/gprofng endif +SPK_COMMANDS += bin/gprof +SPK_COMMANDS += bin/ld +SPK_COMMANDS += bin/ld.bfd +SPK_COMMANDS += bin/ld.gold +SPK_COMMANDS += bin/nm +SPK_COMMANDS += bin/objcopy +SPK_COMMANDS += bin/objdump +SPK_COMMANDS += bin/ranlib +SPK_COMMANDS += bin/readelf +SPK_COMMANDS += bin/size +SPK_COMMANDS += bin/strings +SPK_COMMANDS += bin/strip # ******* Fails to build on PPC ******* #ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS) $(PPC_ARCHS)),$(ARCH)) @@ -36,4 +55,12 @@ DEPENDS += cross/gdb OPTIONAL_DESC += ", gdb 12.1" endif +SPK_COMMANDS += bin/gcore +SPK_COMMANDS += bin/gdb +SPK_COMMANDS += bin/gdb-add-index +SPK_COMMANDS += bin/gdbserver +ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS) $(ARMv7_ARCHS) $(ARMv7L_ARCHS)),$(ARCH)) +SPK_COMMANDS += bin/run +endif + include ../../mk/spksrc.spk.mk From 042dfbac80f8b017198db9242225e31571c6961c Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Wed, 28 Dec 2022 13:03:13 +0000 Subject: [PATCH 21/61] binutils-legacy: No needed anymore as compiling on all archs --- cross/binutils-legacy/Makefile | 26 -------------------------- cross/binutils-legacy/PLIST | 17 ----------------- cross/binutils-legacy/digests | 3 --- 3 files changed, 46 deletions(-) delete mode 100644 cross/binutils-legacy/Makefile delete mode 100644 cross/binutils-legacy/PLIST delete mode 100644 cross/binutils-legacy/digests diff --git a/cross/binutils-legacy/Makefile b/cross/binutils-legacy/Makefile deleted file mode 100644 index 85d6b5c473e..00000000000 --- a/cross/binutils-legacy/Makefile +++ /dev/null @@ -1,26 +0,0 @@ -PKG_NAME = binutils -PKG_VERS = 2.38 -PKG_EXT = tar.xz -PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) -PKG_DIST_SITE = https://ftp.gnu.org/gnu/binutils/ -PKG_DIR = $(PKG_NAME)-$(PKG_VERS) - -DEPENDS = cross/zlib cross/gmp cross/mpfr - -HOMEPAGE = https://www.gnu.org/software/binutils/ -COMMENT = GNU Binutils -LICENSE = GPLv2/LGPLv2 - -GNU_CONFIGURE = 1 - -include ../../mk/spksrc.archs.mk - -CONFIGURE_ARGS += --enable-host-shared -CONFIGURE_ARGS += --with-system-zlib -CONFIGURE_ARGS += --enable-gold=yes -# On armv5 bfd.h include file conflicts with gdb's version -ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS)),$(ARCH)) -CONFIGURE_ARGS += --includedir=$(INSTALL_PREFIX)/include/binutils -endif - -include ../../mk/spksrc.cross-cc.mk diff --git a/cross/binutils-legacy/PLIST b/cross/binutils-legacy/PLIST deleted file mode 100644 index e4234e0ab90..00000000000 --- a/cross/binutils-legacy/PLIST +++ /dev/null @@ -1,17 +0,0 @@ -bin:bin/addr2line -bin:bin/ar -bin:bin/as -bin:bin/c++filt -bin:bin/dwp -bin:bin/elfedit -bin:bin/gp* -bin:bin/ld* -bin:bin/nm -bin:bin/objcopy -bin:bin/objdump -bin:bin/ranlib -bin:bin/readelf -bin:bin/size -bin:bin/strings -bin:bin/strip -lib:lib/bfd-plugins/libdep.so diff --git a/cross/binutils-legacy/digests b/cross/binutils-legacy/digests deleted file mode 100644 index e24b7cd4492..00000000000 --- a/cross/binutils-legacy/digests +++ /dev/null @@ -1,3 +0,0 @@ -binutils-2.38.tar.xz SHA1 15d42de8f15404a4a43a912440cf367f994779d7 -binutils-2.38.tar.xz SHA256 e316477a914f567eccc34d5d29785b8b0f5a10208d36bbacedcc39048ecfe024 -binutils-2.38.tar.xz MD5 6e39cad1bb414add02b5b1169c18fdc5 From 5c51e0ca8ebc13c2aead5cf0ba6e99a97c1184b3 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Wed, 28 Dec 2022 22:15:30 +0000 Subject: [PATCH 22/61] binutils: Disable gprofng on i686 as it fails to build --- cross/binutils/Makefile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cross/binutils/Makefile b/cross/binutils/Makefile index 0add7b7fdd2..2d65f3a56f7 100644 --- a/cross/binutils/Makefile +++ b/cross/binutils/Makefile @@ -13,9 +13,15 @@ LICENSE = GPLv2/LGPLv2 GNU_CONFIGURE = 1 +include ../../mk/spksrc.archs.mk + CONFIGURE_ARGS += --enable-host-shared CONFIGURE_ARGS += --with-system-zlib CONFIGURE_ARGS += --enable-gold=yes +# Fails to build on i686 +ifeq ($(findstring $(ARCH),$(i686_ARCHS)),$(ARCH)) +CONFIGURE_ARGS += --enable-gprofng=no +endif # Otherwise conflicts with gdb CONFIGURE_ARGS += --includedir=$(INSTALL_PREFIX)/include/binutils From 0e1c64929fb829869028634cb82f7edafde16e3d Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Mon, 6 Mar 2023 01:34:37 +0000 Subject: [PATCH 23/61] gdb: Convert to use multiple versions automatically --- cross/{gdb-legacy => gdb-7.12}/Makefile | 0 cross/{gdb-legacy => gdb-7.12}/PLIST | 0 cross/{gdb-legacy => gdb-7.12}/digests | 0 cross/gdb-latest/Makefile | 28 ++++++++++++++++++++++++ cross/gdb-latest/PLIST | 6 +++++ cross/gdb-latest/digests | 3 +++ cross/gdb/Makefile | 29 ++++++++++--------------- cross/gdb/PLIST | 6 ----- cross/gdb/digests | 3 --- spk/synocli-devel/Makefile | 8 +++---- 10 files changed, 52 insertions(+), 31 deletions(-) rename cross/{gdb-legacy => gdb-7.12}/Makefile (100%) rename cross/{gdb-legacy => gdb-7.12}/PLIST (100%) rename cross/{gdb-legacy => gdb-7.12}/digests (100%) create mode 100644 cross/gdb-latest/Makefile create mode 100644 cross/gdb-latest/PLIST create mode 100644 cross/gdb-latest/digests diff --git a/cross/gdb-legacy/Makefile b/cross/gdb-7.12/Makefile similarity index 100% rename from cross/gdb-legacy/Makefile rename to cross/gdb-7.12/Makefile diff --git a/cross/gdb-legacy/PLIST b/cross/gdb-7.12/PLIST similarity index 100% rename from cross/gdb-legacy/PLIST rename to cross/gdb-7.12/PLIST diff --git a/cross/gdb-legacy/digests b/cross/gdb-7.12/digests similarity index 100% rename from cross/gdb-legacy/digests rename to cross/gdb-7.12/digests diff --git a/cross/gdb-latest/Makefile b/cross/gdb-latest/Makefile new file mode 100644 index 00000000000..98e699948e2 --- /dev/null +++ b/cross/gdb-latest/Makefile @@ -0,0 +1,28 @@ +PKG_NAME = gdb +PKG_VERS = 12.1 +PKG_EXT = tar.xz +PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) +PKG_DIST_SITE = https://ftp.gnu.org/gnu/gdb +PKG_DIR = $(PKG_NAME)-$(PKG_VERS) + +DEPENDS = cross/zlib cross/libexpat cross/gmp cross/ncursesw cross/mpfr + +HOMEPAGE = https://www.gnu.org/software/gdb/ +COMMENT = The GNU Project Debugger +LICENSE = GPLv2/LGPLv2 + +GNU_CONFIGURE = 1 +CONFIGURE_ARGS += --enable-host-shared +CONFIGURE_ARGS += --with-system-zlib + +UNSUPPORTED_ARCHS = $(ARMv5_ARCHS) $(PPC_ARCHS) + +include ../../mk/spksrc.cross-cc.mk + +# Library is not created under armv7 +ifeq ($(findstring $(ARCH),$(ARMv7_ARCHS) $(ARMv7L_ARCHS)),$(ARCH)) +PLIST_TRANSFORM = sed -e 's?lib:lib/libinproctrace.so??g' +# binary only created on armv7 +else +PLIST_TRANSFORM = sed -e 's?bin:bin/run??g' +endif diff --git a/cross/gdb-latest/PLIST b/cross/gdb-latest/PLIST new file mode 100644 index 00000000000..12703d13d4b --- /dev/null +++ b/cross/gdb-latest/PLIST @@ -0,0 +1,6 @@ +bin:bin/gcore +bin:bin/gdb +bin:bin/gdb-add-index +bin:bin/gdbserver +bin:bin/run +lib:lib/libinproctrace.so diff --git a/cross/gdb-latest/digests b/cross/gdb-latest/digests new file mode 100644 index 00000000000..bcfe62b0d7f --- /dev/null +++ b/cross/gdb-latest/digests @@ -0,0 +1,3 @@ +gdb-12.1.tar.xz SHA1 2edabd9f5766b84889b07b366b4438e93e994005 +gdb-12.1.tar.xz SHA256 0e1793bf8f2b54d53f46dea84ccfd446f48f81b297b28c4f7fc017b818d69fed +gdb-12.1.tar.xz MD5 759a1b8d2b4d403367dd0e14fa04643d diff --git a/cross/gdb/Makefile b/cross/gdb/Makefile index 98e699948e2..b7d980cc654 100644 --- a/cross/gdb/Makefile +++ b/cross/gdb/Makefile @@ -1,28 +1,23 @@ PKG_NAME = gdb -PKG_VERS = 12.1 -PKG_EXT = tar.xz -PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) -PKG_DIST_SITE = https://ftp.gnu.org/gnu/gdb -PKG_DIR = $(PKG_NAME)-$(PKG_VERS) - -DEPENDS = cross/zlib cross/libexpat cross/gmp cross/ncursesw cross/mpfr HOMEPAGE = https://www.gnu.org/software/gdb/ COMMENT = The GNU Project Debugger LICENSE = GPLv2/LGPLv2 -GNU_CONFIGURE = 1 -CONFIGURE_ARGS += --enable-host-shared -CONFIGURE_ARGS += --with-system-zlib +DOWNLOAD_TARGET = nop +CHECKSUM_TARGET = nop +EXTRACT_TARGET = nop +CONFIGURE_TARGET = nop +COMPILE_TARGET = nop +INSTALL_TARGET = nop -UNSUPPORTED_ARCHS = $(ARMv5_ARCHS) $(PPC_ARCHS) +OPTIONAL_DEPENDS = cross/gdb-latest +OPTIONAL_DEPENDS += cross/gdb-7.12 -include ../../mk/spksrc.cross-cc.mk +include ../../mk/spksrc.install-resources.mk -# Library is not created under armv7 -ifeq ($(findstring $(ARCH),$(ARMv7_ARCHS) $(ARMv7L_ARCHS)),$(ARCH)) -PLIST_TRANSFORM = sed -e 's?lib:lib/libinproctrace.so??g' -# binary only created on armv7 +ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS)),$(ARCH)) +DEPENDS += cross/gdb-7.12 else -PLIST_TRANSFORM = sed -e 's?bin:bin/run??g' +DEPENDS += cross/gdb-latest endif diff --git a/cross/gdb/PLIST b/cross/gdb/PLIST index 12703d13d4b..e69de29bb2d 100644 --- a/cross/gdb/PLIST +++ b/cross/gdb/PLIST @@ -1,6 +0,0 @@ -bin:bin/gcore -bin:bin/gdb -bin:bin/gdb-add-index -bin:bin/gdbserver -bin:bin/run -lib:lib/libinproctrace.so diff --git a/cross/gdb/digests b/cross/gdb/digests index bcfe62b0d7f..e69de29bb2d 100644 --- a/cross/gdb/digests +++ b/cross/gdb/digests @@ -1,3 +0,0 @@ -gdb-12.1.tar.xz SHA1 2edabd9f5766b84889b07b366b4438e93e994005 -gdb-12.1.tar.xz SHA256 0e1793bf8f2b54d53f46dea84ccfd446f48f81b297b28c4f7fc017b818d69fed -gdb-12.1.tar.xz MD5 759a1b8d2b4d403367dd0e14fa04643d diff --git a/spk/synocli-devel/Makefile b/spk/synocli-devel/Makefile index bbe435a2d07..d1d35b19328 100644 --- a/spk/synocli-devel/Makefile +++ b/spk/synocli-devel/Makefile @@ -16,7 +16,9 @@ UNSUPPORTED_ARCHS = $(PPC_ARCHS) include ../../mk/spksrc.archs.mk -DEPENDS = cross/binutils +DEPENDS = cross/binutils +DEPENDS += cross/gdb +DEPENDS += cross/llvm SPK_COMMANDS += bin/addr2line SPK_COMMANDS += bin/ar @@ -45,13 +47,9 @@ SPK_COMMANDS += bin/size SPK_COMMANDS += bin/strings SPK_COMMANDS += bin/strip -# ******* Fails to build on PPC ******* -#ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS) $(PPC_ARCHS)),$(ARCH)) ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS)),$(ARCH)) -DEPENDS += cross/gdb-legacy OPTIONAL_DESC += ", gdb 7.12.1" else -DEPENDS += cross/gdb OPTIONAL_DESC += ", gdb 12.1" endif From b03f479795d83857ba06e2bb8d3859fc854414c3 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Mon, 6 Mar 2023 01:42:09 +0000 Subject: [PATCH 24/61] gdb: Update from version 12.1 to 13.1 --- cross/gdb-latest/Makefile | 2 +- cross/gdb-latest/digests | 6 +++--- spk/synocli-devel/Makefile | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cross/gdb-latest/Makefile b/cross/gdb-latest/Makefile index 98e699948e2..93fb7563c1f 100644 --- a/cross/gdb-latest/Makefile +++ b/cross/gdb-latest/Makefile @@ -1,5 +1,5 @@ PKG_NAME = gdb -PKG_VERS = 12.1 +PKG_VERS = 13.1 PKG_EXT = tar.xz PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) PKG_DIST_SITE = https://ftp.gnu.org/gnu/gdb diff --git a/cross/gdb-latest/digests b/cross/gdb-latest/digests index bcfe62b0d7f..911a27776ea 100644 --- a/cross/gdb-latest/digests +++ b/cross/gdb-latest/digests @@ -1,3 +1,3 @@ -gdb-12.1.tar.xz SHA1 2edabd9f5766b84889b07b366b4438e93e994005 -gdb-12.1.tar.xz SHA256 0e1793bf8f2b54d53f46dea84ccfd446f48f81b297b28c4f7fc017b818d69fed -gdb-12.1.tar.xz MD5 759a1b8d2b4d403367dd0e14fa04643d +gdb-13.1.tar.xz SHA1 6f0f5f905085f447672d9f52af66b42207d56e46 +gdb-13.1.tar.xz SHA256 115ad5c18d69a6be2ab15882d365dda2a2211c14f480b3502c6eba576e2e95a0 +gdb-13.1.tar.xz MD5 4aaad768ff2585464173c091947287ec diff --git a/spk/synocli-devel/Makefile b/spk/synocli-devel/Makefile index d1d35b19328..a7b71089114 100644 --- a/spk/synocli-devel/Makefile +++ b/spk/synocli-devel/Makefile @@ -50,7 +50,7 @@ SPK_COMMANDS += bin/strip ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS)),$(ARCH)) OPTIONAL_DESC += ", gdb 7.12.1" else -OPTIONAL_DESC += ", gdb 12.1" +OPTIONAL_DESC += ", gdb 13.1" endif SPK_COMMANDS += bin/gcore From 5e797d6f8d53968af9c533ae2d02ff0c375e241d Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Mon, 6 Mar 2023 02:02:17 +0000 Subject: [PATCH 25/61] cross-cmake.mk + tc.mk: Allow BUILD_SHARED_LIBS to be manually set --- cross/llvm/Makefile | 48 +++++++++++++++++++++++++ spk/synocli-devel/Makefile | 73 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 121 insertions(+) create mode 100644 cross/llvm/Makefile diff --git a/cross/llvm/Makefile b/cross/llvm/Makefile new file mode 100644 index 00000000000..6caae0ee9c6 --- /dev/null +++ b/cross/llvm/Makefile @@ -0,0 +1,48 @@ +PKG_NAME = llvm +PKG_VERS = 15.0.7 +PKG_EXT = tar.xz +PKG_DIST_NAME = $(PKG_NAME)-project-$(PKG_VERS).src.$(PKG_EXT) +PKG_DIST_SITE = https://github.com/llvm/llvm-project/releases/download/llvmorg-$(PKG_VERS) +PKG_DIR = $(PKG_NAME)-project-$(PKG_VERS).src + +DEPENDS = + +HOMEPAGE = https://llvm.org/ +COMMENT = The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. +LICENSE = Apache License v2.0 with LLVM Exceptions + +CMAKE_USE_NINJA = 1 + +# Using LLVM project source need to change to llvm sub-directory +CMAKE_DIR = $(WORK_DIR)/$(PKG_DIR)/llvm + +CMAKE_ARGS += -DCMAKE_BUILD_TYPE=MinSizeRel +CMAKE_ARGS += -DLLVM_ENABLE_ASSERTIONS=ON +CMAKE_ARGS += -DLLVM_BUILD_LLVM_DYLIB=ON +CMAKE_ARGS += -DLLVM_LINK_LLVM_DYLIB=ON +CMAKE_ARGS += -DBUILD_SHARED_LIBS=OFF +CMAKE_ARGS += -DLLVM_INSTALL_TOOLCHAIN_ONLY=ON +CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld;clang-tools-extra' + +include ../../mk/spksrc.common.mk + +ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS) $(ARMv7_ARCHS) $(ARMv7L_ARCHS)),$(ARCH)) +CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=ARM +endif + +ifeq ($(findstring $(ARCH),$(ARMv8_ARCHS)),$(ARCH)) +CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=AArch64 +endif + +ifeq ($(findstring $(ARCH),$(i686_ARCHS) $(x64_ARCHS)),$(ARCH)) +CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=X86 +endif + +ifeq ($(findstring $(ARCH),$(PPC_ARCHS)),$(ARCH)) +CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=PPC64 +CMAKE_ARGS += -DCMAKE_CXX_FLAGS=-m32 +CMAKE_ARGS += -DENABLE_ALTIVEC=OFF +CMAKE_ARGS += -DCPU_POWER8=OFF +endif + +include ../../mk/spksrc.cross-cmake.mk diff --git a/spk/synocli-devel/Makefile b/spk/synocli-devel/Makefile index a7b71089114..20f035cb85d 100644 --- a/spk/synocli-devel/Makefile +++ b/spk/synocli-devel/Makefile @@ -20,6 +20,9 @@ DEPENDS = cross/binutils DEPENDS += cross/gdb DEPENDS += cross/llvm +## +## binutils +## SPK_COMMANDS += bin/addr2line SPK_COMMANDS += bin/ar SPK_COMMANDS += bin/as @@ -47,6 +50,10 @@ SPK_COMMANDS += bin/size SPK_COMMANDS += bin/strings SPK_COMMANDS += bin/strip +## +## gdb +## + ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS)),$(ARCH)) OPTIONAL_DESC += ", gdb 7.12.1" else @@ -61,4 +68,70 @@ ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS) $(ARMv7_ARCHS) $(ARMv7L_ARCHS)),$(ARCH SPK_COMMANDS += bin/run endif +## +## LLVM +## +SPK_COMMANDS += bin/analyze-build +SPK_COMMANDS += bin/clang +SPK_COMMANDS += bin/clang++ +SPK_COMMANDS += bin/clang-15 +SPK_COMMANDS += bin/clang-apply-replacements +SPK_COMMANDS += bin/clang-change-namespace +SPK_COMMANDS += bin/clang-check +SPK_COMMANDS += bin/clang-cl +SPK_COMMANDS += bin/clang-cpp +SPK_COMMANDS += bin/clangd +SPK_COMMANDS += bin/clang-doc +SPK_COMMANDS += bin/clang-extdef-mapping +SPK_COMMANDS += bin/clang-format +SPK_COMMANDS += bin/clang-include-fixer +SPK_COMMANDS += bin/clang-linker-wrapper +SPK_COMMANDS += bin/clang-move +SPK_COMMANDS += bin/clang-nvlink-wrapper +SPK_COMMANDS += bin/clang-offload-bundler +SPK_COMMANDS += bin/clang-offload-packager +SPK_COMMANDS += bin/clang-offload-wrapper +SPK_COMMANDS += bin/clang-pseudo +SPK_COMMANDS += bin/clang-query +SPK_COMMANDS += bin/clang-refactor +SPK_COMMANDS += bin/clang-rename +SPK_COMMANDS += bin/clang-reorder-fields +SPK_COMMANDS += bin/clang-repl +SPK_COMMANDS += bin/clang-scan-deps +SPK_COMMANDS += bin/clang-tidy +SPK_COMMANDS += bin/diagtool +SPK_COMMANDS += bin/find-all-symbols +SPK_COMMANDS += bin/git-clang-format +SPK_COMMANDS += bin/hmaptool +SPK_COMMANDS += bin/intercept-build +SPK_COMMANDS += bin/ld64.lld +SPK_COMMANDS += bin/ld.lld +SPK_COMMANDS += bin/lld +SPK_COMMANDS += bin/lld-link +SPK_COMMANDS += bin/llvm-ar +SPK_COMMANDS += bin/llvm-cov +SPK_COMMANDS += bin/llvm-cxxfilt +SPK_COMMANDS += bin/llvm-dwp +SPK_COMMANDS += bin/llvm-lib +SPK_COMMANDS += bin/llvm-ml +SPK_COMMANDS += bin/llvm-nm +SPK_COMMANDS += bin/llvm-objcopy +SPK_COMMANDS += bin/llvm-objdump +SPK_COMMANDS += bin/llvm-pdbutil +SPK_COMMANDS += bin/llvm-profdata +SPK_COMMANDS += bin/llvm-ranlib +SPK_COMMANDS += bin/llvm-rc +SPK_COMMANDS += bin/llvm-readobj +SPK_COMMANDS += bin/llvm-size +SPK_COMMANDS += bin/llvm-strings +SPK_COMMANDS += bin/llvm-strip +SPK_COMMANDS += bin/llvm-symbolizer +SPK_COMMANDS += bin/modularize +SPK_COMMANDS += bin/pp-trace +SPK_COMMANDS += bin/run-clang-tidy +SPK_COMMANDS += bin/scan-build +SPK_COMMANDS += bin/scan-build-py +SPK_COMMANDS += bin/scan-view +SPK_COMMANDS += bin/wasm-ld + include ../../mk/spksrc.spk.mk From 2b3fc282e4c2e0c2cc2e7ba22f36ea5e909a88e4 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Mon, 6 Mar 2023 02:18:35 +0000 Subject: [PATCH 26/61] llvm: Allow multiple versions of LLVM --- cross/llvm-9.0/Makefile | 52 +++++++++++++++++++++++++++++++ cross/llvm-9.0/PLIST.auto | 0 cross/llvm-9.0/digests | 3 ++ cross/llvm-latest/Makefile | 48 +++++++++++++++++++++++++++++ cross/llvm-latest/PLIST.auto | 0 cross/llvm-latest/digests | 3 ++ cross/llvm/Makefile | 59 +++++++++++------------------------- cross/llvm/PLIST | 0 cross/llvm/digests | 0 9 files changed, 123 insertions(+), 42 deletions(-) create mode 100644 cross/llvm-9.0/Makefile create mode 100644 cross/llvm-9.0/PLIST.auto create mode 100644 cross/llvm-9.0/digests create mode 100644 cross/llvm-latest/Makefile create mode 100644 cross/llvm-latest/PLIST.auto create mode 100644 cross/llvm-latest/digests create mode 100644 cross/llvm/PLIST create mode 100644 cross/llvm/digests diff --git a/cross/llvm-9.0/Makefile b/cross/llvm-9.0/Makefile new file mode 100644 index 00000000000..94838e6b728 --- /dev/null +++ b/cross/llvm-9.0/Makefile @@ -0,0 +1,52 @@ +PKG_NAME = llvm +PKG_VERS = 9.0.1 +PKG_EXT = tar.xz +PKG_DIST_NAME = $(PKG_NAME)-project-$(PKG_VERS).$(PKG_EXT) +PKG_DIST_SITE = https://github.com/llvm/llvm-project/releases/download/llvmorg-$(PKG_VERS) +PKG_DIR = $(PKG_NAME)-project-$(PKG_VERS) + +DEPENDS = + +HOMEPAGE = https://llvm.org/ +COMMENT = The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. +LICENSE = Apache License v2.0 with LLVM Exceptions + +CMAKE_USE_NINJA = 1 + +# Using LLVM project source need to change to llvm sub-directory +CMAKE_DIR = $(WORK_DIR)/$(PKG_DIR)/llvm + +CMAKE_ARGS += -DCMAKE_BUILD_TYPE=MinSizeRel +CMAKE_ARGS += -DLLVM_ENABLE_ASSERTIONS=ON +CMAKE_ARGS += -DLLVM_BUILD_LLVM_DYLIB=ON +CMAKE_ARGS += -DLLVM_LINK_LLVM_DYLIB=ON +CMAKE_ARGS += -DBUILD_SHARED_LIBS=OFF +CMAKE_ARGS += -DLLVM_INSTALL_TOOLCHAIN_ONLY=ON +CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld;clang-tools-extra' + +include ../../mk/spksrc.common.mk + +ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS) $(ARMv7_ARCHS) $(ARMv7L_ARCHS)),$(ARCH)) +CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=ARM +endif + +ifeq ($(findstring $(ARCH),$(ARMv8_ARCHS)),$(ARCH)) +CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=AArch64 +endif + +ifeq ($(findstring $(ARCH),$(i686_ARCHS) $(x64_ARCHS)),$(ARCH)) +CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=X86 +endif + +ifeq ($(findstring $(ARCH),$(PPC_ARCHS)),$(ARCH)) +CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=PPC64 +CMAKE_ARGS += -DCMAKE_CXX_FLAGS=-m32 +CMAKE_ARGS += -DENABLE_ALTIVEC=OFF +CMAKE_ARGS += -DCPU_POWER8=OFF +endif + +include ../../mk/spksrc.cross-cmake.mk + +ifeq ($(call version_lt, $(TC_GCC), 5.1),1) +CMAKE_ARGS += -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON +endif diff --git a/cross/llvm-9.0/PLIST.auto b/cross/llvm-9.0/PLIST.auto new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cross/llvm-9.0/digests b/cross/llvm-9.0/digests new file mode 100644 index 00000000000..9c761ee0dc5 --- /dev/null +++ b/cross/llvm-9.0/digests @@ -0,0 +1,3 @@ +llvm-project-9.0.1.tar.xz SHA1 2e59097a784f1e45dfa483dbf90281c86819a21f +llvm-project-9.0.1.tar.xz SHA256 ea241c807e949c24615691a5271e20bcaaa404b28a5f6deb462f9c22b478489b +llvm-project-9.0.1.tar.xz MD5 b4268e733dfe352960140dc07ef2efcb diff --git a/cross/llvm-latest/Makefile b/cross/llvm-latest/Makefile new file mode 100644 index 00000000000..6caae0ee9c6 --- /dev/null +++ b/cross/llvm-latest/Makefile @@ -0,0 +1,48 @@ +PKG_NAME = llvm +PKG_VERS = 15.0.7 +PKG_EXT = tar.xz +PKG_DIST_NAME = $(PKG_NAME)-project-$(PKG_VERS).src.$(PKG_EXT) +PKG_DIST_SITE = https://github.com/llvm/llvm-project/releases/download/llvmorg-$(PKG_VERS) +PKG_DIR = $(PKG_NAME)-project-$(PKG_VERS).src + +DEPENDS = + +HOMEPAGE = https://llvm.org/ +COMMENT = The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. +LICENSE = Apache License v2.0 with LLVM Exceptions + +CMAKE_USE_NINJA = 1 + +# Using LLVM project source need to change to llvm sub-directory +CMAKE_DIR = $(WORK_DIR)/$(PKG_DIR)/llvm + +CMAKE_ARGS += -DCMAKE_BUILD_TYPE=MinSizeRel +CMAKE_ARGS += -DLLVM_ENABLE_ASSERTIONS=ON +CMAKE_ARGS += -DLLVM_BUILD_LLVM_DYLIB=ON +CMAKE_ARGS += -DLLVM_LINK_LLVM_DYLIB=ON +CMAKE_ARGS += -DBUILD_SHARED_LIBS=OFF +CMAKE_ARGS += -DLLVM_INSTALL_TOOLCHAIN_ONLY=ON +CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld;clang-tools-extra' + +include ../../mk/spksrc.common.mk + +ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS) $(ARMv7_ARCHS) $(ARMv7L_ARCHS)),$(ARCH)) +CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=ARM +endif + +ifeq ($(findstring $(ARCH),$(ARMv8_ARCHS)),$(ARCH)) +CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=AArch64 +endif + +ifeq ($(findstring $(ARCH),$(i686_ARCHS) $(x64_ARCHS)),$(ARCH)) +CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=X86 +endif + +ifeq ($(findstring $(ARCH),$(PPC_ARCHS)),$(ARCH)) +CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=PPC64 +CMAKE_ARGS += -DCMAKE_CXX_FLAGS=-m32 +CMAKE_ARGS += -DENABLE_ALTIVEC=OFF +CMAKE_ARGS += -DCPU_POWER8=OFF +endif + +include ../../mk/spksrc.cross-cmake.mk diff --git a/cross/llvm-latest/PLIST.auto b/cross/llvm-latest/PLIST.auto new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cross/llvm-latest/digests b/cross/llvm-latest/digests new file mode 100644 index 00000000000..fb3a4807a4e --- /dev/null +++ b/cross/llvm-latest/digests @@ -0,0 +1,3 @@ +llvm-project-15.0.7.src.tar.xz SHA1 bfda06ab090154d289013912266209595a2e3914 +llvm-project-15.0.7.src.tar.xz SHA256 8b5fcb24b4128cf04df1b0b9410ce8b1a729cb3c544e6da885d234280dedeac6 +llvm-project-15.0.7.src.tar.xz MD5 bac436dbd5d37e38d3da75b03629053c diff --git a/cross/llvm/Makefile b/cross/llvm/Makefile index 6caae0ee9c6..357caf16d2f 100644 --- a/cross/llvm/Makefile +++ b/cross/llvm/Makefile @@ -1,48 +1,23 @@ -PKG_NAME = llvm -PKG_VERS = 15.0.7 -PKG_EXT = tar.xz -PKG_DIST_NAME = $(PKG_NAME)-project-$(PKG_VERS).src.$(PKG_EXT) -PKG_DIST_SITE = https://github.com/llvm/llvm-project/releases/download/llvmorg-$(PKG_VERS) -PKG_DIR = $(PKG_NAME)-project-$(PKG_VERS).src +PKG_NAME = llvm-main -DEPENDS = +HOMEPAGE = https://www.gnu.org/software/gdb/ +COMMENT = The GNU Project Debugger +LICENSE = GPLv2/LGPLv2 -HOMEPAGE = https://llvm.org/ -COMMENT = The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. -LICENSE = Apache License v2.0 with LLVM Exceptions +DOWNLOAD_TARGET = nop +CHECKSUM_TARGET = nop +EXTRACT_TARGET = nop +CONFIGURE_TARGET = nop +COMPILE_TARGET = nop +INSTALL_TARGET = nop -CMAKE_USE_NINJA = 1 +OPTIONAL_DEPENDS = cross/llvm-latest +OPTIONAL_DEPENDS += cross/llvm-9.0 -# Using LLVM project source need to change to llvm sub-directory -CMAKE_DIR = $(WORK_DIR)/$(PKG_DIR)/llvm +include ../../mk/spksrc.install-resources.mk -CMAKE_ARGS += -DCMAKE_BUILD_TYPE=MinSizeRel -CMAKE_ARGS += -DLLVM_ENABLE_ASSERTIONS=ON -CMAKE_ARGS += -DLLVM_BUILD_LLVM_DYLIB=ON -CMAKE_ARGS += -DLLVM_LINK_LLVM_DYLIB=ON -CMAKE_ARGS += -DBUILD_SHARED_LIBS=OFF -CMAKE_ARGS += -DLLVM_INSTALL_TOOLCHAIN_ONLY=ON -CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld;clang-tools-extra' - -include ../../mk/spksrc.common.mk - -ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS) $(ARMv7_ARCHS) $(ARMv7L_ARCHS)),$(ARCH)) -CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=ARM +ifeq ($(call version_ge, $(TC_GCC), 5.1),1) +DEPENDS = cross/llvm-latest +else +DEPENDS = cross/llvm-9.0 endif - -ifeq ($(findstring $(ARCH),$(ARMv8_ARCHS)),$(ARCH)) -CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=AArch64 -endif - -ifeq ($(findstring $(ARCH),$(i686_ARCHS) $(x64_ARCHS)),$(ARCH)) -CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=X86 -endif - -ifeq ($(findstring $(ARCH),$(PPC_ARCHS)),$(ARCH)) -CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=PPC64 -CMAKE_ARGS += -DCMAKE_CXX_FLAGS=-m32 -CMAKE_ARGS += -DENABLE_ALTIVEC=OFF -CMAKE_ARGS += -DCPU_POWER8=OFF -endif - -include ../../mk/spksrc.cross-cmake.mk diff --git a/cross/llvm/PLIST b/cross/llvm/PLIST new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cross/llvm/digests b/cross/llvm/digests new file mode 100644 index 00000000000..e69de29bb2d From 3c04a0c5a4c70682905cf3fe88dc0539dbacd2e1 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Mon, 6 Mar 2023 02:18:49 +0000 Subject: [PATCH 27/61] gdb: Fix type for main makefile --- cross/gdb/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cross/gdb/Makefile b/cross/gdb/Makefile index b7d980cc654..76a688c02b2 100644 --- a/cross/gdb/Makefile +++ b/cross/gdb/Makefile @@ -1,4 +1,4 @@ -PKG_NAME = gdb +PKG_NAME = gdb-main HOMEPAGE = https://www.gnu.org/software/gdb/ COMMENT = The GNU Project Debugger From 0c3cc0c8590bda7130e910131d712d97638b9406 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Mon, 6 Mar 2023 12:30:49 +0000 Subject: [PATCH 28/61] llvm-9.0: Use native/llvm to access *-tblgen tools --- cross/llvm-9.0/Makefile | 5 ++++- native/llvm-9.0/Makefile | 28 ++++++++++++++++++++++++++++ native/llvm-9.0/PLIST.auto | 0 native/llvm-9.0/digests | 3 +++ 4 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 native/llvm-9.0/Makefile create mode 100644 native/llvm-9.0/PLIST.auto create mode 100644 native/llvm-9.0/digests diff --git a/cross/llvm-9.0/Makefile b/cross/llvm-9.0/Makefile index 94838e6b728..3f74c78a94f 100644 --- a/cross/llvm-9.0/Makefile +++ b/cross/llvm-9.0/Makefile @@ -5,7 +5,8 @@ PKG_DIST_NAME = $(PKG_NAME)-project-$(PKG_VERS).$(PKG_EXT) PKG_DIST_SITE = https://github.com/llvm/llvm-project/releases/download/llvmorg-$(PKG_VERS) PKG_DIR = $(PKG_NAME)-project-$(PKG_VERS) -DEPENDS = +BUILD_DEPENDS = native/llvm-9.0 +DEPENDS = cross/zlib HOMEPAGE = https://llvm.org/ COMMENT = The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. @@ -22,7 +23,9 @@ CMAKE_ARGS += -DLLVM_BUILD_LLVM_DYLIB=ON CMAKE_ARGS += -DLLVM_LINK_LLVM_DYLIB=ON CMAKE_ARGS += -DBUILD_SHARED_LIBS=OFF CMAKE_ARGS += -DLLVM_INSTALL_TOOLCHAIN_ONLY=ON +CMAKE_ARGS += -DLLVM_ENABLE_ZLIB=ON CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld;clang-tools-extra' +CMAKE_ARGS += -DLLVM_NATIVE_TOOL_DIR=$(abspath $(PWD)/../../native/llvm-9.0/work-native/install/usr/local/bin) include ../../mk/spksrc.common.mk diff --git a/native/llvm-9.0/Makefile b/native/llvm-9.0/Makefile new file mode 100644 index 00000000000..60100115f6e --- /dev/null +++ b/native/llvm-9.0/Makefile @@ -0,0 +1,28 @@ +PKG_NAME = llvm +PKG_VERS = 9.0.1 +PKG_EXT = tar.xz +PKG_DIST_NAME = $(PKG_NAME)-project-$(PKG_VERS).$(PKG_EXT) +PKG_DIST_SITE = https://github.com/llvm/llvm-project/releases/download/llvmorg-$(PKG_VERS) +PKG_DIR = $(PKG_NAME)-project-$(PKG_VERS) + +DEPENDS = + +HOMEPAGE = https://llvm.org/ +COMMENT = The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. +LICENSE = Apache License v2.0 with LLVM Exceptions + +CMAKE_USE_NINJA = 1 + +# Using LLVM project source need to change to llvm sub-directory +CMAKE_DIR = $(WORK_DIR)/$(PKG_DIR)/llvm + +CMAKE_ARGS += -DCMAKE_BUILD_TYPE=MinSizeRel +CMAKE_ARGS += -DLLVM_ENABLE_ASSERTIONS=ON +CMAKE_ARGS += -DLLVM_BUILD_LLVM_DYLIB=ON +CMAKE_ARGS += -DLLVM_LINK_LLVM_DYLIB=ON +CMAKE_ARGS += -DBUILD_SHARED_LIBS=OFF +CMAKE_ARGS += -DLLVM_INSTALL_TOOLCHAIN_ONLY=ON +CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang' +CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=X86 + +include ../../mk/spksrc.native-cmake.mk diff --git a/native/llvm-9.0/PLIST.auto b/native/llvm-9.0/PLIST.auto new file mode 100644 index 00000000000..e69de29bb2d diff --git a/native/llvm-9.0/digests b/native/llvm-9.0/digests new file mode 100644 index 00000000000..9c761ee0dc5 --- /dev/null +++ b/native/llvm-9.0/digests @@ -0,0 +1,3 @@ +llvm-project-9.0.1.tar.xz SHA1 2e59097a784f1e45dfa483dbf90281c86819a21f +llvm-project-9.0.1.tar.xz SHA256 ea241c807e949c24615691a5271e20bcaaa404b28a5f6deb462f9c22b478489b +llvm-project-9.0.1.tar.xz MD5 b4268e733dfe352960140dc07ef2efcb From 67f180e3149f836f3045bb1e569b0b571abddc19 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Mon, 6 Mar 2023 12:31:32 +0000 Subject: [PATCH 29/61] llvm-latest: Enable zlib by default --- cross/llvm-latest/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cross/llvm-latest/Makefile b/cross/llvm-latest/Makefile index 6caae0ee9c6..d7208d08b09 100644 --- a/cross/llvm-latest/Makefile +++ b/cross/llvm-latest/Makefile @@ -5,7 +5,7 @@ PKG_DIST_NAME = $(PKG_NAME)-project-$(PKG_VERS).src.$(PKG_EXT) PKG_DIST_SITE = https://github.com/llvm/llvm-project/releases/download/llvmorg-$(PKG_VERS) PKG_DIR = $(PKG_NAME)-project-$(PKG_VERS).src -DEPENDS = +DEPENDS = cross/zlib HOMEPAGE = https://llvm.org/ COMMENT = The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. @@ -22,6 +22,7 @@ CMAKE_ARGS += -DLLVM_BUILD_LLVM_DYLIB=ON CMAKE_ARGS += -DLLVM_LINK_LLVM_DYLIB=ON CMAKE_ARGS += -DBUILD_SHARED_LIBS=OFF CMAKE_ARGS += -DLLVM_INSTALL_TOOLCHAIN_ONLY=ON +CMAKE_ARGS += -DLLVM_ENABLE_ZLIB=ON CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld;clang-tools-extra' include ../../mk/spksrc.common.mk From 3965f5ba539e20b42e316b5e66c07a7b1ded53cf Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Mon, 6 Mar 2023 22:19:12 +0000 Subject: [PATCH 30/61] llvm-9.0: Fix access to llvm-tblgen and clang-tblgen --- cross/llvm-9.0/Makefile | 3 ++- native/llvm-9.0/Makefile | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/cross/llvm-9.0/Makefile b/cross/llvm-9.0/Makefile index 3f74c78a94f..806ee43c069 100644 --- a/cross/llvm-9.0/Makefile +++ b/cross/llvm-9.0/Makefile @@ -25,7 +25,8 @@ CMAKE_ARGS += -DBUILD_SHARED_LIBS=OFF CMAKE_ARGS += -DLLVM_INSTALL_TOOLCHAIN_ONLY=ON CMAKE_ARGS += -DLLVM_ENABLE_ZLIB=ON CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld;clang-tools-extra' -CMAKE_ARGS += -DLLVM_NATIVE_TOOL_DIR=$(abspath $(PWD)/../../native/llvm-9.0/work-native/install/usr/local/bin) +CMAKE_ARGS += -DLLVM_TABLEGEN=$(abspath $(PWD)/../../native/llvm-9.0/work-native/install/usr/local/bin/llvm-tblgen) +CMAKE_ARGS += -DCLANG_TABLEGEN=$(abspath $(PWD)/../../native/llvm-9.0/work-native/install/usr/local/bin/clang-tblgen) include ../../mk/spksrc.common.mk diff --git a/native/llvm-9.0/Makefile b/native/llvm-9.0/Makefile index 60100115f6e..a47d91be970 100644 --- a/native/llvm-9.0/Makefile +++ b/native/llvm-9.0/Makefile @@ -12,6 +12,7 @@ COMMENT = The LLVM Project is a collection of modular and reusable compiler and LICENSE = Apache License v2.0 with LLVM Exceptions CMAKE_USE_NINJA = 1 +POST_INSTALL_TARGET = llvm_post_install # Using LLVM project source need to change to llvm sub-directory CMAKE_DIR = $(WORK_DIR)/$(PKG_DIR)/llvm @@ -26,3 +27,8 @@ CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang' CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=X86 include ../../mk/spksrc.native-cmake.mk + +.PHONY: llvm_post_install +llvm_post_install: + $(RUN) install -m 755 build/bin/clang-tblgen $(STAGING_INSTALL_PREFIX)/bin/clang-tblgen + $(RUN) install -m 755 build/bin/llvm-tblgen $(STAGING_INSTALL_PREFIX)/bin/llvm-tblgen From 5eeb6392a519d94f8677780f26ae35eafca2da8f Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Wed, 8 Mar 2023 02:53:35 +0000 Subject: [PATCH 31/61] llvm-9.0: First working build - pending toolchain patches commit --- cross/llvm-9.0/Makefile | 79 +++++++++++++++++-- ...01-avoid_linking_libdl_unless_needed.patch | 25 ++++++ native/llvm-9.0/Makefile | 3 +- spk/synocli-devel/Makefile | 30 ++----- 4 files changed, 105 insertions(+), 32 deletions(-) create mode 100644 cross/llvm-9.0/patches/001-avoid_linking_libdl_unless_needed.patch diff --git a/cross/llvm-9.0/Makefile b/cross/llvm-9.0/Makefile index 806ee43c069..b6db26429bf 100644 --- a/cross/llvm-9.0/Makefile +++ b/cross/llvm-9.0/Makefile @@ -17,33 +17,98 @@ CMAKE_USE_NINJA = 1 # Using LLVM project source need to change to llvm sub-directory CMAKE_DIR = $(WORK_DIR)/$(PKG_DIR)/llvm +# https://llvm.org/docs/CMake.html CMAKE_ARGS += -DCMAKE_BUILD_TYPE=MinSizeRel -CMAKE_ARGS += -DLLVM_ENABLE_ASSERTIONS=ON -CMAKE_ARGS += -DLLVM_BUILD_LLVM_DYLIB=ON -CMAKE_ARGS += -DLLVM_LINK_LLVM_DYLIB=ON -CMAKE_ARGS += -DBUILD_SHARED_LIBS=OFF +CMAKE_ARGS += -Wno-dev +CMAKE_ARGS += -DLLVM_BUILD_DOCS=OFF +CMAKE_ARGS += -DLLVM_INCLUDE_BENCHMARKS=OFF +CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld;clang-tools-extra' + +# When set to ON it removes many of the LLVM development and +# testing tools as well as component libraries from the +# default install target. Including the development tools is +# not recommended for distributions as many of the LLCM tools +# are only intended for development and testing use. CMAKE_ARGS += -DLLVM_INSTALL_TOOLCHAIN_ONLY=ON + +# Assertions are internal checks to help find bugs. +# They typically slow down LLVM and Clang when enabled +CMAKE_ARGS += -DLLVM_ENABLE_ASSERTIONS=OFF + +# Enable building with zlib to support compression/uncompression CMAKE_ARGS += -DLLVM_ENABLE_ZLIB=ON -CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld;clang-tools-extra' + +# Indicates whether the LLVM Interpreter will be +# linked with the Foreign Function Interface library +# (libffi) in order to enable calling external functions. +# DEPENDS += cross/libffi +# CMAKE_ARGS += LLVM_ENABLE_FFI=ON <-- TO TEST + +# BUILD_SHARED_LIBS is only recommended for use +# by LLVM developers. If you want to build LLVM +# as a shared library, you should use the +# LLVM_BUILD_LLVM_DYLIB option +# CMAKE_ARGS += -DBUILD_SHARED_LIBS=ON + +# The most impactful way to reduce binary size is +# to dynamically link LLVM into all the tools. +# This reduces code size by decreasing duplication +# of common code between the LLVM-based tools. +CMAKE_ARGS += -DLLVM_BUILD_LLVM_DYLIB=ON +CMAKE_ARGS += -DLLVM_LINK_LLVM_DYLIB=ON + +# Allow users to build with RTTI (Run-Time Type Info) +# enabled and still inherit from LLVM classes +#CMAKE_ARGS += -DLLVM_ENABLE_RTTI=ON <-- TO TEST + +# Otherwise builds with error +CMAKE_ARGS += -DCOMPILER_RT_BUILD_LIBFUZZER=OFF + +# This switch enables building for the r600 AMD GPU +# used by the Mesa r600 and radeonsi drivers. +# The BPF target is required to build v4l-utils-1.24.1. +# -DLLVM_TARGETS_TO_BUILD="AMDGPU;BPF" <-- Something to play with for CUDA and NVIDIA GPU transcoding? + +# Requires native/llvm-9.0 +CMAKE_ARGS += -DLLVM_CONFIG=$(abspath $(PWD)/../../native/llvm-9.0/work-native/install/usr/local/bin/llvm-config) CMAKE_ARGS += -DLLVM_TABLEGEN=$(abspath $(PWD)/../../native/llvm-9.0/work-native/install/usr/local/bin/llvm-tblgen) CMAKE_ARGS += -DCLANG_TABLEGEN=$(abspath $(PWD)/../../native/llvm-9.0/work-native/install/usr/local/bin/clang-tblgen) include ../../mk/spksrc.common.mk -ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS) $(ARMv7_ARCHS) $(ARMv7L_ARCHS)),$(ARCH)) +ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS)),$(ARCH)) +CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=ARM +CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=arm-marvell-linux-gnueabi +endif + +ifeq ($(findstring $(ARCH),$(ARMv7_ARCHS)),$(ARCH)) CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=ARM +CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=arm-unknown-linux-gnueabi +endif + +ifeq ($(findstring $(ARCH),$(ARMv7L_ARCHS)),$(ARCH)) +CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=ARM +CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=arm-cortexa9-linux-gnueabi endif ifeq ($(findstring $(ARCH),$(ARMv8_ARCHS)),$(ARCH)) CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=AArch64 +CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=aarch64-unknown-linux-gnueabi +endif + +ifeq ($(findstring $(ARCH),$(i686_ARCHS)),$(ARCH)) +CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=X86 +CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=i686-pc-linux-gnu endif -ifeq ($(findstring $(ARCH),$(i686_ARCHS) $(x64_ARCHS)),$(ARCH)) +ifeq ($(findstring $(ARCH),$(x64_ARCHS)),$(ARCH)) CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=X86 +CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=x86_64-pc-linux-gnu endif ifeq ($(findstring $(ARCH),$(PPC_ARCHS)),$(ARCH)) CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=PPC64 +CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=powerpc-e500v2-linux-gnuspe CMAKE_ARGS += -DCMAKE_CXX_FLAGS=-m32 CMAKE_ARGS += -DENABLE_ALTIVEC=OFF CMAKE_ARGS += -DCPU_POWER8=OFF diff --git a/cross/llvm-9.0/patches/001-avoid_linking_libdl_unless_needed.patch b/cross/llvm-9.0/patches/001-avoid_linking_libdl_unless_needed.patch new file mode 100644 index 00000000000..77478171bb8 --- /dev/null +++ b/cross/llvm-9.0/patches/001-avoid_linking_libdl_unless_needed.patch @@ -0,0 +1,25 @@ +#----------------------------------------------------- +# FAILED: libclang.so.9 undefined reference to dladdr +# +# This patch avoid linking libdl unless needed. Otherwise this +# is causing linking libclang.so to fail with undefined reference +# to dladdr due to missing -ldl +# +# Source: https://reviews.llvm.org/D80492 +# Patch: https://reviews.llvm.org/rG0073c293a401774ac96b4b3d27f05e13f379f98e +#----------------------------------------------------- +diff -uprN ../llvm-project-9.0.1-orig/clang/tools/libclang/CMakeLists.txt ./clang/tools/libclang/CMakeLists.txt +--- ../llvm-project-9.0.1-orig/clang/tools/libclang/CMakeLists.txt 2019-12-11 19:15:30.000000000 +0000 ++++ ./clang/tools/libclang/CMakeLists.txt 2023-03-08 01:45:24.182286008 +0000 +@@ -58,9 +58,8 @@ if (TARGET clangTidyPlugin) + endif() + endif () + +-find_library(DL_LIBRARY_PATH dl) +-if (DL_LIBRARY_PATH) +- list(APPEND LIBS dl) ++if (HAVE_LIBDL) ++ list(APPEND LIBS ${CMAKE_DL_LIBS}) + endif() + + option(LIBCLANG_BUILD_STATIC diff --git a/native/llvm-9.0/Makefile b/native/llvm-9.0/Makefile index a47d91be970..74aadf68121 100644 --- a/native/llvm-9.0/Makefile +++ b/native/llvm-9.0/Makefile @@ -30,5 +30,6 @@ include ../../mk/spksrc.native-cmake.mk .PHONY: llvm_post_install llvm_post_install: - $(RUN) install -m 755 build/bin/clang-tblgen $(STAGING_INSTALL_PREFIX)/bin/clang-tblgen + $(RUN) install -m 755 build/bin/llvm-config $(STAGING_INSTALL_PREFIX)/bin/llvm-config $(RUN) install -m 755 build/bin/llvm-tblgen $(STAGING_INSTALL_PREFIX)/bin/llvm-tblgen + $(RUN) install -m 755 build/bin/clang-tblgen $(STAGING_INSTALL_PREFIX)/bin/clang-tblgen diff --git a/spk/synocli-devel/Makefile b/spk/synocli-devel/Makefile index 20f035cb85d..febcfaa7443 100644 --- a/spk/synocli-devel/Makefile +++ b/spk/synocli-devel/Makefile @@ -68,13 +68,18 @@ ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS) $(ARMv7_ARCHS) $(ARMv7L_ARCHS)),$(ARCH SPK_COMMANDS += bin/run endif +include ../../mk/spksrc.spk.mk + ## ## LLVM ## -SPK_COMMANDS += bin/analyze-build SPK_COMMANDS += bin/clang SPK_COMMANDS += bin/clang++ +ifeq ($(call version_ge, $(TC_GCC), 5.1),1) SPK_COMMANDS += bin/clang-15 +else +SPK_COMMANDS += bin/clang-9 +fi SPK_COMMANDS += bin/clang-apply-replacements SPK_COMMANDS += bin/clang-change-namespace SPK_COMMANDS += bin/clang-check @@ -85,53 +90,30 @@ SPK_COMMANDS += bin/clang-doc SPK_COMMANDS += bin/clang-extdef-mapping SPK_COMMANDS += bin/clang-format SPK_COMMANDS += bin/clang-include-fixer -SPK_COMMANDS += bin/clang-linker-wrapper -SPK_COMMANDS += bin/clang-move -SPK_COMMANDS += bin/clang-nvlink-wrapper SPK_COMMANDS += bin/clang-offload-bundler -SPK_COMMANDS += bin/clang-offload-packager -SPK_COMMANDS += bin/clang-offload-wrapper -SPK_COMMANDS += bin/clang-pseudo SPK_COMMANDS += bin/clang-query SPK_COMMANDS += bin/clang-refactor SPK_COMMANDS += bin/clang-rename SPK_COMMANDS += bin/clang-reorder-fields -SPK_COMMANDS += bin/clang-repl SPK_COMMANDS += bin/clang-scan-deps SPK_COMMANDS += bin/clang-tidy -SPK_COMMANDS += bin/diagtool SPK_COMMANDS += bin/find-all-symbols SPK_COMMANDS += bin/git-clang-format SPK_COMMANDS += bin/hmaptool -SPK_COMMANDS += bin/intercept-build SPK_COMMANDS += bin/ld64.lld SPK_COMMANDS += bin/ld.lld SPK_COMMANDS += bin/lld SPK_COMMANDS += bin/lld-link SPK_COMMANDS += bin/llvm-ar -SPK_COMMANDS += bin/llvm-cov -SPK_COMMANDS += bin/llvm-cxxfilt -SPK_COMMANDS += bin/llvm-dwp SPK_COMMANDS += bin/llvm-lib -SPK_COMMANDS += bin/llvm-ml SPK_COMMANDS += bin/llvm-nm SPK_COMMANDS += bin/llvm-objcopy SPK_COMMANDS += bin/llvm-objdump -SPK_COMMANDS += bin/llvm-pdbutil SPK_COMMANDS += bin/llvm-profdata SPK_COMMANDS += bin/llvm-ranlib SPK_COMMANDS += bin/llvm-rc -SPK_COMMANDS += bin/llvm-readobj -SPK_COMMANDS += bin/llvm-size -SPK_COMMANDS += bin/llvm-strings -SPK_COMMANDS += bin/llvm-strip SPK_COMMANDS += bin/llvm-symbolizer SPK_COMMANDS += bin/modularize -SPK_COMMANDS += bin/pp-trace -SPK_COMMANDS += bin/run-clang-tidy SPK_COMMANDS += bin/scan-build -SPK_COMMANDS += bin/scan-build-py SPK_COMMANDS += bin/scan-view SPK_COMMANDS += bin/wasm-ld - -include ../../mk/spksrc.spk.mk From c1facbc2a501205b33d3465e1c1ac281640ffc2e Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Thu, 9 Mar 2023 00:15:24 +0000 Subject: [PATCH 32/61] toolchain: Define missing SCSI_IOCTL_TAGGED_ENABLE|DISABLE --- ...ine_scsi_ioctl_tagged_enable_disable.patch | 12 ++++++++++ ...ine_scsi_ioctl_tagged_enable_disable.patch | 24 +++++++++++++++++++ ...ine_scsi_ioctl_tagged_enable_disable.patch | 12 ++++++++++ ...ine_scsi_ioctl_tagged_enable_disable.patch | 12 ++++++++++ ...ine_scsi_ioctl_tagged_enable_disable.patch | 12 ++++++++++ ...ine_scsi_ioctl_tagged_enable_disable.patch | 12 ++++++++++ ...ine_scsi_ioctl_tagged_enable_disable.patch | 12 ++++++++++ ...ine_scsi_ioctl_tagged_enable_disable.patch | 12 ++++++++++ ...ine_scsi_ioctl_tagged_enable_disable.patch | 12 ++++++++++ ...ine_scsi_ioctl_tagged_enable_disable.patch | 12 ++++++++++ ...ine_scsi_ioctl_tagged_enable_disable.patch | 12 ++++++++++ ...ine_scsi_ioctl_tagged_enable_disable.patch | 12 ++++++++++ ...ine_scsi_ioctl_tagged_enable_disable.patch | 12 ++++++++++ ...ine_scsi_ioctl_tagged_enable_disable.patch | 12 ++++++++++ ...ine_scsi_ioctl_tagged_enable_disable.patch | 12 ++++++++++ ...ine_scsi_ioctl_tagged_enable_disable.patch | 12 ++++++++++ ...ine_scsi_ioctl_tagged_enable_disable.patch | 12 ++++++++++ 17 files changed, 216 insertions(+) create mode 100644 toolchain/syno-88f6281-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch create mode 100644 toolchain/syno-aarch64-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch create mode 100644 toolchain/syno-aarch64-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch create mode 100644 toolchain/syno-aarch64-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch create mode 100644 toolchain/syno-armv7-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch create mode 100644 toolchain/syno-armv7-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch create mode 100644 toolchain/syno-armv7-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch create mode 100644 toolchain/syno-comcerto2k-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch create mode 100644 toolchain/syno-comcerto2k-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch create mode 100644 toolchain/syno-evansport-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch create mode 100644 toolchain/syno-evansport-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch create mode 100644 toolchain/syno-evansport-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch create mode 100644 toolchain/syno-hi3535-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch create mode 100644 toolchain/syno-qoriq-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch create mode 100644 toolchain/syno-x64-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch create mode 100644 toolchain/syno-x64-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch create mode 100644 toolchain/syno-x64-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch diff --git a/toolchain/syno-88f6281-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-88f6281-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch new file mode 100644 index 00000000000..45310f47f9c --- /dev/null +++ b/toolchain/syno-88f6281-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch @@ -0,0 +1,12 @@ +diff -uprN ../../work/arm-marvell-linux-gnueabi/arm-marvell-linux-gnueabi/libc/include/scsi/scsi.h ./arm-marvell-linux-gnueabi/libc/include/scsi/scsi.h +--- ../../work/arm-marvell-linux-gnueabi/arm-marvell-linux-gnueabi/libc/include/scsi/scsi.h 2017-08-02 23:22:30.000000000 +0000 ++++ ./arm-marvell-linux-gnueabi/libc/include/scsi/scsi.h 2023-03-09 00:10:34.205185063 +0000 +@@ -546,6 +546,8 @@ static __inline__ int scsi_is_wlun(unsig + #define SCSI_IOCTL_GET_IDLUN 0x5382 + + /* 0x5383 and 0x5384 were used for SCSI_IOCTL_TAGGED_{ENABLE,DISABLE} */ ++#define SCSI_IOCTL_TAGGED_ENABLE 0x5383 ++#define SCSI_IOCTL_TAGGED_DISABLE 0x5384 + + /* Used to obtain the host number of a device. */ + #define SCSI_IOCTL_PROBE_HOST 0x5385 diff --git a/toolchain/syno-aarch64-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-aarch64-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch new file mode 100644 index 00000000000..d1c625f5e13 --- /dev/null +++ b/toolchain/syno-aarch64-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch @@ -0,0 +1,24 @@ +diff -uprN ../../work.orig/aarch64-unknown-linux-gnueabi/aarch64-unknown-linux-gnueabi/sys-root/usr/include/scsi/scsi.h ./aarch64-unknown-linux-gnueabi/sys-root/usr/include/scsi/scsi.h +--- ../../work.orig/aarch64-unknown-linux-gnueabi/aarch64-unknown-linux-gnueabi/sys-root/usr/include/scsi/scsi.h 2017-08-03 01:08:13.000000000 +0000 ++++ ./aarch64-unknown-linux-gnueabi/sys-root/usr/include/scsi/scsi.h 2023-03-06 23:40:37.324130895 +0000 +@@ -264,6 +264,8 @@ struct ccs_modesel_head { + #define SCSI_IOCTL_GET_IDLUN 0x5382 + + /* 0x5383 and 0x5384 were used for SCSI_IOCTL_TAGGED_{ENABLE,DISABLE} */ ++#define SCSI_IOCTL_TAGGED_ENABLE 0x5383 ++#define SCSI_IOCTL_TAGGED_DISABLE 0x5384 + + /* Used to obtain the host number of a device. */ + #define SCSI_IOCTL_PROBE_HOST 0x5385 +diff -uprN ../../work.orig/aarch64-unknown-linux-gnueabi/aarch64-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h ./aarch64-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h +--- ../../work.orig/aarch64-unknown-linux-gnueabi/aarch64-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h 2017-08-03 01:08:13.000000000 +0000 ++++ ./aarch64-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h 2023-03-06 23:41:00.328424414 +0000 +@@ -264,6 +264,8 @@ struct ccs_modesel_head { + #define SCSI_IOCTL_GET_IDLUN 0x5382 + + /* 0x5383 and 0x5384 were used for SCSI_IOCTL_TAGGED_{ENABLE,DISABLE} */ ++#define SCSI_IOCTL_TAGGED_ENABLE 0x5383 ++#define SCSI_IOCTL_TAGGED_DISABLE 0x5384 + + /* Used to obtain the host number of a device. */ + #define SCSI_IOCTL_PROBE_HOST 0x5385 diff --git a/toolchain/syno-aarch64-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-aarch64-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch new file mode 100644 index 00000000000..6ef82f2a227 --- /dev/null +++ b/toolchain/syno-aarch64-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch @@ -0,0 +1,12 @@ +diff -uprN ../../work.orig/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot/usr/include/scsi/scsi.h ./aarch64-unknown-linux-gnu/sysroot/usr/include/scsi/scsi.h +--- ../../work.orig/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot/usr/include/scsi/scsi.h 2021-07-01 19:35:13.000000000 +0000 ++++ ./aarch64-unknown-linux-gnu/sysroot/usr/include/scsi/scsi.h 2023-03-08 23:41:05.122316868 +0000 +@@ -267,6 +267,8 @@ struct ccs_modesel_head { + #define SCSI_IOCTL_GET_IDLUN 0x5382 + + /* 0x5383 and 0x5384 were used for SCSI_IOCTL_TAGGED_{ENABLE,DISABLE} */ ++#define SCSI_IOCTL_TAGGED_ENABLE 0x5383 ++#define SCSI_IOCTL_TAGGED_DISABLE 0x5384 + + /* Used to obtain the host number of a device. */ + #define SCSI_IOCTL_PROBE_HOST 0x5385 diff --git a/toolchain/syno-aarch64-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-aarch64-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch new file mode 100644 index 00000000000..6ef82f2a227 --- /dev/null +++ b/toolchain/syno-aarch64-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch @@ -0,0 +1,12 @@ +diff -uprN ../../work.orig/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot/usr/include/scsi/scsi.h ./aarch64-unknown-linux-gnu/sysroot/usr/include/scsi/scsi.h +--- ../../work.orig/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot/usr/include/scsi/scsi.h 2021-07-01 19:35:13.000000000 +0000 ++++ ./aarch64-unknown-linux-gnu/sysroot/usr/include/scsi/scsi.h 2023-03-08 23:41:05.122316868 +0000 +@@ -267,6 +267,8 @@ struct ccs_modesel_head { + #define SCSI_IOCTL_GET_IDLUN 0x5382 + + /* 0x5383 and 0x5384 were used for SCSI_IOCTL_TAGGED_{ENABLE,DISABLE} */ ++#define SCSI_IOCTL_TAGGED_ENABLE 0x5383 ++#define SCSI_IOCTL_TAGGED_DISABLE 0x5384 + + /* Used to obtain the host number of a device. */ + #define SCSI_IOCTL_PROBE_HOST 0x5385 diff --git a/toolchain/syno-armv7-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-armv7-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch new file mode 100644 index 00000000000..ab7a875d65d --- /dev/null +++ b/toolchain/syno-armv7-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch @@ -0,0 +1,12 @@ +diff -uprN ../../work/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h ./arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h +--- ../../work/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h 2017-08-02 23:34:06.000000000 +0000 ++++ ./arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h 2023-03-09 00:03:41.661144195 +0000 +@@ -518,6 +518,8 @@ static __inline__ int scsi_is_wlun(unsig + #define SCSI_IOCTL_GET_IDLUN 0x5382 + + /* 0x5383 and 0x5384 were used for SCSI_IOCTL_TAGGED_{ENABLE,DISABLE} */ ++#define SCSI_IOCTL_TAGGED_ENABLE 0x5383 ++#define SCSI_IOCTL_TAGGED_DISABLE 0x5384 + + /* Used to obtain the host number of a device. */ + #define SCSI_IOCTL_PROBE_HOST 0x5385 diff --git a/toolchain/syno-armv7-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-armv7-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch new file mode 100644 index 00000000000..ab7a875d65d --- /dev/null +++ b/toolchain/syno-armv7-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch @@ -0,0 +1,12 @@ +diff -uprN ../../work/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h ./arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h +--- ../../work/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h 2017-08-02 23:34:06.000000000 +0000 ++++ ./arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h 2023-03-09 00:03:41.661144195 +0000 +@@ -518,6 +518,8 @@ static __inline__ int scsi_is_wlun(unsig + #define SCSI_IOCTL_GET_IDLUN 0x5382 + + /* 0x5383 and 0x5384 were used for SCSI_IOCTL_TAGGED_{ENABLE,DISABLE} */ ++#define SCSI_IOCTL_TAGGED_ENABLE 0x5383 ++#define SCSI_IOCTL_TAGGED_DISABLE 0x5384 + + /* Used to obtain the host number of a device. */ + #define SCSI_IOCTL_PROBE_HOST 0x5385 diff --git a/toolchain/syno-armv7-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-armv7-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch new file mode 100644 index 00000000000..ab7a875d65d --- /dev/null +++ b/toolchain/syno-armv7-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch @@ -0,0 +1,12 @@ +diff -uprN ../../work/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h ./arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h +--- ../../work/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h 2017-08-02 23:34:06.000000000 +0000 ++++ ./arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h 2023-03-09 00:03:41.661144195 +0000 +@@ -518,6 +518,8 @@ static __inline__ int scsi_is_wlun(unsig + #define SCSI_IOCTL_GET_IDLUN 0x5382 + + /* 0x5383 and 0x5384 were used for SCSI_IOCTL_TAGGED_{ENABLE,DISABLE} */ ++#define SCSI_IOCTL_TAGGED_ENABLE 0x5383 ++#define SCSI_IOCTL_TAGGED_DISABLE 0x5384 + + /* Used to obtain the host number of a device. */ + #define SCSI_IOCTL_PROBE_HOST 0x5385 diff --git a/toolchain/syno-comcerto2k-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-comcerto2k-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch new file mode 100644 index 00000000000..ab7a875d65d --- /dev/null +++ b/toolchain/syno-comcerto2k-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch @@ -0,0 +1,12 @@ +diff -uprN ../../work/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h ./arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h +--- ../../work/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h 2017-08-02 23:34:06.000000000 +0000 ++++ ./arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h 2023-03-09 00:03:41.661144195 +0000 +@@ -518,6 +518,8 @@ static __inline__ int scsi_is_wlun(unsig + #define SCSI_IOCTL_GET_IDLUN 0x5382 + + /* 0x5383 and 0x5384 were used for SCSI_IOCTL_TAGGED_{ENABLE,DISABLE} */ ++#define SCSI_IOCTL_TAGGED_ENABLE 0x5383 ++#define SCSI_IOCTL_TAGGED_DISABLE 0x5384 + + /* Used to obtain the host number of a device. */ + #define SCSI_IOCTL_PROBE_HOST 0x5385 diff --git a/toolchain/syno-comcerto2k-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-comcerto2k-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch new file mode 100644 index 00000000000..ab7a875d65d --- /dev/null +++ b/toolchain/syno-comcerto2k-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch @@ -0,0 +1,12 @@ +diff -uprN ../../work/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h ./arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h +--- ../../work/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h 2017-08-02 23:34:06.000000000 +0000 ++++ ./arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h 2023-03-09 00:03:41.661144195 +0000 +@@ -518,6 +518,8 @@ static __inline__ int scsi_is_wlun(unsig + #define SCSI_IOCTL_GET_IDLUN 0x5382 + + /* 0x5383 and 0x5384 were used for SCSI_IOCTL_TAGGED_{ENABLE,DISABLE} */ ++#define SCSI_IOCTL_TAGGED_ENABLE 0x5383 ++#define SCSI_IOCTL_TAGGED_DISABLE 0x5384 + + /* Used to obtain the host number of a device. */ + #define SCSI_IOCTL_PROBE_HOST 0x5385 diff --git a/toolchain/syno-evansport-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-evansport-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch new file mode 100644 index 00000000000..a8d87a20e1c --- /dev/null +++ b/toolchain/syno-evansport-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch @@ -0,0 +1,12 @@ +diff -uprN ../../work/i686-pc-linux-gnu/i686-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h ./i686-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h +--- ../../work/i686-pc-linux-gnu/i686-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h 2017-08-02 22:33:56.000000000 +0000 ++++ ./i686-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h 2023-03-08 23:59:38.080468616 +0000 +@@ -517,6 +517,8 @@ static __inline__ int scsi_is_wlun(unsig + #define SCSI_IOCTL_GET_IDLUN 0x5382 + + /* 0x5383 and 0x5384 were used for SCSI_IOCTL_TAGGED_{ENABLE,DISABLE} */ ++#define SCSI_IOCTL_TAGGED_ENABLE 0x5383 ++#define SCSI_IOCTL_TAGGED_DISABLE 0x5384 + + /* Used to obtain the host number of a device. */ + #define SCSI_IOCTL_PROBE_HOST 0x5385 diff --git a/toolchain/syno-evansport-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-evansport-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch new file mode 100644 index 00000000000..a8d87a20e1c --- /dev/null +++ b/toolchain/syno-evansport-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch @@ -0,0 +1,12 @@ +diff -uprN ../../work/i686-pc-linux-gnu/i686-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h ./i686-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h +--- ../../work/i686-pc-linux-gnu/i686-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h 2017-08-02 22:33:56.000000000 +0000 ++++ ./i686-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h 2023-03-08 23:59:38.080468616 +0000 +@@ -517,6 +517,8 @@ static __inline__ int scsi_is_wlun(unsig + #define SCSI_IOCTL_GET_IDLUN 0x5382 + + /* 0x5383 and 0x5384 were used for SCSI_IOCTL_TAGGED_{ENABLE,DISABLE} */ ++#define SCSI_IOCTL_TAGGED_ENABLE 0x5383 ++#define SCSI_IOCTL_TAGGED_DISABLE 0x5384 + + /* Used to obtain the host number of a device. */ + #define SCSI_IOCTL_PROBE_HOST 0x5385 diff --git a/toolchain/syno-evansport-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-evansport-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch new file mode 100644 index 00000000000..a8d87a20e1c --- /dev/null +++ b/toolchain/syno-evansport-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch @@ -0,0 +1,12 @@ +diff -uprN ../../work/i686-pc-linux-gnu/i686-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h ./i686-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h +--- ../../work/i686-pc-linux-gnu/i686-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h 2017-08-02 22:33:56.000000000 +0000 ++++ ./i686-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h 2023-03-08 23:59:38.080468616 +0000 +@@ -517,6 +517,8 @@ static __inline__ int scsi_is_wlun(unsig + #define SCSI_IOCTL_GET_IDLUN 0x5382 + + /* 0x5383 and 0x5384 were used for SCSI_IOCTL_TAGGED_{ENABLE,DISABLE} */ ++#define SCSI_IOCTL_TAGGED_ENABLE 0x5383 ++#define SCSI_IOCTL_TAGGED_DISABLE 0x5384 + + /* Used to obtain the host number of a device. */ + #define SCSI_IOCTL_PROBE_HOST 0x5385 diff --git a/toolchain/syno-hi3535-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-hi3535-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch new file mode 100644 index 00000000000..90d08de4cf3 --- /dev/null +++ b/toolchain/syno-hi3535-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch @@ -0,0 +1,12 @@ +diff -uprN ../../work/arm-cortexa9-linux-gnueabi/arm-cortexa9-linux-gnueabi/sysroot/include/scsi/scsi.h ./arm-cortexa9-linux-gnueabi/sysroot/include/scsi/scsi.h +--- ../../work/arm-cortexa9-linux-gnueabi/arm-cortexa9-linux-gnueabi/sysroot/include/scsi/scsi.h 2017-08-02 23:22:31.000000000 +0000 ++++ ./arm-cortexa9-linux-gnueabi/sysroot/include/scsi/scsi.h 2023-03-09 00:13:17.747393558 +0000 +@@ -545,6 +545,8 @@ static __inline__ int scsi_is_wlun(unsig + #define SCSI_IOCTL_GET_IDLUN 0x5382 + + /* 0x5383 and 0x5384 were used for SCSI_IOCTL_TAGGED_{ENABLE,DISABLE} */ ++#define SCSI_IOCTL_TAGGED_ENABLE 0x5383 ++#define SCSI_IOCTL_TAGGED_DISABLE 0x5384 + + /* Used to obtain the host number of a device. */ + #define SCSI_IOCTL_PROBE_HOST 0x5385 diff --git a/toolchain/syno-qoriq-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-qoriq-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch new file mode 100644 index 00000000000..905795b3399 --- /dev/null +++ b/toolchain/syno-qoriq-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch @@ -0,0 +1,12 @@ +diff -uprN ../../work/powerpc-e500v2-linux-gnuspe/powerpc-e500v2-linux-gnuspe/sysroot/usr/include/scsi/scsi.h ./powerpc-e500v2-linux-gnuspe/sysroot/usr/include/scsi/scsi.h +--- ../../work/powerpc-e500v2-linux-gnuspe/powerpc-e500v2-linux-gnuspe/sysroot/usr/include/scsi/scsi.h 2017-08-03 01:08:13.000000000 +0000 ++++ ./powerpc-e500v2-linux-gnuspe/sysroot/usr/include/scsi/scsi.h 2023-03-09 00:09:03.495719129 +0000 +@@ -546,6 +546,8 @@ static __inline__ int scsi_is_wlun(unsig + #define SCSI_IOCTL_GET_IDLUN 0x5382 + + /* 0x5383 and 0x5384 were used for SCSI_IOCTL_TAGGED_{ENABLE,DISABLE} */ ++#define SCSI_IOCTL_TAGGED_ENABLE 0x5383 ++#define SCSI_IOCTL_TAGGED_DISABLE 0x5384 + + /* Used to obtain the host number of a device. */ + #define SCSI_IOCTL_PROBE_HOST 0x5385 diff --git a/toolchain/syno-x64-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-x64-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch new file mode 100644 index 00000000000..74f980f5901 --- /dev/null +++ b/toolchain/syno-x64-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch @@ -0,0 +1,12 @@ +diff -uprN ../../work.orig/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h ./x86_64-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h +--- ../../work.orig/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h 2017-08-02 23:34:07.000000000 +0000 ++++ ./x86_64-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h 2023-03-08 23:44:59.732785430 +0000 +@@ -518,6 +518,8 @@ static __inline__ int scsi_is_wlun(unsig + #define SCSI_IOCTL_GET_IDLUN 0x5382 + + /* 0x5383 and 0x5384 were used for SCSI_IOCTL_TAGGED_{ENABLE,DISABLE} */ ++#define SCSI_IOCTL_TAGGED_ENABLE 0x5383 ++#define SCSI_IOCTL_TAGGED_DISABLE 0x5384 + + /* Used to obtain the host number of a device. */ + #define SCSI_IOCTL_PROBE_HOST 0x5385 diff --git a/toolchain/syno-x64-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-x64-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch new file mode 100644 index 00000000000..74f980f5901 --- /dev/null +++ b/toolchain/syno-x64-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch @@ -0,0 +1,12 @@ +diff -uprN ../../work.orig/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h ./x86_64-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h +--- ../../work.orig/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h 2017-08-02 23:34:07.000000000 +0000 ++++ ./x86_64-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h 2023-03-08 23:44:59.732785430 +0000 +@@ -518,6 +518,8 @@ static __inline__ int scsi_is_wlun(unsig + #define SCSI_IOCTL_GET_IDLUN 0x5382 + + /* 0x5383 and 0x5384 were used for SCSI_IOCTL_TAGGED_{ENABLE,DISABLE} */ ++#define SCSI_IOCTL_TAGGED_ENABLE 0x5383 ++#define SCSI_IOCTL_TAGGED_DISABLE 0x5384 + + /* Used to obtain the host number of a device. */ + #define SCSI_IOCTL_PROBE_HOST 0x5385 diff --git a/toolchain/syno-x64-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-x64-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch new file mode 100644 index 00000000000..74f980f5901 --- /dev/null +++ b/toolchain/syno-x64-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch @@ -0,0 +1,12 @@ +diff -uprN ../../work.orig/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h ./x86_64-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h +--- ../../work.orig/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h 2017-08-02 23:34:07.000000000 +0000 ++++ ./x86_64-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h 2023-03-08 23:44:59.732785430 +0000 +@@ -518,6 +518,8 @@ static __inline__ int scsi_is_wlun(unsig + #define SCSI_IOCTL_GET_IDLUN 0x5382 + + /* 0x5383 and 0x5384 were used for SCSI_IOCTL_TAGGED_{ENABLE,DISABLE} */ ++#define SCSI_IOCTL_TAGGED_ENABLE 0x5383 ++#define SCSI_IOCTL_TAGGED_DISABLE 0x5384 + + /* Used to obtain the host number of a device. */ + #define SCSI_IOCTL_PROBE_HOST 0x5385 From 13d1cbf8f011c8618f7fb0064fb8d30d1c2ad8fa Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Thu, 9 Mar 2023 00:19:49 +0000 Subject: [PATCH 33/61] synocli-devel: Adjust LLVM and build first --- spk/synocli-devel/Makefile | 12 +++++++----- spk/synocli-devel/src/gdb.png | Bin 20165 -> 0 bytes spk/synocli-devel/src/synocli-devel.png | Bin 0 -> 65287 bytes spk/synocli-devel/src/synocli-develop.png | Bin 71246 -> 0 bytes 4 files changed, 7 insertions(+), 5 deletions(-) delete mode 100644 spk/synocli-devel/src/gdb.png create mode 100644 spk/synocli-devel/src/synocli-devel.png delete mode 100644 spk/synocli-devel/src/synocli-develop.png diff --git a/spk/synocli-devel/Makefile b/spk/synocli-devel/Makefile index febcfaa7443..ac7c7e82e74 100644 --- a/spk/synocli-devel/Makefile +++ b/spk/synocli-devel/Makefile @@ -1,7 +1,7 @@ SPK_NAME = synocli-devel SPK_VERS = 1.0 SPK_REV = 1 -SPK_ICON = src/synocli-develop.png +SPK_ICON = src/synocli-devel.png CHANGELOG = "1. Initial release of synocli-devel" MAINTAINER = SynoCommunity @@ -16,9 +16,9 @@ UNSUPPORTED_ARCHS = $(PPC_ARCHS) include ../../mk/spksrc.archs.mk +DEPENDS += cross/llvm DEPENDS = cross/binutils DEPENDS += cross/gdb -DEPENDS += cross/llvm ## ## binutils @@ -73,13 +73,15 @@ include ../../mk/spksrc.spk.mk ## ## LLVM ## -SPK_COMMANDS += bin/clang -SPK_COMMANDS += bin/clang++ ifeq ($(call version_ge, $(TC_GCC), 5.1),1) +OPTIONAL_DESC += ", LLVM 15.0.7" SPK_COMMANDS += bin/clang-15 else +OPTIONAL_DESC += ", LLVM 9.0.1" SPK_COMMANDS += bin/clang-9 -fi +endif +SPK_COMMANDS += bin/clang +SPK_COMMANDS += bin/clang++ SPK_COMMANDS += bin/clang-apply-replacements SPK_COMMANDS += bin/clang-change-namespace SPK_COMMANDS += bin/clang-check diff --git a/spk/synocli-devel/src/gdb.png b/spk/synocli-devel/src/gdb.png deleted file mode 100644 index 9de7be8b8c9259083e6f800511cd5c77d9c9ca77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20165 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 M>vP!0r%6fw1+JS|IRF3v From 5f236880cf09b590374ab378fc9eab23dcce12d9 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Thu, 9 Mar 2023 00:22:30 +0000 Subject: [PATCH 34/61] llvm-latest: Sync back with llvm-9.0 --- cross/llvm-latest/Makefile | 81 ++++++++++++++++++++++++++++++++++---- 1 file changed, 74 insertions(+), 7 deletions(-) diff --git a/cross/llvm-latest/Makefile b/cross/llvm-latest/Makefile index d7208d08b09..938add4d560 100644 --- a/cross/llvm-latest/Makefile +++ b/cross/llvm-latest/Makefile @@ -16,31 +16,98 @@ CMAKE_USE_NINJA = 1 # Using LLVM project source need to change to llvm sub-directory CMAKE_DIR = $(WORK_DIR)/$(PKG_DIR)/llvm +# https://llvm.org/docs/CMake.html CMAKE_ARGS += -DCMAKE_BUILD_TYPE=MinSizeRel -CMAKE_ARGS += -DLLVM_ENABLE_ASSERTIONS=ON -CMAKE_ARGS += -DLLVM_BUILD_LLVM_DYLIB=ON -CMAKE_ARGS += -DLLVM_LINK_LLVM_DYLIB=ON -CMAKE_ARGS += -DBUILD_SHARED_LIBS=OFF +CMAKE_ARGS += -Wno-dev +CMAKE_ARGS += -DLLVM_BUILD_DOCS=OFF +CMAKE_ARGS += -DLLVM_INCLUDE_BENCHMARKS=OFF +CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld;clang-tools-extra' + +# When set to ON it removes many of the LLVM development and +# testing tools as well as component libraries from the +# default install target. Including the development tools is +# not recommended for distributions as many of the LLCM tools +# are only intended for development and testing use. CMAKE_ARGS += -DLLVM_INSTALL_TOOLCHAIN_ONLY=ON + +# Assertions are internal checks to help find bugs. +# They typically slow down LLVM and Clang when enabled +CMAKE_ARGS += -DLLVM_ENABLE_ASSERTIONS=OFF + +# Enable building with zlib to support compression/uncompression CMAKE_ARGS += -DLLVM_ENABLE_ZLIB=ON -CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld;clang-tools-extra' + +# Indicates whether the LLVM Interpreter will be +# linked with the Foreign Function Interface library +# (libffi) in order to enable calling external functions. +# DEPENDS += cross/libffi +# CMAKE_ARGS += LLVM_ENABLE_FFI=ON <-- TO TEST + +# BUILD_SHARED_LIBS is only recommended for use +# by LLVM developers. If you want to build LLVM +# as a shared library, you should use the +# LLVM_BUILD_LLVM_DYLIB option +# CMAKE_ARGS += -DBUILD_SHARED_LIBS=ON + +# The most impactful way to reduce binary size is +# to dynamically link LLVM into all the tools. +# This reduces code size by decreasing duplication +# of common code between the LLVM-based tools. +CMAKE_ARGS += -DLLVM_BUILD_LLVM_DYLIB=ON +CMAKE_ARGS += -DLLVM_LINK_LLVM_DYLIB=ON + +# Allow users to build with RTTI (Run-Time Type Info) +# enabled and still inherit from LLVM classes +#CMAKE_ARGS += -DLLVM_ENABLE_RTTI=ON <-- TO TEST + +# Otherwise builds with error +#CMAKE_ARGS += -DCOMPILER_RT_BUILD_LIBFUZZER=OFF + +# This switch enables building for the r600 AMD GPU +# used by the Mesa r600 and radeonsi drivers. +# The BPF target is required to build v4l-utils-1.24.1. +# -DLLVM_TARGETS_TO_BUILD="AMDGPU;BPF" <-- Something to play with for CUDA and NVIDIA GPU transcoding? + +# Requires native/llvm-9.0 +#CMAKE_ARGS += -DLLVM_CONFIG=$(abspath $(PWD)/../../native/llvm-9.0/work-native/install/usr/local/bin/llvm-config) +#CMAKE_ARGS += -DLLVM_TABLEGEN=$(abspath $(PWD)/../../native/llvm-9.0/work-native/install/usr/local/bin/llvm-tblgen) +#CMAKE_ARGS += -DCLANG_TABLEGEN=$(abspath $(PWD)/../../native/llvm-9.0/work-native/install/usr/local/bin/clang-tblgen) include ../../mk/spksrc.common.mk -ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS) $(ARMv7_ARCHS) $(ARMv7L_ARCHS)),$(ARCH)) +ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS)),$(ARCH)) +CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=ARM +CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=arm-marvell-linux-gnueabi +endif + +ifeq ($(findstring $(ARCH),$(ARMv7_ARCHS)),$(ARCH)) CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=ARM +CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=arm-unknown-linux-gnueabi +endif + +ifeq ($(findstring $(ARCH),$(ARMv7L_ARCHS)),$(ARCH)) +CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=ARM +CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=arm-cortexa9-linux-gnueabi endif ifeq ($(findstring $(ARCH),$(ARMv8_ARCHS)),$(ARCH)) CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=AArch64 +CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=aarch64-unknown-linux-gnueabi +endif + +ifeq ($(findstring $(ARCH),$(i686_ARCHS)),$(ARCH)) +CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=X86 +CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=i686-pc-linux-gnu endif -ifeq ($(findstring $(ARCH),$(i686_ARCHS) $(x64_ARCHS)),$(ARCH)) +ifeq ($(findstring $(ARCH),$(x64_ARCHS)),$(ARCH)) CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=X86 +CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=x86_64-pc-linux-gnu endif ifeq ($(findstring $(ARCH),$(PPC_ARCHS)),$(ARCH)) CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=PPC64 +CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=powerpc-e500v2-linux-gnuspe CMAKE_ARGS += -DCMAKE_CXX_FLAGS=-m32 CMAKE_ARGS += -DENABLE_ALTIVEC=OFF CMAKE_ARGS += -DCPU_POWER8=OFF From d5337ccf8d4fc240cf15f5a18a22467e4bf0a342 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Thu, 9 Mar 2023 00:27:47 +0000 Subject: [PATCH 35/61] synocli-devel: Fix type in re-ordering --- spk/synocli-devel/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spk/synocli-devel/Makefile b/spk/synocli-devel/Makefile index ac7c7e82e74..3269204cc08 100644 --- a/spk/synocli-devel/Makefile +++ b/spk/synocli-devel/Makefile @@ -16,8 +16,8 @@ UNSUPPORTED_ARCHS = $(PPC_ARCHS) include ../../mk/spksrc.archs.mk -DEPENDS += cross/llvm -DEPENDS = cross/binutils +DEPENDS = cross/llvm +DEPENDS += cross/binutils DEPENDS += cross/gdb ## From 1edf7a8185abc5a4d9810340be1e3f207b89fde1 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Thu, 9 Mar 2023 02:04:42 +0000 Subject: [PATCH 36/61] llvm-latest: Disable zlib for all and libfuzzer for aarch64 --- cross/llvm-latest/Makefile | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/cross/llvm-latest/Makefile b/cross/llvm-latest/Makefile index 938add4d560..1c908379ddb 100644 --- a/cross/llvm-latest/Makefile +++ b/cross/llvm-latest/Makefile @@ -5,8 +5,6 @@ PKG_DIST_NAME = $(PKG_NAME)-project-$(PKG_VERS).src.$(PKG_EXT) PKG_DIST_SITE = https://github.com/llvm/llvm-project/releases/download/llvmorg-$(PKG_VERS) PKG_DIR = $(PKG_NAME)-project-$(PKG_VERS).src -DEPENDS = cross/zlib - HOMEPAGE = https://llvm.org/ COMMENT = The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. LICENSE = Apache License v2.0 with LLVM Exceptions @@ -35,7 +33,11 @@ CMAKE_ARGS += -DLLVM_INSTALL_TOOLCHAIN_ONLY=ON CMAKE_ARGS += -DLLVM_ENABLE_ASSERTIONS=OFF # Enable building with zlib to support compression/uncompression -CMAKE_ARGS += -DLLVM_ENABLE_ZLIB=ON +# FAILS: lib/libLLVM-15.so: undefined reference to `compress2' +# lib/libLLVM-15.so: undefined reference to `crc32' +# lib/libLLVM-15.so: undefined reference to `compressBound@ZLIB_1.2.0' +#DEPENDS = cross/zlib +#CMAKE_ARGS += -DLLVM_ENABLE_ZLIB=ON # Indicates whether the LLVM Interpreter will be # linked with the Foreign Function Interface library @@ -60,9 +62,6 @@ CMAKE_ARGS += -DLLVM_LINK_LLVM_DYLIB=ON # enabled and still inherit from LLVM classes #CMAKE_ARGS += -DLLVM_ENABLE_RTTI=ON <-- TO TEST -# Otherwise builds with error -#CMAKE_ARGS += -DCOMPILER_RT_BUILD_LIBFUZZER=OFF - # This switch enables building for the r600 AMD GPU # used by the Mesa r600 and radeonsi drivers. # The BPF target is required to build v4l-utils-1.24.1. @@ -93,6 +92,8 @@ endif ifeq ($(findstring $(ARCH),$(ARMv8_ARCHS)),$(ARCH)) CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=AArch64 CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=aarch64-unknown-linux-gnueabi +# Otherwise builds with error +CMAKE_ARGS += -DCOMPILER_RT_BUILD_LIBFUZZER=OFF endif ifeq ($(findstring $(ARCH),$(i686_ARCHS)),$(ARCH)) From 819c0c996f555be4860885c37622b73156180f83 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Thu, 9 Mar 2023 02:06:45 +0000 Subject: [PATCH 37/61] synocli-devel: Mark ARMv5 as unsupported --- spk/synocli-devel/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spk/synocli-devel/Makefile b/spk/synocli-devel/Makefile index 3269204cc08..8362e520ebf 100644 --- a/spk/synocli-devel/Makefile +++ b/spk/synocli-devel/Makefile @@ -12,7 +12,7 @@ STARTABLE = no HOMEPAGE = https://www.sourceware.org/gdb/ LICENSE = GPLv2 -UNSUPPORTED_ARCHS = $(PPC_ARCHS) +UNSUPPORTED_ARCHS = $(ARMv5_ARCHS) $(PPC_ARCHS) include ../../mk/spksrc.archs.mk From 61ac346564fbc008f9a3e49b9caea8907466e9f5 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Mon, 13 Mar 2023 00:53:02 +0000 Subject: [PATCH 38/61] synocli-devel: LLVM is now compiled with limited toolset --- spk/synocli-devel/Makefile | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/spk/synocli-devel/Makefile b/spk/synocli-devel/Makefile index 8362e520ebf..7bf769e2d8e 100644 --- a/spk/synocli-devel/Makefile +++ b/spk/synocli-devel/Makefile @@ -82,24 +82,16 @@ SPK_COMMANDS += bin/clang-9 endif SPK_COMMANDS += bin/clang SPK_COMMANDS += bin/clang++ -SPK_COMMANDS += bin/clang-apply-replacements -SPK_COMMANDS += bin/clang-change-namespace SPK_COMMANDS += bin/clang-check SPK_COMMANDS += bin/clang-cl SPK_COMMANDS += bin/clang-cpp -SPK_COMMANDS += bin/clangd -SPK_COMMANDS += bin/clang-doc SPK_COMMANDS += bin/clang-extdef-mapping SPK_COMMANDS += bin/clang-format -SPK_COMMANDS += bin/clang-include-fixer +SPK_COMMANDS += bin/clang-import-test SPK_COMMANDS += bin/clang-offload-bundler -SPK_COMMANDS += bin/clang-query SPK_COMMANDS += bin/clang-refactor SPK_COMMANDS += bin/clang-rename -SPK_COMMANDS += bin/clang-reorder-fields SPK_COMMANDS += bin/clang-scan-deps -SPK_COMMANDS += bin/clang-tidy -SPK_COMMANDS += bin/find-all-symbols SPK_COMMANDS += bin/git-clang-format SPK_COMMANDS += bin/hmaptool SPK_COMMANDS += bin/ld64.lld @@ -115,7 +107,6 @@ SPK_COMMANDS += bin/llvm-profdata SPK_COMMANDS += bin/llvm-ranlib SPK_COMMANDS += bin/llvm-rc SPK_COMMANDS += bin/llvm-symbolizer -SPK_COMMANDS += bin/modularize SPK_COMMANDS += bin/scan-build SPK_COMMANDS += bin/scan-view SPK_COMMANDS += bin/wasm-ld From 45d62d48c5ce455ed8de88dcac981501b27e19fa Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Mon, 13 Mar 2023 00:54:19 +0000 Subject: [PATCH 39/61] llvm-9.0: First version working on all regular archs --- cross/llvm-9.0/Makefile | 76 +++++++++++-------- .../002-disable_lld_color-diagnostics.patch | 23 ++++++ .../003-fix-ld-terminfo-ncursesw.patch | 24 ++++++ cross/llvm/Makefile | 8 +- 4 files changed, 95 insertions(+), 36 deletions(-) create mode 100644 cross/llvm-9.0/patches/002-disable_lld_color-diagnostics.patch create mode 100644 cross/llvm-9.0/patches/003-fix-ld-terminfo-ncursesw.patch diff --git a/cross/llvm-9.0/Makefile b/cross/llvm-9.0/Makefile index b6db26429bf..4c78f9f81ef 100644 --- a/cross/llvm-9.0/Makefile +++ b/cross/llvm-9.0/Makefile @@ -6,12 +6,13 @@ PKG_DIST_SITE = https://github.com/llvm/llvm-project/releases/download/llvmorg-$ PKG_DIR = $(PKG_NAME)-project-$(PKG_VERS) BUILD_DEPENDS = native/llvm-9.0 -DEPENDS = cross/zlib +DEPENDS = cross/pcre2 HOMEPAGE = https://llvm.org/ COMMENT = The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. LICENSE = Apache License v2.0 with LLVM Exceptions +UNSUPPORTED_ARCHS = $(ARMv5_ARCHS) $(PPC_ARCHS) CMAKE_USE_NINJA = 1 # Using LLVM project source need to change to llvm sub-directory @@ -21,8 +22,28 @@ CMAKE_DIR = $(WORK_DIR)/$(PKG_DIR)/llvm CMAKE_ARGS += -DCMAKE_BUILD_TYPE=MinSizeRel CMAKE_ARGS += -Wno-dev CMAKE_ARGS += -DLLVM_BUILD_DOCS=OFF +CMAKE_ARGS += -DLLVM_INCLUDE_DOCS=OFF +CMAKE_ARGS += -DLLVM_ENABLE_WARNINGS=OFF +CMAKE_ARGS += -DLLVM_INCLUDE_EXAMPLES=OFF +CMAKE_ARGS += -DLLVM_INCLUDE_TESTS=OFF CMAKE_ARGS += -DLLVM_INCLUDE_BENCHMARKS=OFF -CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld;clang-tools-extra' +CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=$(TC_TARGET) + +# Enable building with zlib to support compression/uncompression +DEPENDS += cross/zlib +CMAKE_ARGS += -DLLVM_ENABLE_ZLIB=ON + +# Indicates whether the LLVM Interpreter will be +# linked with the Foreign Function Interface library +# (libffi) in order to enable calling external functions. +DEPENDS += cross/libffi +CMAKE_ARGS += LLVM_ENABLE_FFI=ON + +DEPENDS += cross/ncursesw +CMAKE_ARGS += -DLLVM_ENABLE_TERMINFO=ON + +DEPENDS += cross/libxml2 +CMAKE_ARGS += -DLLVM_ENABLE_LIBXML2=ON # When set to ON it removes many of the LLVM development and # testing tools as well as component libraries from the @@ -35,20 +56,12 @@ CMAKE_ARGS += -DLLVM_INSTALL_TOOLCHAIN_ONLY=ON # They typically slow down LLVM and Clang when enabled CMAKE_ARGS += -DLLVM_ENABLE_ASSERTIONS=OFF -# Enable building with zlib to support compression/uncompression -CMAKE_ARGS += -DLLVM_ENABLE_ZLIB=ON - -# Indicates whether the LLVM Interpreter will be -# linked with the Foreign Function Interface library -# (libffi) in order to enable calling external functions. -# DEPENDS += cross/libffi -# CMAKE_ARGS += LLVM_ENABLE_FFI=ON <-- TO TEST - # BUILD_SHARED_LIBS is only recommended for use # by LLVM developers. If you want to build LLVM # as a shared library, you should use the # LLVM_BUILD_LLVM_DYLIB option # CMAKE_ARGS += -DBUILD_SHARED_LIBS=ON +CMAKE_ARGS += -DBUILD_SHARED_LIBS=OFF # The most impactful way to reduce binary size is # to dynamically link LLVM into all the tools. @@ -61,61 +74,60 @@ CMAKE_ARGS += -DLLVM_LINK_LLVM_DYLIB=ON # enabled and still inherit from LLVM classes #CMAKE_ARGS += -DLLVM_ENABLE_RTTI=ON <-- TO TEST -# Otherwise builds with error -CMAKE_ARGS += -DCOMPILER_RT_BUILD_LIBFUZZER=OFF - # This switch enables building for the r600 AMD GPU # used by the Mesa r600 and radeonsi drivers. # The BPF target is required to build v4l-utils-1.24.1. # -DLLVM_TARGETS_TO_BUILD="AMDGPU;BPF" <-- Something to play with for CUDA and NVIDIA GPU transcoding? # Requires native/llvm-9.0 +CMAKE_ARGS += -DLLVM_TOOLS_BINARY_DIR=$(abspath $(PWD)/../../native/llvm-9.0/work-native/install/usr/local/bin) CMAKE_ARGS += -DLLVM_CONFIG=$(abspath $(PWD)/../../native/llvm-9.0/work-native/install/usr/local/bin/llvm-config) CMAKE_ARGS += -DLLVM_TABLEGEN=$(abspath $(PWD)/../../native/llvm-9.0/work-native/install/usr/local/bin/llvm-tblgen) CMAKE_ARGS += -DCLANG_TABLEGEN=$(abspath $(PWD)/../../native/llvm-9.0/work-native/install/usr/local/bin/clang-tblgen) include ../../mk/spksrc.common.mk -ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS)),$(ARCH)) -CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=ARM -CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=arm-marvell-linux-gnueabi -endif - +# +# https://llvm.org/docs/HowToCrossCompileBuiltinsOnArm.html +# ifeq ($(findstring $(ARCH),$(ARMv7_ARCHS)),$(ARCH)) CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=ARM -CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=arm-unknown-linux-gnueabi +ifeq ($(findstring $(ARCH),comcerto2k),$(ARCH)) +CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang;lld' +else ifeq ($(call version_lt, $(TCVERSION), 7.0),1) +CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang;lld' +else +CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld' +CMAKE_ARGS += -DCOMPILER_RT_BUILD_BUILTINS=ON +CMAKE_ARGS += -DCOMPILER_RT_BUILD_PROFILE=OFF +CMAKE_ARGS += -DCOMPILER_RT_BUILD_SANITIZERS=OFF +CMAKE_ARGS += -DCOMPILER_RT_BUILD_XRAY=OFF +endif endif ifeq ($(findstring $(ARCH),$(ARMv7L_ARCHS)),$(ARCH)) CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=ARM -CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=arm-cortexa9-linux-gnueabi +CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang;lld' endif ifeq ($(findstring $(ARCH),$(ARMv8_ARCHS)),$(ARCH)) CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=AArch64 -CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=aarch64-unknown-linux-gnueabi +CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld' endif ifeq ($(findstring $(ARCH),$(i686_ARCHS)),$(ARCH)) CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=X86 -CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=i686-pc-linux-gnu +CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld' endif ifeq ($(findstring $(ARCH),$(x64_ARCHS)),$(ARCH)) CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=X86 -CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=x86_64-pc-linux-gnu -endif - -ifeq ($(findstring $(ARCH),$(PPC_ARCHS)),$(ARCH)) -CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=PPC64 -CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=powerpc-e500v2-linux-gnuspe -CMAKE_ARGS += -DCMAKE_CXX_FLAGS=-m32 -CMAKE_ARGS += -DENABLE_ALTIVEC=OFF -CMAKE_ARGS += -DCPU_POWER8=OFF +CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld' endif include ../../mk/spksrc.cross-cmake.mk ifeq ($(call version_lt, $(TC_GCC), 5.1),1) CMAKE_ARGS += -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON +CMAKE_ARGS += -DCOMPILER_RT_BUILD_LIBFUZZER=OFF endif diff --git a/cross/llvm-9.0/patches/002-disable_lld_color-diagnostics.patch b/cross/llvm-9.0/patches/002-disable_lld_color-diagnostics.patch new file mode 100644 index 00000000000..c2eca9295d8 --- /dev/null +++ b/cross/llvm-9.0/patches/002-disable_lld_color-diagnostics.patch @@ -0,0 +1,23 @@ +--- ../llvm-project-9.0.1-orig/llvm/cmake/modules/HandleLLVMOptions.cmake 2019-12-11 19:15:30.000000000 +0000 ++++ llvm/cmake/modules/HandleLLVMOptions.cmake 2023-03-11 12:49:47.428525380 +0000 +@@ -786,13 +786,13 @@ if (UNIX AND + append("-fdiagnostics-color" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) + endif() + +-# lld doesn't print colored diagnostics when invoked from Ninja +-if (UNIX AND CMAKE_GENERATOR STREQUAL "Ninja") +- include(CheckLinkerFlag) +- check_linker_flag("-Wl,--color-diagnostics" LINKER_SUPPORTS_COLOR_DIAGNOSTICS) +- append_if(LINKER_SUPPORTS_COLOR_DIAGNOSTICS "-Wl,--color-diagnostics" +- CMAKE_EXE_LINKER_FLAGS CMAKE_MODULE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS) +-endif() ++## lld doesn't print colored diagnostics when invoked from Ninja ++#if (UNIX AND CMAKE_GENERATOR STREQUAL "Ninja") ++# include(CheckLinkerFlag) ++# check_linker_flag("-Wl,--color-diagnostics" LINKER_SUPPORTS_COLOR_DIAGNOSTICS) ++# append_if(LINKER_SUPPORTS_COLOR_DIAGNOSTICS "-Wl,--color-diagnostics" ++# CMAKE_EXE_LINKER_FLAGS CMAKE_MODULE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS) ++#endif() + + # Add flags for add_dead_strip(). + # FIXME: With MSVS, consider compiling with /Gy and linking with /OPT:REF? diff --git a/cross/llvm-9.0/patches/003-fix-ld-terminfo-ncursesw.patch b/cross/llvm-9.0/patches/003-fix-ld-terminfo-ncursesw.patch new file mode 100644 index 00000000000..c49aa01bd8e --- /dev/null +++ b/cross/llvm-9.0/patches/003-fix-ld-terminfo-ncursesw.patch @@ -0,0 +1,24 @@ +diff -uprN ../llvm-project-9.0.1-orig/llvm/utils/gn/build/libs/terminfo/BUILD.gn ./llvm/utils/gn/build/libs/terminfo/BUILD.gn +--- ../llvm-project-9.0.1-orig/llvm/utils/gn/build/libs/terminfo/BUILD.gn 2019-12-11 19:15:30.000000000 +0000 ++++ ./llvm/utils/gn/build/libs/terminfo/BUILD.gn 2023-03-12 13:32:19.256980118 +0000 +@@ -2,7 +2,7 @@ import("//llvm/utils/gn/build/libs/termi + + config("terminfo_config") { + visibility = [ ":terminfo" ] +- libs = [ "ncurses" ] ++ libs = [ "ncursesw" ] + } + + group("terminfo") { +diff -uprN ../llvm-project-9.0.1-orig/llvm/utils/gn/secondary/llvm/tools/llvm-config/BUILD.gn ./llvm/utils/gn/secondary/llvm/tools/llvm-config/BUILD.gn +--- ../llvm-project-9.0.1-orig/llvm/utils/gn/secondary/llvm/tools/llvm-config/BUILD.gn 2019-12-11 19:15:30.000000000 +0000 ++++ ./llvm/utils/gn/secondary/llvm/tools/llvm-config/BUILD.gn 2023-03-12 13:32:01.224805945 +0000 +@@ -57,7 +57,7 @@ write_cmake_config("BuildVariables.inc") + system_libs += " ${l}xml2${lib}" + } + if (llvm_enable_terminfo) { +- system_libs += " ${l}ncurses${lib}" ++ system_libs += " ${l}ncursesw${lib}" + } + if (llvm_enable_zlib) { + system_libs += " ${l}z${lib}" diff --git a/cross/llvm/Makefile b/cross/llvm/Makefile index 357caf16d2f..4d2510b7538 100644 --- a/cross/llvm/Makefile +++ b/cross/llvm/Makefile @@ -16,8 +16,8 @@ OPTIONAL_DEPENDS += cross/llvm-9.0 include ../../mk/spksrc.install-resources.mk -ifeq ($(call version_ge, $(TC_GCC), 5.1),1) -DEPENDS = cross/llvm-latest -else +#ifeq ($(call version_ge, $(TC_GCC), 5.1),1) +#DEPENDS = cross/llvm-latest +#else DEPENDS = cross/llvm-9.0 -endif +#endif From 302d8c61a1cd6f45628a3f54fb2cf80140b0fbf5 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Mon, 13 Mar 2023 20:21:16 +0000 Subject: [PATCH 40/61] llvm-9.0: Enable RTTI --- cross/llvm-9.0/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cross/llvm-9.0/Makefile b/cross/llvm-9.0/Makefile index 4c78f9f81ef..9855930b9e1 100644 --- a/cross/llvm-9.0/Makefile +++ b/cross/llvm-9.0/Makefile @@ -72,7 +72,7 @@ CMAKE_ARGS += -DLLVM_LINK_LLVM_DYLIB=ON # Allow users to build with RTTI (Run-Time Type Info) # enabled and still inherit from LLVM classes -#CMAKE_ARGS += -DLLVM_ENABLE_RTTI=ON <-- TO TEST +CMAKE_ARGS += -DLLVM_ENABLE_RTTI=ON # This switch enables building for the r600 AMD GPU # used by the Mesa r600 and radeonsi drivers. From 42417420f8f02e725a47e38a661a0bcaf2a09cf6 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Tue, 14 Mar 2023 09:22:01 +0000 Subject: [PATCH 41/61] llvm-9.0: ncursesw patch no more needed --- .../003-fix-ld-terminfo-ncursesw.patch | 24 ------------------- 1 file changed, 24 deletions(-) delete mode 100644 cross/llvm-9.0/patches/003-fix-ld-terminfo-ncursesw.patch diff --git a/cross/llvm-9.0/patches/003-fix-ld-terminfo-ncursesw.patch b/cross/llvm-9.0/patches/003-fix-ld-terminfo-ncursesw.patch deleted file mode 100644 index c49aa01bd8e..00000000000 --- a/cross/llvm-9.0/patches/003-fix-ld-terminfo-ncursesw.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -uprN ../llvm-project-9.0.1-orig/llvm/utils/gn/build/libs/terminfo/BUILD.gn ./llvm/utils/gn/build/libs/terminfo/BUILD.gn ---- ../llvm-project-9.0.1-orig/llvm/utils/gn/build/libs/terminfo/BUILD.gn 2019-12-11 19:15:30.000000000 +0000 -+++ ./llvm/utils/gn/build/libs/terminfo/BUILD.gn 2023-03-12 13:32:19.256980118 +0000 -@@ -2,7 +2,7 @@ import("//llvm/utils/gn/build/libs/termi - - config("terminfo_config") { - visibility = [ ":terminfo" ] -- libs = [ "ncurses" ] -+ libs = [ "ncursesw" ] - } - - group("terminfo") { -diff -uprN ../llvm-project-9.0.1-orig/llvm/utils/gn/secondary/llvm/tools/llvm-config/BUILD.gn ./llvm/utils/gn/secondary/llvm/tools/llvm-config/BUILD.gn ---- ../llvm-project-9.0.1-orig/llvm/utils/gn/secondary/llvm/tools/llvm-config/BUILD.gn 2019-12-11 19:15:30.000000000 +0000 -+++ ./llvm/utils/gn/secondary/llvm/tools/llvm-config/BUILD.gn 2023-03-12 13:32:01.224805945 +0000 -@@ -57,7 +57,7 @@ write_cmake_config("BuildVariables.inc") - system_libs += " ${l}xml2${lib}" - } - if (llvm_enable_terminfo) { -- system_libs += " ${l}ncurses${lib}" -+ system_libs += " ${l}ncursesw${lib}" - } - if (llvm_enable_zlib) { - system_libs += " ${l}z${lib}" From 3455ce5a3f04a2df9def2a739c6a67807b855f99 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Tue, 14 Mar 2023 09:22:35 +0000 Subject: [PATCH 42/61] llvm-9.0: pcre2 no more needed --- cross/llvm-9.0/Makefile | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/cross/llvm-9.0/Makefile b/cross/llvm-9.0/Makefile index 9855930b9e1..e3e70fa5eb8 100644 --- a/cross/llvm-9.0/Makefile +++ b/cross/llvm-9.0/Makefile @@ -5,11 +5,8 @@ PKG_DIST_NAME = $(PKG_NAME)-project-$(PKG_VERS).$(PKG_EXT) PKG_DIST_SITE = https://github.com/llvm/llvm-project/releases/download/llvmorg-$(PKG_VERS) PKG_DIR = $(PKG_NAME)-project-$(PKG_VERS) -BUILD_DEPENDS = native/llvm-9.0 -DEPENDS = cross/pcre2 - HOMEPAGE = https://llvm.org/ -COMMENT = The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. +COMMENT = The LLVM Project is a collection of modular and reusable compiler and toolchain technologies LICENSE = Apache License v2.0 with LLVM Exceptions UNSUPPORTED_ARCHS = $(ARMv5_ARCHS) $(PPC_ARCHS) @@ -74,12 +71,8 @@ CMAKE_ARGS += -DLLVM_LINK_LLVM_DYLIB=ON # enabled and still inherit from LLVM classes CMAKE_ARGS += -DLLVM_ENABLE_RTTI=ON -# This switch enables building for the r600 AMD GPU -# used by the Mesa r600 and radeonsi drivers. -# The BPF target is required to build v4l-utils-1.24.1. -# -DLLVM_TARGETS_TO_BUILD="AMDGPU;BPF" <-- Something to play with for CUDA and NVIDIA GPU transcoding? - # Requires native/llvm-9.0 +BUILD_DEPENDS = native/llvm-9.0 CMAKE_ARGS += -DLLVM_TOOLS_BINARY_DIR=$(abspath $(PWD)/../../native/llvm-9.0/work-native/install/usr/local/bin) CMAKE_ARGS += -DLLVM_CONFIG=$(abspath $(PWD)/../../native/llvm-9.0/work-native/install/usr/local/bin/llvm-config) CMAKE_ARGS += -DLLVM_TABLEGEN=$(abspath $(PWD)/../../native/llvm-9.0/work-native/install/usr/local/bin/llvm-tblgen) @@ -90,12 +83,18 @@ include ../../mk/spksrc.common.mk # # https://llvm.org/docs/HowToCrossCompileBuiltinsOnArm.html # +# armv7-6.1, hi3535-6.1 and comcerto2k +# has errors with gnu-as related to compiler-rt +# ifeq ($(findstring $(ARCH),$(ARMv7_ARCHS)),$(ARCH)) CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=ARM + ifeq ($(findstring $(ARCH),comcerto2k),$(ARCH)) CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang;lld' + else ifeq ($(call version_lt, $(TCVERSION), 7.0),1) CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang;lld' + else CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld' CMAKE_ARGS += -DCOMPILER_RT_BUILD_BUILTINS=ON From 6a676a5d25ee95c27159072bbf4cc4291bbe37ae Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Tue, 14 Mar 2023 21:22:12 +0000 Subject: [PATCH 43/61] toolchain: Keep SCSI_IOCTL_TAGGED_* patches on for mandatory archs --- .../define_scsi_ioctl_tagged_enable_disable.patch | 12 ------------ .../define_scsi_ioctl_tagged_enable_disable.patch | 10 ++++++++++ .../define_scsi_ioctl_tagged_enable_disable.patch | 10 ++++++++++ .../define_scsi_ioctl_tagged_enable_disable.patch | 10 ++++++++++ .../define_scsi_ioctl_tagged_enable_disable.patch | 12 ------------ .../define_scsi_ioctl_tagged_enable_disable.patch | 12 ------------ .../define_scsi_ioctl_tagged_enable_disable.patch | 12 ------------ .../define_scsi_ioctl_tagged_enable_disable.patch | 12 ------------ .../define_scsi_ioctl_tagged_enable_disable.patch | 12 ------------ .../define_scsi_ioctl_tagged_enable_disable.patch | 10 ++++++++++ .../define_scsi_ioctl_tagged_enable_disable.patch | 10 ++++++++++ .../define_scsi_ioctl_tagged_enable_disable.patch | 10 ++++++++++ .../define_scsi_ioctl_tagged_enable_disable.patch | 12 ------------ .../define_scsi_ioctl_tagged_enable_disable.patch | 12 ------------ .../define_scsi_ioctl_tagged_enable_disable.patch | 10 ++++++++++ .../define_scsi_ioctl_tagged_enable_disable.patch | 10 ++++++++++ .../define_scsi_ioctl_tagged_enable_disable.patch | 10 ++++++++++ 17 files changed, 90 insertions(+), 96 deletions(-) delete mode 100644 toolchain/syno-88f6281-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch delete mode 100644 toolchain/syno-armv7-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch delete mode 100644 toolchain/syno-armv7-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch delete mode 100644 toolchain/syno-armv7-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch delete mode 100644 toolchain/syno-comcerto2k-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch delete mode 100644 toolchain/syno-comcerto2k-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch delete mode 100644 toolchain/syno-hi3535-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch delete mode 100644 toolchain/syno-qoriq-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch diff --git a/toolchain/syno-88f6281-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-88f6281-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch deleted file mode 100644 index 45310f47f9c..00000000000 --- a/toolchain/syno-88f6281-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -uprN ../../work/arm-marvell-linux-gnueabi/arm-marvell-linux-gnueabi/libc/include/scsi/scsi.h ./arm-marvell-linux-gnueabi/libc/include/scsi/scsi.h ---- ../../work/arm-marvell-linux-gnueabi/arm-marvell-linux-gnueabi/libc/include/scsi/scsi.h 2017-08-02 23:22:30.000000000 +0000 -+++ ./arm-marvell-linux-gnueabi/libc/include/scsi/scsi.h 2023-03-09 00:10:34.205185063 +0000 -@@ -546,6 +546,8 @@ static __inline__ int scsi_is_wlun(unsig - #define SCSI_IOCTL_GET_IDLUN 0x5382 - - /* 0x5383 and 0x5384 were used for SCSI_IOCTL_TAGGED_{ENABLE,DISABLE} */ -+#define SCSI_IOCTL_TAGGED_ENABLE 0x5383 -+#define SCSI_IOCTL_TAGGED_DISABLE 0x5384 - - /* Used to obtain the host number of a device. */ - #define SCSI_IOCTL_PROBE_HOST 0x5385 diff --git a/toolchain/syno-aarch64-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-aarch64-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch index d1c625f5e13..e0e254e2000 100644 --- a/toolchain/syno-aarch64-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch +++ b/toolchain/syno-aarch64-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch @@ -1,3 +1,13 @@ +#--- +# +# Solves build issue when compiling a LLVM or GCC compiler: +# +# sanitizer_platform_limits_posix.cc:874:46: error: ‘SCSI_IOCTL_TAGGED_DISABLE’ was not declared in this scope +# unsigned IOCTL_SCSI_IOCTL_TAGGED_DISABLE = SCSI_IOCTL_TAGGED_DISABLE; +# sanitizer_platform_limits_posix.cc:875:45: error: ‘SCSI_IOCTL_TAGGED_ENABLE’ was not declared in this scope +# unsigned IOCTL_SCSI_IOCTL_TAGGED_ENABLE = SCSI_IOCTL_TAGGED_ENABLE; +# +#---- diff -uprN ../../work.orig/aarch64-unknown-linux-gnueabi/aarch64-unknown-linux-gnueabi/sys-root/usr/include/scsi/scsi.h ./aarch64-unknown-linux-gnueabi/sys-root/usr/include/scsi/scsi.h --- ../../work.orig/aarch64-unknown-linux-gnueabi/aarch64-unknown-linux-gnueabi/sys-root/usr/include/scsi/scsi.h 2017-08-03 01:08:13.000000000 +0000 +++ ./aarch64-unknown-linux-gnueabi/sys-root/usr/include/scsi/scsi.h 2023-03-06 23:40:37.324130895 +0000 diff --git a/toolchain/syno-aarch64-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-aarch64-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch index 6ef82f2a227..52f8c676f0e 100644 --- a/toolchain/syno-aarch64-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch +++ b/toolchain/syno-aarch64-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch @@ -1,3 +1,13 @@ +#--- +# +# Solves build issue when compiling a LLVM or GCC compiler: +# +# sanitizer_platform_limits_posix.cc:874:46: error: ‘SCSI_IOCTL_TAGGED_DISABLE’ was not declared in this scope +# unsigned IOCTL_SCSI_IOCTL_TAGGED_DISABLE = SCSI_IOCTL_TAGGED_DISABLE; +# sanitizer_platform_limits_posix.cc:875:45: error: ‘SCSI_IOCTL_TAGGED_ENABLE’ was not declared in this scope +# unsigned IOCTL_SCSI_IOCTL_TAGGED_ENABLE = SCSI_IOCTL_TAGGED_ENABLE; +# +#---- diff -uprN ../../work.orig/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot/usr/include/scsi/scsi.h ./aarch64-unknown-linux-gnu/sysroot/usr/include/scsi/scsi.h --- ../../work.orig/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot/usr/include/scsi/scsi.h 2021-07-01 19:35:13.000000000 +0000 +++ ./aarch64-unknown-linux-gnu/sysroot/usr/include/scsi/scsi.h 2023-03-08 23:41:05.122316868 +0000 diff --git a/toolchain/syno-aarch64-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-aarch64-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch index 6ef82f2a227..52f8c676f0e 100644 --- a/toolchain/syno-aarch64-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch +++ b/toolchain/syno-aarch64-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch @@ -1,3 +1,13 @@ +#--- +# +# Solves build issue when compiling a LLVM or GCC compiler: +# +# sanitizer_platform_limits_posix.cc:874:46: error: ‘SCSI_IOCTL_TAGGED_DISABLE’ was not declared in this scope +# unsigned IOCTL_SCSI_IOCTL_TAGGED_DISABLE = SCSI_IOCTL_TAGGED_DISABLE; +# sanitizer_platform_limits_posix.cc:875:45: error: ‘SCSI_IOCTL_TAGGED_ENABLE’ was not declared in this scope +# unsigned IOCTL_SCSI_IOCTL_TAGGED_ENABLE = SCSI_IOCTL_TAGGED_ENABLE; +# +#---- diff -uprN ../../work.orig/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot/usr/include/scsi/scsi.h ./aarch64-unknown-linux-gnu/sysroot/usr/include/scsi/scsi.h --- ../../work.orig/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot/usr/include/scsi/scsi.h 2021-07-01 19:35:13.000000000 +0000 +++ ./aarch64-unknown-linux-gnu/sysroot/usr/include/scsi/scsi.h 2023-03-08 23:41:05.122316868 +0000 diff --git a/toolchain/syno-armv7-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-armv7-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch deleted file mode 100644 index ab7a875d65d..00000000000 --- a/toolchain/syno-armv7-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -uprN ../../work/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h ./arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h ---- ../../work/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h 2017-08-02 23:34:06.000000000 +0000 -+++ ./arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h 2023-03-09 00:03:41.661144195 +0000 -@@ -518,6 +518,8 @@ static __inline__ int scsi_is_wlun(unsig - #define SCSI_IOCTL_GET_IDLUN 0x5382 - - /* 0x5383 and 0x5384 were used for SCSI_IOCTL_TAGGED_{ENABLE,DISABLE} */ -+#define SCSI_IOCTL_TAGGED_ENABLE 0x5383 -+#define SCSI_IOCTL_TAGGED_DISABLE 0x5384 - - /* Used to obtain the host number of a device. */ - #define SCSI_IOCTL_PROBE_HOST 0x5385 diff --git a/toolchain/syno-armv7-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-armv7-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch deleted file mode 100644 index ab7a875d65d..00000000000 --- a/toolchain/syno-armv7-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -uprN ../../work/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h ./arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h ---- ../../work/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h 2017-08-02 23:34:06.000000000 +0000 -+++ ./arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h 2023-03-09 00:03:41.661144195 +0000 -@@ -518,6 +518,8 @@ static __inline__ int scsi_is_wlun(unsig - #define SCSI_IOCTL_GET_IDLUN 0x5382 - - /* 0x5383 and 0x5384 were used for SCSI_IOCTL_TAGGED_{ENABLE,DISABLE} */ -+#define SCSI_IOCTL_TAGGED_ENABLE 0x5383 -+#define SCSI_IOCTL_TAGGED_DISABLE 0x5384 - - /* Used to obtain the host number of a device. */ - #define SCSI_IOCTL_PROBE_HOST 0x5385 diff --git a/toolchain/syno-armv7-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-armv7-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch deleted file mode 100644 index ab7a875d65d..00000000000 --- a/toolchain/syno-armv7-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -uprN ../../work/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h ./arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h ---- ../../work/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h 2017-08-02 23:34:06.000000000 +0000 -+++ ./arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h 2023-03-09 00:03:41.661144195 +0000 -@@ -518,6 +518,8 @@ static __inline__ int scsi_is_wlun(unsig - #define SCSI_IOCTL_GET_IDLUN 0x5382 - - /* 0x5383 and 0x5384 were used for SCSI_IOCTL_TAGGED_{ENABLE,DISABLE} */ -+#define SCSI_IOCTL_TAGGED_ENABLE 0x5383 -+#define SCSI_IOCTL_TAGGED_DISABLE 0x5384 - - /* Used to obtain the host number of a device. */ - #define SCSI_IOCTL_PROBE_HOST 0x5385 diff --git a/toolchain/syno-comcerto2k-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-comcerto2k-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch deleted file mode 100644 index ab7a875d65d..00000000000 --- a/toolchain/syno-comcerto2k-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -uprN ../../work/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h ./arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h ---- ../../work/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h 2017-08-02 23:34:06.000000000 +0000 -+++ ./arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h 2023-03-09 00:03:41.661144195 +0000 -@@ -518,6 +518,8 @@ static __inline__ int scsi_is_wlun(unsig - #define SCSI_IOCTL_GET_IDLUN 0x5382 - - /* 0x5383 and 0x5384 were used for SCSI_IOCTL_TAGGED_{ENABLE,DISABLE} */ -+#define SCSI_IOCTL_TAGGED_ENABLE 0x5383 -+#define SCSI_IOCTL_TAGGED_DISABLE 0x5384 - - /* Used to obtain the host number of a device. */ - #define SCSI_IOCTL_PROBE_HOST 0x5385 diff --git a/toolchain/syno-comcerto2k-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-comcerto2k-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch deleted file mode 100644 index ab7a875d65d..00000000000 --- a/toolchain/syno-comcerto2k-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -uprN ../../work/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h ./arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h ---- ../../work/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h 2017-08-02 23:34:06.000000000 +0000 -+++ ./arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h 2023-03-09 00:03:41.661144195 +0000 -@@ -518,6 +518,8 @@ static __inline__ int scsi_is_wlun(unsig - #define SCSI_IOCTL_GET_IDLUN 0x5382 - - /* 0x5383 and 0x5384 were used for SCSI_IOCTL_TAGGED_{ENABLE,DISABLE} */ -+#define SCSI_IOCTL_TAGGED_ENABLE 0x5383 -+#define SCSI_IOCTL_TAGGED_DISABLE 0x5384 - - /* Used to obtain the host number of a device. */ - #define SCSI_IOCTL_PROBE_HOST 0x5385 diff --git a/toolchain/syno-evansport-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-evansport-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch index a8d87a20e1c..03417a74994 100644 --- a/toolchain/syno-evansport-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch +++ b/toolchain/syno-evansport-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch @@ -1,3 +1,13 @@ +#--- +# +# Solves build issue when compiling a LLVM or GCC compiler: +# +# sanitizer_platform_limits_posix.cc:874:46: error: ‘SCSI_IOCTL_TAGGED_DISABLE’ was not declared in this scope +# unsigned IOCTL_SCSI_IOCTL_TAGGED_DISABLE = SCSI_IOCTL_TAGGED_DISABLE; +# sanitizer_platform_limits_posix.cc:875:45: error: ‘SCSI_IOCTL_TAGGED_ENABLE’ was not declared in this scope +# unsigned IOCTL_SCSI_IOCTL_TAGGED_ENABLE = SCSI_IOCTL_TAGGED_ENABLE; +# +#---- diff -uprN ../../work/i686-pc-linux-gnu/i686-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h ./i686-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h --- ../../work/i686-pc-linux-gnu/i686-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h 2017-08-02 22:33:56.000000000 +0000 +++ ./i686-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h 2023-03-08 23:59:38.080468616 +0000 diff --git a/toolchain/syno-evansport-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-evansport-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch index a8d87a20e1c..03417a74994 100644 --- a/toolchain/syno-evansport-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch +++ b/toolchain/syno-evansport-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch @@ -1,3 +1,13 @@ +#--- +# +# Solves build issue when compiling a LLVM or GCC compiler: +# +# sanitizer_platform_limits_posix.cc:874:46: error: ‘SCSI_IOCTL_TAGGED_DISABLE’ was not declared in this scope +# unsigned IOCTL_SCSI_IOCTL_TAGGED_DISABLE = SCSI_IOCTL_TAGGED_DISABLE; +# sanitizer_platform_limits_posix.cc:875:45: error: ‘SCSI_IOCTL_TAGGED_ENABLE’ was not declared in this scope +# unsigned IOCTL_SCSI_IOCTL_TAGGED_ENABLE = SCSI_IOCTL_TAGGED_ENABLE; +# +#---- diff -uprN ../../work/i686-pc-linux-gnu/i686-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h ./i686-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h --- ../../work/i686-pc-linux-gnu/i686-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h 2017-08-02 22:33:56.000000000 +0000 +++ ./i686-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h 2023-03-08 23:59:38.080468616 +0000 diff --git a/toolchain/syno-evansport-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-evansport-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch index a8d87a20e1c..03417a74994 100644 --- a/toolchain/syno-evansport-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch +++ b/toolchain/syno-evansport-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch @@ -1,3 +1,13 @@ +#--- +# +# Solves build issue when compiling a LLVM or GCC compiler: +# +# sanitizer_platform_limits_posix.cc:874:46: error: ‘SCSI_IOCTL_TAGGED_DISABLE’ was not declared in this scope +# unsigned IOCTL_SCSI_IOCTL_TAGGED_DISABLE = SCSI_IOCTL_TAGGED_DISABLE; +# sanitizer_platform_limits_posix.cc:875:45: error: ‘SCSI_IOCTL_TAGGED_ENABLE’ was not declared in this scope +# unsigned IOCTL_SCSI_IOCTL_TAGGED_ENABLE = SCSI_IOCTL_TAGGED_ENABLE; +# +#---- diff -uprN ../../work/i686-pc-linux-gnu/i686-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h ./i686-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h --- ../../work/i686-pc-linux-gnu/i686-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h 2017-08-02 22:33:56.000000000 +0000 +++ ./i686-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h 2023-03-08 23:59:38.080468616 +0000 diff --git a/toolchain/syno-hi3535-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-hi3535-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch deleted file mode 100644 index 90d08de4cf3..00000000000 --- a/toolchain/syno-hi3535-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -uprN ../../work/arm-cortexa9-linux-gnueabi/arm-cortexa9-linux-gnueabi/sysroot/include/scsi/scsi.h ./arm-cortexa9-linux-gnueabi/sysroot/include/scsi/scsi.h ---- ../../work/arm-cortexa9-linux-gnueabi/arm-cortexa9-linux-gnueabi/sysroot/include/scsi/scsi.h 2017-08-02 23:22:31.000000000 +0000 -+++ ./arm-cortexa9-linux-gnueabi/sysroot/include/scsi/scsi.h 2023-03-09 00:13:17.747393558 +0000 -@@ -545,6 +545,8 @@ static __inline__ int scsi_is_wlun(unsig - #define SCSI_IOCTL_GET_IDLUN 0x5382 - - /* 0x5383 and 0x5384 were used for SCSI_IOCTL_TAGGED_{ENABLE,DISABLE} */ -+#define SCSI_IOCTL_TAGGED_ENABLE 0x5383 -+#define SCSI_IOCTL_TAGGED_DISABLE 0x5384 - - /* Used to obtain the host number of a device. */ - #define SCSI_IOCTL_PROBE_HOST 0x5385 diff --git a/toolchain/syno-qoriq-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-qoriq-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch deleted file mode 100644 index 905795b3399..00000000000 --- a/toolchain/syno-qoriq-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -uprN ../../work/powerpc-e500v2-linux-gnuspe/powerpc-e500v2-linux-gnuspe/sysroot/usr/include/scsi/scsi.h ./powerpc-e500v2-linux-gnuspe/sysroot/usr/include/scsi/scsi.h ---- ../../work/powerpc-e500v2-linux-gnuspe/powerpc-e500v2-linux-gnuspe/sysroot/usr/include/scsi/scsi.h 2017-08-03 01:08:13.000000000 +0000 -+++ ./powerpc-e500v2-linux-gnuspe/sysroot/usr/include/scsi/scsi.h 2023-03-09 00:09:03.495719129 +0000 -@@ -546,6 +546,8 @@ static __inline__ int scsi_is_wlun(unsig - #define SCSI_IOCTL_GET_IDLUN 0x5382 - - /* 0x5383 and 0x5384 were used for SCSI_IOCTL_TAGGED_{ENABLE,DISABLE} */ -+#define SCSI_IOCTL_TAGGED_ENABLE 0x5383 -+#define SCSI_IOCTL_TAGGED_DISABLE 0x5384 - - /* Used to obtain the host number of a device. */ - #define SCSI_IOCTL_PROBE_HOST 0x5385 diff --git a/toolchain/syno-x64-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-x64-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch index 74f980f5901..397b46bdf68 100644 --- a/toolchain/syno-x64-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch +++ b/toolchain/syno-x64-6.1/patches/define_scsi_ioctl_tagged_enable_disable.patch @@ -1,3 +1,13 @@ +#--- +# +# Solves build issue when compiling a LLVM or GCC compiler: +# +# sanitizer_platform_limits_posix.cc:874:46: error: ‘SCSI_IOCTL_TAGGED_DISABLE’ was not declared in this scope +# unsigned IOCTL_SCSI_IOCTL_TAGGED_DISABLE = SCSI_IOCTL_TAGGED_DISABLE; +# sanitizer_platform_limits_posix.cc:875:45: error: ‘SCSI_IOCTL_TAGGED_ENABLE’ was not declared in this scope +# unsigned IOCTL_SCSI_IOCTL_TAGGED_ENABLE = SCSI_IOCTL_TAGGED_ENABLE; +# +#---- diff -uprN ../../work.orig/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h ./x86_64-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h --- ../../work.orig/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h 2017-08-02 23:34:07.000000000 +0000 +++ ./x86_64-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h 2023-03-08 23:44:59.732785430 +0000 diff --git a/toolchain/syno-x64-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-x64-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch index 74f980f5901..397b46bdf68 100644 --- a/toolchain/syno-x64-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch +++ b/toolchain/syno-x64-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch @@ -1,3 +1,13 @@ +#--- +# +# Solves build issue when compiling a LLVM or GCC compiler: +# +# sanitizer_platform_limits_posix.cc:874:46: error: ‘SCSI_IOCTL_TAGGED_DISABLE’ was not declared in this scope +# unsigned IOCTL_SCSI_IOCTL_TAGGED_DISABLE = SCSI_IOCTL_TAGGED_DISABLE; +# sanitizer_platform_limits_posix.cc:875:45: error: ‘SCSI_IOCTL_TAGGED_ENABLE’ was not declared in this scope +# unsigned IOCTL_SCSI_IOCTL_TAGGED_ENABLE = SCSI_IOCTL_TAGGED_ENABLE; +# +#---- diff -uprN ../../work.orig/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h ./x86_64-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h --- ../../work.orig/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h 2017-08-02 23:34:07.000000000 +0000 +++ ./x86_64-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h 2023-03-08 23:44:59.732785430 +0000 diff --git a/toolchain/syno-x64-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-x64-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch index 74f980f5901..397b46bdf68 100644 --- a/toolchain/syno-x64-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch +++ b/toolchain/syno-x64-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch @@ -1,3 +1,13 @@ +#--- +# +# Solves build issue when compiling a LLVM or GCC compiler: +# +# sanitizer_platform_limits_posix.cc:874:46: error: ‘SCSI_IOCTL_TAGGED_DISABLE’ was not declared in this scope +# unsigned IOCTL_SCSI_IOCTL_TAGGED_DISABLE = SCSI_IOCTL_TAGGED_DISABLE; +# sanitizer_platform_limits_posix.cc:875:45: error: ‘SCSI_IOCTL_TAGGED_ENABLE’ was not declared in this scope +# unsigned IOCTL_SCSI_IOCTL_TAGGED_ENABLE = SCSI_IOCTL_TAGGED_ENABLE; +# +#---- diff -uprN ../../work.orig/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h ./x86_64-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h --- ../../work.orig/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h 2017-08-02 23:34:07.000000000 +0000 +++ ./x86_64-pc-linux-gnu/sys-root/usr/include/scsi/scsi.h 2023-03-08 23:44:59.732785430 +0000 From b0146d4c2d80a9b29186dc37fd288185dc1d1827 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Sat, 1 Apr 2023 17:47:30 +0000 Subject: [PATCH 44/61] toolchain (armv7-7.x): Define missing SCSI_IOCTL_TAGGED_ENABLE|DISABLE --- ...ine_scsi_ioctl_tagged_enable_disable.patch | 21 +++++++++++++++++++ ...ine_scsi_ioctl_tagged_enable_disable.patch | 21 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 toolchain/syno-armv7-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch create mode 100644 toolchain/syno-armv7-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch diff --git a/toolchain/syno-armv7-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-armv7-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch new file mode 100644 index 00000000000..0938705bd51 --- /dev/null +++ b/toolchain/syno-armv7-7.0/patches/define_scsi_ioctl_tagged_enable_disable.patch @@ -0,0 +1,21 @@ +#--- +# +# Solves build issue when compiling a LLVM or GCC compiler: +# +# sanitizer_platform_limits_posix.cc:874:46: error: ‘SCSI_IOCTL_TAGGED_DISABLE’ was not declared in this scope +# unsigned IOCTL_SCSI_IOCTL_TAGGED_DISABLE = SCSI_IOCTL_TAGGED_DISABLE; +# sanitizer_platform_limits_posix.cc:875:45: error: ‘SCSI_IOCTL_TAGGED_ENABLE’ was not declared in this scope +# unsigned IOCTL_SCSI_IOCTL_TAGGED_ENABLE = SCSI_IOCTL_TAGGED_ENABLE; +# +#---- +--- arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h.orig 2021-07-01 19:35:13.000000000 +0000 ++++ arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h 2023-04-01 17:44:22.392732206 +0000 +@@ -522,6 +522,8 @@ static __inline__ int scsi_is_wlun(unsig + #define SCSI_IOCTL_GET_IDLUN 0x5382 + + /* 0x5383 and 0x5384 were used for SCSI_IOCTL_TAGGED_{ENABLE,DISABLE} */ ++#define SCSI_IOCTL_TAGGED_ENABLE 0x5383 ++#define SCSI_IOCTL_TAGGED_DISABLE 0x5384 + + /* Used to obtain the host number of a device. */ + #define SCSI_IOCTL_PROBE_HOST 0x5385 diff --git a/toolchain/syno-armv7-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch b/toolchain/syno-armv7-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch new file mode 100644 index 00000000000..0938705bd51 --- /dev/null +++ b/toolchain/syno-armv7-7.1/patches/define_scsi_ioctl_tagged_enable_disable.patch @@ -0,0 +1,21 @@ +#--- +# +# Solves build issue when compiling a LLVM or GCC compiler: +# +# sanitizer_platform_limits_posix.cc:874:46: error: ‘SCSI_IOCTL_TAGGED_DISABLE’ was not declared in this scope +# unsigned IOCTL_SCSI_IOCTL_TAGGED_DISABLE = SCSI_IOCTL_TAGGED_DISABLE; +# sanitizer_platform_limits_posix.cc:875:45: error: ‘SCSI_IOCTL_TAGGED_ENABLE’ was not declared in this scope +# unsigned IOCTL_SCSI_IOCTL_TAGGED_ENABLE = SCSI_IOCTL_TAGGED_ENABLE; +# +#---- +--- arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h.orig 2021-07-01 19:35:13.000000000 +0000 ++++ arm-unknown-linux-gnueabi/sysroot/usr/include/scsi/scsi.h 2023-04-01 17:44:22.392732206 +0000 +@@ -522,6 +522,8 @@ static __inline__ int scsi_is_wlun(unsig + #define SCSI_IOCTL_GET_IDLUN 0x5382 + + /* 0x5383 and 0x5384 were used for SCSI_IOCTL_TAGGED_{ENABLE,DISABLE} */ ++#define SCSI_IOCTL_TAGGED_ENABLE 0x5383 ++#define SCSI_IOCTL_TAGGED_DISABLE 0x5384 + + /* Used to obtain the host number of a device. */ + #define SCSI_IOCTL_PROBE_HOST 0x5385 From ac1b5dfd4e7bf1b6823b5f0f8ea02462d01203e6 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Sun, 2 Apr 2023 01:15:14 +0000 Subject: [PATCH 45/61] llvm (dsm7): Upgrade to version 16.0 --- cross/llvm-latest/Makefile | 86 +++++++++++++++++--------------------- cross/llvm-latest/digests | 6 +-- 2 files changed, 42 insertions(+), 50 deletions(-) diff --git a/cross/llvm-latest/Makefile b/cross/llvm-latest/Makefile index 1c908379ddb..9bf5bdd1bfe 100644 --- a/cross/llvm-latest/Makefile +++ b/cross/llvm-latest/Makefile @@ -1,14 +1,16 @@ PKG_NAME = llvm -PKG_VERS = 15.0.7 +PKG_VERS = 16.0.0 PKG_EXT = tar.xz PKG_DIST_NAME = $(PKG_NAME)-project-$(PKG_VERS).src.$(PKG_EXT) PKG_DIST_SITE = https://github.com/llvm/llvm-project/releases/download/llvmorg-$(PKG_VERS) PKG_DIR = $(PKG_NAME)-project-$(PKG_VERS).src HOMEPAGE = https://llvm.org/ -COMMENT = The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. +COMMENT = The LLVM Project is a collection of modular and reusable compiler and toolchain technologies LICENSE = Apache License v2.0 with LLVM Exceptions +REQUIRED_MIN_DSM = 7.0 +UNSUPPORTED_ARCHS = $(ARMv5_ARCHS) $(PPC_ARCHS) comcerto2k CMAKE_USE_NINJA = 1 # Using LLVM project source need to change to llvm sub-directory @@ -18,8 +20,28 @@ CMAKE_DIR = $(WORK_DIR)/$(PKG_DIR)/llvm CMAKE_ARGS += -DCMAKE_BUILD_TYPE=MinSizeRel CMAKE_ARGS += -Wno-dev CMAKE_ARGS += -DLLVM_BUILD_DOCS=OFF +CMAKE_ARGS += -DLLVM_INCLUDE_DOCS=OFF +CMAKE_ARGS += -DLLVM_ENABLE_WARNINGS=OFF +CMAKE_ARGS += -DLLVM_INCLUDE_EXAMPLES=OFF +CMAKE_ARGS += -DLLVM_INCLUDE_TESTS=OFF CMAKE_ARGS += -DLLVM_INCLUDE_BENCHMARKS=OFF -CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld;clang-tools-extra' +CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=$(TC_TARGET) + +# Enable building with zlib to support compression/uncompression +DEPENDS += cross/zlib +CMAKE_ARGS += -DLLVM_ENABLE_ZLIB=ON + +# Indicates whether the LLVM Interpreter will be +# linked with the Foreign Function Interface library +# (libffi) in order to enable calling external functions. +DEPENDS += cross/libffi +CMAKE_ARGS += LLVM_ENABLE_FFI=ON + +DEPENDS += cross/ncursesw +CMAKE_ARGS += -DLLVM_ENABLE_TERMINFO=ON + +DEPENDS += cross/libxml2 +CMAKE_ARGS += -DLLVM_ENABLE_LIBXML2=ON # When set to ON it removes many of the LLVM development and # testing tools as well as component libraries from the @@ -32,24 +54,12 @@ CMAKE_ARGS += -DLLVM_INSTALL_TOOLCHAIN_ONLY=ON # They typically slow down LLVM and Clang when enabled CMAKE_ARGS += -DLLVM_ENABLE_ASSERTIONS=OFF -# Enable building with zlib to support compression/uncompression -# FAILS: lib/libLLVM-15.so: undefined reference to `compress2' -# lib/libLLVM-15.so: undefined reference to `crc32' -# lib/libLLVM-15.so: undefined reference to `compressBound@ZLIB_1.2.0' -#DEPENDS = cross/zlib -#CMAKE_ARGS += -DLLVM_ENABLE_ZLIB=ON - -# Indicates whether the LLVM Interpreter will be -# linked with the Foreign Function Interface library -# (libffi) in order to enable calling external functions. -# DEPENDS += cross/libffi -# CMAKE_ARGS += LLVM_ENABLE_FFI=ON <-- TO TEST - # BUILD_SHARED_LIBS is only recommended for use # by LLVM developers. If you want to build LLVM # as a shared library, you should use the # LLVM_BUILD_LLVM_DYLIB option # CMAKE_ARGS += -DBUILD_SHARED_LIBS=ON +CMAKE_ARGS += -DBUILD_SHARED_LIBS=OFF # The most impactful way to reduce binary size is # to dynamically link LLVM into all the tools. @@ -60,58 +70,40 @@ CMAKE_ARGS += -DLLVM_LINK_LLVM_DYLIB=ON # Allow users to build with RTTI (Run-Time Type Info) # enabled and still inherit from LLVM classes -#CMAKE_ARGS += -DLLVM_ENABLE_RTTI=ON <-- TO TEST - -# This switch enables building for the r600 AMD GPU -# used by the Mesa r600 and radeonsi drivers. -# The BPF target is required to build v4l-utils-1.24.1. -# -DLLVM_TARGETS_TO_BUILD="AMDGPU;BPF" <-- Something to play with for CUDA and NVIDIA GPU transcoding? - -# Requires native/llvm-9.0 -#CMAKE_ARGS += -DLLVM_CONFIG=$(abspath $(PWD)/../../native/llvm-9.0/work-native/install/usr/local/bin/llvm-config) -#CMAKE_ARGS += -DLLVM_TABLEGEN=$(abspath $(PWD)/../../native/llvm-9.0/work-native/install/usr/local/bin/llvm-tblgen) -#CMAKE_ARGS += -DCLANG_TABLEGEN=$(abspath $(PWD)/../../native/llvm-9.0/work-native/install/usr/local/bin/clang-tblgen) +CMAKE_ARGS += -DLLVM_ENABLE_RTTI=ON include ../../mk/spksrc.common.mk -ifeq ($(findstring $(ARCH),$(ARMv5_ARCHS)),$(ARCH)) -CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=ARM -CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=arm-marvell-linux-gnueabi -endif - +# +# https://llvm.org/docs/HowToCrossCompileBuiltinsOnArm.html +# ifeq ($(findstring $(ARCH),$(ARMv7_ARCHS)),$(ARCH)) CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=ARM -CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=arm-unknown-linux-gnueabi +CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld' +CMAKE_ARGS += -DCOMPILER_RT_BUILD_BUILTINS=ON +CMAKE_ARGS += -DCOMPILER_RT_BUILD_PROFILE=OFF +CMAKE_ARGS += -DCOMPILER_RT_BUILD_SANITIZERS=OFF +CMAKE_ARGS += -DCOMPILER_RT_BUILD_XRAY=OFF endif ifeq ($(findstring $(ARCH),$(ARMv7L_ARCHS)),$(ARCH)) CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=ARM -CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=arm-cortexa9-linux-gnueabi +CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang;lld' endif ifeq ($(findstring $(ARCH),$(ARMv8_ARCHS)),$(ARCH)) CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=AArch64 -CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=aarch64-unknown-linux-gnueabi -# Otherwise builds with error -CMAKE_ARGS += -DCOMPILER_RT_BUILD_LIBFUZZER=OFF +CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld' endif ifeq ($(findstring $(ARCH),$(i686_ARCHS)),$(ARCH)) CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=X86 -CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=i686-pc-linux-gnu +CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld' endif ifeq ($(findstring $(ARCH),$(x64_ARCHS)),$(ARCH)) CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=X86 -CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=x86_64-pc-linux-gnu -endif - -ifeq ($(findstring $(ARCH),$(PPC_ARCHS)),$(ARCH)) -CMAKE_ARGS += -DLLVM_TARGETS_TO_BUILD=PPC64 -CMAKE_ARGS += -DLLVM_DEFAULT_TARGET_TRIPLE=powerpc-e500v2-linux-gnuspe -CMAKE_ARGS += -DCMAKE_CXX_FLAGS=-m32 -CMAKE_ARGS += -DENABLE_ALTIVEC=OFF -CMAKE_ARGS += -DCPU_POWER8=OFF +CMAKE_ARGS += -DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld' endif include ../../mk/spksrc.cross-cmake.mk diff --git a/cross/llvm-latest/digests b/cross/llvm-latest/digests index fb3a4807a4e..84ba9e582e7 100644 --- a/cross/llvm-latest/digests +++ b/cross/llvm-latest/digests @@ -1,3 +1,3 @@ -llvm-project-15.0.7.src.tar.xz SHA1 bfda06ab090154d289013912266209595a2e3914 -llvm-project-15.0.7.src.tar.xz SHA256 8b5fcb24b4128cf04df1b0b9410ce8b1a729cb3c544e6da885d234280dedeac6 -llvm-project-15.0.7.src.tar.xz MD5 bac436dbd5d37e38d3da75b03629053c +llvm-project-16.0.0.src.tar.xz SHA1 2c1c3c78d8ae983dfc09b33b69b8ee47cae37430 +llvm-project-16.0.0.src.tar.xz SHA256 9a56d906a2c81f16f06efc493a646d497c53c2f4f28f0cb1f3c8da7f74350254 +llvm-project-16.0.0.src.tar.xz MD5 28a0d936c3e0fb2de43e466a4433f9e4 From 600d21a781d956b1b94833a32a68bff51f2f84f2 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Sun, 2 Apr 2023 01:15:40 +0000 Subject: [PATCH 46/61] synocli-devel: Re-enable llvm-latest using LLVM version 16.0 --- cross/llvm/Makefile | 8 ++++---- spk/synocli-devel/Makefile | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cross/llvm/Makefile b/cross/llvm/Makefile index 4d2510b7538..357caf16d2f 100644 --- a/cross/llvm/Makefile +++ b/cross/llvm/Makefile @@ -16,8 +16,8 @@ OPTIONAL_DEPENDS += cross/llvm-9.0 include ../../mk/spksrc.install-resources.mk -#ifeq ($(call version_ge, $(TC_GCC), 5.1),1) -#DEPENDS = cross/llvm-latest -#else +ifeq ($(call version_ge, $(TC_GCC), 5.1),1) +DEPENDS = cross/llvm-latest +else DEPENDS = cross/llvm-9.0 -#endif +endif diff --git a/spk/synocli-devel/Makefile b/spk/synocli-devel/Makefile index 7bf769e2d8e..75200873ea4 100644 --- a/spk/synocli-devel/Makefile +++ b/spk/synocli-devel/Makefile @@ -74,8 +74,8 @@ include ../../mk/spksrc.spk.mk ## LLVM ## ifeq ($(call version_ge, $(TC_GCC), 5.1),1) -OPTIONAL_DESC += ", LLVM 15.0.7" -SPK_COMMANDS += bin/clang-15 +OPTIONAL_DESC += ", LLVM 16.0" +SPK_COMMANDS += bin/clang-16 else OPTIONAL_DESC += ", LLVM 9.0.1" SPK_COMMANDS += bin/clang-9 From bd189870e14710628b82548c14384060ae971bf2 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Sun, 2 Apr 2023 12:32:27 +0000 Subject: [PATCH 47/61] synocli-devel: Add autoconf & automake --- cross/autoconf/Makefile | 16 ++++++++++++++++ cross/autoconf/PLIST.auto | 0 cross/autoconf/digests | 3 +++ cross/automake/Makefile | 16 ++++++++++++++++ cross/automake/PLIST.auto | 0 cross/automake/digests | 3 +++ cross/m4/Makefile | 16 ++++++++++++++++ cross/m4/PLIST | 1 + cross/m4/digests | 3 +++ spk/synocli-devel/Makefile | 27 ++++++++++++++++++++++++++- 10 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 cross/autoconf/Makefile create mode 100644 cross/autoconf/PLIST.auto create mode 100644 cross/autoconf/digests create mode 100644 cross/automake/Makefile create mode 100644 cross/automake/PLIST.auto create mode 100644 cross/automake/digests create mode 100644 cross/m4/Makefile create mode 100644 cross/m4/PLIST create mode 100644 cross/m4/digests diff --git a/cross/autoconf/Makefile b/cross/autoconf/Makefile new file mode 100644 index 00000000000..b2814ebc9e0 --- /dev/null +++ b/cross/autoconf/Makefile @@ -0,0 +1,16 @@ +PKG_NAME = autoconf +PKG_VERS = 2.71 +PKG_EXT = tar.xz +PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) +PKG_DIST_SITE = https://ftp.gnu.org/gnu/autoconf/ +PKG_DIR = $(PKG_NAME)-$(PKG_VERS) + +DEPENDS = cross/m4 + +HOMEPAGE = https://www.gnu.org/software/autoconf/ +COMMENT = Autoconf is an extensible package of M4 macros that produce shell scripts to automatically configure software source code packages. +LICENSE = GPLv2 + +GNU_CONFIGURE = 1 + +include ../../mk/spksrc.cross-cc.mk diff --git a/cross/autoconf/PLIST.auto b/cross/autoconf/PLIST.auto new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cross/autoconf/digests b/cross/autoconf/digests new file mode 100644 index 00000000000..9f51af271c4 --- /dev/null +++ b/cross/autoconf/digests @@ -0,0 +1,3 @@ +autoconf-2.71.tar.xz SHA1 1b5b1dbed849c6653be47c56d28d26fcf3f7238a +autoconf-2.71.tar.xz SHA256 f14c83cfebcc9427f2c3cea7258bd90df972d92eb26752da4ddad81c87a0faa4 +autoconf-2.71.tar.xz MD5 12cfa1687ffa2606337efe1a64416106 diff --git a/cross/automake/Makefile b/cross/automake/Makefile new file mode 100644 index 00000000000..e19a8dd5cb9 --- /dev/null +++ b/cross/automake/Makefile @@ -0,0 +1,16 @@ +PKG_NAME = automake +PKG_VERS = 1.16.5 +PKG_EXT = tar.xz +PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) +PKG_DIST_SITE = https://ftp.gnu.org/gnu/automake/ +PKG_DIR = $(PKG_NAME)-$(PKG_VERS) + +DEPENDS = + +HOMEPAGE = https://www.gnu.org/software/automake/ +COMMENT = GNU Automake is a tool for automatically generating Makefile.in files compliant with the GNU Coding Standards. +LICENSE = GPLv2 + +GNU_CONFIGURE = 1 + +include ../../mk/spksrc.cross-cc.mk diff --git a/cross/automake/PLIST.auto b/cross/automake/PLIST.auto new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cross/automake/digests b/cross/automake/digests new file mode 100644 index 00000000000..ae25993f4a1 --- /dev/null +++ b/cross/automake/digests @@ -0,0 +1,3 @@ +automake-1.16.5.tar.xz SHA1 32fb36e73568271ff506b60c55a6170b67681375 +automake-1.16.5.tar.xz SHA256 f01d58cd6d9d77fbdca9eb4bbd5ead1988228fdb73d6f7a201f5f8d6b118b469 +automake-1.16.5.tar.xz MD5 4017e96f89fca45ca946f1c5db6be714 diff --git a/cross/m4/Makefile b/cross/m4/Makefile new file mode 100644 index 00000000000..aaa98fc3a07 --- /dev/null +++ b/cross/m4/Makefile @@ -0,0 +1,16 @@ +PKG_NAME = m4 +PKG_VERS = 1.4.19 +PKG_EXT = tar.xz +PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) +PKG_DIST_SITE = https://ftp.gnu.org/gnu/m4/ +PKG_DIR = $(PKG_NAME)-$(PKG_VERS) + +DEPENDS = cross/libiconv + +HOMEPAGE = https://ftp.gnu.org/gnu/m4/ +COMMENT = GNU M4 is an implementation of the traditional Unix macro processor. It is mostly SVR4 compatible although it has some extensions +LICENSE = GPLv3 + +GNU_CONFIGURE = 1 + +include ../../mk/spksrc.cross-cc.mk diff --git a/cross/m4/PLIST b/cross/m4/PLIST new file mode 100644 index 00000000000..7ef144fe5bf --- /dev/null +++ b/cross/m4/PLIST @@ -0,0 +1 @@ +bin:bin/m4 diff --git a/cross/m4/digests b/cross/m4/digests new file mode 100644 index 00000000000..a1f9ffd2629 --- /dev/null +++ b/cross/m4/digests @@ -0,0 +1,3 @@ +m4-1.4.19.tar.xz SHA1 b44b5c9746b69ee19204b7cb76d3a7b3eac69259 +m4-1.4.19.tar.xz SHA256 63aede5c6d33b6d9b13511cd0be2cac046f2e70fd0a07aa9573a04a82783af96 +m4-1.4.19.tar.xz MD5 0d90823e1426f1da2fd872df0311298d diff --git a/spk/synocli-devel/Makefile b/spk/synocli-devel/Makefile index 75200873ea4..adbc01ca75c 100644 --- a/spk/synocli-devel/Makefile +++ b/spk/synocli-devel/Makefile @@ -5,21 +5,46 @@ SPK_ICON = src/synocli-devel.png CHANGELOG = "1. Initial release of synocli-devel" MAINTAINER = SynoCommunity -DESCRIPTION = SynoCli Development Tools provides a set of command-line utilities for system development and debugging: binutils 2.39$(OPTIONAL_DESC). +DESCRIPTION = SynoCli Development Tools provides a set of command-line utilities for system development and debugging: automake 1.65.5, autoconf 2.71, binutils 2.39$(OPTIONAL_DESC). DISPLAY_NAME = SynoCli Development Tools STARTABLE = no HOMEPAGE = https://www.sourceware.org/gdb/ LICENSE = GPLv2 +SPK_DEPENDS = "Perl" + UNSUPPORTED_ARCHS = $(ARMv5_ARCHS) $(PPC_ARCHS) include ../../mk/spksrc.archs.mk DEPENDS = cross/llvm +DEPENDS = cross/autoconf +DEPENDS = cross/automake DEPENDS += cross/binutils DEPENDS += cross/gdb +## +## autoconf +## +SPK_COMMANDS += bin/autoconf +SPK_COMMANDS += bin/autoheader +SPK_COMMANDS += bin/autom4te +SPK_COMMANDS += bin/autoreconf +SPK_COMMANDS += bin/autoscan +SPK_COMMANDS += bin/autoupdate +SPK_COMMANDS += bin/ifnames +## m4 dependency +SPK_COMMANDS += bin/m4 + +## +## automake +## +SPK_COMMANDS += bin/aclocal +SPK_COMMANDS += bin/aclocal-1.16 +SPK_COMMANDS += bin/automake +SPK_COMMANDS += bin/automake-1.16 + ## ## binutils ## From 3e60c0cc8b1ff8d155dcc0d79bc44f2fb5286120 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Sun, 2 Apr 2023 20:37:52 +0000 Subject: [PATCH 48/61] plist.mk: Ensure to process *script* as rsc files --- mk/spksrc.plist.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/mk/spksrc.plist.mk b/mk/spksrc.plist.mk index 4aa49dc49b8..787ea670460 100644 --- a/mk/spksrc.plist.mk +++ b/mk/spksrc.plist.mk @@ -26,6 +26,7 @@ cat_PLIST: type=$$(file --brief "$(INSTALL_DIR)/$(INSTALL_PREFIX)/$$file" | cut -d , -f1) ; \ case $$type in \ ELF*LSB[[:space:]]*executable ) echo "bin:$$file" ;; \ + *script* ) echo "rsc:$$file" ;; \ ELF* ) echo "lib:$$file" ;; \ symbolic[[:space:]]link* ) echo "lnk:$$file" ;; \ * ) echo "rsc:$$file" ;; \ From bd3a8f1c709adff83b816adaf48e98056fae21b7 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Sun, 2 Apr 2023 20:43:30 +0000 Subject: [PATCH 49/61] synocli-devel: Add GNU make --- cross/make/Makefile | 16 ++++++++++++++++ cross/make/PLIST | 1 + cross/make/digests | 3 +++ spk/synocli-devel/Makefile | 10 ++++++++-- 4 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 cross/make/Makefile create mode 100644 cross/make/PLIST create mode 100644 cross/make/digests diff --git a/cross/make/Makefile b/cross/make/Makefile new file mode 100644 index 00000000000..00275a4f8bc --- /dev/null +++ b/cross/make/Makefile @@ -0,0 +1,16 @@ +PKG_NAME = make +PKG_VERS = 4.4.1 +PKG_EXT = tar.gz +PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) +PKG_DIST_SITE = https://ftp.gnu.org/gnu/make/ +PKG_DIR = $(PKG_NAME)-$(PKG_VERS) + +DEPENDS = + +HOMEPAGE = https://ftp.gnu.org/gnu/make/ +COMMENT = GNU Make is a tool which controls the generation of executables and other non-source files of a program from the program's source files +LICENSE = GPLv2 + +GNU_CONFIGURE = 1 + +include ../../mk/spksrc.cross-cc.mk diff --git a/cross/make/PLIST b/cross/make/PLIST new file mode 100644 index 00000000000..fc8f15fcf0a --- /dev/null +++ b/cross/make/PLIST @@ -0,0 +1 @@ +bin:bin/make diff --git a/cross/make/digests b/cross/make/digests new file mode 100644 index 00000000000..c578334e912 --- /dev/null +++ b/cross/make/digests @@ -0,0 +1,3 @@ +make-4.4.1.tar.gz SHA1 5ca41d365c35a4ded07d616190baf38814c25f2a +make-4.4.1.tar.gz SHA256 dd16fb1d67bfab79a72f5e8390735c49e3e8e70b4945a15ab1f81ddb78658fb3 +make-4.4.1.tar.gz MD5 c8469a3713cbbe04d955d4ae4be23eeb diff --git a/spk/synocli-devel/Makefile b/spk/synocli-devel/Makefile index adbc01ca75c..6ef881e29e7 100644 --- a/spk/synocli-devel/Makefile +++ b/spk/synocli-devel/Makefile @@ -19,10 +19,11 @@ UNSUPPORTED_ARCHS = $(ARMv5_ARCHS) $(PPC_ARCHS) include ../../mk/spksrc.archs.mk DEPENDS = cross/llvm -DEPENDS = cross/autoconf -DEPENDS = cross/automake +DEPENDS += cross/autoconf +DEPENDS += cross/automake DEPENDS += cross/binutils DEPENDS += cross/gdb +DEPENDS += cross/make ## ## autoconf @@ -135,3 +136,8 @@ SPK_COMMANDS += bin/llvm-symbolizer SPK_COMMANDS += bin/scan-build SPK_COMMANDS += bin/scan-view SPK_COMMANDS += bin/wasm-ld + +## +## make +## +SPK_COMMANDS += bin/make From 0b22d46e234221abbe43a2edbae270d110b54820 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Sun, 2 Apr 2023 21:11:40 +0000 Subject: [PATCH 50/61] synocli-devel: Add pkg-config --- cross/pkg-config/Makefile | 16 ++++++++++++++++ cross/pkg-config/PLIST | 1 + cross/pkg-config/digests | 3 +++ spk/synocli-devel/Makefile | 6 ++++++ 4 files changed, 26 insertions(+) create mode 100644 cross/pkg-config/Makefile create mode 100644 cross/pkg-config/PLIST create mode 100644 cross/pkg-config/digests diff --git a/cross/pkg-config/Makefile b/cross/pkg-config/Makefile new file mode 100644 index 00000000000..75cc1048375 --- /dev/null +++ b/cross/pkg-config/Makefile @@ -0,0 +1,16 @@ +PKG_NAME = pkg-config +PKG_VERS = 0.29.2 +PKG_EXT = tar.gz +PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) +PKG_DIST_SITE = https://pkgconfig.freedesktop.org/releases/ +PKG_DIR = $(PKG_NAME)-$(PKG_VERS) + +DEPENDS = cross/glib + +HOMEPAGE = https://www.freedesktop.org/wiki/Software/pkg-config/ +COMMENT = pkg-config is a helper tool used when compiling applications and libraries +LICENSE = GPLv2 + +GNU_CONFIGURE = 1 + +include ../../mk/spksrc.cross-cc.mk diff --git a/cross/pkg-config/PLIST b/cross/pkg-config/PLIST new file mode 100644 index 00000000000..ac6ed498ce6 --- /dev/null +++ b/cross/pkg-config/PLIST @@ -0,0 +1 @@ +bin:bin/pkg-config diff --git a/cross/pkg-config/digests b/cross/pkg-config/digests new file mode 100644 index 00000000000..2549d58e484 --- /dev/null +++ b/cross/pkg-config/digests @@ -0,0 +1,3 @@ +pkg-config-0.29.2.tar.gz SHA1 76e501663b29cb7580245720edfb6106164fad2b +pkg-config-0.29.2.tar.gz SHA256 6fc69c01688c9458a57eb9a1664c9aba372ccda420a02bf4429fe610e7e7d591 +pkg-config-0.29.2.tar.gz MD5 f6e931e319531b736fadc017f470e68a diff --git a/spk/synocli-devel/Makefile b/spk/synocli-devel/Makefile index 6ef881e29e7..921998f5d44 100644 --- a/spk/synocli-devel/Makefile +++ b/spk/synocli-devel/Makefile @@ -24,6 +24,7 @@ DEPENDS += cross/automake DEPENDS += cross/binutils DEPENDS += cross/gdb DEPENDS += cross/make +DEPENDS += cross/pkg-config ## ## autoconf @@ -141,3 +142,8 @@ SPK_COMMANDS += bin/wasm-ld ## make ## SPK_COMMANDS += bin/make + +## +## pkg-config +## +SPK_COMMANDS += bin/pkg-config From 5cdfcc54507dc87528f52edf1b9a0ff766b1ebd5 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Sun, 2 Apr 2023 21:23:33 +0000 Subject: [PATCH 51/61] synocli-devel: Move pkg-config up for glib failure with libiconv --- spk/synocli-devel/Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/spk/synocli-devel/Makefile b/spk/synocli-devel/Makefile index 921998f5d44..95c7bf259ab 100644 --- a/spk/synocli-devel/Makefile +++ b/spk/synocli-devel/Makefile @@ -19,12 +19,15 @@ UNSUPPORTED_ARCHS = $(ARMv5_ARCHS) $(PPC_ARCHS) include ../../mk/spksrc.archs.mk DEPENDS = cross/llvm +# build pkg-config before autoconf otherwise +# glib fails on libiconv on some platforms +# (to investigate ...) +DEPENDS += cross/pkg-config DEPENDS += cross/autoconf DEPENDS += cross/automake DEPENDS += cross/binutils DEPENDS += cross/gdb DEPENDS += cross/make -DEPENDS += cross/pkg-config ## ## autoconf From ee3396baf9581d8bfd70a7436c626889aba0a1c4 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Mon, 3 Apr 2023 00:01:22 +0000 Subject: [PATCH 52/61] make: Adjust license as changed since version 4.3 Co-authored-by: hgy59 --- cross/make/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cross/make/Makefile b/cross/make/Makefile index 00275a4f8bc..5e75ec5944e 100644 --- a/cross/make/Makefile +++ b/cross/make/Makefile @@ -9,7 +9,7 @@ DEPENDS = HOMEPAGE = https://ftp.gnu.org/gnu/make/ COMMENT = GNU Make is a tool which controls the generation of executables and other non-source files of a program from the program's source files -LICENSE = GPLv2 +LICENSE = GPLv3+ GNU_CONFIGURE = 1 From ddfdbaba7f36b8be78d8bea7963160f584a730f6 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Tue, 4 Apr 2023 01:08:38 +0000 Subject: [PATCH 53/61] tc.mk: Export TC_SYSROOT for GCC --- mk/spksrc.tc.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/mk/spksrc.tc.mk b/mk/spksrc.tc.mk index 6dc12c22897..62ae778232c 100644 --- a/mk/spksrc.tc.mk +++ b/mk/spksrc.tc.mk @@ -159,6 +159,7 @@ tc_vars: flag echo TC_ENV += CARGO_TARGET_$(shell echo $(RUST_TARGET) | tr - _ | tr a-z A-Z)_LINKER=\"$(WORK_DIR)/$(TC_TARGET)/bin/$(TC_PREFIX)gcc\" ; \ echo TC_CONFIGURE_ARGS := --host=$(TC_TARGET) --build=i686-pc-linux ; \ echo TC_TYPE := $(TC_TYPE) ; \ + echo TC_SYSROOT := $(WORK_DIR)/$(TC_TARGET)/$(TC_SYSROOT) ; \ echo TC_TARGET := $(TC_TARGET) ; \ echo TC_PREFIX := $(TC_PREFIX) ; \ echo TC_PATH := $(WORK_DIR)/$(TC_TARGET)/bin/ ; \ From 39bff938665601f96e060b229c28e88e6aedcd44 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Tue, 4 Apr 2023 01:11:51 +0000 Subject: [PATCH 54/61] gcc: Variations on a trial & mostly errors --- cross/gcc/Makefile | 110 +++++++++++++++++++++++++++ cross/gcc/Makefile-GCC5-OK-x64-TEST1 | 98 ++++++++++++++++++++++++ cross/gcc/digests | 3 + 3 files changed, 211 insertions(+) create mode 100644 cross/gcc/Makefile create mode 100644 cross/gcc/Makefile-GCC5-OK-x64-TEST1 create mode 100644 cross/gcc/digests diff --git a/cross/gcc/Makefile b/cross/gcc/Makefile new file mode 100644 index 00000000000..b091b55a249 --- /dev/null +++ b/cross/gcc/Makefile @@ -0,0 +1,110 @@ +PKG_NAME = gcc +#PKG_VERS = 5.5.0 +#PKG_VERS = 6.5.0 +#PKG_VERS = 6.5.0 # --> error: unknown type name '_OBSTACK_SIZE_T' +#PKG_VERS = 7.5.0 # --> error: unknown type name '_OBSTACK_SIZE_T' +PKG_VERS = 8.5.0 +#PKG_VERS = 8.5.0 # --> error: unknown type name '_OBSTACK_SIZE_T' +#PKG_VERS = 9.5.0 # --> error: unknown type name '_OBSTACK_SIZE_T' +#PKG_VERS = 10.4.0 # --> error +++++ +#PKG_VERS = 11.3.0 # --> comme 10.4 +#PKG_VERS = 12.2.0 # --> error: ‘__LIBGCC_SF_MAX__’ undeclared (first use in this function) +PKG_EXT = tar.xz +PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) +PKG_DIST_SITE = http://ftp.gnu.org/gnu/$(PKG_NAME)/$(PKG_NAME)-$(PKG_VERS) +PKG_DIR = $(PKG_NAME)-$(PKG_VERS) + +#DEPENDS = cross/gmp cross/mpfr cross/mpc cross/binutils +#DEPENDS = cross/zlib cross/gmp cross/mpfr cross/mpc cross/isl cross/cloog +DEPENDS = cross/zlib cross/gmp cross/mpfr cross/mpc + +HOMEPAGE = https://gcc.gnu.org/ +COMMENT = The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, Go, and D, as well as libraries for these languages (libstdc++,...). +LICENSE = GPLv2 + +GNU_CONFIGURE = 1 + +PRE_CONFIGURE_TARGET = gcc_pre_configure + +# Apply crosstool-NG patches +#PATCHES_LEVEL = 1 + +# https://gcc.gnu.org/install/configure.html +CONFIGURE_ARGS = --disable-bootstrap +#CONFIGURE_ARGS += --enable-languages=c +CONFIGURE_ARGS += --enable-languages=c,c++ +#CONFIGURE_ARGS += --enable-languages=c,c++,fortran,go,objc,obj-c++ +CONFIGURE_ARGS += --enable-shared +CONFIGURE_ARGS += --enable-threads=posix +CONFIGURE_ARGS += --enable-clocale=gnu +CONFIGURE_ARGS += --disable-plugins +CONFIGURE_ARGS += --disable-multilib +CONFIGURE_ARGS += --with-system-zlib +#CONFIGURE_ARGS += --with-sysroot=$${SYSROOT} + +CONFIGURE_ARGS = --with-sysroot=$(TC_SYSROOT) +# all, default, ada, c, c++, d, fortran, go, jit, lto, m2, objc, obj-c++ +CONFIGURE_ARGS += --enable-languages=c +#CONFIGURE_ARGS += --enable-languages=c,c++ +#CONFIGURE_ARGS += --with-arch=i686 +CONFIGURE_ARGS += --disable-tm-clone-registry +CONFIGURE_ARGS += --disable-multilib +CONFIGURE_ARGS += --enable-long-long +CONFIGURE_ARGS += --enable-default-pie +CONFIGURE_ARGS += --enable-__cxa_atexit +CONFIGURE_ARGS += --enable-cxx-flags=-D_FILE_OFFSET_BITS=64 +CONFIGURE_ARGS += --enable-libmudflap +CONFIGURE_ARGS += --enable-libgomp +CONFIGURE_ARGS += --enable-libssp +CONFIGURE_ARGS += --enable-libquadmath +CONFIGURE_ARGS += --enable-libquadmath-support +#CONFIGURE_ARGS += --enable-libsanitizer +#CONFIGURE_ARGS += --disable-libsanitizer +#CONFIGURE_ARGS += --disable-libiberty +#CONFIGURE_ARGS += libsanitizer_cv_sys_obstack=no +#CONFIGURE_ARGS += libsanitizer_cv_sys_obstack=no +CONFIGURE_ARGS += --enable-libmpx +# Uniquement sur x64? +#CONFIGURE_ARGS += --enable-lto +CONFIGURE_ARGS += --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' +CONFIGURE_ARGS += --enable-threads=posix +# Specify that target libraries should be optimized for code space instead of code speed. +CONFIGURE_ARGS += --enable-target-optspace +CONFIGURE_ARGS += --disable-plugin +CONFIGURE_ARGS += --enable-gold +CONFIGURE_ARGS += --enable-version-specific-runtime-libs +# Si pas c++ alors ne sert a rien +#CONFIGURE_ARGS += --with-gxx-include-dir=$(WORK_DIR)/$(STAGING_INSTALL_PREFIX)/include/c++/$(PKG_VERS) +#CONFIGURE_ARGS += --program-prefix=i686-syno_r1000-linux-gnu- +CONFIGURE_ARGS += --program-suffix=-8.5 + +# Define if you want to use __cxa_atexit, rather than atexit, to register C++ destructors +# for local statics and global objects. This is essential for fully standards-compliant +# handling of destructors, but requires __cxa_atexit in libc. +# *** This option is currently only available on systems with GNU libc.*** +# When enabled, this will cause -fuse-cxa-atexit to be passed by default. +#CONFIGURE_ARGS += --enable-__cxa_atexit + +# Otherwise will fail on any error +ADDITIONAL_CFLAGS += -Wno-error +#ADDITIONAL_CFLAGS += -fno-operator-names +#ADDITIONAL_CPPFLAGS += -fno-operator-names +#ADDITIONAL_CFLAGS += -std=gnu99 +#ADDITIONAL_CFLAGS += -std=c99 +#ADDITIONAL_CXXFLAGS += -D_GLIBCXX_USE_C99 -D_GLIBCXX_USE_C99_MATH +#ADDITIONAL_CXXFLAGS += -D_GLIBCXX_HAVE_OBSOLETE_ISNAN -D_GLIBCXX_HAVE_OBSOLETE_ISINF +#ADDITIONAL_CXXFLAGS += -D_OBSTACK_INTERFACE_VERSION=1 +#ADDITIONAL_CFLAGS += -D_OBSTACK_INTERFACE_VERSION=1 +ADDITIONAL_CFLAGS += -I/home/spksrc/gdb/spksrc/cross/gcc/work-x64-7.1/gcc-6.5.0/include +ADDITIONAL_CXXFLAGS += -I/home/spksrc/gdb/spksrc/cross/gcc/work-x64-7.1/gcc-6.5.0/include +ADDITIONAL_CPPFLAGS += -I/home/spksrc/gdb/spksrc/cross/gcc/work-x64-7.1/gcc-6.5.0/include + +include ../../mk/spksrc.cross-cc.mk + +.PHONY: gcc_pre_configure +gcc_pre_configure: + @echo CONFIGURE_ARGS: $(CONFIGURE_ARGS) + @echo TC_SYSROOT: $(TC_SYSROOT) + @echo TC_SYSROOT: $${TC_SYSROOT} + @echo SYSROOT: $${SYSROOT} + @echo GLIBC -I$(TC_SYSROOT)/usr/include diff --git a/cross/gcc/Makefile-GCC5-OK-x64-TEST1 b/cross/gcc/Makefile-GCC5-OK-x64-TEST1 new file mode 100644 index 00000000000..befda913d82 --- /dev/null +++ b/cross/gcc/Makefile-GCC5-OK-x64-TEST1 @@ -0,0 +1,98 @@ +PKG_NAME = gcc +PKG_VERS = 5.5.0 +#PKG_VERS = 6.5.0 # --> error: unknown type name '_OBSTACK_SIZE_T' +#PKG_VERS = 7.5.0 # --> error: unknown type name '_OBSTACK_SIZE_T' +#PKG_VERS = 8.5.0 +#PKG_VERS = 8.5.0 # --> error: unknown type name '_OBSTACK_SIZE_T' +#PKG_VERS = 9.5.0 # --> error: unknown type name '_OBSTACK_SIZE_T' +#PKG_VERS = 10.4.0 # --> error +++++ +#PKG_VERS = 11.3.0 # --> comme 10.4 +#PKG_VERS = 12.2.0 # --> error: ‘__LIBGCC_SF_MAX__’ undeclared (first use in this function) +PKG_EXT = tar.xz +PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) +PKG_DIST_SITE = http://ftp.gnu.org/gnu/$(PKG_NAME)/$(PKG_NAME)-$(PKG_VERS) +PKG_DIR = $(PKG_NAME)-$(PKG_VERS) + +#DEPENDS = cross/gmp cross/mpfr cross/mpc cross/binutils +#DEPENDS = cross/zlib cross/gmp cross/mpfr cross/mpc cross/isl cross/cloog +DEPENDS = cross/zlib cross/gmp cross/mpfr cross/mpc + +HOMEPAGE = https://gcc.gnu.org/ +COMMENT = The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, Go, and D, as well as libraries for these languages (libstdc++,...). +LICENSE = GPLv2 + +GNU_CONFIGURE = 1 + +PRE_CONFIGURE_TARGET = gcc_pre_configure + +# Apply crosstool-NG patches +#PATCHES_LEVEL = 1 + +# https://gcc.gnu.org/install/configure.html +CONFIGURE_ARGS = --disable-bootstrap +#CONFIGURE_ARGS += --enable-languages=c +CONFIGURE_ARGS += --enable-languages=c,c++ +#CONFIGURE_ARGS += --enable-languages=c,c++,fortran,go,objc,obj-c++ +CONFIGURE_ARGS += --enable-shared +CONFIGURE_ARGS += --enable-threads=posix +CONFIGURE_ARGS += --enable-clocale=gnu +CONFIGURE_ARGS += --disable-plugins +CONFIGURE_ARGS += --disable-multilib +CONFIGURE_ARGS += --with-system-zlib +#CONFIGURE_ARGS += --with-sysroot=$${SYSROOT} + +CONFIGURE_ARGS = --with-sysroot=$(TC_SYSROOT) +# all, default, ada, c, c++, d, fortran, go, jit, lto, m2, objc, obj-c++ +CONFIGURE_ARGS += --enable-languages=c +#CONFIGURE_ARGS += --enable-languages=c,c++ +#CONFIGURE_ARGS += --with-arch=i686 +CONFIGURE_ARGS += --disable-tm-clone-registry +CONFIGURE_ARGS += --disable-multilib +CONFIGURE_ARGS += --enable-long-long +CONFIGURE_ARGS += --enable-default-pie +CONFIGURE_ARGS += --enable-__cxa_atexit +CONFIGURE_ARGS += --enable-cxx-flags=-D_FILE_OFFSET_BITS=64 +CONFIGURE_ARGS += --enable-libmudflap +CONFIGURE_ARGS += --enable-libgomp +CONFIGURE_ARGS += --enable-libssp +CONFIGURE_ARGS += --enable-libquadmath +CONFIGURE_ARGS += --enable-libquadmath-support +CONFIGURE_ARGS += --enable-libsanitizer +CONFIGURE_ARGS += --enable-libmpx +CONFIGURE_ARGS += --enable-lto +CONFIGURE_ARGS += --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' +CONFIGURE_ARGS += --enable-threads=posix +# Specify that target libraries should be optimized for code space instead of code speed. +#CONFIGURE_ARGS += --enable-target-optspace +CONFIGURE_ARGS += --disable-plugin +CONFIGURE_ARGS += --enable-gold +CONFIGURE_ARGS += --enable-version-specific-runtime-libs +CONFIGURE_ARGS += --with-gxx-include-dir=$(WORK_DIR)/$(STAGING_INSTALL_PREFIX)/include/c++/$(PKG_VERS) +#CONFIGURE_ARGS += --program-prefix=i686-syno_r1000-linux-gnu- +CONFIGURE_ARGS += --program-suffix=-8.5 + +# Define if you want to use __cxa_atexit, rather than atexit, to register C++ destructors +# for local statics and global objects. This is essential for fully standards-compliant +# handling of destructors, but requires __cxa_atexit in libc. +# *** This option is currently only available on systems with GNU libc.*** +# When enabled, this will cause -fuse-cxa-atexit to be passed by default. +#CONFIGURE_ARGS += --enable-__cxa_atexit + +# Otherwise will fail on any error +ADDITIONAL_CFLAGS += -Wno-error +#ADDITIONAL_CFLAGS += -fno-operator-names +#ADDITIONAL_CPPFLAGS += -fno-operator-names +#ADDITIONAL_CFLAGS += -std=gnu99 +#ADDITIONAL_CFLAGS += -std=c99 +#ADDITIONAL_CXXFLAGS += -D_GLIBCXX_USE_C99 -D_GLIBCXX_USE_C99_MATH +#ADDITIONAL_CXXFLAGS += -D_GLIBCXX_HAVE_OBSOLETE_ISNAN -D_GLIBCXX_HAVE_OBSOLETE_ISINF + +include ../../mk/spksrc.cross-cc.mk + +.PHONY: gcc_pre_configure +gcc_pre_configure: + @echo CONFIGURE_ARGS: $(CONFIGURE_ARGS) + @echo TC_SYSROOT: $(TC_SYSROOT) + @echo TC_SYSROOT: $${TC_SYSROOT} + @echo SYSROOT: $${SYSROOT} + @echo GLIBC -I$(TC_SYSROOT)/usr/include diff --git a/cross/gcc/digests b/cross/gcc/digests new file mode 100644 index 00000000000..8ac56714d87 --- /dev/null +++ b/cross/gcc/digests @@ -0,0 +1,3 @@ +gcc-8.5.0.tar.xz SHA1 2e93f85672f57023d45c20fef9572b72f8a3e7f1 +gcc-8.5.0.tar.xz SHA256 d308841a511bb830a6100397b0042db24ce11f642dab6ea6ee44842e5325ed50 +gcc-8.5.0.tar.xz MD5 0c1f625768840187ef3b10adebe8e3b0 From 9f31cd52f59a2ab36bd795c59c967ac791c237fb Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Sun, 9 Apr 2023 17:18:04 +0000 Subject: [PATCH 55/61] LLVM: Update to version 16.0.1 --- cross/llvm-latest/Makefile | 2 +- cross/llvm-latest/digests | 6 +++--- .../{patches => patches.orig}/001-allpatches-20221227.patch | 0 spk/synocli-devel/Makefile | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) rename cross/mpfr/{patches => patches.orig}/001-allpatches-20221227.patch (100%) diff --git a/cross/llvm-latest/Makefile b/cross/llvm-latest/Makefile index 9bf5bdd1bfe..05facc1246f 100644 --- a/cross/llvm-latest/Makefile +++ b/cross/llvm-latest/Makefile @@ -1,5 +1,5 @@ PKG_NAME = llvm -PKG_VERS = 16.0.0 +PKG_VERS = 16.0.1 PKG_EXT = tar.xz PKG_DIST_NAME = $(PKG_NAME)-project-$(PKG_VERS).src.$(PKG_EXT) PKG_DIST_SITE = https://github.com/llvm/llvm-project/releases/download/llvmorg-$(PKG_VERS) diff --git a/cross/llvm-latest/digests b/cross/llvm-latest/digests index 84ba9e582e7..5b7f99f2c8e 100644 --- a/cross/llvm-latest/digests +++ b/cross/llvm-latest/digests @@ -1,3 +1,3 @@ -llvm-project-16.0.0.src.tar.xz SHA1 2c1c3c78d8ae983dfc09b33b69b8ee47cae37430 -llvm-project-16.0.0.src.tar.xz SHA256 9a56d906a2c81f16f06efc493a646d497c53c2f4f28f0cb1f3c8da7f74350254 -llvm-project-16.0.0.src.tar.xz MD5 28a0d936c3e0fb2de43e466a4433f9e4 +llvm-project-16.0.1.src.tar.xz SHA1 e9a008977aa3a0ce1d17436579236de49a812201 +llvm-project-16.0.1.src.tar.xz SHA256 ab7e3b95adb88fd5b669ca8c1d3c1e8d2a601c4478290d3ae31d8d70e96f2064 +llvm-project-16.0.1.src.tar.xz MD5 5600e75a693dbbbf0a542e4bdeadc494 diff --git a/cross/mpfr/patches/001-allpatches-20221227.patch b/cross/mpfr/patches.orig/001-allpatches-20221227.patch similarity index 100% rename from cross/mpfr/patches/001-allpatches-20221227.patch rename to cross/mpfr/patches.orig/001-allpatches-20221227.patch diff --git a/spk/synocli-devel/Makefile b/spk/synocli-devel/Makefile index 95c7bf259ab..871690a6322 100644 --- a/spk/synocli-devel/Makefile +++ b/spk/synocli-devel/Makefile @@ -5,7 +5,7 @@ SPK_ICON = src/synocli-devel.png CHANGELOG = "1. Initial release of synocli-devel" MAINTAINER = SynoCommunity -DESCRIPTION = SynoCli Development Tools provides a set of command-line utilities for system development and debugging: automake 1.65.5, autoconf 2.71, binutils 2.39$(OPTIONAL_DESC). +DESCRIPTION = SynoCli Development Tools provides a set of command-line utilities for system development and debugging: automake 1.65.5, autoconf 2.71, binutils 2.39$(OPTIONAL_DESC), make 4.4.1, pkg-config 0.29.2. DISPLAY_NAME = SynoCli Development Tools STARTABLE = no @@ -104,7 +104,7 @@ include ../../mk/spksrc.spk.mk ## LLVM ## ifeq ($(call version_ge, $(TC_GCC), 5.1),1) -OPTIONAL_DESC += ", LLVM 16.0" +OPTIONAL_DESC += ", LLVM 16.0.1" SPK_COMMANDS += bin/clang-16 else OPTIONAL_DESC += ", LLVM 9.0.1" From 5e96ce2db471809ca3541aa40d173a1f6a261c68 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Sun, 9 Apr 2023 20:02:30 +0000 Subject: [PATCH 56/61] cloog: Add version 0.20.0 --- cross/cloog/Makefile | 25 +++++++++++++++++++++++++ cross/cloog/PLIST | 4 ++++ cross/cloog/digests | 3 +++ 3 files changed, 32 insertions(+) create mode 100644 cross/cloog/Makefile create mode 100644 cross/cloog/PLIST create mode 100644 cross/cloog/digests diff --git a/cross/cloog/Makefile b/cross/cloog/Makefile new file mode 100644 index 00000000000..83ea2ac70e8 --- /dev/null +++ b/cross/cloog/Makefile @@ -0,0 +1,25 @@ +PKG_NAME = cloog +PKG_VERS = 0.20.0 +PKG_EXT = tar.gz +PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) +PKG_DIST_SITE = https://github.com/periscop/cloog/archive +#PKG_DIST_SITE = http://www.bastoul.net/cloog/pages/download/count.php3?url=./ +PKG_DIR = $(PKG_NAME)-$(PKG_NAME)-$(PKG_VERS) + +DEPENDS = cross/isl + +HOMEPAGE = http://www.bastoul.net/cloog/index.php +COMMENT = CLooG is a free software and library to generate code for scanning Z-polyhedra. +LICENSE = LGPL-2.1 + +GNU_CONFIGURE = 1 +PRE_CONFIGURE_TARGET = cloog_pre_configure + +CONFIGURE_ARGS +=--with-isl=system +CONFIGURE_ARGS +=--with-gmp=system + +include ../../mk/spksrc.cross-cc.mk + +.PHONY: cloog_pre_configure +cloog_pre_configure: + @$(RUN) ; ./autogen.sh diff --git a/cross/cloog/PLIST b/cross/cloog/PLIST new file mode 100644 index 00000000000..6705e7dc8fd --- /dev/null +++ b/cross/cloog/PLIST @@ -0,0 +1,4 @@ +bin:bin/cloog +lnk:lib/libcloog-isl.so +lnk:lib/libcloog-isl.so.4 +lib:lib/libcloog-isl.so.4.0.0 diff --git a/cross/cloog/digests b/cross/cloog/digests new file mode 100644 index 00000000000..2b9bc78c950 --- /dev/null +++ b/cross/cloog/digests @@ -0,0 +1,3 @@ +cloog-0.20.0.tar.gz SHA1 266136eefbc519cf2b77dbd67c225656d28f0094 +cloog-0.20.0.tar.gz SHA256 e6bdbe02a409f216ec724e26317d122baa17467e05fe5ad3cc8591f2f0a5df47 +cloog-0.20.0.tar.gz MD5 5f068fdb203ea2bc8fd4e173a996e42f From 327dff561e113b9869108d537969bd7df4430330 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Sun, 9 Apr 2023 20:03:01 +0000 Subject: [PATCH 57/61] isl: Add version 0.25 --- cross/isl/Makefile | 16 ++++++++++++++++ cross/isl/PLIST | 3 +++ cross/isl/digests | 3 +++ 3 files changed, 22 insertions(+) create mode 100644 cross/isl/Makefile create mode 100644 cross/isl/PLIST create mode 100644 cross/isl/digests diff --git a/cross/isl/Makefile b/cross/isl/Makefile new file mode 100644 index 00000000000..b3f27e4a868 --- /dev/null +++ b/cross/isl/Makefile @@ -0,0 +1,16 @@ +PKG_NAME = isl +PKG_VERS = 0.25 +PKG_EXT = tar.xz +PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) +PKG_DIST_SITE = https://libisl.sourceforge.io/ +PKG_DIR = $(PKG_NAME)-$(PKG_VERS) + +DEPENDS = cross/gmp + +HOMEPAGE = https://libisl.sourceforge.io/ +COMMENT = isl is a library for manipulating sets and relations of integer points bounded by linear constraints. +LICENSE = MIT + +GNU_CONFIGURE = 1 + +include ../../mk/spksrc.cross-cc.mk diff --git a/cross/isl/PLIST b/cross/isl/PLIST new file mode 100644 index 00000000000..7974ea3d048 --- /dev/null +++ b/cross/isl/PLIST @@ -0,0 +1,3 @@ +lnk:lib/libisl.so +lnk:lib/libisl.so.23 +lib:lib/libisl.so.23.2.0 diff --git a/cross/isl/digests b/cross/isl/digests new file mode 100644 index 00000000000..e5877121858 --- /dev/null +++ b/cross/isl/digests @@ -0,0 +1,3 @@ +isl-0.25.tar.xz SHA1 247eecb538ff310e8fb77badd629ee32a3895a98 +isl-0.25.tar.xz SHA256 be7b210647ccadf90a2f0b000fca11a4d40546374a850db67adb32fad4b230d9 +isl-0.25.tar.xz MD5 69cee1cb1db3a5a6856095958ee1ff6c From fc29567a4ac67802b82619d1adea28fe76eb171b Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Sun, 9 Apr 2023 20:04:24 +0000 Subject: [PATCH 58/61] synocli-devel: Update homepage & license --- spk/synocli-devel/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spk/synocli-devel/Makefile b/spk/synocli-devel/Makefile index 871690a6322..075012a11d7 100644 --- a/spk/synocli-devel/Makefile +++ b/spk/synocli-devel/Makefile @@ -9,8 +9,8 @@ DESCRIPTION = SynoCli Development Tools provides a set of command-line utilities DISPLAY_NAME = SynoCli Development Tools STARTABLE = no -HOMEPAGE = https://www.sourceware.org/gdb/ -LICENSE = GPLv2 +HOMEPAGE = https://github.com/SynoCommunity/spksrc/wiki/FAQ-SynoCliDevel +LICENSE = Each tool is licensed under it\'s respective license. SPK_DEPENDS = "Perl" From f68296ac7d48dc2a1a38faeb9dcbe7046702116e Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Sun, 9 Apr 2023 20:12:51 +0000 Subject: [PATCH 59/61] m4 & make: Fix URL --- cross/m4/Makefile | 2 +- cross/make/Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cross/m4/Makefile b/cross/m4/Makefile index aaa98fc3a07..4339d5146e8 100644 --- a/cross/m4/Makefile +++ b/cross/m4/Makefile @@ -7,7 +7,7 @@ PKG_DIR = $(PKG_NAME)-$(PKG_VERS) DEPENDS = cross/libiconv -HOMEPAGE = https://ftp.gnu.org/gnu/m4/ +HOMEPAGE = https://www.gnu.org/software/m4/ COMMENT = GNU M4 is an implementation of the traditional Unix macro processor. It is mostly SVR4 compatible although it has some extensions LICENSE = GPLv3 diff --git a/cross/make/Makefile b/cross/make/Makefile index 5e75ec5944e..73ea255bc74 100644 --- a/cross/make/Makefile +++ b/cross/make/Makefile @@ -7,7 +7,7 @@ PKG_DIR = $(PKG_NAME)-$(PKG_VERS) DEPENDS = -HOMEPAGE = https://ftp.gnu.org/gnu/make/ +HOMEPAGE = https://www.gnu.org/software/make/ COMMENT = GNU Make is a tool which controls the generation of executables and other non-source files of a program from the program's source files LICENSE = GPLv3+ From 7af99869f75a2f1877360f86c4cf372696472fc0 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Sun, 9 Apr 2023 20:32:40 +0000 Subject: [PATCH 60/61] mpfr: Update from version 4.1.1 to 4.2.0 --- cross/mpfr/Makefile | 4 +- cross/mpfr/PLIST | 2 +- cross/mpfr/digests | 6 +- .../001-allpatches-20221227.patch | 83 ------------------- 4 files changed, 6 insertions(+), 89 deletions(-) delete mode 100644 cross/mpfr/patches.orig/001-allpatches-20221227.patch diff --git a/cross/mpfr/Makefile b/cross/mpfr/Makefile index 46232cd00de..bd4b8ae56a7 100644 --- a/cross/mpfr/Makefile +++ b/cross/mpfr/Makefile @@ -1,5 +1,5 @@ PKG_NAME = mpfr -PKG_VERS = 4.1.1 +PKG_VERS = 4.2.0 PKG_EXT = tar.xz PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) PKG_DIST_SITE = https://ftp.gnu.org/gnu/mpfr @@ -15,7 +15,7 @@ GNU_CONFIGURE = 1 # Cumulative patches for version 4.1.1-p1 # https://www.mpfr.org/mpfr-4.1.1/allpatches -PATCHES_LEVEL = 1 +#PATCHES_LEVEL = 1 CONFIGURE_ARGS = --with-gmp=$(STAGING_INSTALL_PREFIX) CONFIGURE_ARGS += --disable-static diff --git a/cross/mpfr/PLIST b/cross/mpfr/PLIST index 08c6ba632ab..96cd1757cc7 100644 --- a/cross/mpfr/PLIST +++ b/cross/mpfr/PLIST @@ -1,3 +1,3 @@ lnk:lib/libmpfr.so lnk:lib/libmpfr.so.6 -lib:lib/libmpfr.so.6.1.1 +lib:lib/libmpfr.so.6.2.0 diff --git a/cross/mpfr/digests b/cross/mpfr/digests index 27d75389354..1448b84a907 100644 --- a/cross/mpfr/digests +++ b/cross/mpfr/digests @@ -1,3 +1,3 @@ -mpfr-4.1.1.tar.xz SHA1 2355e921d6c97c898cfe7a57dd7e72725f1fded4 -mpfr-4.1.1.tar.xz SHA256 ffd195bd567dbaffc3b98b23fd00aad0537680c9896171e44fe3ff79e28ac33d -mpfr-4.1.1.tar.xz MD5 d182b62e811f744d149b14540d8e922b +mpfr-4.2.0.tar.xz SHA1 4f734ca3ebceac28e2f944b131a47133b19e2c5e +mpfr-4.2.0.tar.xz SHA256 06a378df13501248c1b2db5aa977a2c8126ae849a9d9b7be2546fb4a9c26d993 +mpfr-4.2.0.tar.xz MD5 a25091f337f25830c16d2054d74b5af7 diff --git a/cross/mpfr/patches.orig/001-allpatches-20221227.patch b/cross/mpfr/patches.orig/001-allpatches-20221227.patch deleted file mode 100644 index 0566c80b378..00000000000 --- a/cross/mpfr/patches.orig/001-allpatches-20221227.patch +++ /dev/null @@ -1,83 +0,0 @@ -diff -Naurd mpfr-4.1.1-a/PATCHES mpfr-4.1.1-b/PATCHES ---- mpfr-4.1.1-a/PATCHES 2022-11-23 11:45:26.800476079 +0000 -+++ mpfr-4.1.1-b/PATCHES 2022-11-23 11:45:26.844475966 +0000 -@@ -0,0 +1 @@ -+mpfr_custom_get_kind -diff -Naurd mpfr-4.1.1-a/VERSION mpfr-4.1.1-b/VERSION ---- mpfr-4.1.1-a/VERSION 2022-11-17 13:28:44.000000000 +0000 -+++ mpfr-4.1.1-b/VERSION 2022-11-23 11:45:26.844475966 +0000 -@@ -1 +1 @@ --4.1.1 -+4.1.1-p1 -diff -Naurd mpfr-4.1.1-a/src/mpfr.h mpfr-4.1.1-b/src/mpfr.h ---- mpfr-4.1.1-a/src/mpfr.h 2022-11-17 13:28:44.000000000 +0000 -+++ mpfr-4.1.1-b/src/mpfr.h 2022-11-23 11:45:26.840475978 +0000 -@@ -27,7 +27,7 @@ - #define MPFR_VERSION_MAJOR 4 - #define MPFR_VERSION_MINOR 1 - #define MPFR_VERSION_PATCHLEVEL 1 --#define MPFR_VERSION_STRING "4.1.1" -+#define MPFR_VERSION_STRING "4.1.1-p1" - - /* User macros: - MPFR_USE_FILE: Define it to make MPFR define functions dealing -@@ -1027,7 +1027,7 @@ - #if __GNUC__ > 2 || __GNUC_MINOR__ >= 95 - #define mpfr_custom_get_kind(x) \ - __extension__ ({ \ -- mpfr_ptr _x = (x); \ -+ mpfr_srcptr _x = (x); \ - _x->_mpfr_exp > __MPFR_EXP_INF ? \ - (mpfr_int) MPFR_REGULAR_KIND * MPFR_SIGN (_x) \ - : _x->_mpfr_exp == __MPFR_EXP_INF ? \ -diff -Naurd mpfr-4.1.1-a/src/version.c mpfr-4.1.1-b/src/version.c ---- mpfr-4.1.1-a/src/version.c 2022-11-17 13:28:44.000000000 +0000 -+++ mpfr-4.1.1-b/src/version.c 2022-11-23 11:45:26.844475966 +0000 -@@ -25,5 +25,5 @@ - const char * - mpfr_get_version (void) - { -- return "4.1.1"; -+ return "4.1.1-p1"; - } -diff -Naurd mpfr-4.1.1-a/tests/tstckintc.c mpfr-4.1.1-b/tests/tstckintc.c ---- mpfr-4.1.1-a/tests/tstckintc.c 2022-05-06 13:47:17.000000000 +0000 -+++ mpfr-4.1.1-b/tests/tstckintc.c 2022-11-23 11:45:26.836475987 +0000 -@@ -295,14 +295,16 @@ - test_nan_inf_zero (void) - { - mpfr_ptr val; -+ mpfr_srcptr sval; /* for compilation error checking */ - int sign; - int kind; - - reset_stack (); - - val = new_mpfr (MPFR_PREC_MIN); -+ sval = val; - mpfr_set_nan (val); -- kind = (mpfr_custom_get_kind) (val); -+ kind = (mpfr_custom_get_kind) (sval); - if (kind != MPFR_NAN_KIND) - { - printf ("mpfr_custom_get_kind error: "); -@@ -380,7 +382,8 @@ - dummy_set_si (long si) - { - mpfr_t x; -- long * r = dummy_new (); -+ mpfr_srcptr px; /* for compilation error checking */ -+ long *r = dummy_new (); - int i1, i2, i3, i4, i5; - - /* Check that the type "void *" can be used, like with the function. -@@ -405,7 +408,8 @@ - MPFR_ASSERTN (i5 == 1); - - mpfr_set_si (x, si, MPFR_RNDN); -- r[0] = mpfr_custom_get_kind (x); -+ px = x; -+ r[0] = mpfr_custom_get_kind (px); - - /* Check that the type "void *" can be used in C, like with the function - (forbidden in C++). Also check side effects. */ From 24b930da61624cf41b6a1ab4c1cfb4e8717f4838 Mon Sep 17 00:00:00 2001 From: Vincent Fortier Date: Mon, 10 Apr 2023 15:16:57 +0000 Subject: [PATCH 61/61] gcc: Removal of tentative of cross-compiling GCC suite --- cross/gcc/Makefile | 110 --------------------------- cross/gcc/Makefile-GCC5-OK-x64-TEST1 | 98 ------------------------ cross/gcc/digests | 3 - 3 files changed, 211 deletions(-) delete mode 100644 cross/gcc/Makefile delete mode 100644 cross/gcc/Makefile-GCC5-OK-x64-TEST1 delete mode 100644 cross/gcc/digests diff --git a/cross/gcc/Makefile b/cross/gcc/Makefile deleted file mode 100644 index b091b55a249..00000000000 --- a/cross/gcc/Makefile +++ /dev/null @@ -1,110 +0,0 @@ -PKG_NAME = gcc -#PKG_VERS = 5.5.0 -#PKG_VERS = 6.5.0 -#PKG_VERS = 6.5.0 # --> error: unknown type name '_OBSTACK_SIZE_T' -#PKG_VERS = 7.5.0 # --> error: unknown type name '_OBSTACK_SIZE_T' -PKG_VERS = 8.5.0 -#PKG_VERS = 8.5.0 # --> error: unknown type name '_OBSTACK_SIZE_T' -#PKG_VERS = 9.5.0 # --> error: unknown type name '_OBSTACK_SIZE_T' -#PKG_VERS = 10.4.0 # --> error +++++ -#PKG_VERS = 11.3.0 # --> comme 10.4 -#PKG_VERS = 12.2.0 # --> error: ‘__LIBGCC_SF_MAX__’ undeclared (first use in this function) -PKG_EXT = tar.xz -PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) -PKG_DIST_SITE = http://ftp.gnu.org/gnu/$(PKG_NAME)/$(PKG_NAME)-$(PKG_VERS) -PKG_DIR = $(PKG_NAME)-$(PKG_VERS) - -#DEPENDS = cross/gmp cross/mpfr cross/mpc cross/binutils -#DEPENDS = cross/zlib cross/gmp cross/mpfr cross/mpc cross/isl cross/cloog -DEPENDS = cross/zlib cross/gmp cross/mpfr cross/mpc - -HOMEPAGE = https://gcc.gnu.org/ -COMMENT = The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, Go, and D, as well as libraries for these languages (libstdc++,...). -LICENSE = GPLv2 - -GNU_CONFIGURE = 1 - -PRE_CONFIGURE_TARGET = gcc_pre_configure - -# Apply crosstool-NG patches -#PATCHES_LEVEL = 1 - -# https://gcc.gnu.org/install/configure.html -CONFIGURE_ARGS = --disable-bootstrap -#CONFIGURE_ARGS += --enable-languages=c -CONFIGURE_ARGS += --enable-languages=c,c++ -#CONFIGURE_ARGS += --enable-languages=c,c++,fortran,go,objc,obj-c++ -CONFIGURE_ARGS += --enable-shared -CONFIGURE_ARGS += --enable-threads=posix -CONFIGURE_ARGS += --enable-clocale=gnu -CONFIGURE_ARGS += --disable-plugins -CONFIGURE_ARGS += --disable-multilib -CONFIGURE_ARGS += --with-system-zlib -#CONFIGURE_ARGS += --with-sysroot=$${SYSROOT} - -CONFIGURE_ARGS = --with-sysroot=$(TC_SYSROOT) -# all, default, ada, c, c++, d, fortran, go, jit, lto, m2, objc, obj-c++ -CONFIGURE_ARGS += --enable-languages=c -#CONFIGURE_ARGS += --enable-languages=c,c++ -#CONFIGURE_ARGS += --with-arch=i686 -CONFIGURE_ARGS += --disable-tm-clone-registry -CONFIGURE_ARGS += --disable-multilib -CONFIGURE_ARGS += --enable-long-long -CONFIGURE_ARGS += --enable-default-pie -CONFIGURE_ARGS += --enable-__cxa_atexit -CONFIGURE_ARGS += --enable-cxx-flags=-D_FILE_OFFSET_BITS=64 -CONFIGURE_ARGS += --enable-libmudflap -CONFIGURE_ARGS += --enable-libgomp -CONFIGURE_ARGS += --enable-libssp -CONFIGURE_ARGS += --enable-libquadmath -CONFIGURE_ARGS += --enable-libquadmath-support -#CONFIGURE_ARGS += --enable-libsanitizer -#CONFIGURE_ARGS += --disable-libsanitizer -#CONFIGURE_ARGS += --disable-libiberty -#CONFIGURE_ARGS += libsanitizer_cv_sys_obstack=no -#CONFIGURE_ARGS += libsanitizer_cv_sys_obstack=no -CONFIGURE_ARGS += --enable-libmpx -# Uniquement sur x64? -#CONFIGURE_ARGS += --enable-lto -CONFIGURE_ARGS += --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' -CONFIGURE_ARGS += --enable-threads=posix -# Specify that target libraries should be optimized for code space instead of code speed. -CONFIGURE_ARGS += --enable-target-optspace -CONFIGURE_ARGS += --disable-plugin -CONFIGURE_ARGS += --enable-gold -CONFIGURE_ARGS += --enable-version-specific-runtime-libs -# Si pas c++ alors ne sert a rien -#CONFIGURE_ARGS += --with-gxx-include-dir=$(WORK_DIR)/$(STAGING_INSTALL_PREFIX)/include/c++/$(PKG_VERS) -#CONFIGURE_ARGS += --program-prefix=i686-syno_r1000-linux-gnu- -CONFIGURE_ARGS += --program-suffix=-8.5 - -# Define if you want to use __cxa_atexit, rather than atexit, to register C++ destructors -# for local statics and global objects. This is essential for fully standards-compliant -# handling of destructors, but requires __cxa_atexit in libc. -# *** This option is currently only available on systems with GNU libc.*** -# When enabled, this will cause -fuse-cxa-atexit to be passed by default. -#CONFIGURE_ARGS += --enable-__cxa_atexit - -# Otherwise will fail on any error -ADDITIONAL_CFLAGS += -Wno-error -#ADDITIONAL_CFLAGS += -fno-operator-names -#ADDITIONAL_CPPFLAGS += -fno-operator-names -#ADDITIONAL_CFLAGS += -std=gnu99 -#ADDITIONAL_CFLAGS += -std=c99 -#ADDITIONAL_CXXFLAGS += -D_GLIBCXX_USE_C99 -D_GLIBCXX_USE_C99_MATH -#ADDITIONAL_CXXFLAGS += -D_GLIBCXX_HAVE_OBSOLETE_ISNAN -D_GLIBCXX_HAVE_OBSOLETE_ISINF -#ADDITIONAL_CXXFLAGS += -D_OBSTACK_INTERFACE_VERSION=1 -#ADDITIONAL_CFLAGS += -D_OBSTACK_INTERFACE_VERSION=1 -ADDITIONAL_CFLAGS += -I/home/spksrc/gdb/spksrc/cross/gcc/work-x64-7.1/gcc-6.5.0/include -ADDITIONAL_CXXFLAGS += -I/home/spksrc/gdb/spksrc/cross/gcc/work-x64-7.1/gcc-6.5.0/include -ADDITIONAL_CPPFLAGS += -I/home/spksrc/gdb/spksrc/cross/gcc/work-x64-7.1/gcc-6.5.0/include - -include ../../mk/spksrc.cross-cc.mk - -.PHONY: gcc_pre_configure -gcc_pre_configure: - @echo CONFIGURE_ARGS: $(CONFIGURE_ARGS) - @echo TC_SYSROOT: $(TC_SYSROOT) - @echo TC_SYSROOT: $${TC_SYSROOT} - @echo SYSROOT: $${SYSROOT} - @echo GLIBC -I$(TC_SYSROOT)/usr/include diff --git a/cross/gcc/Makefile-GCC5-OK-x64-TEST1 b/cross/gcc/Makefile-GCC5-OK-x64-TEST1 deleted file mode 100644 index befda913d82..00000000000 --- a/cross/gcc/Makefile-GCC5-OK-x64-TEST1 +++ /dev/null @@ -1,98 +0,0 @@ -PKG_NAME = gcc -PKG_VERS = 5.5.0 -#PKG_VERS = 6.5.0 # --> error: unknown type name '_OBSTACK_SIZE_T' -#PKG_VERS = 7.5.0 # --> error: unknown type name '_OBSTACK_SIZE_T' -#PKG_VERS = 8.5.0 -#PKG_VERS = 8.5.0 # --> error: unknown type name '_OBSTACK_SIZE_T' -#PKG_VERS = 9.5.0 # --> error: unknown type name '_OBSTACK_SIZE_T' -#PKG_VERS = 10.4.0 # --> error +++++ -#PKG_VERS = 11.3.0 # --> comme 10.4 -#PKG_VERS = 12.2.0 # --> error: ‘__LIBGCC_SF_MAX__’ undeclared (first use in this function) -PKG_EXT = tar.xz -PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT) -PKG_DIST_SITE = http://ftp.gnu.org/gnu/$(PKG_NAME)/$(PKG_NAME)-$(PKG_VERS) -PKG_DIR = $(PKG_NAME)-$(PKG_VERS) - -#DEPENDS = cross/gmp cross/mpfr cross/mpc cross/binutils -#DEPENDS = cross/zlib cross/gmp cross/mpfr cross/mpc cross/isl cross/cloog -DEPENDS = cross/zlib cross/gmp cross/mpfr cross/mpc - -HOMEPAGE = https://gcc.gnu.org/ -COMMENT = The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, Go, and D, as well as libraries for these languages (libstdc++,...). -LICENSE = GPLv2 - -GNU_CONFIGURE = 1 - -PRE_CONFIGURE_TARGET = gcc_pre_configure - -# Apply crosstool-NG patches -#PATCHES_LEVEL = 1 - -# https://gcc.gnu.org/install/configure.html -CONFIGURE_ARGS = --disable-bootstrap -#CONFIGURE_ARGS += --enable-languages=c -CONFIGURE_ARGS += --enable-languages=c,c++ -#CONFIGURE_ARGS += --enable-languages=c,c++,fortran,go,objc,obj-c++ -CONFIGURE_ARGS += --enable-shared -CONFIGURE_ARGS += --enable-threads=posix -CONFIGURE_ARGS += --enable-clocale=gnu -CONFIGURE_ARGS += --disable-plugins -CONFIGURE_ARGS += --disable-multilib -CONFIGURE_ARGS += --with-system-zlib -#CONFIGURE_ARGS += --with-sysroot=$${SYSROOT} - -CONFIGURE_ARGS = --with-sysroot=$(TC_SYSROOT) -# all, default, ada, c, c++, d, fortran, go, jit, lto, m2, objc, obj-c++ -CONFIGURE_ARGS += --enable-languages=c -#CONFIGURE_ARGS += --enable-languages=c,c++ -#CONFIGURE_ARGS += --with-arch=i686 -CONFIGURE_ARGS += --disable-tm-clone-registry -CONFIGURE_ARGS += --disable-multilib -CONFIGURE_ARGS += --enable-long-long -CONFIGURE_ARGS += --enable-default-pie -CONFIGURE_ARGS += --enable-__cxa_atexit -CONFIGURE_ARGS += --enable-cxx-flags=-D_FILE_OFFSET_BITS=64 -CONFIGURE_ARGS += --enable-libmudflap -CONFIGURE_ARGS += --enable-libgomp -CONFIGURE_ARGS += --enable-libssp -CONFIGURE_ARGS += --enable-libquadmath -CONFIGURE_ARGS += --enable-libquadmath-support -CONFIGURE_ARGS += --enable-libsanitizer -CONFIGURE_ARGS += --enable-libmpx -CONFIGURE_ARGS += --enable-lto -CONFIGURE_ARGS += --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' -CONFIGURE_ARGS += --enable-threads=posix -# Specify that target libraries should be optimized for code space instead of code speed. -#CONFIGURE_ARGS += --enable-target-optspace -CONFIGURE_ARGS += --disable-plugin -CONFIGURE_ARGS += --enable-gold -CONFIGURE_ARGS += --enable-version-specific-runtime-libs -CONFIGURE_ARGS += --with-gxx-include-dir=$(WORK_DIR)/$(STAGING_INSTALL_PREFIX)/include/c++/$(PKG_VERS) -#CONFIGURE_ARGS += --program-prefix=i686-syno_r1000-linux-gnu- -CONFIGURE_ARGS += --program-suffix=-8.5 - -# Define if you want to use __cxa_atexit, rather than atexit, to register C++ destructors -# for local statics and global objects. This is essential for fully standards-compliant -# handling of destructors, but requires __cxa_atexit in libc. -# *** This option is currently only available on systems with GNU libc.*** -# When enabled, this will cause -fuse-cxa-atexit to be passed by default. -#CONFIGURE_ARGS += --enable-__cxa_atexit - -# Otherwise will fail on any error -ADDITIONAL_CFLAGS += -Wno-error -#ADDITIONAL_CFLAGS += -fno-operator-names -#ADDITIONAL_CPPFLAGS += -fno-operator-names -#ADDITIONAL_CFLAGS += -std=gnu99 -#ADDITIONAL_CFLAGS += -std=c99 -#ADDITIONAL_CXXFLAGS += -D_GLIBCXX_USE_C99 -D_GLIBCXX_USE_C99_MATH -#ADDITIONAL_CXXFLAGS += -D_GLIBCXX_HAVE_OBSOLETE_ISNAN -D_GLIBCXX_HAVE_OBSOLETE_ISINF - -include ../../mk/spksrc.cross-cc.mk - -.PHONY: gcc_pre_configure -gcc_pre_configure: - @echo CONFIGURE_ARGS: $(CONFIGURE_ARGS) - @echo TC_SYSROOT: $(TC_SYSROOT) - @echo TC_SYSROOT: $${TC_SYSROOT} - @echo SYSROOT: $${SYSROOT} - @echo GLIBC -I$(TC_SYSROOT)/usr/include diff --git a/cross/gcc/digests b/cross/gcc/digests deleted file mode 100644 index 8ac56714d87..00000000000 --- a/cross/gcc/digests +++ /dev/null @@ -1,3 +0,0 @@ -gcc-8.5.0.tar.xz SHA1 2e93f85672f57023d45c20fef9572b72f8a3e7f1 -gcc-8.5.0.tar.xz SHA256 d308841a511bb830a6100397b0042db24ce11f642dab6ea6ee44842e5325ed50 -gcc-8.5.0.tar.xz MD5 0c1f625768840187ef3b10adebe8e3b0