Skip to content

Latest commit

 

History

History
272 lines (173 loc) · 10 KB

INSTALL-UNIX.md

File metadata and controls

272 lines (173 loc) · 10 KB

Notes for UNIX-like platforms

For Unix/POSIX runtime systems on Windows, please see the Notes for Windows platforms.

To build and install GriefEdit, you shall need:

  • Clone of the source repository.

  • A supported UNIX/Linux operating system.

  • Perl 5 with core modules, see NOTES-PERL.md.

  • coreutils - Collection of file and text manipulation utilities.

  • make - GNU (gmake) version of the 'make' utility.

  • bison/flex - General purpose parser generators.

  • wget - Command-line utility for retrieving files using HTTP, HTTPS and FTP protocols.

  • An ANSI C/C++ compiler, gcc is recommended being installed from gcc-core - GNU Compiler Collection.

  • A development environment in the form of development libraries and C header files.

Additionally the following system development packages can be installed adding further run-time functionality; these shall be auto-detected during 'configure'.

  • binutils-dev - GNU binary utilities (BFD development files).

  • libx11-dev - X11 development libraries.

  • xorg-dev - X.Org X Window System development libraries.

Finally, the following external packages can be installed adding additional run-time functionality; these shall be auto-detected during 'configure'.

  • enchant-devel - Wrapper library for various spell checker engines.

  • hunspell-devel - Spell checker and morphologic.

  • aspell-devel - GNU aspell.

  • enca-devel - Extremely Naive Charset Analyiser.

  • libguess-devel - Speed character set detection.

  • libexplain-devel - System message add-value.

  • libarchive-devel - Archive access.

  • libicu-devel - Character conversion.

  • libbz2-devel - bzip compression.

  • libzstd-devel - gz compression.

  • xz-devel - liblzma.

  • snappy-devel - Google fast/compressor/decomp.

plus the following, which are generally available.

  • ncurses-devel - Terminal interface library.

  • libcurl-devel - Network tools.

  • openssl-devel - OpenSSL.

To enable backtrace support, you need to install one of the following packages:

  • binutils-dev - Binary File Descriptor.

Native builds using gcc/clang/cc

  • If you're building with a non-standard compiler or one known, by something other than "cc" or "gcc" then you can set the environment variable "CC" to that.

  • Run the `configure' script by typing:

    $ ./configure
    

    Alternatively select one the available preset configurations

    $ ./support/configure_withmost
    $ ./support/configure_withcurses
    $ ./support/configure_withncurses
    $ ./support/configure_withncursesw
    $ ./support/configure_withtermcap
    $ ./support/configure_withtermlib
    $ ./support/configure_withtinfo
    

    Note any errors. Please get back to me via github below if you have any configure problems.

    This should built the entire set of makefiles and one include file include/config.h. You may wish to examine this file since there are some settable options at the top (don't fool with what configure has done below that unless you know what you're doing).

    On completion the resulting configuration shall be presented, including installation and fundamental configuration options.

    -
    - Configuration:
    -
    -         Compiler: gcc / g++
    -           Depend: gcc -MM
    -           CFLAGS:   --param max-inline-insns-single=1200 -pthread
    -                     Debug:-g -Og, Release:-O1 -DNDEBUG
    -         CXXFLAGS: -g -O2 -pthread
    -                     Debug:-g -Og, Release:-O1 -DNDEBUG
    -          LDFLAGS:   -pthread
    -     Preprocessor:
    -    Mouse support: none
    -   Termap support: ncursesw
    -    Spell Support: -lenchant
    -       Conversion:
    -        Detection:    -lmagic
    -         Security: -lssl -lcrypto
    -      Compression: -lbz2 -llzma -lz
    -   Other Features: -lcurl -larchive
    -        Libraries:  -lX11 -lXft -lXext -lpthread
    -            Extra: -lclang -lm -ldl -lltdl -liberty
    -        Allocator:
    -             Yacc: -ly
    -
    -  Installation:
    -
    -           prefix: /usr/local
    -          datadir: /usr/local/share
    -
    -              BINPATH=/usr/local/bin
    -              GRPATH=/usr/local/share/gr/macro
    -              GRHELP=/usr/local/share/gr/help
    -
    
    Review the options above for accuracy, to modify see --help for details.
    For example, a user local installation can set using the --prefix option.
    
        'configure --prefix=/home/user/grief'
    
    Once they look okay, execute to build:
    
        'make release'              - build software.
    
    Installation, one of the follow dependent on location:
    
        'sudo make release install' - install for common/system usage; or
    or  'make release install'      - local installation.
    
    Optionally after installation:
    
        'make release clean'        - remove build tree.
    
  • Once reviewed execute the following to build the application:

    $ make release
    
  • To install, type:

    $ make release install
    

    Dependent on the installation path root permissions may be required,

    $ sudo make release install
    

    The default installation paths, compiled into GriefEdit, are as follow which are generally only writeable as root/adminstrator:

    executables         /usr/local/bin
    prefix              /usr/local/share/grief
    help files          /usr/local/share/grief/help
    compiled macros     /usr/local/share/grief/macros
    macro source        /usr/local/share/grief/src
    

    These can be modified, for example install within your home directory, installation base directory can set using the -prefix option.

    ./configure --prefix=/home/user/grief
    

    Fine tunning of the install process is available

    INSTALL_MODE=mode           mode override (default=0755)
    
    INSTALL_OPTIONS=options     additional installation options.
    

    Example:

    sudo make INSTALL_OPTIONS="-g users" release install
    

Advanced configuration

The ‘configure’ script supports numerous options that allow control of which functionality is enabled, where GriefEdit is installed, etc. Optionally, pass any of the following arguments (not a definitive list) to ‘configure’:

configure [OPTION]... [VAR=VALUE]...
  • --help

    Print a definitive list of options.

  • --prefix=<install-root-dir>

    Set the base directory in which to install. For example:

    ./configure --prefix=/home/user/grief
    

    will cause files to be installed into /home/user/grief.

Optional Packages can be explicitly enabled or disabled.

--with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
--without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
  • --with-regex - use libregex
  • --with-zlib - enable zlib use (default=yes)
  • --with-lzma - enable liblzma use (default=yes)
  • --with-bz2 - enable libbz2 use (default=yes)
  • --with-ncurses - use ncurses library
  • --with-ncursesw - use ncursesw library
  • --with-pdcurses - use pdcurses library
  • --with-tinfo - use tinfo library
  • --with-curses - use curses library
  • --with-termcap - use termcap library
  • --with-termlib=library - use names library for terminal support
  • --without-spell - disable spell
  • --with-enchant - enchant library
  • --with-hunspell - hunspell library
  • --with-aspell - aspell library
  • --with-icu - enable libicu use (default=no)
  • --with-apriconv - enable libapriconv use (default=no)
  • --with-iconv - enable libiconv use (default=no)
  • --with-enca - enable libenca use (default=no)
  • --with-magic - enable libmagic use (default=yes)
  • --with-openssl=DIR - root of the OpenSSL directory
  • --with-mouse - enable mouse support
  • --with-gpm - use gpm mouse library
  • --with-libarchive=DIR - libarchive installation directory
  • --with-x11 - enable libx11 (default=yes)
  • --with-xft - enable Xft (default=yes)
  • --with-xkb - enable Xkb extensions (default=yes)
  • --with-xshape - enable XShape (default=yes)

The following environment variables (not a definitive list) impact configure's behaviour. To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables.

  • CFLAGS="?"

  • CXXFLAGS="?"

    Pass these flags to the C/C++ compiler. Any flags set by the configure script are prepended, which means explicitly set flags generally take precedence. Take care when specifying flags such as -Werror, because configure tests may be affected in undesirable ways.

  • EXTRA_CFLAGS="?"

  • EXTRA_CXXFLAGS="?"

    Append these flags to CFLAGS/CXXFLAGS, without passing them to the compiler(s) during configuration. This makes it possible to add flags such as -Werror, while allowing the configure script to determine what other flags are appropriate for the specified configuration.

  • CPPFLAGS="?"

    Pass these flags to the C preprocessor. Note that CFLAGS is not passed to ‘cpp’ when ‘configure’ is looking for include files, so you must use CPPFLAGS instead if you need to help ‘configure’ find header files.

  • LD_LIBRARY_PATH="?"

    ‘ld’ uses this colon-separated list to find libraries.

  • LDFLAGS="?"

    Pass these flags when linking.

  • PATH="?"

    ‘configure’ uses this to find programs.

Last Update: May/2024

=end=