{"id":18616481,"url":"https://github.com/marcauberer/compiler-design-series-init","last_synced_at":"2026-01-25T19:03:21.435Z","repository":{"id":230956170,"uuid":"711333186","full_name":"marcauberer/compiler-design-series-init","owner":"marcauberer","description":"Example project template for the compiler design article series","archived":false,"fork":false,"pushed_at":"2024-03-25T15:14:25.000Z","size":5,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-27T03:25:25.310Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"CMake","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/marcauberer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-10-28T23:22:01.000Z","updated_at":"2024-04-01T21:37:53.000Z","dependencies_parsed_at":"2024-04-01T20:01:33.024Z","dependency_job_id":null,"html_url":"https://github.com/marcauberer/compiler-design-series-init","commit_stats":null,"previous_names":["marcauberer/compiler-design-series-init"],"tags_count":0,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcauberer%2Fcompiler-design-series-init","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcauberer%2Fcompiler-design-series-init/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcauberer%2Fcompiler-design-series-init/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcauberer%2Fcompiler-design-series-init/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marcauberer","download_url":"https://codeload.github.com/marcauberer/compiler-design-series-init/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239412505,"owners_count":19634016,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-07T03:35:20.437Z","updated_at":"2025-11-03T06:30:36.747Z","avatar_url":"https://github.com/marcauberer.png","language":"CMake","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Compiler Design article series - MathExpr toy language template\n\nThis is the template repository to start off leaning about compilers and implementing one yourself, without worrying about the setup stuff.\n\nIf you want to see, how the finished compiler for `MathExpr` looks like, check out the [main repo](https://github.com/marcauberer/compiler-design-series).\n\n## Setup steps\n\n1. Create repo from this template (Click the green `Use this template` button in the top right corner)\n2. Clone it to your machine\n3. Get yourself a C++ compiler, e.g. GCC or Clang (e.g. [winlibs.com](https://winlibs.com), not forget to add `bin` dir to system PATH variable)\n4. Build LLVM (see below)\n5. Set environment variable `LLVM_DIR` to `\u003cllvm-build-dir\u003e/lib/cmake/llvm`\n6. Try running `./build.sh` (Linux) or `.\\build.bat` (Windows)\n\n## Build LLVM\n\n### Prerequisites\n\n- CMake\n- C++ Compiler and Linker\n- Generator, e.g. Ninja\n- Optional: CCache (add this to the cmake command below: `-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache`)\n\n### Setup\n\nExecute the following instructions in a directory, where you have a few spare gigabytes:\n\n**Linux**\n```bash\ngit clone --depth 1 --branch llvmorg-18.1.2 https://github.com/llvm/llvm-project llvm\nmkdir ./llvm/build-release\ncd ./llvm/build-release\ncmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_CXX_FLAGS_RELWITHDEBINFO=\"-O2\" -GNinja ../llvm\ncmake --build .\n```\n\n**Windows**\n```bash\ngit clone --depth 1 --branch llvmorg-18.1.2 https://github.com/llvm/llvm-project llvm\nmkdir .\\llvm\\build-release\ncd .\\llvm\\build-release\ncmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_CXX_FLAGS_RELWITHDEBINFO=\"-O2\" -GNinja ..\\llvm\ncmake --build .\n```\n\n© Marc Auberer 2023-2024","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcauberer%2Fcompiler-design-series-init","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarcauberer%2Fcompiler-design-series-init","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcauberer%2Fcompiler-design-series-init/lists"}