From: darcagn <da...@us...> - 2024-05-08 20:20:02
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "A pseudo Operating System for the Dreamcast.". The branch, master has been updated via 11b6ae37fd7d38b2379b263f0ae483ed013b2a80 (commit) from bc13e9251c2e650675d73bbf12f3a34bff175cc8 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 11b6ae37fd7d38b2379b263f0ae483ed013b2a80 Author: darcagn <da...@pr...> Date: Tue May 7 21:54:33 2024 -0600 dc-chain: Improvements in functionality and documentation (#533) * Improve functionality in dc-chain configuration * Refer to toolchain configuration sets as 'profiles' and initial docs updates * Fix Dockerfile for dc-chain updates * Add all GCC languages to init.mk * dc-chain: Disable including arm toolchain by default in download, patch, and build actions * Added support for the Ada language to dc-chain. * Updated changelog.txt for dc-chain. * Fixed issue in gcc-pass2.mk. - Accidentally introduced a bug with adding Ada support, since the variable pass2_languages changed to enabled_languages. * Fixed issues with tabbing for gcc-pass2.mk. * Change make target behavior and add gccrs/rustc profiles * Move default values in toolchain profiles to their own defaults file * Update Dockerfile and its documentation * Rename config.mk to Makefile.cfg, adjust Dockerfile, move unused patches to historical dir * dc-chain: Revise documentation * Adjust profiles/patches for GCC 14.1.0 release; further documentation revisions * Markdownify Changelog * Update CHANGELOG.md * Prettify changelog/contributors * Remove unused kos-patch target * Clean up Dockerfile syntax and add makejobs parameter * Fix issue where arguments to ./configure would duplicate * Updated dc-chain documentation * Some more documentation updates * Last minute fixes before finalizing PR * Fix bug with passing extra configure args * Rename extra_configure_args to cpu_configure_args to clarify intent --------- Co-authored-by: Falco Girgis <gyr...@gm...> ----------------------------------------------------------------------- Summary of changes: utils/dc-chain/.gitignore | 3 +- utils/dc-chain/Makefile | 24 +- utils/dc-chain/Makefile.cfg | 229 +++++++++++++++ utils/dc-chain/README.md | 322 ++++++--------------- utils/dc-chain/config/README.md | 18 -- utils/dc-chain/config/config.mk.10.5.0.sample | 189 ------------ utils/dc-chain/config/config.mk.11.4.0.sample | 189 ------------ utils/dc-chain/config/config.mk.12.3.0.sample | 189 ------------ utils/dc-chain/config/config.mk.13.2.1-dev.sample | 198 ------------- utils/dc-chain/config/config.mk.14.0.1-dev.sample | 206 ------------- utils/dc-chain/config/config.mk.15.0.0-dev.sample | 199 ------------- .../dc-chain/config/config.mk.4.7.4-legacy.sample | 189 ------------ .../dc-chain/config/config.mk.9.3.0-legacy.sample | 189 ------------ utils/dc-chain/config/config.mk.9.5.0-winxp.sample | 189 ------------ utils/dc-chain/config/config.mk.stable.sample | 189 ------------ utils/dc-chain/doc/CHANGELOG.md | 120 ++++++++ utils/dc-chain/doc/CONTRIBUTORS.md | 43 +-- utils/dc-chain/doc/README.md | 16 - utils/dc-chain/doc/alpine.md | 80 +++++ utils/dc-chain/doc/bsd.md | 96 ++++++ utils/dc-chain/doc/bsd/README.md | 127 -------- utils/dc-chain/doc/changelog.txt | 183 ------------ utils/dc-chain/doc/{cygwin/README.md => cygwin.md} | 46 ++- utils/dc-chain/doc/debian.md | 89 ++++++ utils/dc-chain/doc/linux/README.md | 7 - utils/dc-chain/doc/linux/alpine.md | 115 -------- utils/dc-chain/doc/linux/debian.md | 116 -------- utils/dc-chain/doc/macos.md | 125 ++++++++ utils/dc-chain/doc/macos/README.md | 144 --------- utils/dc-chain/doc/mingw/README.md | 9 +- utils/dc-chain/doc/mingw/mingw-w64.md | 69 ++--- utils/dc-chain/doc/mingw/mingw.md | 104 +++---- .../doc/mingw/packages/fixup-sh4-newlib.sh | 10 +- utils/dc-chain/docker/Dockerfile | 14 +- utils/dc-chain/docker/README.md | 36 +-- .../{gcc-14.0.1-kos.diff => gcc-14.1.0-kos.diff} | 48 +-- .../{gcc-15.0.0-kos.diff => gcc-14.1.1-kos.diff} | 48 +-- utils/dc-chain/patches/gcc-rs-fix.diff | 25 ++ .../{gcc-15.0.0-kos.diff => gcc-rs-kos.diff} | 50 ++-- .../{gcc-15.0.0-kos.diff => gcc-rustc-kos.diff} | 68 +++-- .../patches/{ => historical}/gcc-4.7.4-kos.diff | 0 .../patches/{ => historical}/newlib-2.0.0-kos.diff | 0 utils/dc-chain/profiles/profile.10.5.0.mk | 35 +++ utils/dc-chain/profiles/profile.11.4.0.mk | 35 +++ utils/dc-chain/profiles/profile.12.3.0.mk | 35 +++ utils/dc-chain/profiles/profile.13.2.1-dev.mk | 47 +++ utils/dc-chain/profiles/profile.14.1.0.mk | 35 +++ utils/dc-chain/profiles/profile.14.1.1-dev.mk | 47 +++ utils/dc-chain/profiles/profile.15.0.0-dev.mk | 47 +++ utils/dc-chain/profiles/profile.9.3.0-legacy.mk | 35 +++ utils/dc-chain/profiles/profile.9.5.0-winxp.mk | 35 +++ utils/dc-chain/profiles/profile.gccrs-dev.mk | 47 +++ utils/dc-chain/profiles/profile.rustc-dev.mk | 47 +++ utils/dc-chain/profiles/profile.stable.mk | 35 +++ utils/dc-chain/scripts/banner-variables.mk | 2 - utils/dc-chain/scripts/banner.mk | 7 +- utils/dc-chain/scripts/binutils.mk | 24 +- utils/dc-chain/scripts/build.mk | 18 +- utils/dc-chain/scripts/clean.mk | 32 +- utils/dc-chain/scripts/download.mk | 7 +- utils/dc-chain/scripts/gcc-pass1.mk | 9 +- utils/dc-chain/scripts/gcc-pass2.mk | 25 +- utils/dc-chain/scripts/gdb.mk | 13 +- utils/dc-chain/scripts/host-detect.mk | 4 - utils/dc-chain/scripts/init.mk | 94 +++++- utils/dc-chain/scripts/logdir.mk | 4 - utils/dc-chain/scripts/newlib.mk | 10 +- utils/dc-chain/scripts/options.mk | 4 - utils/dc-chain/scripts/patch.mk | 16 +- utils/dc-chain/scripts/phony.mk | 6 +- utils/dc-chain/scripts/profile-defaults.mk | 27 ++ utils/dc-chain/scripts/utils.mk | 3 - utils/dc-chain/scripts/variables.mk | 17 +- 73 files changed, 1797 insertions(+), 3315 deletions(-) create mode 100644 utils/dc-chain/Makefile.cfg delete mode 100644 utils/dc-chain/config/README.md delete mode 100644 utils/dc-chain/config/config.mk.10.5.0.sample delete mode 100644 utils/dc-chain/config/config.mk.11.4.0.sample delete mode 100644 utils/dc-chain/config/config.mk.12.3.0.sample delete mode 100644 utils/dc-chain/config/config.mk.13.2.1-dev.sample delete mode 100644 utils/dc-chain/config/config.mk.14.0.1-dev.sample delete mode 100644 utils/dc-chain/config/config.mk.15.0.0-dev.sample delete mode 100644 utils/dc-chain/config/config.mk.4.7.4-legacy.sample delete mode 100644 utils/dc-chain/config/config.mk.9.3.0-legacy.sample delete mode 100644 utils/dc-chain/config/config.mk.9.5.0-winxp.sample delete mode 100644 utils/dc-chain/config/config.mk.stable.sample create mode 100644 utils/dc-chain/doc/CHANGELOG.md delete mode 100644 utils/dc-chain/doc/README.md create mode 100644 utils/dc-chain/doc/alpine.md create mode 100644 utils/dc-chain/doc/bsd.md delete mode 100644 utils/dc-chain/doc/bsd/README.md delete mode 100644 utils/dc-chain/doc/changelog.txt rename utils/dc-chain/doc/{cygwin/README.md => cygwin.md} (70%) create mode 100644 utils/dc-chain/doc/debian.md delete mode 100644 utils/dc-chain/doc/linux/README.md delete mode 100644 utils/dc-chain/doc/linux/alpine.md delete mode 100644 utils/dc-chain/doc/linux/debian.md create mode 100644 utils/dc-chain/doc/macos.md delete mode 100644 utils/dc-chain/doc/macos/README.md rename utils/dc-chain/patches/{gcc-14.0.1-kos.diff => gcc-14.1.0-kos.diff} (74%) copy utils/dc-chain/patches/{gcc-15.0.0-kos.diff => gcc-14.1.1-kos.diff} (74%) create mode 100644 utils/dc-chain/patches/gcc-rs-fix.diff copy utils/dc-chain/patches/{gcc-15.0.0-kos.diff => gcc-rs-kos.diff} (71%) copy utils/dc-chain/patches/{gcc-15.0.0-kos.diff => gcc-rustc-kos.diff} (64%) rename utils/dc-chain/patches/{ => historical}/gcc-4.7.4-kos.diff (100%) rename utils/dc-chain/patches/{ => historical}/newlib-2.0.0-kos.diff (100%) create mode 100644 utils/dc-chain/profiles/profile.10.5.0.mk create mode 100644 utils/dc-chain/profiles/profile.11.4.0.mk create mode 100644 utils/dc-chain/profiles/profile.12.3.0.mk create mode 100644 utils/dc-chain/profiles/profile.13.2.1-dev.mk create mode 100644 utils/dc-chain/profiles/profile.14.1.0.mk create mode 100644 utils/dc-chain/profiles/profile.14.1.1-dev.mk create mode 100644 utils/dc-chain/profiles/profile.15.0.0-dev.mk create mode 100644 utils/dc-chain/profiles/profile.9.3.0-legacy.mk create mode 100644 utils/dc-chain/profiles/profile.9.5.0-winxp.mk create mode 100644 utils/dc-chain/profiles/profile.gccrs-dev.mk create mode 100644 utils/dc-chain/profiles/profile.rustc-dev.mk create mode 100644 utils/dc-chain/profiles/profile.stable.mk delete mode 100644 utils/dc-chain/scripts/banner-variables.mk create mode 100644 utils/dc-chain/scripts/profile-defaults.mk diff --git a/utils/dc-chain/.gitignore b/utils/dc-chain/.gitignore index 835f45d0..9861c537 100644 --- a/utils/dc-chain/.gitignore +++ b/utils/dc-chain/.gitignore @@ -4,8 +4,7 @@ binutils-* gcc-* newlib-* gdb-* -insight-* build-* *.stamp config.guess -config.mk +Makefile.cfg diff --git a/utils/dc-chain/Makefile b/utils/dc-chain/Makefile index 2d52f9ce..98facf16 100644 --- a/utils/dc-chain/Makefile +++ b/utils/dc-chain/Makefile @@ -1,26 +1,30 @@ # Sega Dreamcast Toolchains Maker (dc-chain) # This file is part of KallistiOS. -# -# Created by Jim Ursetto (2004) -# Initially adapted from Stalin's build script version 0.3. -# -# Please create/edit 'config.mk' to customize your 'dc-chain' setup. +# +# Please edit 'Makefile.cfg' to customize your 'dc-chain' setup. # # Display startup banner -include scripts/banner-variables.mk include scripts/banner.mk # User configuration -config_file=config.mk +config_file=Makefile.cfg ifneq ("$(wildcard $(config_file))","") include $(config_file) else $(error The required $(config_file) file is missing) endif -# Download Functions +# Toolchain profiles +include scripts/profile-defaults.mk +ifneq ("$(wildcard profiles/profile.$(toolchain_profile).mk)","") + include profiles/profile.$(toolchain_profile).mk +else + $(error No configuration found at profiles/profile.$(toolchain_profile).mk) +endif + +# Download functions include scripts/utils.mk # Detect host machine @@ -32,7 +36,9 @@ include scripts/init.mk # Makefile variables include scripts/variables.mk -all: build +default: build gdb + +all: build build-arm gdb # ---- download {{{ diff --git a/utils/dc-chain/Makefile.cfg b/utils/dc-chain/Makefile.cfg new file mode 100644 index 00000000..e9f99c4e --- /dev/null +++ b/utils/dc-chain/Makefile.cfg @@ -0,0 +1,229 @@ +# Sega Dreamcast Toolchains Maker (dc-chain) +# This file is part of KallistiOS. + +######################### +### TOOLCHAIN PROFILE ### +######################### + +# Choose a toolchain profile from the following available options: +# No longer supported upstream: +# - 9.3.0-legacy: Former 'stable' option, based on GCC 9.3.0 and Newlib 3.3.0. +# - 9.5.0-winxp: Most recent versions of tools which run on Windows XP. +# - 10.5.0: Last release in the GCC 10 series, released 2023-07-07. +# Supported upstream: +# - 11.4.0: Latest release in the GCC 11 series, released 2023-05-15. +# - 12.3.0: Latest release in the GCC 12 series, released 2023-05-08. +# - stable: Tested stable; based on GCC 13.2.0, released 2023-07-27. +# - 14.1.0: Latest release in the GCC 14 series, released 2024-05-07. +# Development versions: +# - 13.2.1-dev Bleeding edge GCC 13 series from git. +# - 14.1.1-dev Bleeding edge GCC 14 series from git. +# - 15.0.0-dev Bleeding edge GCC 15 series from git. +# - gccrs-dev: GCC fork for development of the GCCRS Rust compiler. +# - rustc-dev: GCC fork for development of the libgccjit rustc GCC codegen. +# If unsure, select stable. See README.md for more detailed descriptions. +toolchain_profile=stable + +######################## +### DOWNLOAD OPTIONS ### +######################## + +### Download protocol (http|https|ftp) +# Specify the protocol you want to use for downloading package files. +download_protocol=https + +### Force downloader (curl|wget) +# Specify here if you'd prefer to use 'wget' or 'curl'. If neither is specified, +# a web downloader tool will be auto-detected in the following order: cURL, Wget +# You must have either Wget or cURL installed to use dc-chain. +#force_downloader=wget + +### Specify GNU mirror override +# The default mirror for GNU sources is 'ftpmirror.gnu.org' +# This setting overrides the default mirror with a preferred mirror. +#gnu_mirror=mirrors.kernel.org + +##################### +### BUILD OPTIONS ### +##################### + +### SH toolchain install path +# Specify the directory where the SH toolchain will be installed. This setting +# must match the KOS_CC_BASE setting in your KOS "environ.sh" configuration. +sh_toolchain_path=/opt/toolchains/dc/sh-elf + +### ARM toolchain install path +# Specify the directory where the ARM toolchain will be installed. This setting +# must match the DC_ARM_BASE setting in your KOS "environ.sh" configuration. +arm_toolchain_path=/opt/toolchains/dc/arm-eabi + +### Make jobs (n|<empty>) +# Set this value to the number of parallel jobs you want to run with make. +# For fastest toolchain building, set to the number of CPU threads available. +# Using multiple jobs may cause issues in certain environments and may be +# automatically disabled. If you encounter errors building your toolchain, +# reduce the number of jobs to 1 to avoid issues and ease troubleshooting. +makejobs=2 + +### Verbose (1|0) +# Choose whether to actively display compilation messages on the screen. +# Messages are saved to the build log files regardless of this setting. +verbose=1 + +### Erase (1|0) +# Erase build directories as toolchain components are installed to save space. +erase=1 + +### Install toolchain debug symbols (1|0) +# Choose whether to keep the debugging symbols for the toolchain. +# This is only useful if you wish to debug the toolchain itself. +#toolchain_debug=1 + +######################## +### LANGUAGE OPTIONS ### +######################## + +### Enable C++ +# Builds C++ support, including the C++ compiler and its standard library. The +# vast majority of language features are supported, with C++23 and early C++26 +# support included. KallistiOS provides several examples with C++ support, so it +# is enabled by default. Adding C++ support requires extra disk space and +# compilation time, so you may disable it here if you do not plan on using C++. +enable_cpp=1 + +### Enable Objective-C +# Builds Objective-C support. Currently, this builds the Obj-C compiler and +# runtime, but does not build a standard library. The GNUStep Base Library is +# currently in active development for future inclusion in the kos-ports library. +# KallistiOS provides examples with Obj-C support, so it is enabled by default. +enable_objc=1 + +### Enable Objective C++ +# Builds Objective C++ support. This hybrid language allows both C++ and Obj-C +# methods to be called from both contexts. Enabled by default as both the C++ +# and Obj-C languages are already enabled by default. +enable_objcpp=1 + +### Enable D +# Builds D support. This will build the D compiler, but does not build the +# Phobos Runtime Library. D support may only be enabled on POSIX platforms which +# have its external dependencies provided through a host DMD, GDC, or LDC +# compiler installation. +#enable_d=1 + +### Enable Ada +# Builds Ada support. This will build the GNAT Ada compiler and tools but does +# not build the libada runtime library. In order for this build to succeed, the +# host's GCC version must match the target Dreamcast version, plus the same +# version of GNAT and its tools must be preinstalled (and in your path). +#enable_ada=1 + +### Enable Rust +# Builds the work-in-progress GCCRS Rust compiler frontend for GCC. Requires a +# development version of GCC. Use with the gccrs-dev toolchain profile for the +# most recent updates to the GCCRS compiler. This option is not to be confused +# with using this toolchain as a backend for rustc; see libgccjit below. +#enable_rust=1 + +### Enable libgccjit +# Enables the libgccjit embeddable GCC library. This is most commonly enabled to +# allow using this toolchain as a backend for the official rustc compiler. Use +# with the rustc-dev toolchain profile if this is your use case. Enabling this +# option will force the toolchain host code to build as position-independent, +# which will result in slightly slower compilation times for this toolchain. +#enable_libgccjit=1 + +################### +### GCC OPTIONS ### +################### + +### Floating point precision support (m4-single-only|m4-single|m4) +# Build support for various SH4 floating-point operation ABIs. KallistiOS only +# officially supports single-precision-only mode (m4-single-only); however, +# experimental support for single-precision-default mode (m4-single) has been +# added to allow for the use of full 64-bit doubles. You may also include +# double-precision-default (m4) which is untested and unsupported, or you may +# choose to specify only m4-single-only to save disk space. +precision_modes=m4-single-only,m4-single + +### Default floating point mode (m4|m4-single|m4-single-only) +# Choose the default floating point precision ABI used when GCC is invoked. This +# may be overridden by passing -m4-single-only, -m4-single, or -m4 to GCC. +# KOS currently only officially supports m4-single-only, so it is the default. +default_precision=m4-single-only + +### GCC threading model (single|kos) +# KallistiOS patches to GCC provide a 'kos' thread model, which should be used. +# If you want to disable threading support for C++, Objective-C, and so forth, +# you can set this option to 'single'. +thread_model=kos + +### Automatic patching for KallistiOS (1|0) +# Uncomment this option if you want to disable applying KallistiOS patches to +# toolchain source files before building. This will disable usage of the 'kos' +# thread model. Only do this if you understand what you are doing. +#use_kos_patches=0 + +### Disable GCC Native Language Support (1|0) +# By default, NLS allows GCC to output diagnostics in non-English languages. +# Uncomment this option to disable NLS and force GCC to output in English. +#disable_nls=1 + +###################### +### NEWLIB OPTIONS ### +###################### + +### Automatic patching for Newlib (1|0) +# Uncomment this option if you want to disable the automatic patching of Newlib +# needed by KallistiOS. This will keep the generated toolchain completely raw. +# This will also disable the 'kos' thread model. Only do this if you understand +# what you are doing. +#auto_fixup_sh4_newlib=0 + +### C99 format specifier support (1|0) +# Define this to build Newlib with additional support for the C99 format +# specifiers, used by printf and friends. These include support for size_t, +# ptrdiff_t, intmax_t, and sized integral types. +newlib_c99_formats=1 + +### Multibyte character set support (1|0) +# Define this to build Newlib with additional multibyte support. This enables +# three special locales: "C-JIS", "C-SJIS", and "C-EUCJP". The multibyte +# support extends to the mb and wc functions in stdlib as well as format +# characters for the printf and scanf family of routines. +#newlib_multibyte=1 + +### iconv() character encoding conversions support (encoding list) +# Define a list here to enable support for the iconv() function and <iconv.h> +# header file. The given comma separated list defines for which encoding types +# to include bidirectional conversion support. For the full list of available +# encodings, see the Newlib configuration documentation. +#newlib_iconv_encodings=us_ascii,utf8,utf16,ucs_2_internal,ucs_4_internal + +### Optimize Newlib for space (1|0) +# Uncomment this option to optimize for space when building Newlib. This will +# build Newlib with compiler flags which favor smaller code sizes over faster +# performance. +#newlib_opt_space=1 + +####################### +### WINDOWS OPTIONS ### +####################### + +### MinGW/MSYS +# Standalone binaries (1|0) +# Uncomment this option if you want static binaries that are standalone and +# require no dependencies. When this option is used, binaries can be run outside +# the MinGW/MSYS environment. This is NOT recommended; only do this if you know +# what you are doing. +#standalone_binary=1 + +### Force installation of BFD for SH (1|0) +# Uncomment this option if you want to force installation of 'libbfd' for the SH +# toolchain. This is required for MinGW/MSYS and can't be disabled in this +# scenario. This option is here mainly if you want to force the installation of +# 'libbfd' under other environments, but this won't be necessary in most cases, +# as 'libelf' is used almost everywhere. Please note, 'libbfd' is not portable +# if you built it on another environment. Only use this flag if you understand +# what you are doing. +#sh_force_libbfd_installation=1 diff --git a/utils/dc-chain/README.md b/utils/dc-chain/README.md index 483d3b5c..bae59505 100644 --- a/utils/dc-chain/README.md +++ b/utils/dc-chain/README.md @@ -2,20 +2,25 @@ The **Sega Dreamcast Toolchains Maker** (`dc-chain`) is a utility to assist in building the toolchains and development environment needed for **Sega Dreamcast** -programming. Initially adapted from *Stalin*'s build script, it was first -released by *Jim Ursetto* back in 2004, and is now included as part of -**KallistiOS** (**KOS**). +programming. + +This script was adapted from earlier `dc-chain` scripts created by James +Sumners and Jim Ursetto in the early days of the Dreamcast homebrew scene, but +the utility has been [largely expanded and reworked](doc/changelog.txt) by many +[contributors](doc/CONTRIBUTORS.md) since then, and it is now included as part +of **KallistiOS** (**KOS**). This utility is capable of building two toolchains for **Dreamcast** development: - The `sh-elf` toolchain, the primary cross-compiler toolchain targeting the - main CPU of the Dreamcast, the **Hitachi SuperH (SH4) CPU** . + main CPU of the Dreamcast, the **Hitachi SuperH (SH4) CPU**. - The `arm-eabi` toolchain, used only for the **Yamaha Super Intelligent Sound Processor** (**AICA**). This processor is based on an **ARM7** core. The main `sh-elf` toolchain is required, but KallistiOS includes a precompiled AICA sound driver, so building the `arm-eabi` toolchain is only necessary when -altering the sound driver or writing custom AICA code. +altering the sound driver or writing custom AICA code; therefore, it is not +built by default. The `sh-elf` toolchain by default is built to target KallistiOS specifically, however options are included to build a "raw" toolchain to allow targeting other @@ -36,14 +41,27 @@ the main `sh-elf` toolchain. ## Getting started -Before you start, please browse the `doc` directory and check for full -instructions for building the toolchains for your environment. +Before starting, please check the following pages for special instructions +specific to your operating system or computing platform. These special +instructions should be limited, though, as much diligence was taken to add +multiplatform functionality to be compatible in all modern environments. + +Tested environments with specific instructions are as follows: + +- **GNU/Linux** + - **[Alpine Linux 3.19](doc/alpine.md)** + - **[Debian 12.5](doc/debian.md)** + +- **[macOS](doc/macos.md)** (High Sierra 10.13, Mojave 10.14, + Catalina 10.15, Sonoma 14.2.1, etc.) + +- **[BSD](doc/bsd.md)** (FreeBSD 14.0) -A big effort was put into simplifying the building process as much as possible -for all modern environments, including **Linux**, **FreeBSD**, **macOS** and -**Windows** (via **Windows Subsystem for Linux**, **Cygwin**, **MinGW-w64/MSYS2** -or **MinGW/MSYS**). Many conditional instructions have been diligently added to -the script to allow it to seamlessly function in many environments out of the box. +- **Windows** + - **Windows Subsystem for Linux (WSL)**: See standard Linux instructions. + - **[Cygwin](doc/cygwin.md)** + - **[MinGW/MSYS](doc/mingw/mingw.md)** + - **[MinGW-w64/MSYS2](doc/mingw/mingw-w64.md)** ### `dc-chain` utility installation `dc-chain` is packaged with KallistiOS, where it can be found within the @@ -59,229 +77,76 @@ regular `gcc` and related tools) in order to build the cross compiler. The *may* work, but are not guaranteed to function properly. Several dependencies such as `wget`, `gettext`, `texinfo`, `gmp`, `mpfr`, -`libmpc`, etc. are required to build the toolchain. The `doc` directory contains -useful platform-specific instructions for installing dependencies. +`libmpc`, etc. are required to build the toolchain. Check the platform-specific +instructions mentioned above for installing dependencies on your system. ## Configuration -Before running `dc-chain`, you will need to set up the `config.mk` file containing -settings for building the toolchain(s). Most users can simply use the the default -`config.mk.stable.sample` template, which contains a stable default configuration -to make this easy for you. Additional configuration templates for alternative -settings are available in the `config` directory; see `config/README.md` for more -details. Most users can skip configuration without altering any options whatsoever. -Simply copy the `config.mk.stable.sample` file from the `config` directory to use ...<truncated>... hooks/post-receive -- A pseudo Operating System for the Dreamcast. |