XMake CHANGES
XMake version: 0.93a
Release Date: 08/17/05
Copyright (c) 2003 Gregory Keranen. All rights reserved.
8/9/05 - recommended naming convention:
Inhibit php XMExtension from attempting to parse included files which are
not intended to ever be parsed outside the context of the parent file from
which they are included:
BAD EXAMPLE:
header.php includes header.inc.php
header.inc.php -> header.inc.phpo
this will likely generate fatal error
GOOD EXAMPLE:
header.php includes header.inc
header.inc is not parsed by php XMExtension
header.php -> header.phpo
header.phpo is validated
header.phpo is excluded from XMAKE_OUTFILES
CAVEAT:
Block access to included directory (.php or .inc files) with an
.htaccess file rule.
web server should be configured not to use default MIME type for .inc
files!
Instead:
AddHandler do-nothing .inc
Action do-nothing /access-not-permitted
8/9/05 - added php XMExtension files:
config/php.config
config/php.mkh
config/php.mkr
8/8/05 - updated file:
templates/XMakefile.mks
includes targets for:
validation
build
rsync to remote hosts: dev stage www
XM_phonyTargets+= validate validate-html build test bak public
public.test download download.test
XMakefile.mkh
XME_mkdoPatternRule
8/8/05 - added export XMAKE_OUTFILE to avoid circular dependencies
6/29/05
XMakefile.mkh
added rule: clean.tmpfiles
XMakefile.mk
clean: clean.outfiles clean.makefiles clean.tmpfiles
6/22/05
config/XMakefile.mhk
XME_mkdoPatternRule
remove mkdo file prior to exit on failure
this should prevent deadlock in proper updating of target when fatal
errors prevent recognition of new prerequisites have changed but an
outdated mkdo file controls the build
6/21/05
xmake/config/XMake.defaults
export XMAKE_FORCE=FORCE
phpx Extension added
xmake_org/phpx/phpx.inc.php
function phpx_add_prerequisites( $prerequisiteFiles=XMAKE_FORCE )
default value translates to Gnu make target 'FORCE'
causes forced rebuild of target file
6/19/05
XMakefile.mkh: XME_mkdoPatternRule
ADDED: 6/19/05
echo '$${XMAKE_PROJECT_DIR}/$$*$$(_XM_outfileSuffix) : '$$@
"$$$$_XM_dependencies" '$$(XME_$(1)_makefiles) $(2) $$(XM_makefiles)
$$(XMAKE_PROJECT_CONF_FILE)' >> $$@; \
echo >> $$@; \
echo '$$@: ' "$$$$_XM_dependencies" '$$(XME_$(1)_makefiles) $(2)
$$(XM_makefiles) $$(XMAKE_PROJECT_CONF_FILE)' >> $$@; \
PROBLEM:
mkdo files were not regenerated when prerequisite files, other than the
direct prerequisite of an extension mapping, changes.
PROBLEM:
global makefiles and XMake.conf were not previously listed as
prerequisites
Example:
cd /usr/local/apache/htdocs/gembroker/www/dev/junk
xmake $(curdir)/test
touch test.phpx
xmake $(curdir)/test # test, test.phpx.mkdo is rebuilt
touch /usr/local/apache/htdocs/gembroker/www/dev/lib/phpx/php.inc
xmake $(curdir)/test # test is rebuilt
# ERROR: test.phpx.mkdo is NOT rebuilt
# Changing prerequisite files may add/subtract prerequisites!
6/11/05
added phpc executible for debugging with same environment as xmake
phpc set environment from, etc.
. $(XMAKE_PROJECT_DIR)/XMake.conf
phpc.conf
changed default error handling
# XMAKE_XME_PHPC_FATAL_ERROR_MASK controls which error codes are fatal
# when building output files
# E_WARNING|E_USER_ERROR|E_USER_WARNING=2|256|512
# =770
# E_ERROR | E_PARSE | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR |
# E_WARNING | E_CORE_WARNING | E_COMPILE_WARNING | E_USER_WARNING
# = 1015
# E_ALL&~E_NOTICE=2047&~8=2039
# E_ALL | E_STRICT=4095
export XMAKE_XME_PHPC_FATAL_ERROR_MASK=4095
# XMAKE_XME_PHPC_ERROR_REPORTING_MASK controls error_reporting() level
# XMAKE_XME_PHPC_ERROR_REPORTING_MASK is used for both phpc and php
# files
export XMAKE_XME_PHPC_ERROR_REPORTING_MASK=4095
Xmakefile.mkh : XME_mkdoPatternRule
added lines for debugging mkdo failures:
@$(XM_silent) || echo 'XMExtension: $(1)'
@$(XM_silent) || { if test $(1) = 'phpc' ; then echo
'XMAKE_EXT_PHPC_PHP_INI= $(XMAKE_EXT_PHPC_PHP_INI)' ; fi }
phpc.mkh : XME_phpc_dependCmd
changed error reporting so FATAL errors aren't lost when mkdo build
fails:
error_reporting( $(XMAKE_XME_PHPC_FATAL_ERROR_MASK) ); \
$$XMAKE_XME_PHPC_FATAL_ERROR_MASK=0; \
phpc_setenv( "$(1)"); \
xmake.sh, XMakefile.mkh:
fixed bug in handling command line variable overrides:
var='a b'
$(XMAKE) definition change to no longer reference $(MAKEFLAGS);
not necessary
XMakefile.mkh
fixed problem with introspection rule for phony targets:
XM.deps.$(phony_target)
variables are used to prevent make -n from executing commands
including '$(MAKE)'
$(XM_reqs), $(XM_deps), $(XM_deprule)
Changed path to phpc.inc; bundled at xmake_org/phpc/phpc.inc
allows use of phpc functions WITHOUT XMake installed
avoids "multiple definitions" if file is included from multiple
paths
phpc.inc:
added function phpc_eval_FALSE() to handle result of eval()
added function phpc_trigger_error()
phpc_error_handler()
changed HTML formatting in server enviornment
checks state of php_ini_get("display_errors") on every call
BUG Fixed: xmake -E 't2h phpc' -C ... command line options parsing
works correctly now
Multiple instances of a file in XM_outfiles is a Warning; no longer
fatal:
required for rule chaining: file.t2h.php -> file.t2h -> file
Improved formatting of xmake/README.txt to wrap lines
xmake-0.92
Release Date: 5/2/2003
Many enhancements for PHP support (phpc XMExtension)
More examples of usage
Improved test harness
XMake.conf:
XMAKE_RECURSION=0 is now the default
changed default paths to make and bash
xmake.sh:
vastly improved parameter parsing
eliminated ugly recursive invocation
changed name of XM_sources.mkh to XM_sources.mkhs
used with XMAKE_AUTODETECT_SOURCE_FILES=0
removed automatic inclusion of custom %.mkr files: %.mks is better
xmakep.sh:
each XMExtension now has its own global .conf file
config options for XMExtensions removed from global XMake.conf
individual .conf files are now appended to XMake.conf by xmakep
changed this shell scripts to use /usr/local/bin/bash instead of
/bin/sh:
${XMAKE_HOME}/bin/xmakecmd
corrected documentation:
XMakefile.mks was referred to as XMakefile.xms
removed XMExtensions: xms, xms-dir from public distribution
src/xmakep/xmakep.sh
added parameter PROJECT_DIR to support creating projects in other
than current dir
added -t option to copy files in config/Project/templates/ folder
moved config/Project/XMakefile.xms to
config/Project/templates/XMakefile.xms
avoids risk of overwriting custom makefile when updating with
xmakep -f
XMake.conf:
added variables to control XMExtension commands
you should not need to edit any XMExtension files or XMakefile for
most customizations
moved from XMakefile:
added variables:
XMAKE_XME_PHPC_FATAL_ERROR_MASK=770
XMAKE_XME_PHPC_LINT_FATAL_ERROR_MASK=0
XMAKE_AUTODETECT_SOURCE_FILES=1
XMakefile.mkh:
added support for XMAKE_AUTODETECT_SOURCE_FILES=1
config/XMExtensions/xdir
added this new extension as a generic directory container
examples/phpc/build-versus-run-time.php.phpc
show how to use build time versus run-time php code
config/XMExtensions/phpc.mkh
change directory to %.phpc prior to executing commands
added phpc.lint and php.lint rules
xmake-0.91
Release Date: 2/28/2003
added custom rule macros; standardized API
bug fixes relating to command line option parsing; config file handling
added support for recursive XMake: prerequisites can include targets in
external XMake projects
added command line options to support recursion: -x -X
replaced XM_outfiles+=$(newFiles) with:
$(eval $(call XM_append,XM_outfiles,$(newFiles)))
removed .mkdo files from pattern rule prerequisites
these inhibited rule chaining
Added test suite:
xmake/test/XMakeTest.mks
improved how XMAKE_EXTENSIONS are enabled/disabled;
command-line specification of XMAKE_EXTENSIONS is supported with -E
option
doc/CHANGES.html
added this file
config/XMExtensions/phpc.inc
changed global PREREQUISITE_FILES to XMAKE_PHP_PREREQUISITE_FILES
config/XMExtensions/phpc.mkh
renamed _XME_phpc_options to XME_phpc_options
- options are publicly accessible; i.e., from custom makefiles
config/XMExtensions/t2h.mkh
renamed _XME_t2h_options to XME_t2h_options
- options are publicly accessible; i.e., from custom makefiles
XME_t2h_options:=
config/XMExtensions/t2h.mkr
t2h always uses XME_t2h_options file, if it exists
config/XMakefile.mkr
XM_outfileRule renamed to XME_explicitRule
added XME_staticRule
config/XMakefile.mkh
define XM_append
# USAGE: $(eval $(call XM_append,varName,$(newFiles)))
config/XMakefile
removed line: XM_phonyTargets+=$(XMAKE_TMP_DIR)
fixed problem with XM_customAutoMakefile inclusion when 'xmake
clean'
removed match-anything rule: % : ${CURDIR}/%
added match-anything rule: %
- exit with error message if target is not found
xmake-0.90
Release Date: 1/24/2003
initial public release