• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..27-Oct-2020-

build/H03-May-2022-2,8322,379

docs/H27-Oct-2020-2,6791,900

scripts/H27-Oct-2020-292169

src/H27-Oct-2020-43,77730,440

tests/H03-May-2022-9,0706,166

.editorconfigH A D27-Oct-2020228 1411

.gitignoreH A D27-Oct-202042 54

.travis.ymlH A D27-Oct-2020206 2116

LICENSEH A D27-Oct-20205.5 KiB11388

README.mdH A D27-Oct-202010.3 KiB244196

makefileH A D27-Oct-20201.8 KiB6850

README.md

1[GENie](https://github.com/bkaradzic/genie#what-is-it) - Project generator tool
2===============================================================================
3
4What is it?
5-----------
6
7**GENie** (pronounced as Jenny) is project generator tool. It automagically
8generates project from Lua script, making applying the same settings for
9multiple projects easy.
10
11Supported project generators:
12 * FASTBuild (experimental)
13 * GNU Makefile
14 * Ninja (experimental)
15 * Qbs / QtCreator (experimental)
16 * Visual Studio 2010, 2012, 2013, 2015, 2017, 2019
17 * XCode
18
19Download (stable)
20-----------------
21
22[![Build Status](https://travis-ci.org/bkaradzic/GENie.svg?branch=master)](https://travis-ci.org/bkaradzic/GENie)
23
24	version 1115 (commit cd9b1a624810b166d11788d01c2aa4daf2ea42e6)
25
26Linux:
27https://github.com/bkaradzic/bx/raw/master/tools/bin/linux/genie
28
29OSX:
30https://github.com/bkaradzic/bx/raw/master/tools/bin/darwin/genie
31
32Windows:
33https://github.com/bkaradzic/bx/raw/master/tools/bin/windows/genie.exe
34
35Building (dev)
36--------------
37
38	$ git clone https://github.com/bkaradzic/genie
39	$ cd genie
40	$ make
41
42Documentation
43-------------
44
45[Scripting Reference](https://github.com/bkaradzic/genie/blob/master/docs/scripting-reference.md#scripting-reference)
46[Introduction to GENie - CppCon 2016](https://onedrive.live.com/view.aspx?cid=171ee76e679935c8&page=view&resid=171EE76E679935C8!139573&parId=171EE76E679935C8!18835&authkey=!AKv_SGrgJwxDGDg&app=PowerPoint)
47
48History
49-------
50
51Initial version of **GENie** is [fork](https://github.com/bkaradzic/GENie/blob/c7e7da4aafe4210aa014a8ae8f6b01ce1d6802f0/README.md#why-fork)
52of Premake 4.4 beta 5, and there is no intention to keep it compatible with it.
53
54## Changelog (since fork)
55
56 - Added vs2013 support.
57 - Added hash UUID support. `os.uuid(<string>)` should produce consistent UUID.
58 - Added search for default script. Default script name is changed to genie.lua
59   (solution.lua and premake4.lua are also allowed), and it can be located in
60   `scripts` directory.
61 - Updated Lua from 5.1.4 to 5.3.0.
62 - Disabled `SmallerTypeCheck` VS option when `ExtraWarnings` is set (need to
63   move it into separate option).
64 - New versioning scheme based on revision number from git.
65 - Added `startproject "<project name>"` to set default project in VS.
66 - Removed `NoMinimalRebuild` and added reversed logic to `EnableMinimalRebuild`.
67 - Added `NoMultiProcessorCompilation` flag to disable multiprocessor
68   compilation in MSVC.
69 - Added ability to configure Visual Studio toolset from GENie script.
70 - Added `UnsignedChar` flag to force char to be unsigned.
71 - Removed vs2002, vs2003, vs2005, Solaris, and Haiku support.
72 - Allow source files in the same project to have the same name. Added
73   `SingleOutputDir` flag to use single output directory (original behaviour).
74 - Added WinRT support (Windows Phone 8.1, Windows Store, Universal Apps).
75 - Added `removeflags`, `removelinks`.
76 - Added vs2015 support.
77 - Added `targetsubdir`.
78 - Added support for solution folders `group`.
79 - Added `options` section (and `ForceCpp` to enforce C++ compile even if
80   extension is for C files)
81 - Added `msgcompile`, `msgresource`, `msglinking` and `msgarchiving` as
82   overrides for make messages.
83 - Added `messageskip` list to disable some of compiler messages.
84 - Added `buildoptions_c`, `buildoptions_cpp`, `buildoptions_objc`,
85   `buildoptions_objcpp`, `buildoptions_asm`, `buildoptions_swift` for
86   configuring language specific build options.
87 - Split functionality of `excludes` in `removefiles` and `excludes`. With VS
88   `excludes` will exclude files from build but files will be added to project
89   file. `removefiles` removes files completely from project.
90 - Added support for generating PS4/Orbis projects.
91 - Fixed PCH race when using concurrent Makefile build.
92 - Added Green Hills Software compiler support.
93 - Added edit & continue support for 64-bit builds in VS2013 upwards.
94 - Added `windowstargetplatformversion` to specify VS Windows target version.
95 - Added `NoWinRT` flag to disable WinRT CX builds.
96 - Added `NoBufferSecurityCheck` flag to disable security checks in VS.
97 - Added `nopch` file list to exclude files from using PCH.
98 - Added `EnableAVX` and `EnableAVX2` flags to enable enhanced instruction set.
99 - Added FASTBuild (.bff) project generator.
100 - Added Vala language support.
101 - Added MASM support for Visual Studio projects.
102 - Added `userincludedirs` for include header with angle brackets and quotes
103   search path control.
104 - Detect when generated project files are not changing, and skip writing over
105   existing project files.
106 - Added Ninja project generator.
107 - Added ability to specify MSVC "Old Style" debug info format with
108   `C7DebugInfo`.
109 - Added some support for per-configuration `files` lists.
110 - Removed `clean` action.
111 - Added support for QtCreator via Qbs build tool.
112 - Added .natvis file type support for Visual Studio.
113 - Added Swift language support for make and ninja build generators.
114 - Removed CodeBlocks and CodeLite support.
115 - Added vs2017 support.
116 - Removed vs2008 support.
117 - Added `removeplatforms` that removes VS build target platforms.
118 - Added `PedanticWarnings` flag.
119 - Added `ObjcARC` flag to enable automatic reference counting for Objective-C(++).
120 - Added `iostargetplatformversion`, `macostargetplatformversion`, and
121   `tvostargetplatformversion` to specify XCode OS target version.
122 - Removed the `xcode3`, and `xcode4` actions.
123 - Added the `xcode8`, `xcode9`, and `xcode10` actions.
124 - Added `systemincludedirs` that are always searched after directories added
125   using `includedirs`.
126 - Added `NoRuntimeChecks` flag to disable Basic Runtime Checks in non-optimized
127   Visual Studio builds.
128 - Added support for Nintendo Switch projects.
129 - Added flags for selecting C++ standard: `Cpp11`, `Cpp14`, `Cpp17`,
130   and `CppLatest`.
131 - Added `xcodeprojectopts` and `xcodetargetopts`.
132 - Added vs2019 support.
133 - Added UnitySupport flag to enable Unity (Jumbo) builds in Visual Studio 2019
134
135build - GENie build system scripts
136----------------------------------
137
138build is a set of build system scripts and related tools, built around
139GENie project generator tool.
140
141https://milostosic.github.io/build/
142
143Debugging GENie scripts
144-----------------------
145
146It is possible to debug build scripts using [ZeroBrane Studio][zbs]. You must
147compile GENie in debug mode
148
149    $ make config=debug
150
151This ensures the core lua scripts are loaded from disk rather than compiled
152into the GENie binary. Create a file named `debug.lua` as a sibling to your
153main `genie.lua` script with the following content:
154
155    local zb_path = <path to ZeroBraneStudio>
156    local cpaths = {
157        string.format("%s/bin/lib?.dylib;%s/bin/clibs53/?.dylib;", zb_path, zb_path),
158        package.cpath,
159    }
160    package.cpath = table.concat(cpaths, ';')
161
162    local paths = {
163        string.format('%s/lualibs/?.lua;%s/lualibs/?/?.lua', zb_path, zb_path),
164        string.format('%s/lualibs/?/init.lua;%s/lualibs/?/?/?.lua', zb_path, zb_path),
165        string.format('%s/lualibs/?/?/init.lua', zb),
166        package.path,
167    }
168    package.path = table.concat(paths, ';')
169
170    require('mobdebug').start()
171
172**NOTE:** update `zb_path` to refer to the root of your ZeroBrane Studio
173install. For reference, you should find `lualibs` in you `zb_path` folder
174
175To debug, make sure ZBS is listening for debug connections and add
176`dofile("debug.lua")` to `genie.lua`
177
178Who is using it?
179----------------
180
181https://github.com/bkaradzic/bgfx bgfx - Cross-platform, graphics API
182agnostic, "Bring Your Own Engine/Framework" style rendering library.
183
184https://github.com/Psybrus/Psybrus Psybrus Engine & Toolchain
185
186https://github.com/dariomanesku/cmftstudio cmftStudio - cubemap filtering tool
187
188https://github.com/mamedev/mame MAME - Multiple Arcade Machine Emulator
189
190http://sol.gfxile.net/soloud SoLoud is an easy to use, free,
191portable c/c++ audio engine for games.
192
193https://github.com/andr3wmac/Torque6 Torque 6 is an MIT licensed 3D engine
194loosely based on Torque2D. Being neither Torque2D or Torque3D it is the 6th
195derivative of the original Torque Engine.
196
197https://milostosic.github.io/MTuner MTuner is a memory profiler and memory leak finder for Windows, PS4,
198PS3.
199
200Developer Crackshell used GENie for development of games
201[Heroes of Hammerwatch](http://store.steampowered.com/app/677120/Heroes_of_Hammerwatch/), and
202[Serious Sam's Bogus Detour](http://store.steampowered.com/app/272620/Serious_Sams_Bogus_Detour/).
203
204[License](https://github.com/bkaradzic/genie/blob/master/LICENSE)
205-----------------------------------------------------------------
206
207	GENie
208	Copyright (c) 2014-2018 Branimir Karadžić, Neil Richardson, Mike Popoloski,
209	Drew Solomon, Ted de Munnik, Miodrag Milanović, Brett Vickers, Bill Freist,
210	Terry Hendrix II, Ryan Juckett, Andrew Johnson, Johan Sköld,
211	Alastair Murray, Patrick Munns, Jan-Eric Duden, Phil Stevens, Stuart Carnie,
212	Nikolay Aleksiev, Jon Olson, Mike Fitzgerald, Anders Stenberg, Violets,
213	Hugo Amnov, Christian Helmich.
214	All rights reserved.
215
216	https://github.com/bkaradzic/genie
217
218	Redistribution and use in source and binary forms, with or without modification,
219	are permitted provided that the following conditions are met:
220
221	1. Redistributions of source code must retain the above copyright notice,
222		this list of conditions and the following disclaimer.
223
224	2. Redistributions in binary form must reproduce the above copyright notice,
225		this list of conditions and the following disclaimer in the documentation
226		and/or other materials provided with the distribution.
227
228	3. Neither the name of the GENie nor the names of its contributors may be
229		used to endorse or promote products derived from this software without
230		specific prior written permission.
231
232	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
233	ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
234	WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
235	DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
236	FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
237	DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
238	SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
239	CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
240	OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
241	OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
242
243  [zbs]: https://studio.zerobrane.com
244