mirror of
https://github.com/boostorg/build.git
synced 2026-02-17 01:32:12 +00:00
209 lines
4.7 KiB
Plaintext
209 lines
4.7 KiB
Plaintext
# Copyright 2008 Eduardo Gurgel
|
|
#
|
|
# Distributed under the Boost Software License, Version 1.0. (See
|
|
# accompanying file LICENSE_1_0.txt or copy at
|
|
# http://www.boost.org/LICENSE_1_0.txt)
|
|
#
|
|
|
|
# Support for creating components for the Tntnet web application
|
|
# server (http://tntnet.org)
|
|
#
|
|
# Example:
|
|
#
|
|
# using tntnet : /usr ;
|
|
# lib index : index.png index.js index.css index.ecpp otherclass.cpp
|
|
# /tntnnet//tntnet /tntnet//cxxtools ;
|
|
#
|
|
#
|
|
|
|
import modules ;
|
|
import feature ;
|
|
import errors ;
|
|
import "class" : new ;
|
|
import generators ;
|
|
import project ;
|
|
import toolset : flags ;
|
|
import os ;
|
|
import virtual-target ;
|
|
import scanner ;
|
|
import type ;
|
|
|
|
type.register ECPP : ecpp ;
|
|
type.register JPEG : jpeg ;
|
|
type.register JPG : jpg ;
|
|
type.register PNG : png ;
|
|
type.register JS : js ;
|
|
type.register CSS : css ;
|
|
type.register GIF : gif ;
|
|
|
|
project.initialize $(__name__) ;
|
|
project tntnet ;
|
|
|
|
# Save the project so that we tolerate 'import + using' combo.
|
|
.project = [ project.current ] ;
|
|
# Initialized the Tntnet support module. The 'prefix' parameter
|
|
# tells where Tntnet is installed.
|
|
rule init ( prefix : full_bin ? : full_inc ? : full_lib ? )
|
|
{
|
|
project.push-current $(.project) ;
|
|
|
|
# pre-build paths to detect reinitializations changes
|
|
local inc_prefix lib_prefix bin_prefix ;
|
|
if $(full_inc)
|
|
{
|
|
inc_prefix = $(full_inc) ;
|
|
}
|
|
else
|
|
{
|
|
inc_prefix = $(prefix)/include ;
|
|
}
|
|
if $(full_lib)
|
|
{
|
|
lib_prefix = $(full_lib) ;
|
|
}
|
|
else
|
|
{
|
|
lib_prefix = $(prefix)/lib ;
|
|
}
|
|
if $(full_bin)
|
|
{
|
|
bin_prefix = $(full_bin) ;
|
|
}
|
|
else
|
|
{
|
|
bin_prefix = $(prefix)/bin ;
|
|
}
|
|
|
|
if $(.initialized)
|
|
{
|
|
if $(prefix) != $(.prefix)
|
|
{
|
|
errors.error
|
|
"Attempt the reinitialize Tntnet with different installation prefix" ;
|
|
}
|
|
if $(inc_prefix) != $(.incprefix)
|
|
{
|
|
errors.error
|
|
"Attempt the reinitialize Tntnet with different include path" ;
|
|
}
|
|
if $(lib_prefix) != $(.libprefix)
|
|
{
|
|
errors.error
|
|
"Attempt the reinitialize Tntnet with different library path" ;
|
|
}
|
|
if $(bin_prefix) != $(.binprefix)
|
|
{
|
|
errors.error
|
|
"Attempt the reinitialize Tntnet with different bin path" ;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
.initialized = true ;
|
|
.prefix = $(prefix) ;
|
|
|
|
# Setup prefixes for include, binaries and libs.
|
|
.incprefix = $(.prefix)/include ;
|
|
.libprefix = $(.prefix)/lib ;
|
|
.binprefix = $(.prefix)/bin ;
|
|
|
|
# Generates cpp files from ecpp files using "ecppc" tool
|
|
generators.register-standard tntnet.ecpp : ECPP : CPP ;
|
|
# Generates cpp files from jpeg files using "ecppc" tool
|
|
generators.register-standard tntnet.jpeg : JPEG : CPP ;
|
|
# Generates cpp files from jpg files using "ecppc" tool
|
|
generators.register-standard tntnet.jpg : JPG : CPP ;
|
|
# Generates cpp files from png files using "ecppc" tool
|
|
generators.register-standard tntnet.png : PNG : CPP ;
|
|
# Generates cpp files from js files using "ecppc" tool
|
|
generators.register-standard tntnet.js : JS : CPP ;
|
|
# Generates cpp files from gif files using "ecppc" tool
|
|
generators.register-standard tntnet.gif : GIF : CPP ;
|
|
# Generates cpp files from css files using "ecppc" tool
|
|
generators.register-standard tntnet.css : CSS : CPP ;
|
|
# Scanner for ecpp includes
|
|
type.set-scanner ECPP : ecpp-scanner ;
|
|
|
|
|
|
local usage-requirements =
|
|
<include>$(.incprefix)
|
|
<library-path>$(.libprefix)
|
|
<dll-path>$(.libprefix)
|
|
<threading>multi
|
|
<allow>tntnet ;
|
|
lib cxxtools : $(main)
|
|
:
|
|
:
|
|
:
|
|
<include>$(.incprefix)/cxxtools
|
|
$(usage-requiriments)
|
|
;
|
|
lib tntnet : $(main)
|
|
:
|
|
:
|
|
:
|
|
<include>$(.incprefix)/tntnet
|
|
$(usage-requiriments)
|
|
;
|
|
|
|
}
|
|
project.pop-current ;
|
|
|
|
}
|
|
|
|
rule directory
|
|
{
|
|
return $(.prefix) ;
|
|
}
|
|
|
|
rule initialized ( )
|
|
{
|
|
return $(.initialized) ;
|
|
}
|
|
|
|
# Get <include> from current toolset.
|
|
flags tntnet.ecpp INCLUDES <include> ;
|
|
|
|
actions ecpp
|
|
{
|
|
$(.binprefix)/ecppc -I " $(INCLUDES) " -o $(<) $(>)
|
|
}
|
|
|
|
actions jpeg
|
|
{
|
|
$(.binprefix)/ecppc -b -m image/jpeg -o $(<) $(>)
|
|
}
|
|
|
|
actions jpg
|
|
{
|
|
$(.binprefix)/ecppc -b -m image/jpeg -o $(<) $(>)
|
|
}
|
|
|
|
actions js
|
|
{
|
|
$(.binprefix)/ecppc -b -m application/x-javascript -o $(<) $(>)
|
|
}
|
|
|
|
actions png
|
|
{
|
|
$(.binprefix)/ecppc -b -m image/png -o $(<) $(>)
|
|
}
|
|
actions gif
|
|
{
|
|
$(.binprefix)/ecppc -b -m image/gif -o $(<) $(>)
|
|
}
|
|
actions css
|
|
{
|
|
$(.binprefix)/ecppc -b -m text/css -o $(<) $(>)
|
|
}
|
|
|
|
class ecpp-scanner : common-scanner
|
|
{
|
|
rule pattern ( )
|
|
{
|
|
return "<%include.*>(.*)</%include>" ;
|
|
}
|
|
}
|
|
|
|
scanner.register ecpp-scanner : include ;
|