XMake version: 0.93a
Release Date: 08/17/05
Copyright (c) 2003 Gregory Keranen. All rights reserved.


System Requirements Install Gnu Make Install XMake Software Required by XMExtensions

System Requirements

See SYSTEM.html

Install Gnu Make

+ Download GNU Make version 3.80 sources, PATCHED version A patched version is REQUIRED, due to bugs #1516 and #1517 in the official 3.80 release The latest 3.81 beta version is available from: ftp://alpha.gnu.org/gnu/make/ The 3.81 official release will eventually be available from: http://ftp.gnu.org/pub/gnu/make/ + Un-tar, compile and install make-3.8x.tar.gz, per instructions. By default, `make install' will install in `/usr/local/bin/make' If you are installing as a non-root user you need to specify a writable install directory. In brief: cd make-3.8x ./configure # or, ./configure --prefix=$HOME make make install If you install make to a path other than '/usr/local/bin/make', you will need to edit $XMAKE_HOME/config/XMake.conf to assign the default value: export XMAKE_BUILD_CMD=/path/to/your/make - For help with Gnu Make, go to: http://savannah.gnu.org/mail/?group=make

Install XMake

+ Download the latest version of XMake from http://www.xmake.org For this example, assume the name of the downloaded file is xmake-version.tar.gz + Copy xmake-version.tar.gz to $HOME (or any directory that you can write to) xmake-version.tar.gz will decompress into directory 'xmake' + Execute the following commands: tar -xzvf xmake-version.tar.gz cd xmake + Add XMAKE_HOME to your environment (REQUIRED) + Add $XMAKE_HOME/bin to your $PATH (OPTIONAL) If you have installed to $HOME/xmake, then execute the commands: export XMAKE_HOME=${HOME}/xmake PATH=${PATH}:${XMAKE_HOME}/bin Or you can edit your shell config file, E.g., if your shell is bash: echo 'export XMAKE_HOME=${HOME}/xmake' >> ${HOME}/.bash_profile echo '$PATH=${PATH}:${XMAKE_HOME}/bin' >> ${HOME}/.bash_profile + Edit the global project config file: $XMAKE_HOME/config/Project/XMake.conf Set paths to executables and enabled XMExtensions; defaults are: XMAKE_SHELL_CMD=/usr/local/bin/bash XMAKE_BUILD_CMD=/usr/local/bin/make XMAKE_EXTENSIONS='c xdir' + IF: you have bash installed somewhere other than /usr/local/bin/bash: + make a link from /usr/local/bin/bash to your installed bash OR: + edit the first line of file: $XMAKE_HOME/bin/xmakecmd + OPTIONAL: for convenience, you can add to .bashrc (or equiv): alias curdir='pwd -P' This allows building target files in the current directory without typing a full path: xmake $(curdir)/myfile + OPTIONAL: test the installation cd $(XMAKE_HOME)/test xmakep xmake Now you are ready to create and configure an XMake project ( See USAGE.html ), or you can continue to install additional software for XMExtensions, described below.

Security Issues

It is important to bear in mind that many files within an XMake project contain commands which are EXECUTED, at build time. Write access to XMake project directories should be carefully guarded. XMake should never be run as root, unless root has exclusive write access to the project directory and to $(XMAKE_HOME), as well as to external XMake project directories, if XMAKE_RECURSION=1. By default, the following option is set in XMake.conf: XMAKE_AUTODETECT_SOURCE_FILES=1 # auto-detection enabled Source file auto-detection is the most efficient mode of operation, since it requires less maintenance of makefiles. When XMAKE_AUTODETECT_SOURCE_FILES is enabled, XMake does the following: + automatically detects all source files for each enabled XMExtension + adds the corresponding output files to $(XM_outfiles), according to the mapping defined by each XMExtension The default rule (command: 'xmake') builds all output files in $(XM_outfiles), regardless of whether or not XMAKE_AUTODETECT_SOURCE_FILES is enabled. Depending on which XMExtensions are enabled, and how they process source files, this may present a security risk: if source files contain commands to be executed by xmake, enabling XMAKE_AUTODETECT_SOURCE_FILES assumes that all source files can be TRUSTED. In the case of the 'c' XMExtension, this is not an issue since .c source files are only compiled and do not contain commands to execute at build time. In the case of the 'phpc' XMExtension, however, .phpc files contain commands to be executed by PHP to produce output. Simply disabling XMAKE_AUTODETECT_SOURCE_FILES offers no security against attack: malicious commands could just as easily be inserted directly into XMake.conf, or any makefiles, as well as into source files. Disabling XMAKE_AUTODETECT_SOURCE_FILES may be useful to provide a level of administrative control in cases where write access to XMake project directories is shared by a group of developers and malicious attack is not an issue. In this case, source must manually be added to the special makefile: 'XM_sources.mkhs'.

Software Required by XMExtensions

See: USAGE.html