]>
Dogcows Code - chaz/yoink/blob - options.lua
3 -- Yoink Configuration Rules
4 -- Use this file with config.lua to generate config files.
7 local project
= "Yoink"
9 local website
= "http://www.dogcows.com/yoink"
10 local contact
= "chaz@dogcows.com"
13 local check
= require
"check"
14 local util
= require
"utility"
16 return string.format("%s %s", project
, version
),
18 name
= "Yoink Configuration",
19 caption
= "Choose the category of settings to view/change.",
21 name
= "Installation Paths",
22 caption
= "Set the directory paths where program files will be installed.",
28 caption
= "Set the base installation directory.",
29 check
= function(value
)
30 libdir
= value
.. "/lib"
35 symbol
= "exec_prefix",
37 cmdline
= "--exec-prefix",
38 name
= "Executable Prefix",
39 caption
= "Set the base installation directory for executables.",
40 visible
= function() return showAdvanced
end
44 value
= "$(exec_prefix)/bin",
47 caption
= "Set the executable storage directory."
51 value
= "/usr/local/lib"
54 symbol
= "datarootdir",
55 value
= "$(prefix)/share",
56 cmdline
= "--datarootdir",
58 caption
= "Set the base installation directory for resource files.",
59 visible
= function() return showAdvanced
end
63 value
= "$(datarootdir)",
64 cmdline
= "--datadir",
66 caption
= "Set the program resource storage directory."
69 symbol
= "pkgdatadir",
70 value
= "$(datadir)/$(projectName)",
71 config
= "YOINK_DATADIR",
72 export
= "pkgdatadir",
73 name
= "Package Data",
74 caption
= "Set the program resource storage directory.",
75 visible
= function() return showAdvanced
end
79 value
= "$(datarootdir)/man",
82 caption
= "Set the manual page storage directory."
86 name
= "Build Options",
87 caption
= "Set toolset commands and flags.",
90 value
= util
.exec("config.guess"),
92 name
= "Build Triplet",
93 caption
= "Set the build triplet.",
94 check
= function(value
) return value
end
100 name
= "Host Triplet",
101 caption
= "Set the host triplet.",
102 check
= function(value
)
112 CXX
= value
.. "-g++"
114 RANLIB
= value
.. "-ranlib"
115 WINDRES
= value
.. "-windres"
117 if value
:find("mingw32")
127 before
= {"dependencies", "CC", "CXX", "AR", "RANLIB", "WINDRES"}
132 name
= "Executable Suffix",
134 caption
= "Set the extension of binary executables.",
136 Some platforms follow certain conventions with regard
137 to the file extension of executables. By default, the
138 build system will create executables with no suffix,
139 but specifying this option will cause the text to be
140 appended to the names of these files.
142 This option may be changed without your intervention if
143 automatic checks determine there is a common executable
144 suffix for the host platform.
146 visible
= function() return showAdvanced
end
150 value
= {"posix", "win32"},
153 caption
= "Set the architectural platform to target.",
154 visible
= function() return showAdvanced
end,
155 check
= function(value
)
158 PKG_LDLIBS
= PKG_LDLIBS
:setFlag("-lws2_32")
160 PKG_LDLIBS
= PKG_LDLIBS
:unsetFlag("-lws2_32")
167 name
= "Toolset Options",
168 caption
= "Customize the toolset.",
170 You can set which compilers and other tools to use.
171 You may also specify which extra flags should be used
172 during the compile and linking phase.
179 caption
= "Set the C compiler command."
186 caption
= "Set the C++ compiler command."
193 caption
= "Set the archiver for static libraries command."
200 caption
= "Set the archive indexer command."
207 caption
= "Set the Windows resource compiler command.",
208 visible
= function() return platform
== "win32" end
210 "------------INSERT-BLANK-LINE------------",
213 value
= "-Wall -Wno-uninitialized -O2",
216 caption
= "Set the C compiler flags."
221 cmdline
= "CXXFLAGS",
223 caption
= "Set the C++ compiler flags."
228 cmdline
= "CPPFLAGS",
230 caption
= "Set the C preprocessor flags."
237 caption
= "Set the libraries the executable should link with."
244 caption
= "Set the linker flags."
247 symbol
= "dependencies",
248 value
= "sdl gl glu libpng openal vorbisfile lua|lua5.1",
249 check
= function(value
)
250 local value
, err
= util
.pkgfind(value
, libdir
)
253 PKG_CFLAGS
= util
.pkgconfig("CFLAGS", value
, libdir
)
254 PKG_LDLIBS
= util
.pkgconfig("LIBS", value
, libdir
) .. " -lz"
255 PKG_LDFLAGS
= util
.pkgconfig("LDFLAGS", value
, libdir
)
263 symbol
= "PKG_CFLAGS",
265 after
= {"dependencies"}
268 symbol
= "PKG_CXXFLAGS",
269 value
= "$(PKG_CFLAGS)",
270 after
= {"PKG_CFLAGS"}
273 symbol
= "PKG_LDLIBS",
275 after
= {"dependencies"}
278 symbol
= "PKG_LDFLAGS",
280 after
= {"dependencies"}
283 "------------INSERT-BLANK-LINE------------",
287 cmdline
= "--enable-dependency-tracking",
288 name
= "Dependency Tracking",
289 caption
= "Enable tracking of code dependencies.",
291 If you are working on the code, you want this enabled
292 so that the files you edit will automatically be
293 rebuilt when you run make. This may add some overhead
294 to the build process.
296 If in doubt, say Yes.
302 cmdline
= "--enable-profile",
303 config
= "ENABLE_PROFILING",
305 caption
= "Compile in gprof instructions for profiling.",
307 Yoink can be compiled with extra instructions to
308 generate statistical data regarding the performance of
309 the code. This data is saved to a file which can be
310 used by the gprof program to generate a nice report.
314 check
= function(value
)
317 PKG_CFLAGS
= PKG_CFLAGS
:setFlag("-pg")
318 PKG_LDFLAGS
= PKG_LDFLAGS
:setFlag("-pg")
320 PKG_CFLAGS
= PKG_CFLAGS
:unsetFlag("-pg")
321 PKG_LDFLAGS
= PKG_LDFLAGS
:unsetFlag("-pg")
328 name
= "Program Features",
329 caption
= "Choose which features to compile into the program.",
333 cmdline
= "--enable-debug",
334 config
= {"DEBUG", "!NDEBUG"},
336 caption
= "Compile in debug codepaths.",
338 The debug target mode enables runtime assertions and
339 other codepaths appropriate for finding bugs and
340 diagnosing problems. The release target mode will
341 avoid compiling in this extra overhead and also set
342 some compiler flags for optimizing the performance of
345 Note that logging and exception-handling facilities are
346 still available in release mode, and debug symbols are
347 always available provided you do not explicitly strip
348 them out. Therefore, many problems can be diagnosed
349 without these extra codepaths.
353 check
= function(value
)
355 CFLAGS
= CFLAGS
:setFlag("-Wall", "-g")
361 symbol
= "clock_gettime",
363 cmdline
= "--enable-clock_gettime",
364 config
= "ENABLE_CLOCK_GETTIME",
365 name
= "clock_gettime",
366 caption
= "Use a high-res clock on platforms that support it.",
368 By default, Yoink will use whatever timing facility is
369 provided by SDL. This only provides a low-resolution
370 guarantee. On some targets, a much higher-resolution
371 timer is available through the use of clock_gettime(2).
372 On such platforms, SDL might have been built to use
373 this time source. This option will cause Yoink to use
374 it directly so that the high resolution is guaranteed.
378 visible
= function() return platform
== "posix" end
381 symbol
= "doublePrecision",
383 cmdline
= "--enable-double-precision",
384 config
= "ENABLE_DOUBLE_PRECISION",
385 name
= "Double Precision",
386 caption
= "Use doubles for floating point numbers.",
388 The most common data type for storing non-integral
389 numbers is called a float. These are quickly processed
390 on modern hardware, but they suffer problems in
391 accuracy. A much more accurate data type is a double,
392 but they may take a bit longer to process.
394 In most cases, floats are adequate. Yet, using doubles
395 will help prevent small inaccuracies from accumulating
396 over time and becoming a bigger deal.
402 symbol
= "hotloading",
404 cmdline
= "--enable-hotloading",
405 config
= "ENABLE_HOTLOADING",
407 caption
= "Allow assets to reload themselves automatically.",
409 Hotloading allows game resources to be reloaded into
410 the game automatically whenever they are changed on
411 disk. For example, if you are running Yoink at the
412 same time as you are editing one of its image files,
413 any changes you save to the file will immediately be
414 seen in the game. Other types of assets are also
415 hotloadable. This is very useful to content creators
416 interested in rapid development.
418 Currently only recent Linux kernels are supported.
419 There is a small amount of overhead associated with
420 hotloading; as such, it is not recommended unless you
421 plan to take advantage of its benefits.
425 visible
= function() return platform
== "posix" end
430 cmdline
= "--enable-threads",
431 config
= "ENABLE_THREADS",
433 caption
= "Use threads for concurrency where appropriate.",
435 If you have multiple processors or cores, enabling
436 threads will allow the workload to be shared. This
437 may have limited usefulness even if you have only a
440 If in doubt, say Yes.
445 value
= {"none", "gtk", "qt4"},
446 cmdline
= "--with-gui",
448 name
= "GUI Toolkit",
449 caption
= "Set which (if any) widget toolkit to use for dialogs.",
451 Sometimes Yoink will show a dialog window for the
452 purpose of providing diagnostics information. If you
453 have KDE, you probably want to choose QT4 for this
454 purpose. If you have Gnome or any other environment,
455 you may prefer GTK2. This option will make certain QT4
456 or GTK2 libraries dependencies. If you choose "none,"
457 no dialog windows will be shown, and any such
458 information can be seen from the terminal output.
460 Under certain targets, the native API will be used and
461 this option will have no effect. For example, a
462 mingw32 target will automatically use native win32
465 If in doubt, say None.
467 visible
= function() return platform
== "posix" end,
468 check
= function(value
)
469 dependencies
= dependencies
:unsetFlag("gtk+-2.0", "QtGui")
470 if value
== "gtk" then dependencies
= dependencies
:setFlag("gtk+-2.0")
471 elseif value
== "qt4" then dependencies
= dependencies
:setFlag("QtGui") end
474 before
= {"dependencies"}
478 name
= "Package Strings",
479 caption
= "Set the package strings.",
480 visible
= function() return showAdvanced
end,
484 config
= {"PACKAGE_NAME", "PACKAGE"},
485 name
= "Package Name",
487 caption
= "Set the name of the program.",
488 check
= function(value
)
489 projectName
= util
.symbolize(value
) return value
493 symbol
= "projectName",
494 value
= util
.symbolize(project
),
495 export
= "projectName",
500 config
= "PACKAGE_VERSION",
503 caption
= "Set the three-part version number of the program.",
504 check
= function(value
)
505 versionMajor
, versionMinor
, versionRevision
= util
.splitVersion(value
)
508 before
= {"versionMajor", "versionMinor", "versionRevision"}
511 symbol
= "packageString",
512 value
= "$(PACKAGE) $(VERSION)",
513 config
= "PACKAGE_STRING",
514 name
= "Full String",
515 caption
= "Set the complete package string."
519 value
= "$(projectName)",
520 config
= "PACKAGE_TARNAME",
521 name
= "Archive Name",
522 caption
= "Set the name used in creating tarballs."
525 symbol
= "archiveFormat",
526 value
= {"bzip2", "gzip", "lzma", "xz", "all"},
527 name
= "Default Archive Format",
528 caption
= "Set the default compression format for tarballs."
533 config
= "PACKAGE_BUGREPORT",
535 name
= "Email Address",
536 caption
= "Set the email address for collecting bug reports."
541 config
= "PACKAGE_URL",
542 name
= "Website URL",
543 caption
= "Set the project website URL."
546 symbol
= "versionMajor",
548 config
= "VERSION_MAJOR"
551 symbol
= "versionMinor",
553 config
= "VERSION_MINOR"
556 symbol
= "versionRevision",
558 config
= "VERSION_REVISION"
563 check
= function(value
)
564 local hash
, code
= util
.exec("git show-ref --head HEAD | sed -n 's/\\(.*\\) HEAD/\\1/p'")
565 if code
== 0 then value
= hash
end
570 symbol
= "manCompression",
571 value
= {"none", "bzip2", "gzip"},
572 cmdline
= "--with-man-compression",
573 name
= "Manual Compression",
574 caption
= "Set which compression to use for installed man pages"
577 symbol
= "includeConfig",
579 config
= "INCLUDE_CONFIG_FILE",
580 name
= "Compile config.mk into executable",
581 caption
= "What the name says."
584 "------------INSERT-BLANK-LINE------------",
586 symbol
= "showAdvanced",
588 name
= "Show Advanced Options",
589 caption
= "Show advanced (and often less useful) options."
This page took 0.061643 seconds and 4 git commands to generate.