These alias the standard library unique_ptr and shared_ptr
riscv: Use Unique in many places
Uses lucore::Unique. This should hopefully help memory management somewhat.
lcpu: Use Unique
riscv::System::Create now creates a Unique
so does lucore::Library::OpenExisting
The test-gmod project now builds without any hand-written Makefile, building it by using projgen to generate a makefile then make to build it now works!
I'm pretty happy with it, there's a couple things I might want to fix/add, but for now it's functionally ready.
Now I can probably focus on building a Containerfile for the build image.
This commit adds `projgen`, a very simplistic project generator.
Some knobs to the build system were added to ensure that only the
needed parts will build with each end (building the GMod module won't build projgen
since that isn't needed on the host)
The fun part will be figuring out how to jail things properly
32-bit builds using the development headers work on the legacy 32-bit branch so I don't really see a reason to not support it..
sure, it sucks that I now won't be able to get rid of a pretty gnarly codepath, but /shrug
Another thing checked off the todo list!
Now all I really need to do is uploading (maybe get to work on the project system too?)
This removes the lua test device since it was just that - a test
LuaDevice now works fully, without any weird bugs. Yay!
This took quite a bit of bugstomping to arrive to; some of which ended up discovering I'm not particularly proud of doing. Oops!
The LuaCpu implementation no longer has a UART implementation in C++ (which actually leaked everytime a LuaCpu was garbage collected... Yeesh) - instead the Lua entity code actually implements the UART! Pretty cool to see the fruits of my labor actually working!
The LuaHelpers macros are renamed slightly to make them less of a pain (and also because I think having `_IMPLEMENT` in a function implementation is a bit stupid.)
I have updated the ideas document to better reflect my plans for the project system.
I didn't like how I did it before, and I don't like how right now everything binds a bit differently.
So let's unify it using the way I like (from the LuaDevice binding)!
now i can like, actually finish this thing
i will probably commonize all the stuff the luadevice class is doing right now into its own object, since I think that it would be very useful to have elsewhere. but for now it's not common :(
It now doesn't assume literally every device would map something to memory.
This should also fix some API orthogonality issues (ergo the CPU being treated specially)
I could have implemented a spdlog sink, however spdlog isn't setup for standard format header being a thing yet.
This also introduces a temporary executable target for my own testing of lucore utilities.