This file describes options that you can specify in comconfig.h (by the
#define command), in order to customize the compiled code. All of these
definitions are optional; default values will be used otherwise. (You can
also use -D switches for compiling to control them, too)
=== Implemented options ===
CONFIG_APPLICATION_ID
Application ID for SQLite database files (if not defined, then the
default value will be used). Should be a 32-bit integer represented in
decimal notation, as a string token (not as a numeric token).
CONFIG_DEFAULT_RESOURCES
If defined, read resource configuration from the specified file if
it cannot find the configuration file in the home directory.
CONFIG_EXTRA_SCREEN_INIT
Can be a C code to be executed after the video mode is set, but before
any other screen initialization is done.
CONFIG_FUNCTION_ASK_TEXT
Should be a function or macro taking four arguments, which will ask for
and accept a single line of text. The first argument is the SDL screen
object, the second is the prompt text, the third is the code page number
for the prompt text, and the fourth is the code page number for the
input. The result is a pointer to a buffer (which the caller need not
free, and will not write to) containing the null-terminated text, or a
null pointer if the prompt has been cancelled by the user.
CONFIG_GLOBAL_HASH_SIZE
Size of global hash table when reading class definition file. This must
be less than 65535.
CONFIG_LOCAL_HASH_SIZE
Size of local hash table when reading class definition file. This must
be less than 65535.
CONFIG_NO_PORTABLE
If defined, then portable mode by checking argv[0] is disabled. (It is
still possible to use portable mode by HEROMESH_PREFIX)
CONFIG_NO_STATUS
If defined, then most status output is omitted unless -v is specified.
(Some status output, such as most error messages, are still displayed.)
CONFIG_OMIT_INCLUDE
If defined, then the {include} macro is not implemented.
CONFIG_OMIT_MBCS
If defined, omit the capability of multibyte character encodings. (This
only affects displaying text, not the behaviour of the game.)
CONFIG_OMIT_SOUND
If defined, omit all sound capabilities (including music). (Even if it
is not defined, it can still be disabled at runtime.)
CONFIG_USING_32BIT_TIMESTAMPS
If defined, force use of 32-bit timestamps. (This is needed in order to
avoid compiler warnings on some systems, such as some versions of the
Raspberry Pi system. This option will be deprecated in year 2038, so
you should upgrade your system before that if possible.)
CONFIG_WITH_STACK_PROTECTION
If defined, allow stack protection to be included in the compiled code.
(Otherwise, the configuration options dealing with stack protection
will be ignored and will have no effect.) This requires that the GNU
__builtin_frame_address function is available. (Note: This feature does
not seem to work properly at this time. If you are able to fix it, then
please provide a patch.)
=== Unimplemented options ===
The below options are not implemented and are subject to being changed
in future when they are implemented.
CONFIG_DOUBLE_PRECISION_AUDIO
If defined, use double precision for some math calculations in audio
processing. Some calculations are not affected by this option.
CONFIG_ERROR_CHECKING
Define error checking level, where 9 is maximum. Lower numbers might
improve speed but may make the program crash in some cases and may also
cause security vulnerabilities.
CONFIG_LAUNCHER_PATH
If defined, then it is the full path to a file to execute if Free Hero
Mesh has been invoked with no command-line arguments, or if it is given
the flag to run the launcher program instead. (Maybe this should not be
implemented; you can run the separate launcher program directly instead.
Maybe it will be the other way around, if compiled to use AppImage.)
CONFIG_MULTIUSER_SCORES
(Meant for storing scores on a multiuser system, somehow)
CONFIG_OMIT_CODEPAGE
If defined, omit capability of code pages; only PC character set will
be available. (This also implies CONFIG_OMIT_MBCS.)
CONFIG_OMIT_EDITOR
If defined, omit the level editor and picture editor, as well as the
ability to import and export levels and pictures.
CONFIG_OMIT_GUI
If defined, omit the GUI. Autotest mode can still be used, and the
batch import/export works if CONFIG_OMIT_EDITOR is not defined. Any
other feature which does not require the GUI also can still be used.
CONFIG_OMIT_MUSIC
If defined, omit background music playback capabilities. (Even if this
is not defined, it can still be disabled at runtime.)
CONFIG_OMIT_PIPE
If defined, then any features that use popen are omitted. Some operating
systems may require this; otherwise, you should avoid using this.
CONFIG_RANDOM_SOURCE
Device to read random numbers from instead of using the random number
generator built in to SQLite. (This will override the definition of the
SQL RANDOM() function if it is defined.)
CONFIG_USERCACHE_PERMISSIONS
If defined as a octal number, set the default file permissions of the
user cache database when creating it. (The user can still change them
afterward by using chmod.)
CONFIG_USING_32BIT_COORDINATES
If defined, allow 32-bit coordinates in SDL_Rect and in other graphics
functions of SDL.
CONFIG_USING_APPIMAGE
If defined, it will check the environment variables having to do with
AppImage and will be able to load the default resources from there, as
well as allow the configuration file to reference the AppImage directory.
CONFIG_USING_ARM_NEON
If defined, use ARM NEON extensions. This only works on ARM.
CONFIG_USING_BSD_FUNCTIONS
If defined, use BSD functions (such as funopen) instead of GNU functions
(such as fopencookie), by adding emulations into the program. (It is
still necessary to use a C compiler with GNU extensions though, even if
the GNU library is not available.)
CONFIG_USING_DOS_FILENAMES
If defined, then the program only uses valid DOS file names (8.3). This
affects how configuration files are found by default, and it affects how
non-composite puzzle sets are read. Composite puzzle sets are unaffected.
CONFIG_USING_SDL12_COMPAT
Define this if the program is to be compiled for use with the
"sdl12-compat" SDL compatibility layer. (This does not affect linking,
but it may change some parts of the program to improve compatibility.)
CONFIG_USING_SDLCL
Define this if the program is to be compiled for use with the "sdlcl"
SDL compatibility layer. (This does not affect linking, but it may change
some parts of the program to improve compatibility.)
CONFIG_USING_X86_BMI2
If defined, use PDEP and PEXT instructions. This only works on x86 and
only on some processor models. (Apparently this is fast on Intel but slow
on AMD, so it should not be used on AMD, even if it is available.)
CONFIG_WITH_MENU
If defined, include a menu bar with commands.
CONFIG_WITH_NETWORK
If defined, include code for network/internet access. Even if this is
defined, it must still be enabled by the end user; it will not connect
to any remote services unless the user explicitly commands it to do so.
CONFIG_WITH_VIDEO_RECORDING
If defined, then include code to implement video recording, which will
override some of the SDL functions (and some other functions), and might
make them more slowly even if the video recording is not enabled.