Building Atmosphère on Windows using MSYS2

Sometimes you need to build the binaries for Atmosphère, or you want to change something on the source code, for building your starting point should be: https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/building.md
On that document you can read:
Building Atmosphère is a very straightforward process that relies almost exclusively on tools provided by the devkitPro organization.​
Dependencies:
  • devkitA64
  • devkitARM
  • Python 2 (Python 3 may work as well, but this is not guaranteed)
  • LZ4
  • PyCryptodome (optional)
  • Hactool
Setup a DevKitPro environment: (https://devkitpro.org/wiki/Getting_Started)
Install the following packages via (dkp-)pacman:​
  • switch-dev
  • switch-glm
  • switch-libjpeg-turbo
  • devkitARM
  • devkitarm-rules
  • hactool
Install the following library via python's package manager pip, required by exosphere:​
  • lz4
Finally, clone the Atmosphère repository and run make under its root directory.​

That instructions are a little plain for we the noobs.

First you need Install a MSYS environment:
The latest instructions for install the MSYS environment are on https://gbatemp.net/threads/install-msys-environment.652234/ if you don't have one working, use them.

After you have the MSYS environment working you need to install DevKitPro
For that you can follow the instructions on the tutorial https://gbatemp.net/threads/setup-a-devkitpro-environment-on-windows.652238/

Now you can install DevKitPro packages:
Bash:
pacman -S --noconfirm switch-dev devkitA64 dkp-toolchain-vars libnx switch-tools switch-mesa switch-libdrm_nouveau switch-sdl2

And Atmosphère prerequisites
Bash:
Pacman -Sy --noconfirm devkitA64 devkitARM devkitarm-rules hactool mingw-w64-x86_64-python mingw-w64-x86_64-python-lz4 mingw-w64-x86_64-python-pycryptodome switch-dev switch-glm switch-libjpeg-turbo mingw-w64-x86_64-python-pip

For me I had to add zip package because even if wasn't explicit indicated on the build page, the code needs it.

Additional you need the packages git make lz4 for all to work, use the command:

Bash:
Pacman -Sy --noconfirm zip git make lz4


The package hactool need you to copy your own prod.keys file on $HOME/.switch folder. (c:\msys64\home\USERNAME\.switch if you use the default installation folder)

LibNX Dependency
Atmosphère depends heavily on LibNX, generally when a major version of firmware is released or great changes on the code are made, changes to LibNX are also made.
The Atmosphère team works on their own repo of LibNX (https://github.com/Atmosphere-NX/libnx) and forward Pull Request to official SwitchBrew LibNX repo (https://github.com/switchbrew/libnx).

So if there are changes on LibNX you need to build it and install on your setup.
If you haven't done already, setup the environment variables

Bash:
export DEVKITPRO=/opt/devkitpro
export DEVKITARM=${DEVKITPRO}/devkitARM
export DEVKITPPC=${DEVKITPRO}/devkitPPC
export PATH=${DEVKITPRO}/tools/bin:$PATH
Then go to the Atmosphere-NX/LibNX repo and look what is the new branch for the current firmware, by example, for Firmware 16.0.0 the branch name is "1600_Support"

1677718224337.png

Then go to your MSYS MinGW64 window and clone the Atmosphere-NX/LibNX repo

Bash:
cd ~
git clone --recursive https://github.com/Atmosphere-NX/libnx.git
cd libnx

And checkout the needed branch:

Bash:
git checkout 1600_support

Then build and install the new LibNX libraries

Bash:
make install -j$(nproc)

Now you can build Atmosphère with latest LibNX code; remember if you update the pacman LibNX package the changes get reversed and you need to build LibNX again.

Now is time to build the binaries
Clone the repository:
Bash:
cd ~
git clone --recursive https://github.com/Atmosphere-NX/Atmosphere

Go to new created Atmosphère folder
Bash:
cd Atmosphere

Never forget to create the environment variables for DevKitPro
Bash:
export DEVKITPRO=/opt/devkitpro
export DEVKITARM=/opt/devkitpro/devkitARM
export DEVKITPPC=/opt/devkitpro/devkitPPC

And now you are ready to start the building process:
Bash:
make -j$(nproc)

I do use the "-j$(nproc)" parameter to "bleed" all the available CPU to run the compiler, without that the whole process could take up to 1 hour.

I want to thank a lot to @binkinator and @godreborn for all the help and inspiration to make this guide, and want to ask you for help improving this guide.

Also special thanks to @godreborn for been a support of the users replies and suggestions to the OP.

Remember, as you are getting a new set of binaries, you need new set of sigpatches if you use it. So the great tool from @mrdude comes in hand, the latest release can be downloaded from: https://github.com/mrdude2478/IPS_Patch_Creator/releases/; you use the program to generate a new set of patches for your recently build package3 file.


Latest IPS Patch Creator:
Sigpatch-IPS-Creator_1.5.7_Yandex.png





-Edited: add sigpatches step and clean up a little-
-Edit 2, add LibNX build-
 

Attachments

  • 1695782853186.png
    1695782853186.png
    62.7 KB · Views: 58
  • 1695782902542.png
    1695782902542.png
    6.4 KB · Views: 59
Last edited by impeeza,

Muxi

Well-Known Member
Member
Joined
Jun 1, 2016
Messages
606
Trophies
0
Age
52
XP
2,140
Country
Germany
I deleted the libnx folder and now entered the 3 commands from you. libnx is compiling.

Code:
$ git clone --recursive https://github.com/Atmosphere-NX/libnx.git
Cloning into 'libnx'...
remote: Enumerating objects: 22478, done.
remote: Counting objects: 100% (1477/1477), done.
remote: Compressing objects: 100% (505/505), done.
remote: Total 22478 (delta 979), reused 1382 (delta 962), pack-reused 21001
Receiving objects: 100% (22478/22478), 5.60 MiB | 11.02 MiB/s, done.
Resolving deltas: 100% (16547/16547), done.

ML@DESKTOP-POV6TAG MINGW64 ~
$ cd libnx

ML@DESKTOP-POV6TAG MINGW64 ~/libnx
$ git checkout erpt_fs_info
branch 'erpt_fs_info' set up to track 'origin/erpt_fs_info'.
Switched to a new branch 'erpt_fs_info'

ML@DESKTOP-POV6TAG MINGW64 ~/libnx
$ make install
make -C nx/ install
make[1]: Entering directory '/home/ML/libnx/nx'
Post automatically merged:

Has unfortunately brought nothing. An error message still appears.
Code:
make[1]: Leaving directory '/home/ML/Atmosphere'
make: *** [Makefile:39: nx_release] Error 2

I have replaced "git checkout 1700_support" with "git checkout erpt_fs_info" under point 3 of my list.
 
Last edited by Muxi,

Muxi

Well-Known Member
Member
Joined
Jun 1, 2016
Messages
606
Trophies
0
Age
52
XP
2,140
Country
Germany
Have you cleaned your source folder?
I always delete those, so the "libnx" and "atmosphere" folder and then clone again.
Post automatically merged:

I started over and compiled libnx, as well as atmosphere. Unfortunately I still get error messages. I have attached the history with the request for help. Many thanks in advance.
 

Attachments

  • Compiling_atmosphere.txt
    386.6 KB · Views: 29
Last edited by Muxi,

josete2k

Well-Known Member
Member
Joined
Apr 24, 2009
Messages
680
Trophies
1
Age
43
Location
Spain
XP
1,625
Country
Spain
Same errors I have... it seems that troposphere isn't supported by the ner libnx.

Try with this atmosphere.mk
 

Attachments

  • atmosphere.mk.zip
    2 KB · Views: 20
LibNX addition

impeeza

¡Kabito!
OP
Member
Joined
Apr 5, 2011
Messages
6,425
Trophies
3
Age
46
Location
At my chair.
XP
19,111
Country
Colombia
Will try this night at home.
Post automatically merged:

Since commit edb4e2e SciresM had make several changes on the code, and seems the Atmosphere-libs And Libnx have not updated yet,

I you like to build a atmosphère now, get back to commit edb4e2e and build and install 1700_support branch of https://github.com/Atmosphere-NX/libnx.

as far we need to wait to Atmosphere-nx teams update all extra repos.
 
Last edited by impeeza,
  • Like
Reactions: josete2k and Muxi

josete2k

Well-Known Member
Member
Joined
Apr 24, 2009
Messages
680
Trophies
1
Age
43
Location
Spain
XP
1,625
Country
Spain
Will try this night at home.
Post automatically merged:

Since commit edb4e2e SciresM had make several changes on the code, and seems the Atmosphere-libs And Libnx have not updated yet,

I you like to build a atmosphère now, get back to commit edb4e2e and build and install 1700_support branch of https://github.com/Atmosphere-NX/libnx.

as far we need to wait to Atmosphere-nx teams update all extra repos.
There is a new branch of libnx but seems unfinished...

https://github.com/Atmosphere-NX/libnx/tree/erpt_fs_info


Check again because it has been updated 2 hours ago...

And atmosphere 10 minutes ago

https://github.com/Atmosphere-NX/Atmosphere/branches
 
Last edited by josete2k,
  • Like
Reactions: Muxi

Muxi

Well-Known Member
Member
Joined
Jun 1, 2016
Messages
606
Trophies
0
Age
52
XP
2,140
Country
Germany
I just tried again (git checkout erpt_fs_info and 1700_support), but still get this error message again:

Code:
make[1]: Leaving directory '/home/ML/Atmosphere'
make: *** [Makefile:39: nx_release] Error 2

btw:
Where can I check or find out which branch (1700_support, erpt_fs_info etc.) is required for compiling?

Edit:
Apparently, this can be read from the active branches.
 

Attachments

  • 2023-10-26 11_22_10-Branches · Atmosphere-NX_libnx · GitHub – Opera.png
    2023-10-26 11_22_10-Branches · Atmosphere-NX_libnx · GitHub – Opera.png
    79.8 KB · Views: 18
Last edited by Muxi,

impeeza

¡Kabito!
OP
Member
Joined
Apr 5, 2011
Messages
6,425
Trophies
3
Age
46
Location
At my chair.
XP
19,111
Country
Colombia
I just tried again (git checkout erpt_fs_info and 1700_support), but still get this error message again:

Code:
make[1]: Leaving directory '/home/ML/Atmosphere'
make: *** [Makefile:39: nx_release] Error 2

btw:
Where can I check or find out which branch (1700_support, erpt_fs_info etc.) is required for compiling?

Edit:
Apparently, this can be read from the active branches.
Yeah they're still working in updates so a little patience and if you like to build a atmosphère for now, get back to commit edb4e2e, installing 1700_support branch of https://github.com/Atmosphere-NX/libnx.
 
  • Like
Reactions: Muxi

Muxi

Well-Known Member
Member
Joined
Jun 1, 2016
Messages
606
Trophies
0
Age
52
XP
2,140
Country
Germany
Thanks for the feedback and the tip. I will then just wait and see. Do you think that "1700_support" will be the correct branch again?
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • impeeza @ impeeza:
    @Xdqwerty yes, when you are installing Windows on the first steps you are asked for your current location, you MUST to select «international» so no bloatware is installed, because the bloatware is location based. if this night I have some time I will setup a VM and take screenshots.
    +2
  • BigOnYa @ BigOnYa:
    User Gates "Disliked" your answer.
    +3
  • Psionic Roshambo @ Psionic Roshambo:
    Damn cleaned up 348GB's of crap I wasn't using with that lol
    +2
  • BigOnYa @ BigOnYa:
    But can it completely remove RealPlayer? Lol jk
    +3
  • Psionic Roshambo @ Psionic Roshambo:
    I remember at one point it being pretty much labeled as malware lol
  • Psionic Roshambo @ Psionic Roshambo:
    I think my favorite one was that dancing purple gorilla... I uninstalled that thing from sooo many machine people would be like "Why is my computer so slow?" lol because this thing is using like 30% of your system resources.....
    +1
  • Psionic Roshambo @ Psionic Roshambo:
    This one lady... her son kept installing Kazaa... OK no problem the issue is he would download DBZ movies and they where amazing usually like 2-8KB in size lol can't remember how many times I had to format and reinstall windows over his stupidity. I even explained to him about file sizes multiple times...
    +1
  • Psionic Roshambo @ Psionic Roshambo:
    yeah Bonzi buddy was malware sort of... It was borderline lol
  • Psionic Roshambo @ Psionic Roshambo:
    At minimum it was nothing anyone should have ever installed lol
    +1
  • SylverReZ @ SylverReZ:
    @BigOnYa, RealPlayer is spyware too.
    +2
  • SylverReZ @ SylverReZ:
    @Psionic Roshambo, Yeah, BonziBuddy was both spyware and ad-ware. It collected children's personal information without consent as well as display fake Windows popups.
    +1
  • Xdqwerty @ Xdqwerty:
    @SylverReZ, atleast bonzi got discontinued
    +2
  • SylverReZ @ SylverReZ:
    @Xdqwerty, The people who created Bonzi now owns a company called 2KDirect; an advertising firm. https://www.ipromote.com/
    +1
  • Xdqwerty @ Xdqwerty:
    @SylverReZ, atleast they get slightly cleaner money
    +1
  • BakerMan @ BakerMan:
    guys, hot take
    +2
  • Psionic Roshambo @ Psionic Roshambo:
    So Bonzi buddy was an evil version of Alexa lol
    +2
  • BakerMan @ BakerMan:
    the legal drinking age here in the US is 21, as some of you may know, but i think either it should be 18 or the age you're an adult should be 21.
    +2
  • BakerMan @ BakerMan:
    and i know what you may be thinking, "why become an adult at 21? doesn't that mean that banging an 18 year old would be illegal?"
    first of all, being in a relationship with someone who's 18 is technically ok, as long as it started when they were 18, but the age gap is still weird depending on how old you are. besides, the age of consent differs between different states
    BakerMan @ BakerMan: and i know what you may be thinking, "why become an adult at 21? doesn't that mean that banging...