~habibalamin/mirapack

mirapack is an unofficial package manager and compiler for Miranda-based projects
Add basic mirapack implementation w/ MIT license
[INITIAL] Add README.md for mirapack

refs

master
browse  log 

clone

read-only
https://git.sr.ht/~habibalamin/mirapack
read/write
git@git.sr.ht:~habibalamin/mirapack

You can also use your local clone with git send-email.

#mirapack

mirapack is an unofficial package manager and compiler for Miranda-based projects that fixes some minor niggles in the Miranda development experience.

It is intended to be a first pass, and has no lofty ambitions to be the de facto solution to any of the problems it solves.

#Why?

  1. Miranda's reference compiler does not compile to executable object files that any OS can run directly.
  2. Miranda only allows one library directory, which means that when including one Miranda script into another, to include scripts in the current project, one has to reference the script to be included using a relative path that starts from the directory of the including script; this gets quite ugly when you have to reference scripts that require going up a directory.

mirapack's solution to the second is to have (copies of) both the standard library and project files in the same directory and use that directory as the single library directory when building the project.

mirapack's solution to the second is to pack everything needed to run the code (including mira itself) into an archive, append that archive to a shell script which, when run, extracts it to a temporary directory, runs the code with the library directory set to the temporary directory, and removes the temporary directory to clean up.

At this point, we're treating the standard library as a dependency and chucking it into the same directory as the project files to build the project. It's a small step to go from there to allowing arbitrary Miranda dependencies to be specified in a manifest file, and extract the specified Miranda dependencies into the same directory the standard library and project files are chucked into before building.

#Usage

mirapack [name]

main.m will be compiled into .mirapack/build/$PWD by default, and into .mirapack/build/$name if a name is given.