jens-maus / yam

:mailbox_with_mail: YAM (short for 'Yet Another Mailer') is a MIME-compliant open-source Internet email client written for Amiga-based computer systems (AmigaOS4, AmigaOS3, MorphOS, AROS). It supports POP3, SMTP, TLSv1/SSLv3 connection security, multiple users, multiple identities, PGPv2/v5 encryption, unlimited hierarchical folders, an ARexx interface, etc...
https://yam.ch
GNU General Public License v2.0
61 stars 18 forks source link

Document list of requirements for compiling from source #672

Open midwan opened 5 years ago

midwan commented 5 years ago

Submission type

YAM version

current master branch

It would be great if there was some documentation regarding the environment requirements, in order to compile the project from source. E.g. MUI, the various MCCs, the NDK 3.9 (if needed), etc.

Even with an educated guess that I made, I'm still missing some references to some files which don't seem to be part of external requirements. For example, in src/tcp/Connection.c:

#include "mui/YAMApplication.h"

I cannot locate that file in the current sources?

tboeckel commented 5 years ago

You cannot find that file, because it does not exist in the repository and will never exist. It will be created automatically during the build process.

To be honest, although it is possible to build YAM natively on AmigaOS4 (I never tried AmigaOS3), it is not recommended. First of all because it takes ages to build on AmigaOS (30 minutes at least), while it takes about 2 minutes on a decent Linux machine. Second, the tools available on AmigaOS are utterly outdated. There is a port of "flex" for AmigaOS4, but that version is old and the generated code will crash. Hence the code generated by a newer flex version on Linux is required.

Apart from these obstacles all the required stuff should be included in the repository. Of course you need the system dependent SDK (AmigaOS3, AmigaOS4, MorphOS, AROS) plus the MUI headers (MUI 3.8 is sufficient). And then it is all a simple call of "make OS=os4" to build the AmigaOS4 version.

midwan commented 5 years ago

@tboeckel Thanks for the reply.

I was interested in building the OS3 target (because that's one I can test locally), but not necessarily on OS3 itself, even though we could try that under UAE which is quite fast.

Instead, I thought I'd compile it using my VBCC cross compiler environment (I know you're using GCC here, but I could make the necessary changes). Worst case scenario, I could also do it in GCC under Linux, of course.

I already have the 3.9 NDK in place, as well as the MUI headers and RoadShow's SDK, but as I don't have a full list of requirements for the project I wasn't sure if anything else was needed (e.g. some MCC headers, like NList?). Checking the code showed some unresolved references like the one I mentioned above, so I thought I'd ask. :)