Free Hero Mesh

comconfig.doc at [ef8fe744ff]
Login
This is a mirror of the main repository for Free Hero Mesh. New tickets and changes will not be accepted at this mirror.

File comconfig.doc artifact 51d7f6c934 part of check-in ef8fe744ff


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_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_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_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_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_MBCS
  If defined, omit the capability of multibyte character encodings. (This
  only affects displaying text, not the behaviour of the game.)

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.