{"id":16919312,"url":"https://github.com/bkaradzic/genie","last_synced_at":"2025-05-14T18:02:31.777Z","repository":{"id":20500793,"uuid":"23779242","full_name":"bkaradzic/GENie","owner":"bkaradzic","description":"GENie - Project generator tool","archived":false,"fork":false,"pushed_at":"2025-03-15T19:05:58.000Z","size":4729,"stargazers_count":934,"open_issues_count":93,"forks_count":171,"subscribers_count":36,"default_branch":"master","last_synced_at":"2025-05-14T18:02:17.752Z","etag":null,"topics":["cmake","fastbuild","generator","makefile","ninja","premake","qbs","qtcreator","visual-studio","xcode"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bkaradzic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2014-09-08T04:32:44.000Z","updated_at":"2025-05-14T00:53:05.000Z","dependencies_parsed_at":"2024-10-27T23:46:19.508Z","dependency_job_id":"acfb174b-a699-4a41-962d-38f1f9cda5d3","html_url":"https://github.com/bkaradzic/GENie","commit_stats":{"total_commits":1010,"total_committers":73,"mean_commits":"13.835616438356164","dds":0.4356435643564357,"last_synced_commit":"93f6621b979f64aed4f31448cb3ce4b21b758f05"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bkaradzic%2FGENie","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bkaradzic%2FGENie/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bkaradzic%2FGENie/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bkaradzic%2FGENie/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bkaradzic","download_url":"https://codeload.github.com/bkaradzic/GENie/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254198453,"owners_count":22030964,"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":["cmake","fastbuild","generator","makefile","ninja","premake","qbs","qtcreator","visual-studio","xcode"],"created_at":"2024-10-13T19:43:52.173Z","updated_at":"2025-05-14T18:02:31.754Z","avatar_url":"https://github.com/bkaradzic.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://repository-images.githubusercontent.com/23779242/961ad700-8d21-11ea-85d3-1d64eccc4531\" width=\"1280\"\u003e \n\u003c/p\u003e\n\n[GENie](https://github.com/bkaradzic/genie#what-is-it) - Project generator tool\n===============================================================================\n\n[![Build and Upload Artifact](https://github.com/bkaradzic/GENie/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/bkaradzic/GENie/actions/workflows/build.yml)\n\nWhat is it?\n-----------\n\n**GENie** (pronounced as Jenny) is project generator tool. It automagically\ngenerates project from Lua script, making applying the same settings for\nmultiple projects easy.\n\nSupported project generators:\n * GNU Makefile\n * [JSON Compilation Database][jcdb]\n * Ninja (experimental)\n * Visual Studio 2010, 2012, 2013, 2015, 2017, 2019, 2022\n * XCode\n\nDownload (stable)\n-----------------\n\n\tversion 1190 (commit 5f5363f79fd0934dfd775af5c097703f0791923f)\n\nLinux:  \nhttps://github.com/bkaradzic/bx/raw/master/tools/bin/linux/genie\n\nOSX:  \nhttps://github.com/bkaradzic/bx/raw/master/tools/bin/darwin/genie\n\nWindows:  \nhttps://github.com/bkaradzic/bx/raw/master/tools/bin/windows/genie.exe\n\nBuilding (dev)\n--------------\n\n\t$ git clone https://github.com/bkaradzic/genie\n\t$ cd genie\n\t$ make\n\nDocumentation\n-------------\n\n[Scripting Reference](https://github.com/bkaradzic/genie/blob/master/docs/scripting-reference.md#scripting-reference)  \n\nIntroduction to GENie - CppCon 2016  \n\u003ca href=\"http://www.youtube.com/watch?feature=player_embedded\u0026v=_vArtdDTrTM\" \ntarget=\"_blank\"\u003e\u003cimg src=\"http://img.youtube.com/vi/_vArtdDTrTM/0.jpg\" \nalt=\"Introduction to GENie - CppCon 2016\" width=\"640\" height=\"480\" border=\"0\" /\u003e\u003c/a\u003e\n\nHistory\n-------\n\nInitial version of **GENie** is [fork](https://github.com/bkaradzic/GENie/blob/c7e7da4aafe4210aa014a8ae8f6b01ce1d6802f0/README.md#why-fork)\nof Premake 4.4 beta 5, and there is no intention to keep it compatible with it.\n\n## Changelog (since fork)\n\n - Added vs2013 support.\n - Added hash UUID support. `os.uuid(\u003cstring\u003e)` should produce consistent UUID.\n - Added search for default script. Default script name is changed to genie.lua\n   (solution.lua and premake4.lua are also allowed), and it can be located in\n   `scripts` directory.\n - Updated Lua from 5.1.4 to 5.3.0.\n - Disabled `SmallerTypeCheck` VS option when `ExtraWarnings` is set (need to\n   move it into separate option).\n - New versioning scheme based on revision number from git.\n - Added `startproject \"\u003cproject name\u003e\"` to set default project in VS.\n - Removed `NoMinimalRebuild` and added reversed logic to `EnableMinimalRebuild`.\n - Added `NoMultiProcessorCompilation` flag to disable multiprocessor\n   compilation in MSVC.\n - Added ability to configure Visual Studio toolset from GENie script.\n - Added `UnsignedChar` flag to force char to be unsigned.\n - Removed vs2002, vs2003, vs2005, Solaris, and Haiku support.\n - Allow source files in the same project to have the same name. Added \n   `SingleOutputDir` flag to use single output directory (original behaviour).\n - Added WinRT support (Windows Phone 8.1, Windows Store, Universal Apps).\n - Added `removeflags`, `removelinks`.\n - Added vs2015 support.\n - Added `targetsubdir`.\n - Added support for solution folders `group`.\n - Added `options` section (and `ForceCpp` to enforce C++ compile even if\n   extension is for C files)\n - Added `msgcompile`, `msgresource`, `msglinking` and `msgarchiving` as\n   overrides for make messages.\n - Added `messageskip` list to disable some of compiler messages.\n - Added `buildoptions_c`, `buildoptions_cpp`, `buildoptions_objc`,\n   `buildoptions_objcpp`, `buildoptions_asm`, `buildoptions_swift` for\n   configuring language specific build options.\n - Split functionality of `excludes` in `removefiles` and `excludes`. With VS\n   `excludes` will exclude files from build but files will be added to project\n   file. `removefiles` removes files completely from project.\n - Added support for generating PS4/Orbis projects.\n - Fixed PCH race when using concurrent Makefile build.\n - Added Green Hills Software compiler support.\n - Added edit \u0026 continue support for 64-bit builds in vs2013 upwards.\n - Added `windowstargetplatformversion` to specify VS Windows target version.\n - Added `NoWinRT` flag to disable WinRT CX builds.\n - Added `NoBufferSecurityCheck` flag to disable security checks in VS.\n - Added `nopch` file list to exclude files from using PCH.\n - Added `EnableAVX` and `EnableAVX2` flags to enable enhanced instruction set.\n - Added FASTBuild (.bff) project generator.\n - Added Vala language support.\n - Added MASM support for Visual Studio projects.\n - Added `userincludedirs` for include header with angle brackets and quotes\n   search path control.\n - Detect when generated project files are not changing, and skip writing over\n   existing project files.\n - Added Ninja project generator.\n - Added ability to specify MSVC \"Old Style\" debug info format with\n   `C7DebugInfo`.\n - Added some support for per-configuration `files` lists.\n - Removed `clean` action.\n - Added support for QtCreator via Qbs build tool.\n - Added .natvis file type support for Visual Studio.\n - Added Swift language support for make and ninja build generators.\n - Removed CodeBlocks and CodeLite support.\n - Added vs2017 support.\n - Removed vs2008 support.\n - Added `removeplatforms` that removes VS build target platforms.\n - Added `PedanticWarnings` flag.\n - Added `ObjcARC` flag to enable automatic reference counting for Objective-C(++).\n - Added `iostargetplatformversion`, `macostargetplatformversion`, and\n   `tvostargetplatformversion` to specify XCode OS target version.\n - Removed the `xcode3`, and `xcode4` actions.\n - Added the `xcode8`, `xcode9`, `xcode10`, `xcode11` and `xcode14` actions.\n - Added `systemincludedirs` that are always searched after directories added\n   using `includedirs`.\n - Added `NoRuntimeChecks` flag to disable Basic Runtime Checks in non-optimized\n   Visual Studio builds.\n - Added support for Nintendo Switch projects.\n - Added flags for selecting C++ standard: `Cpp11`, `Cpp14`, `Cpp17`, `Cpp20`\n   and `CppLatest`.\n - Added `xcodeprojectopts` and `xcodetargetopts`.\n - Added vs2019 support.\n - Added `UnitySupport` flag to enable Unity (Jumbo) builds in vs2019\n - Added the `jcdb` action for generating a [JSON compilation database][jcdb].\n - Added support for generating Switch/NX32 Switch/NX64 projects.\n - Removed FASTBuild.\n - Removed Qbs support.\n - Added vs2022 support.\n - Added xcode15 action with visionOS support.\n\nbuild - GENie build system scripts\n----------------------------------\n\nbuild is a set of build system scripts and related tools, built around\nGENie project generator tool.\n\nhttps://milostosic.github.io/build/\n\nDebugging GENie scripts\n-----------------------\n\nIt is possible to debug build scripts using [ZeroBrane Studio][zbs]. You must\ncompile GENie in debug mode\n\n    $ make config=debug\n\nThis ensures the core lua scripts are loaded from disk rather than compiled\ninto the GENie binary. Create a file named `debug.lua` as a sibling to your\nmain `genie.lua` script with the following content:\n\n    local zb_path = \u003cpath to ZeroBraneStudio\u003e\n    local cpaths = {\n        string.format(\"%s/bin/lib?.dylib;%s/bin/clibs53/?.dylib;\", zb_path, zb_path),\n        package.cpath,\n    }\n    package.cpath = table.concat(cpaths, ';')\n\n    local paths = {\n        string.format('%s/lualibs/?.lua;%s/lualibs/?/?.lua', zb_path, zb_path),\n        string.format('%s/lualibs/?/init.lua;%s/lualibs/?/?/?.lua', zb_path, zb_path),\n        string.format('%s/lualibs/?/?/init.lua', zb),\n        package.path,\n    }\n    package.path = table.concat(paths, ';')\n\n    require('mobdebug').start()\n\n**NOTE:** update `zb_path` to refer to the root of your ZeroBrane Studio\ninstall. For reference, you should find `lualibs` in you `zb_path` folder\n\nTo debug, make sure ZBS is listening for debug connections and add\n`dofile(\"debug.lua\")` to `genie.lua`\n\nWho is using it?\n----------------\n\nhttps://github.com/bkaradzic/bgfx bgfx - Cross-platform, graphics API\nagnostic, \"Bring Your Own Engine/Framework\" style rendering library.\n\nhttps://github.com/Psybrus/Psybrus Psybrus Engine \u0026 Toolchain\n\nhttps://github.com/dariomanesku/cmftstudio cmftStudio - cubemap filtering tool\n\nhttps://github.com/mamedev/mame MAME - Multiple Arcade Machine Emulator\n\nhttp://sol.gfxile.net/soloud SoLoud is an easy to use, free, \nportable c/c++ audio engine for games.\n\nhttps://github.com/andr3wmac/Torque6 Torque 6 is an MIT licensed 3D engine\nloosely based on Torque2D. Being neither Torque2D or Torque3D it is the 6th\nderivative of the original Torque Engine.\n\nhttps://milostosic.github.io/MTuner MTuner is a memory profiler and memory leak finder for Windows, PS4,\nPS3.\n\nDeveloper Crackshell used GENie for development of games\n[Heroes of Hammerwatch](http://store.steampowered.com/app/677120/Heroes_of_Hammerwatch/), and\n[Serious Sam's Bogus Detour](http://store.steampowered.com/app/272620/Serious_Sams_Bogus_Detour/).\n\n[License](https://github.com/bkaradzic/genie/blob/master/LICENSE)\n-----------------------------------------------------------------\n\n\tGENie\n\tCopyright (c) 2014-2018 Branimir Karadžić, Neil Richardson, Mike Popoloski,\n\tDrew Solomon, Ted de Munnik, Miodrag Milanović, Brett Vickers, Bill Freist,\n\tTerry Hendrix II, Ryan Juckett, Andrew Johnson, Johan Sköld,\n\tAlastair Murray, Patrick Munns, Jan-Eric Duden, Phil Stevens, Stuart Carnie,\n\tNikolay Aleksiev, Jon Olson, Mike Fitzgerald, Anders Stenberg, Violets,\n\tHugo Amnov, Christian Helmich.\n\tAll rights reserved.\n\n\thttps://github.com/bkaradzic/genie\n\t\n\tRedistribution and use in source and binary forms, with or without modification,\n\tare permitted provided that the following conditions are met:\n\t\n\t1. Redistributions of source code must retain the above copyright notice,\n\t\tthis list of conditions and the following disclaimer.\n\t\n\t2. Redistributions in binary form must reproduce the above copyright notice,\n\t\tthis list of conditions and the following disclaimer in the documentation\n\t\tand/or other materials provided with the distribution.\n\t\n\t3. Neither the name of the GENie nor the names of its contributors may be \n\t\tused to endorse or promote products derived from this software without\n\t\tspecific prior written permission.\n\t\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n\tANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n\tWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE \n\tDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n\tFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n\tDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n\tSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n\tCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n\tOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n\tOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n  [jcdb]: https://clang.llvm.org/docs/JSONCompilationDatabase.html\n  [zbs]: https://studio.zerobrane.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbkaradzic%2Fgenie","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbkaradzic%2Fgenie","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbkaradzic%2Fgenie/lists"}