78 lines
3.9 KiB
Markdown
78 lines
3.9 KiB
Markdown
# Does Xenia run on Linux or macOS?
|
|
|
|
The project is designed to support non-Windows platforms but until it's running
|
|
games it's not worth the maintenance burden. MacOS will likely remain unsupported
|
|
until Apple supports Vulkan.
|
|
|
|
There's only a few major pieces that need cleanup before a Linux port can
|
|
proceed in earnest, listed with the [cross-platform tag](https://github.com/xenia-project/xenia/labels/cross-platform).
|
|
Most of the code compiles with the latest Clang, and very few files have
|
|
dependencies on Windows APIs (all of that is isolated to `_win.cc` files).
|
|
Though the codebase is ready for the port, it's not a trivial task and anyone
|
|
seeking to port it will need a deep understanding of Linux, X11, Vulkan, and
|
|
Win32 (to ensure matching semantics).
|
|
|
|
|
|
# You should port it to Linux, then tons of developers will contribute!
|
|
|
|
No, they won't, and that's not how things work. (I'm seriously told this once
|
|
a week...)
|
|
|
|
Think of it this way: the most important kind of contributor in this phase of
|
|
the project is one who is capable of performing the porting work. If someone
|
|
has this capability and feels so strongly about Linux support then they would be
|
|
contributing to the porting efforts already. But otherwise they are nothing
|
|
more than hypothetical members of our collective dreams.
|
|
|
|
|
|
# Why did you do X? Why not just use Y? You should use Y. NIH NIH NIH!
|
|
|
|
Trust that I either have a good reason for what I did or have absolutely no
|
|
reason for what I did. This is a large project that I've been working on
|
|
for almost 5 years and in that time new compilers and language specs have
|
|
been released, libraries have been created and died, and I've learned a lot.
|
|
Constructive contributions and improvements are welcome.
|
|
|
|
|
|
# Have you heard of LLVM/asmjit/jitasm/luajit/etc?
|
|
|
|
Yes, I have heard of them. In fact, I spent a long time trying them out:
|
|
[LLVM](https://github.com/xenia-project/xenia/tree/85bdbd24d1b5923cfb104f45194a96e7ac57026e/src/xenia/cpu/codegen),
|
|
[libjit](https://github.com/xenia-project/xenia/tree/eee856be0499a4bc721b6097f5f2b9446929f2cc/src/xenia/cpu/libjit),
|
|
[asmjit](https://github.com/xenia-project/xenia/tree/ca208fa60a0285d396409743064784cc2320c094/src/xenia/cpu/x64).
|
|
I did not find them acceptable for use in this project for various reasons. If
|
|
for some reason you feel strongly otherwise, feel free to either contribute a
|
|
[new CPU backend](https://github.com/xenia-project/xenia/tree/master/src/xenia/cpu/backend).
|
|
|
|
|
|
# (some argument over an unimportant technical choice)
|
|
|
|
In general: *I don't care*.
|
|
That means I either really don't care and something is they way it is because
|
|
that was convenient or that I don't care because it's not material to the goal
|
|
of the project. There are a million important things that need to be done to get
|
|
games running and going back and forth about unimportant orthogonal issues does
|
|
not help. If you really do have a better way of doing something and can show it,
|
|
contributions are welcome.
|
|
|
|
Here's a short list of common ones:
|
|
|
|
* 'Why this xb stuff?' -- I like it, it helps me. If you want to
|
|
manually execute commands have fun, nothing is stopping you.
|
|
* 'Why not just take the code from project X?' -- the point of this project
|
|
is to build something different than previous emulator projects and learn while
|
|
doing it. The easy way is almost never the best way and most certainly isn't as
|
|
fun.
|
|
* 'Why not CMake?' -- I don't like CMake as it generates ugly Visual Studio
|
|
projects. Premake does what I want (mostly) how I want it to.
|
|
|
|
|
|
# Hey I'm going to go modify every file in the project, ok?
|
|
|
|
We welcome contributions, but please try to understand that we cannot accept
|
|
changes that radically alter the structure or content of the code, especially
|
|
if they are aesthetic and even more so if they are from someone who has not
|
|
contributed before. If a pull request of this nature is denied that doesn't
|
|
necessarily mean your help is not wanted, just that it may need to be more
|
|
carefully applied.
|