commit 6baf8dfbb2dc2f3f083da7a649ebe5bf0d32d955 Author: Mike Nolan Date: Tue Nov 11 05:01:54 2025 -0600 First commit diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..4c9534c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,15 @@ +FROM archlinux:latest + +RUN pacman --noconfirm -Syu && pacman --noconfirm -Sy wget sudo arch-install-scripts git cmake make mbedtls ncurses rsync bison flex git gperf help2man lzip python unzip base-devel +RUN git clone https://github.com/crosstool-ng/crosstool-ng && cd ./crosstool-ng && ./bootstrap && ./configure && make install +RUN useradd -m build && \ + echo "build ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/build + +USER build +WORKDIR /home/build +RUN mkdir ct-ppc && cd ct-ppc && ct-ng powerpc-unknown-linux-gnu && ct-ng build.`nproc` && cd .. && rm -rf ct-ppc + +USER root + +COPY cross /opt/cross +RUN mkdir -p /opt/cross/ppc/sysroot && cd /opt/cross/ppc/sysroot && wget https://wii-linux.org/files/wii_linux_rootfs_archpower-latest.tar.gz && tar xf wii_linux_rootfs_archpower-latest.tar.gz . && rm wii_linux_rootfs_archpower-latest.tar.gz diff --git a/README.md b/README.md new file mode 100644 index 0000000..554c6b8 --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +# Build container for crosslang and friends on arch-linux + +My build server has issues with building crosstool compilers so this was build on my framework 16 + +it currently has support for + +- powerpc +- x86_64 diff --git a/cross/ppc/pacman.conf b/cross/ppc/pacman.conf new file mode 100644 index 0000000..a8aeae2 --- /dev/null +++ b/cross/ppc/pacman.conf @@ -0,0 +1,94 @@ +# +# /etc/pacman.conf +# +# See the pacman.conf(5) manpage for option and repository directives + +# +# GENERAL OPTIONS +# +[options] +# The following paths are commented out with their default values listed. +# If you wish to use different paths, uncomment and update the paths. +RootDir = /opt/cross/ppc/sysroot/ +DBPath = /opt/cross/ppc/sysroot/var/lib/pacman/ +CacheDir = /opt/cross/ppc/sysroot/var/cache/pacman/pkg/ +LogFile = /opt/cross/ppc/sysroot/var/log/pacman.log +GPGDir = /opt/cross/ppc/sysroot/etc/pacman.d/gnupg/ +HookDir = /opt/cross/ppc/sysroot/etc/pacman.d/hooks/ +HoldPkg = pacman glibc +#XferCommand = /usr/bin/curl -L -C - -f -o %o %u +#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u +#CleanMethod = KeepInstalled +Architecture = powerpc + +# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup +#IgnorePkg = +#IgnoreGroup = + +#NoUpgrade = +#NoExtract = + +# Misc options +#UseSyslog +Color +#NoProgressBar +CheckSpace +#VerbosePkgLists +ParallelDownloads = 15 + +# By default, pacman accepts packages signed by keys that its local keyring +# trusts (see pacman-key and its man page), as well as unsigned packages. +SigLevel = Required DatabaseOptional Never +LocalFileSigLevel = Optional +#RemoteFileSigLevel = Required + +# NOTE: You must run `pacman-key --init` before first using pacman; the local +# keyring can then be populated with the keys of all official Arch Linux +# packagers with `pacman-key --populate archlinux`. + +# +# REPOSITORIES +# - can be defined here or included from another file +# - pacman will search repositories in the order defined here +# - local/custom mirrors can be added here or in separate files +# - repositories listed first will take precedence when packages +# have identical names, regardless of version number +# - URLs will have $repo replaced by the name of the current repo +# - URLs will have $arch replaced by the name of the architecture +# +# Repository entries are of the format: +# [repo-name] +# Server = ServerName +# Include = IncludePath +# +# The header [repo-name] is crucial - it must be present and +# uncommented to enable the repo. +# + +# The testing repositories are disabled by default. To enable, uncomment the +# repo name header and Include lines. You can add preferred servers immediately +# after the header, and they will be used before the default mirrors. + +#[testing-any] +#Server = https://repo.archlinuxpower.org/testing/any + +#[testing] +#Server = https://repo.archlinuxpower.org/testing/$arch + +[base-any] +Server = https://repo.archlinuxpower.org/base/any + +[base] +Server = https://repo.archlinuxpower.org/base/$arch + +[extra] +Server = https://repo.wii-linux.org/arch/extra/$arch + +#[wiilinux] +#Server = https://repo.wii-linux.org/arch/wiilinux + +# An example of a custom package repository. See the pacman manpage for +# tips on creating your own repositories. +#[custom] +#SigLevel = Optional TrustAll +#Server = file:///home/custompkgs diff --git a/cross/ppc/toolchain.cmake b/cross/ppc/toolchain.cmake new file mode 100644 index 0000000..f91e77f --- /dev/null +++ b/cross/ppc/toolchain.cmake @@ -0,0 +1,12 @@ +set(CMAKE_C_COMPILER "/home/build/x-tools/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-gcc") +set(CMAKE_CXX_COMPILER "/home/build/x-tools/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-g++") +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR ppc) +set(CMAKE_FIND_ROOT_PATH /opt/cross/ppc/sysroot) +set(CMAKE_INSTALL_LIBDIR "lib") +set(TOOLCHAIN_PREFIX powerpc-unknown-linux-gnu-) +set(CMAKE_SYSROOT /opt/cross/ppc/sysroot) +set(ENV{PKG_CONFIG_LIBDIR} "/opt/cross/ppc/usr/share/pkgconfig:/usr/share/pkgconfig") +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)