|
|
|
|
|
|
|
|
|
|
|
|
|
import modules ; |
|
import string ; |
|
|
|
|
|
|
|
|
|
rule environ ( variable-names + ) |
|
{ |
|
return [ modules.peek .ENVIRON : $(variable-names) ] ; |
|
} |
|
|
|
.name = [ modules.peek : OS ] ; |
|
.platform = [ modules.peek : OSPLAT ] ; |
|
.version = [ modules.peek : OSVER ] ; |
|
|
|
|
|
local rule constant ( c : os ? ) |
|
{ |
|
os ?= $(.name) ; |
|
|
|
local variables = .$(c)-$(os) .$(c) ; |
|
local result = $($(variables)) ; |
|
return $(result[1]) ; |
|
} |
|
|
|
rule get-constant ( os ? ) |
|
{ |
|
|
|
|
|
local bt = [ BACKTRACE 1 ] ; |
|
local rulename = [ MATCH ([^.]*)$ : $(bt[4]) ] ; |
|
return [ constant $(rulename) : $(os) ] ; |
|
} |
|
|
|
|
|
|
|
.constants = name platform version shared-library-path-variable path-separator executable-path-variable executable-suffix ; |
|
for local constant in $(.constants) |
|
{ |
|
IMPORT $(__name__) : get-constant : $(__name__) : $(constant) ; |
|
} |
|
EXPORT $(__name__) : $(.constants) ; |
|
|
|
.executable-path-variable-NT = PATH ; |
|
|
|
|
|
if $(.name) = NT |
|
{ |
|
for local n in [ VARNAMES .ENVIRON ] |
|
{ |
|
if $(n:L) = path |
|
{ |
|
.executable-path-variable-NT = $(n) ; |
|
} |
|
} |
|
} |
|
|
|
|
|
|
|
.shared-library-path-variable-NT = $(.executable-path-variable-NT) ; |
|
.path-separator-NT = ";" ; |
|
.expand-variable-prefix-NT = % ; |
|
.expand-variable-suffix-NT = % ; |
|
.executable-suffix-NT = .exe ; |
|
|
|
.shared-library-path-variable-CYGWIN = PATH ; |
|
|
|
.shared-library-path-variable-MACOSX = DYLD_LIBRARY_PATH ; |
|
|
|
.shared-library-path-variable-AIX = LIBPATH ; |
|
|
|
|
|
.shared-library-path-variable = LD_LIBRARY_PATH ; |
|
.path-separator = ":" ; |
|
.expand-variable-prefix = $ ; |
|
.expand-variable-suffix = "" ; |
|
.executable-path-variable = PATH ; |
|
.executable-suffix = "" ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
rule executable-path ( ) |
|
{ |
|
return [ string.words [ environ [ constant executable-path-variable ] ] |
|
: [ constant path-separator ] ] ; |
|
} |
|
|
|
|
|
|
|
|
|
if $(.name) = NT |
|
{ |
|
local home = [ environ HOMEDRIVE HOMEPATH ] ; |
|
.home-directories = $(home[1])$(home[2]) [ environ HOME ] [ environ USERPROFILE ] ; |
|
} |
|
else |
|
{ |
|
.home-directories = [ environ HOME ] ; |
|
} |
|
|
|
|
|
|
|
rule home-directories ( ) |
|
{ |
|
return $(.home-directories) ; |
|
} |
|
|
|
|
|
|
|
|
|
rule expand-variable ( variable ) |
|
{ |
|
local prefix = [ constant expand-variable-prefix ] ; |
|
local suffix = [ constant expand-variable-suffix ] ; |
|
return $(prefix)$(variable)$(suffix) ; |
|
} |
|
|
|
|
|
|
|
rule on-windows ( ) |
|
{ |
|
local result ; |
|
if [ modules.peek : NT ] |
|
{ |
|
result = true ; |
|
} |
|
else if [ modules.peek : UNIX ] |
|
{ |
|
switch [ modules.peek : JAMUNAME ] |
|
{ |
|
case CYGWIN* : |
|
{ |
|
result = true ; |
|
} |
|
} |
|
} |
|
return $(result) ; |
|
} |
|
|
|
|
|
if ! [ on-windows ] |
|
{ |
|
.on-unix = 1 ; |
|
} |
|
|
|
|
|
rule on-unix |
|
{ |
|
return $(.on-unix) ; |
|
} |
|
|
|
|
|
rule __test__ |
|
{ |
|
import assert ; |
|
if ! ( --quiet in [ modules.peek : ARGV ] ) |
|
{ |
|
ECHO os: name= [ name ] ; |
|
ECHO os: version= [ version ] ; |
|
} |
|
assert.true name ; |
|
} |
|
|