diff --git a/host-recipes/icu b/host-recipes/icu
index 41bebbcc..6e338c5b 100644
--- a/host-recipes/icu
+++ b/host-recipes/icu
@@ -2,6 +2,7 @@ name=icu
revision=1
from_source=icu
imagedeps="build-essential"
+clean_workdirs=no
configure() {
${source_dir}/source/configure --prefix=${prefix} --disable-static
diff --git a/host-recipes/libatomic b/host-recipes/libatomic
new file mode 100644
index 00000000..79dcc915
--- /dev/null
+++ b/host-recipes/libatomic
@@ -0,0 +1,18 @@
+name=libatomic
+revision=1
+from_source=gcc
+imagedeps="build-essential"
+hostdeps="automake autoconf xbinutils xgcc"
+clean_workdirs=no
+deps="mlibc"
+
+build() {
+ cd ${build_dir}/host-builds/xgcc
+ make all-target-libatomic -j${paralellism}
+}
+
+package(){
+ cd ${build_dir}/host-builds/xgcc
+ make DESTDIR="${dest_dir}" install-target-libatomic
+ rm -rf ${dest_dir}/usr/local/lib/gcc/x86_64-astral/14.3.0/
+}
diff --git a/patches/enchant/jinx-working-patch.patch b/patches/enchant/jinx-working-patch.patch
new file mode 100644
index 00000000..d3d97284
--- /dev/null
+++ b/patches/enchant/jinx-working-patch.patch
@@ -0,0 +1,80 @@
+diff --git enchant-clean/configure enchant-workdir/configure
+index 6b76c6e..257e273 100755
+--- enchant-clean/configure
++++ enchant-workdir/configure
+@@ -10206,7 +10206,7 @@ irix5* | irix6* | nonstopux*)
+ ;;
+
+ # This must be glibc/ELF.
+-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
++linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu* | astral*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+@@ -13617,7 +13617,7 @@ lt_prog_compiler_static=
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+- linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
++ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu* | astral*)
+ case $cc_basename in
+ # old Intel for x86_64, which still supported -KPIC.
+ ecc*)
+@@ -14291,7 +14291,7 @@ _LT_EOF
+ archive_expsym_cmds='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+- gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
++ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu | astral*)
+ tmp_diet=no
+ if test linux-dietlibc = "$host_os"; then
+ case $cc_basename in
+@@ -16119,7 +16119,7 @@ linux*android*)
+ ;;
+
+ # This must be glibc/ELF.
+-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
++linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu* | astral*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+@@ -18235,7 +18235,7 @@ fi
+ inherit_rpath_CXX=yes
+ ;;
+
+- linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
++ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu* | astral*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+@@ -19051,7 +19051,7 @@ lt_prog_compiler_static_CXX=
+ ;;
+ esac
+ ;;
+- linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
++ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu* | astral*)
+ case $cc_basename in
+ KCC*)
+ # KAI C++ Compiler
+@@ -20123,7 +20123,7 @@ linux*android*)
+ ;;
+
+ # This must be glibc/ELF.
+-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
++linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu* | astral*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+diff --git enchant-clean/configure.ac enchant-workdir/configure.ac
+index 3e3268e..d93d626 100644
+--- enchant-clean/configure.ac
++++ enchant-workdir/configure.ac
+@@ -12,7 +12,7 @@
+ # You should have received a copy of the GNU Lesser General Public License
+ # along with this program; if not, see .
+
+-AC_PREREQ([2.71])
++AC_PREREQ([2.69])
+ AC_INIT([Enchant],[2.8.12])
+ AC_CONFIG_SRCDIR(lib/enchant.h)
+ AC_CONFIG_AUX_DIR([build-aux])
diff --git a/patches/gcc/jinx-working-patch.patch b/patches/gcc/jinx-working-patch.patch
index d79de798..9cb6a734 100644
--- a/patches/gcc/jinx-working-patch.patch
+++ b/patches/gcc/jinx-working-patch.patch
@@ -12,7 +12,7 @@ index 38f3d03..ee981b0 100755
# This one is extra strict with allowed versions
sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
diff --git gcc-clean/fixincludes/mkfixinc.sh gcc-workdir/fixincludes/mkfixinc.sh
-index 7112f4d..0acd4a7 100755
+index df90720..aebfb82 100755
--- gcc-clean/fixincludes/mkfixinc.sh
+++ gcc-workdir/fixincludes/mkfixinc.sh
@@ -11,6 +11,8 @@ target=fixinc.sh
@@ -22,8 +22,8 @@ index 7112f4d..0acd4a7 100755
+ *-astral* | \
+ *-*-astral* | \
i?86-*-cygwin* | \
- *-mingw32* | \
- powerpc-*-eabisim* | \
+ i?86-*-mingw32* | \
+ x86_64-*-mingw32* | \
diff --git gcc-workdir/gcc/config/astral.h gcc-workdir/gcc/config/astral.h
new file mode 100644
index 0000000..1768e2c
@@ -83,6 +83,18 @@ index a3566f5..93b4acc 100644
aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
tm_file="${tm_file} elfos.h newlib-stdint.h"
tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-elf-raw.h"
+diff --git gcc-clean/libatomic/configure.tgt gcc-workdir/libatomic/configure.tgt
+index 4237f28..6adebf9 100644
+--- gcc-clean/libatomic/configure.tgt
++++ gcc-workdir/libatomic/configure.tgt
+@@ -150,6 +150,7 @@ case "${target}" in
+
+ *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu \
+ | *-*-netbsd* | *-*-freebsd* | *-*-openbsd* | *-*-dragonfly* \
++ | *-*-astral* \
+ | *-*-solaris2* | *-*-sysv4* | *-*-irix6* | *-*-osf* | *-*-hpux11* \
+ | *-*-darwin* | *-*-aix* | *-*-cygwin*)
+ # POSIX system. The OS is supported.
diff --git gcc-clean/libgcc/config.host gcc-workdir/libgcc/config.host
index ee10e99..411a213 100644
--- gcc-clean/libgcc/config.host
diff --git a/patches/libdrm/jinx-working-patch.patch b/patches/libdrm/jinx-working-patch.patch
index acfa285d..0490046f 100644
--- a/patches/libdrm/jinx-working-patch.patch
+++ b/patches/libdrm/jinx-working-patch.patch
@@ -1,15 +1,22 @@
diff --git libdrm-clean/include/drm/drm.h libdrm-workdir/include/drm/drm.h
-index 4e4f7c2..f0d0f63 100644
+index 4e4f7c2..a88780b 100644
--- libdrm-clean/include/drm/drm.h
+++ libdrm-workdir/include/drm/drm.h
-@@ -43,8 +43,17 @@ typedef unsigned int drm_handle_t;
+@@ -35,16 +35,24 @@
+ #ifndef _DRM_H_
+ #define _DRM_H_
+
+-#if defined(__linux__)
++#if defined(__linux__) || defined(__astral__)
+
+ #include
+ #include
+ typedef unsigned int drm_handle_t;
#else /* One of the BSDs */
-
--#include
--#include
-+ #include
-+//#include
+-
+ #include
+ #include
+#ifdef __astral__
+#define _IOC(dir,type,nr,size) (((dir)<<30)|((size)<<16)|((type)<<8)|(nr))
+#define _IO(type,nr) _IOC(0,(type),(nr),0)
diff --git a/patches/libxslt/jinx-working-patch.patch b/patches/libxslt/jinx-working-patch.patch
new file mode 100644
index 00000000..436f1b40
--- /dev/null
+++ b/patches/libxslt/jinx-working-patch.patch
@@ -0,0 +1,13 @@
+diff --git libxslt-clean/configure.ac libxslt-workdir/configure.ac
+index 8a00c25..0c0f3b2 100644
+--- libxslt-clean/configure.ac
++++ libxslt-workdir/configure.ac
+@@ -67,7 +67,7 @@ AC_SUBST(LIBEXSLT_VERSION_INFO)
+ AC_SUBST(LIBEXSLT_VERSION_NUMBER)
+ AC_SUBST(LIBEXSLT_VERSION_EXTRA)
+
+-AM_INIT_AUTOMAKE([1.16.3 foreign no-dist-gzip dist-xz])
++AM_INIT_AUTOMAKE([1.15.1 foreign no-dist-gzip dist-xz])
+ AM_MAINTAINER_MODE([enable])
+ AM_SILENT_RULES([yes])
+
diff --git a/patches/mlibc/jinx-working-patch.patch b/patches/mlibc/jinx-working-patch.patch
index e6b6fcd9..620f54a9 100644
--- a/patches/mlibc/jinx-working-patch.patch
+++ b/patches/mlibc/jinx-working-patch.patch
@@ -412,7 +412,7 @@ index ba9a520..b958ef3 100644
.section .note.GNU-stack,"",%progbits
-
diff --git mlibc-clean/sysdeps/astral/generic/generic.cpp mlibc-workdir/sysdeps/astral/generic/generic.cpp
-index 3b04372..e5741d1 100644
+index 3b04372..b7a8ab7 100644
--- mlibc-clean/sysdeps/astral/generic/generic.cpp
+++ mlibc-workdir/sysdeps/astral/generic/generic.cpp
@@ -1,7 +1,9 @@
@@ -457,7 +457,7 @@ index 3b04372..e5741d1 100644
namespace mlibc {
int Sysdeps::operator()(size_t size, const gid_t *list) {
-@@ -31,14 +56,307 @@ namespace mlibc {
+@@ -31,14 +56,313 @@ namespace mlibc {
return 0;
}
@@ -584,6 +584,12 @@ index 3b04372..e5741d1 100644
+ return ENOTSUP;
+ }
+
++ int Sysdeps::operator()(void **stack_base, size_t *stack_size) {
++ *stack_size = 1024 * 1024 * 4;
++ *stack_base = (void *)(0x0000800000000000 - *stack_size);
++ return 0;
++ }
++
+#ifndef MLIBC_BUILDING_RTLD
+ int Sysdeps::operator()(struct ifaddrs **out) {
+ struct ifaddrs *list = nullptr;
@@ -770,7 +776,7 @@ index 3b04372..e5741d1 100644
int Sysdeps::operator()(bool *ipv4, bool *ipv6) {
// there is no ipv6 support in the kernel currently and no way of checking for configured interfaces
-@@ -47,6 +365,71 @@ namespace mlibc {
+@@ -47,6 +371,71 @@ namespace mlibc {
return 0;
}
@@ -842,7 +848,7 @@ index 3b04372..e5741d1 100644
int Sysdeps::operator()(int fd, const struct iovec *iovs, int iovc, ssize_t *bytes_read) {
long r;
int error = syscall(SYSCALL_READV, &r, fd, (uint64_t)iovs, iovc);
-@@ -86,6 +469,11 @@ namespace mlibc {
+@@ -86,6 +475,11 @@ namespace mlibc {
return e;
}
@@ -854,7 +860,7 @@ index 3b04372..e5741d1 100644
int Sysdeps::operator()(int sockfd, int how) {
long ret;
return syscall(SYSCALL_SHUTDOWN, &ret, sockfd, how);
-@@ -487,8 +875,15 @@ namespace mlibc {
+@@ -487,8 +881,15 @@ namespace mlibc {
return err;
}
@@ -870,7 +876,7 @@ index 3b04372..e5741d1 100644
return syscall(SYSCALL_SETSOCKOPT, &ret, fd, layer, number, (uint64_t)buffer, size);
}
-@@ -511,6 +906,11 @@ namespace mlibc {
+@@ -511,6 +912,11 @@ namespace mlibc {
return err;
}
@@ -882,7 +888,7 @@ index 3b04372..e5741d1 100644
int Sysdeps::operator()(int olddirfd, const char *old_path, int newdirfd, const char *new_path) {
long ret;
return syscall(SYSCALL_RENAMEAT, &ret, olddirfd, (uint64_t)old_path, newdirfd, (uint64_t)new_path);
-@@ -562,6 +962,16 @@ namespace mlibc {
+@@ -562,6 +968,16 @@ namespace mlibc {
return sysdep(fd, TCSETS, (void *)attr, &res);
}
@@ -899,7 +905,7 @@ index 3b04372..e5741d1 100644
int Sysdeps::operator()(struct pollfd *fds, nfds_t count, int timeout, int *num_events) {
long ret;
long error = syscall(SYSCALL_POLL, &ret, (uint64_t)fds, count, timeout);
-@@ -932,4 +1342,13 @@ namespace mlibc {
+@@ -932,4 +1348,13 @@ namespace mlibc {
*nanos = ts.tv_nsec;
return err;
}
@@ -953,7 +959,7 @@ index a6c4067..fd38197 100644
#ifndef __MLIBC_ABI_ONLY
diff --git mlibc-clean/sysdeps/astral/include/mlibc/sysdeps.hpp mlibc-workdir/sysdeps/astral/include/mlibc/sysdeps.hpp
-index ce91084..0fffdf3 100644
+index ce91084..54ee08e 100644
--- mlibc-clean/sysdeps/astral/include/mlibc/sysdeps.hpp
+++ mlibc-workdir/sysdeps/astral/include/mlibc/sysdeps.hpp
@@ -7,8 +7,30 @@ namespace mlibc {
@@ -1012,14 +1018,15 @@ index ce91084..0fffdf3 100644
Poll,
Ppoll,
Pselect,
-@@ -135,7 +161,9 @@ struct AstralSysdepTags :
+@@ -135,7 +161,10 @@ struct AstralSysdepTags :
VmUnmap,
Isatty,
ClockGet,
- PrepareStack
+ ClockGetres,
+ PrepareStack,
-+ SetPriority
++ SetPriority,
++ GetCurrentStackInfo
{};
template
diff --git a/recipes/enchant b/recipes/enchant
index 32440d27..21a1b0aa 100644
--- a/recipes/enchant
+++ b/recipes/enchant
@@ -1,5 +1,5 @@
name=enchant
-revision=1
+revision=2
from_source=enchant
imagedeps="build-essential"
hostdeps="xgcc xbinutils pkgconfig libtool automake autoconf"
diff --git a/recipes/harfbuzz b/recipes/harfbuzz
index b912d905..96ab1afd 100644
--- a/recipes/harfbuzz
+++ b/recipes/harfbuzz
@@ -1,12 +1,12 @@
name=harfbuzz
-revision=1
+revision=2
from_source=harfbuzz
imagedeps="gcc meson ninja-build libglib2.0-dev"
hostdeps="xgcc xbinutils pkgconfig libstdc++-v3"
-deps="base freetype glib"
+deps="base freetype glib icu"
configure() {
- meson --cross-file ${base_dir}/util/crossfile --prefix=${prefix} --buildtype=release --wrap-mode=nofallback -Dintrospection=disabled -Ddocs=disabled -Dtests=disabled -Dutilities=disabled -Dglib=enabled -Dgobject=enabled -Dfreetype=enabled -Dicu=disabled -Dgraphite2=disabled -Dcairo=disabled ${source_dir}
+ meson --cross-file ${base_dir}/util/crossfile --prefix=${prefix} --buildtype=release --wrap-mode=nofallback -Dintrospection=disabled -Ddocs=disabled -Dtests=disabled -Dutilities=disabled -Dglib=enabled -Dgobject=enabled -Dfreetype=enabled -Dicu=enabled -Dgraphite2=disabled -Dcairo=disabled ${source_dir}
}
build() {
diff --git a/recipes/libdrm b/recipes/libdrm
index bfbfaead..cfbd8acf 100644
--- a/recipes/libdrm
+++ b/recipes/libdrm
@@ -1,5 +1,5 @@
name=libdrm
-revision=1
+revision=2
from_source=libdrm
imagedeps="ninja-build build-essential"
hostdeps="xgcc xbinutils pkgconfig libtool"
diff --git a/recipes/libsoup b/recipes/libsoup
index 908651f7..839fa90a 100644
--- a/recipes/libsoup
+++ b/recipes/libsoup
@@ -1,5 +1,5 @@
name=libsoup
-revision=1
+revision=2
from_source=libsoup
imagedeps="gcc meson ninja-build libglib2.0-dev-bin"
hostdeps="xgcc xbinutils pkgconfig"
diff --git a/recipes/libxslt b/recipes/libxslt
new file mode 100644
index 00000000..22185b48
--- /dev/null
+++ b/recipes/libxslt
@@ -0,0 +1,18 @@
+name=libxslt
+revision=2
+from_source=libxslt
+imagedeps="build-essential libxml2"
+hostdeps="xgcc xbinutils pkgconfig libtool"
+deps="base libxml"
+
+configure() {
+ PKG_CONFIG=/usr/local/bin/x86_64-astral-pkg-config ${source_dir}/configure --host=x86_64-astral --prefix=${prefix} --disable-static --without-python
+}
+
+build() {
+ make -j ${parallelism}
+}
+
+package() {
+ make install DESTDIR=${dest_dir}
+}
diff --git a/recipes/mlibc b/recipes/mlibc
index a1bc06d8..537a3ac8 100644
--- a/recipes/mlibc
+++ b/recipes/mlibc
@@ -1,6 +1,6 @@
name=mlibc
from_source=mlibc
-revision=5
+revision=6
hostdeps="xgcc xbinutils pkgconfig"
builddeps="freestnd-c-hdrs freestnd-cxx-hdrs frigg libsmarter"
imagedeps="meson ninja-build git build-essential binutils"
diff --git a/recipes/sqlite b/recipes/sqlite
index 779ded4e..edb03685 100644
--- a/recipes/sqlite
+++ b/recipes/sqlite
@@ -1,12 +1,12 @@
name=sqlite
-revision=1
+revision=2
from_source=sqlite
imagedeps="build-essential"
hostdeps="xgcc xbinutils pkgconfig libtool"
deps="base readline zlib"
configure() {
- ${source_dir}/configure --host=x86_64-astral --prefix=${prefix} --disable-static --enable-fts{4,5} CPPFLAGS="-D SQLITE_ENABLE_COLUMN_METADATA=1 -D SQLITE_ENABLE_UNLOCK_NOTIFY=1 -D SQLITE_ENABLE_DBSTAT_VTAB=1 -D SQLITE_SECURE_DELETE=1"
+ ${source_dir}/configure --host=x86_64-astral --prefix=${prefix} --disable-static --soname=legacy --enable-fts{4,5} CPPFLAGS="-D SQLITE_ENABLE_COLUMN_METADATA=1 -D SQLITE_ENABLE_UNLOCK_NOTIFY=1 -D SQLITE_ENABLE_DBSTAT_VTAB=1 -D SQLITE_SECURE_DELETE=1"
}
build() {
diff --git a/source-recipes/enchant b/source-recipes/enchant
index 40e8a95a..b090115b 100644
--- a/source-recipes/enchant
+++ b/source-recipes/enchant
@@ -6,5 +6,5 @@ tarball_sha512=2bcd22afd97e348bc2925c41cb25f7aec9cb67debca4bcf58f6e30ac06dd09582
hostdeps="autoconf automake libtool"
prepare() {
- cp -v $(find /usr/local/share/automake* -name config.sub) build-aux/.
+ cp -v $(find /usr/local/share/automake* -name config.sub) build-aux
}
diff --git a/source-recipes/libxslt b/source-recipes/libxslt
new file mode 100644
index 00000000..cde991aa
--- /dev/null
+++ b/source-recipes/libxslt
@@ -0,0 +1,10 @@
+name=libxslt
+version=1.1.43
+source_method=tarball
+tarball_url="https://download.gnome.org/sources/libxslt/1.1/libxslt-${version}.tar.xz"
+tarball_sha512=96110b0397a8f5791f489127574e2143845feb61bea0581d7b7e3c1101fd0718483bae81a7ce417b971bd678293bfd95daddad0dadd3e256c87d41a69faed85a
+hostdeps="automake libtool pkgconfig autoconf"
+
+prepare() {
+ autoreconf -fvi
+}
diff --git a/util/cmake b/util/cmake
index 6d4d53e6..44a7f7f6 100644
--- a/util/cmake
+++ b/util/cmake
@@ -1,4 +1,5 @@
set(CMAKE_SYSTEM_NAME Astral)
+set(CMAKE_SYSTEM_PROCESSOR x86_64)
set(CMAKE_FIND_ROOT_PATH /sysroot)