summaryrefslogtreecommitdiff
path: root/jam-files/boost-build/tools/fortran.jam
blob: 37665825efac8f91d63c6c69abffe436cb719a30 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# Copyright (C) 2004 Toon Knapen
#
#  Use, modification and distribution is subject to the Boost Software
#  License Version 1.0. (See accompanying file LICENSE_1_0.txt or
#  http://www.boost.org/LICENSE_1_0.txt)

#
# This file contains common settings for all fortran tools
#

import "class" : new ;
import feature : feature ;

import type ;
import generators ;
import common ;

type.register FORTRAN : f F for f77 ;
type.register FORTRAN90 : f90 F90 ;

feature fortran : : free ;
feature fortran90 : : free ;

class fortran-compiling-generator : generator
{
    rule __init__ ( id : source-types + : target-types + : requirements * : optional-properties * )
    {
        generator.__init__ $(id) : $(source-types) : $(target-types) : $(requirements) : $(optional-properties) ;
    }
}

rule register-fortran-compiler ( id : source-types + : target-types + : requirements * : optional-properties * )
{
    local g = [ new fortran-compiling-generator $(id) : $(source-types) : $(target-types) : $(requirements) : $(optional-properties) ] ;
    generators.register $(g) ;
}

class fortran90-compiling-generator : generator
{
    rule __init__ ( id : source-types + : target-types + : requirements * : optional-properties * )
    {
        generator.__init__ $(id) : $(source-types) : $(target-types) : $(requirements) : $(optional-properties) ;
    }
}

rule register-fortran90-compiler ( id : source-types + : target-types + : requirements * : optional-properties * )
{
    local g = [ new fortran90-compiling-generator $(id) : $(source-types) : $(target-types) : $(requirements) : $(optional-properties) ] ;
    generators.register $(g) ;
}

# FIXME: this is ugly, should find a better way (we'd want client code to
# register all generators as "generator.some-rule", not with "some-module.some-rule".)
IMPORT $(__name__) : register-fortran-compiler : : generators.register-fortran-compiler ;
IMPORT $(__name__) : register-fortran90-compiler : : generators.register-fortran90-compiler ;