Skip to content

Commit f5e0e20

Browse files
authored
Support more architectures, remove dependencies on devkitARM/make in favor of LLVM/ninja (#558)
1 parent b158c7c commit f5e0e20

File tree

64 files changed

+866
-1255
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+866
-1255
lines changed

.github/workflows/official-build.yml

Lines changed: 135 additions & 126 deletions
Large diffs are not rendered by default.

.github/workflows/pr.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ jobs:
1717
steps:
1818
- name: Check out Serial Loops
1919
uses: actions/checkout@v4
20+
with:
21+
submodules: true
2022
- name: Setup .NET
2123
uses: actions/setup-dotnet@v4.1.0
2224
with:

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "submodules/NitroPacker.SymTableHelper"]
2+
path = submodules/NitroPacker.SymTableHelper
3+
url = https://github.com/haroohie-club/NitroPacker.SymTableHelper.git

README.md

Lines changed: 18 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -48,56 +48,22 @@ Documentation for how to use Serial Loops can be found on [our website](https://
4848
### Prerequisites
4949
It is recommended that you use a distribution of Serial Loops that automatically installs or comes with the necessary prerequisites. For each platform these are:
5050

51-
* Linux: Flatpak
51+
* Linux: [Flatpak from Flathub](https://flathub.org/apps/club.haroohie.SerialLoops)
52+
- The AppImage, deb, and rpm packages are also easy to use, but if you're not sure which to choose, go with the Flatpak
5253
* macOS: Installer
5354
* Windows: Installer
5455

55-
Using these will ensure Serial Loops is ready to use after installation. However, if you would rather use a portable build on Windows/Linux, please check the information on installing
56-
these prerequisites below.
56+
Using these will ensure Serial Loops is ready to use after installation. However, if you would rather use a portable build on Windows/Linux, please check the information on installing these prerequisites in the next section.
5757

58-
<details>
59-
<summary>View prerequisites for non-Flatpak/installer distributions</summary>
58+
#### Dependencies for Non-Packages Releases
59+
If you opt to use one of the non-packaged releases on Windows or Linux, you will need to install a few dependencies. These are:
6060

61-
#### Installing devkitARM
62-
[devkitARM](https://devkitpro.org/wiki/Getting_Started) is required to use Serial Loops on all platforms.
63-
64-
* Using the Windows graphical installer, you can simply select the devkitARM (Nintendo DS) workloads
65-
* On macOS and Linux, run `sudo dkp-pacman -S nds-dev` from the terminal after installing the devkitPro pacman distribution.
66-
67-
#### Installing Make or Docker
68-
To assemble ASM hacks you want to apply, you will need to decide whether to use Make or Docker. Make is automatically installed when using the Debian and RPM
69-
packages we distribute, so you don't need to worry about this step if you're using either of those.
70-
71-
Currently, the Docker path is **only supported on Windows** due to operating system and framework limitations. It is possible to get Docker running
72-
just fine on Linux distros by running SerialLoops as root (e.g. `sudo SerialLoops`), but it's easier to just use Make. On macOS, there is no known
73-
way of getting the Docker path to work, so you will have to use Make.
74-
75-
* [Make](https://www.gnu.org/software/make/) is the software used to assemble assembly hacks. Installing Make allows you to build the hacks
76-
directly on your system.
77-
- To install on Windows, you will have to use a terminal and a package manager. Your options are Winget (installed by default on Win10+) or
78-
[Chocolatey](https://chocolatey.org/). Open an admin PowerShell or Terminal window (Winkey + X + A) and enter `winget install GnuWin32.make`
79-
for Winget or `choco install make` for Chocolatey. If using Winget, you will then have to go into system preferences and add Make to the path.
80-
- Installation on macOS can be done through Xcode or Homebrew. If using Xcode, open a terminal and type `xcode-select --install`. If you would
81-
rather use Homebrew, open a terminal after installing Homebrew and type `brew install make`.
82-
- Make comes preinstalled on many Linux distributions, and if you're using the Debian or RPM package, it was definitely installed when you installed
83-
Serial Loops. If you're using the tar.gz it is not installed on yours, you will likely be able to install it as simply as
84-
`[packagemanger] install make` from a terminal.
85-
86-
To test if make is installed properly, type `make --verison` into a terminal and see if it produces the version of make.
87-
* If you would rather not install Make, or if it is not working properly, you can instead run it through a Docker container. To do this, you should
88-
install [Docker Desktop](https://www.docker.com/products/docker-desktop/) or the Docker Engine. Ensure the Docker engine is running and make sure
89-
to check the "Use Docker for ASM Hacks" option in Preferences. You may want to occasionally clean up containers created by Serial Loops, as it will
90-
create many of them.
91-
- On Windows, you will additionally need to install [Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/install).
92-
From an admin PowerShell or Terminal window (Winkey + X + A), simply type `wsl --install` to install it.
93-
94-
#### Installing SDL2 (Linux)
95-
If you're running on Linux and _not using one of the package releases_ (the Flatpak, AppImage, `.deb` or `.rpm`), you will also need to install SDL2 which is used for audio processing.
96-
97-
</details>
61+
* Clang and LLD from [LLVM](http://llvm.org) (on Windows, it's best to just use the LLVM installer as it will install both of these; on Linux, you can opt to install just the `clang`, `lld`, and possibly `llvm` packages from your package manager)
62+
* [Ninja](https://ninja-build.org)
63+
* On Linux, you will also need SDL2
9864

9965
#### A Nintendo DS Emulator
100-
To test the game easily, you will want to have a Nintendo DS emulator installed. We recommend using [melonDS](https://melonds.kuribo64.net/) for its accuracy.
66+
To test the game easily, you will want to have a Nintendo DS emulator installed. We recommend using [melonDS](https://melonds.kuribo64.net/) for its accuracy. If you are using the Flatpak release, melonDS comes pre-packaged with it.
10167

10268
### Download & Install
10369
Once you have installed any necessary prerequisites, to install Serial Loops, download the latest release for your platform from the [Releases tab](https://github.com/haroohie-club/SerialLoops/releases).
@@ -108,17 +74,16 @@ Be sure to [read the Serial Loops documentation](https://haroohie.club/chokurets
10874
Uninstalling Serial Loops itself is quite simple; however, you may also want to uninstall the packaged dependencies. Follow the instructions below for each platform to do this.
10975

11076
#### Linux
111-
* If you installed the Flatpak, simply run `flatpak uninstall --delete-data club.haroohie.SerialLoops` to remove the Flatpak and all its associated data. If you don't want to keep your project data,
112-
ensure you delete the `~/SerialLoops` directory as well.
113-
* If you installed the deb or rpm package, run your package manager's uninstall command for the `SerialLoops` package. Afterwards, you can uninstall devkitARM by running the uninstall command for the `devkitpro-pacman` package.
114-
Finally, run `sudo rm -r /opt/devkitpro && sudo rm -r /etc/apt/sources.list.d/devkitpro.list` to delete the remainder of the devkitARM files on your system.
115-
* If you downloaded the tarball, delete the unpacked files from your system and then run the above commands to remove devkitARM from your system as well. You may also run your package manager's uninstallation command for SDL2.
77+
* If you installed the Flatpak, simply run uninstall it via the Warehouse app or your software/app store application. Alternatively, you can run `flatpak uninstall --delete-data club.haroohie.SerialLoops` to remove the Flatpak and all its associated data. If you don't want to keep your project data, ensure you delete the `~/SerialLoops` directory as well.
78+
* If you installed the AppImage, simply delete it from your machine.
79+
* If you installed the deb or rpm package, run your package manager's uninstall command for the `SerialLoops` package.
80+
* If you downloaded the tarball, delete the unpacked files from your system. You may also run your package manager's uninstallation command for Clang, LLD, Ninja, and SDL2.
11681

11782
#### macOS
118-
Simply drag the Serial Loops application from the Applications folder to the trash. Afterwards, you can remove devkitARM from your system, you can open a terminal and run `sudo rm -rf /opt/devkitpro`.
83+
Simply drag the Serial Loops application from the Applications folder to the trash. Then run `brew uninstall llvm` and `brew uninstall ninja-build` to remove LLVM and Ninja (if you want to do so). Finally, if you also want to uninstall Homebrew, you can run `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"`.
11984

12085
#### Windows
121-
Go into Add or Remove Programs and remove Serial Loops, the devkitPro installer, and Docker Desktop. Then, open an administrator PowerShell or CMD terminal (Win+X,A) and run `wsl --uninstall` to uninstall WSL.
86+
Go into Add or Remove Programs and remove Serial Loops and (if you don't want it anymore) LLVM.
12287

12388
## Bugs
12489
Please file bugs in the Issues tab in this repository. Please include the following information:
@@ -139,7 +104,8 @@ Additionally, on macOS, you will have to install CMake so that the build can com
139104
```bash
140105
sudo /Applications/CMake.app/Contents/bin/cmake-gui --install
141106
```
142-
This will symlink the CMake binaries to `/usr/local/bin` which is necessary for the build to work.
107+
This will symlink the CMake binaries to `/usr/local/bin` which is necessary for the build to work. Alternatively, you can install
108+
cmake via Homebrew with `brew install cmake`.
143109

144110
On Linux, you will need to install the SDL2 binaries for your distribution.
145111

@@ -161,8 +127,6 @@ to the MSBuild global properties field. This has the same effect as specifying `
161127
If you'd like to contribute new features or fixes, we recommend [getting in touch on Discord first](https://discord.gg/nesRSbpeFM) before submitting a pull request!
162128

163129
### Testing
164-
Serial Loops has headless tests that run to test the UI and other functionality of the program. To run tests locally, you will need to define either a `ui_vals.json` file or set an environment variable.
165-
166-
First, download [these test assets](https://haroohie.nyc3.cdn.digitaloceanspaces.com/bootstrap/serial-loops/test-assets.zip) -OutFile $(Build.ArtifactStagingDirectory)/test-assets.zip) and unzip them to a directory somewhere. Then, specify that directory in the `ui_vals.json` as `AssetsDirectory` or set the environment variable `ASSETS_DIRECTORY` to that path.
130+
Serial Loops has headless tests that run to test the UI and other functionality of the program.
167131

168132
Tests can be run via `dotnet test` (make sure to add `-f net8.0` on Linux or Mac) or through the test runners in Rider or Visual Studio.

SerialLoops.sln

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SerialLoops.Tests.Headless"
1515
EndProject
1616
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SerialLoops.Tests.Shared", "test\SerialLoops.Tests.Shared\SerialLoops.Tests.Shared.csproj", "{AAACA3F0-3DB5-4C45-83BE-5B0D87A32486}"
1717
EndProject
18+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "z_submodules", "z_submodules", "{8092BC8D-7D40-48E2-853E-2999DC2A9D09}"
19+
EndProject
20+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HaroohieClub.NitroPacker.SymTableHelper", "submodules\NitroPacker.SymTableHelper\HaroohieClub.NitroPacker.SymTableHelper.csproj", "{24BB519A-0F53-4A99-BB8C-942BEE580DE0}"
21+
EndProject
1822
Global
1923
GlobalSection(SolutionConfigurationPlatforms) = preSolution
2024
Debug|Any CPU = Debug|Any CPU
@@ -37,6 +41,10 @@ Global
3741
{AAACA3F0-3DB5-4C45-83BE-5B0D87A32486}.Debug|Any CPU.Build.0 = Debug|Any CPU
3842
{AAACA3F0-3DB5-4C45-83BE-5B0D87A32486}.Release|Any CPU.ActiveCfg = Release|Any CPU
3943
{AAACA3F0-3DB5-4C45-83BE-5B0D87A32486}.Release|Any CPU.Build.0 = Release|Any CPU
44+
{24BB519A-0F53-4A99-BB8C-942BEE580DE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
45+
{24BB519A-0F53-4A99-BB8C-942BEE580DE0}.Debug|Any CPU.Build.0 = Debug|Any CPU
46+
{24BB519A-0F53-4A99-BB8C-942BEE580DE0}.Release|Any CPU.ActiveCfg = Release|Any CPU
47+
{24BB519A-0F53-4A99-BB8C-942BEE580DE0}.Release|Any CPU.Build.0 = Release|Any CPU
4048
EndGlobalSection
4149
GlobalSection(SolutionProperties) = preSolution
4250
HideSolutionNode = FALSE
@@ -46,6 +54,7 @@ Global
4654
{D0A6E736-5240-4CD6-8F6F-CAA3F73330D3} = {D53AAD08-D78C-400E-A01D-85E1117D465A}
4755
{88779AB0-A349-4131-B7AF-FBC3B8FF4FCE} = {0E408EA9-D3DE-4568-A8E4-8E3A6D791C46}
4856
{AAACA3F0-3DB5-4C45-83BE-5B0D87A32486} = {0E408EA9-D3DE-4568-A8E4-8E3A6D791C46}
57+
{24BB519A-0F53-4A99-BB8C-942BEE580DE0} = {8092BC8D-7D40-48E2-853E-2999DC2A9D09}
4958
EndGlobalSection
5059
GlobalSection(ExtensibilityGlobals) = postSolution
5160
SolutionGuid = {BD2CAAA3-1F0F-451A-ABB8-DDD82A59815B}

install/linux/appimage/AppImageBuilder.yml

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,20 @@ AppDir:
1111
exec_args: $@
1212
apt:
1313
arch:
14-
- amd64
14+
- #APT_ARCH#
1515
allow_unauthenticated: true
1616
sources:
17-
- sourceline: deb http://archive.ubuntu.com/ubuntu/ bionic main restricted
18-
- sourceline: deb http://archive.ubuntu.com/ubuntu/ bionic-updates main restricted
19-
- sourceline: deb http://archive.ubuntu.com/ubuntu/ bionic universe
20-
- sourceline: deb http://archive.ubuntu.com/ubuntu/ bionic-updates universe
21-
- sourceline: deb http://archive.ubuntu.com/ubuntu/ bionic multiverse
22-
- sourceline: deb http://archive.ubuntu.com/ubuntu/ bionic-updates multiverse
23-
- sourceline: deb http://archive.ubuntu.com/ubuntu/ bionic-backports main restricted
24-
universe multiverse
25-
- sourceline: deb http://security.ubuntu.com/ubuntu/ bionic-security main restricted
26-
- sourceline: deb http://security.ubuntu.com/ubuntu/ bionic-security universe
27-
- sourceline: deb http://security.ubuntu.com/ubuntu/ bionic-security multiverse
17+
- sourceline: deb #URI# noble main restricted universe multiverse
18+
- sourceline: deb #URI# noble-updates main restricted universe multiverse
19+
- sourceline: deb #URI# noble-security main restricted universe multiverse
20+
- sourceline: deb #URI# noble-backports main restricted universe multiverse
2821
include:
29-
- libc6:amd64
30-
- libsdl2-dev:amd64
31-
- make:amd64
22+
- libc6:#APT_ARCH#
23+
- libsdl2-dev:#APT_ARCH#
24+
- clang-19:#APT_ARCH#
25+
- lld-19:#APT_ARCH#
26+
- llvm-19:#APT_ARCH#
27+
- ninja-build:#APT_ARCH#
3228
files:
3329
include: []
3430
exclude:
@@ -37,6 +33,13 @@ AppDir:
3733
- usr/share/doc/*/changelog.*
3834
- usr/share/doc/*/NEWS.*
3935
- usr/share/doc/*/TODO.*
36+
37+
runtime:
38+
env:
39+
SL_LLVM_PATH: $APPDIR/usr/lib/llvm-19
40+
SL_NINJA_PATH: $APPDIR/usr/bin/ninja
41+
SL_STORE_SYS_CONFIG: "false"
42+
4043
test:
4144
fedora-30:
4245
image: appimagecrafters/tests-env:fedora-30
@@ -59,7 +62,7 @@ AppDir:
5962
command: ./AppRun
6063
use_host_x: true
6164
AppImage:
62-
arch: x86_64
65+
arch: #ARCH#
6366
comp: gzip
6467
update-information: guess
65-
file_name: SerialLoops.AppImage
68+
file_name: SerialLoops-#ARCH#.AppImage

install/linux/dpkg-build/SerialLoops/DEBIAN/control

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ Package: SerialLoops
22
Version: #VERSION#
33
Section: custom
44
Priority: optional
5-
Architecture: amd64
5+
Architecture: #ARCH#
66
Essential: no
7-
Depends: libsdl2-dev, make, dotnet-sdk-8.0
7+
Depends: libsdl2-dev, dotnet-sdk-8.0, clang, lld, ninja-build
88
Maintainer: The Haroohie Translation Club <haroohietranslation@gmail.com>
99
Homepage: https://haroohie.club/chokurestu/serial-loops/
1010
Description: Editor for Suzumiya Haruhi no Chokuretsu

install/linux/flatpak/club.haroohie.SerialLoops.desktop

Lines changed: 0 additions & 9 deletions
This file was deleted.

install/linux/flatpak/club.haroohie.SerialLoops.metainfo.xml

Lines changed: 0 additions & 58 deletions
This file was deleted.

0 commit comments

Comments
 (0)