# 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)

import toolset : flags ;
import feature ;
import fortran ;

rule init ( version ? : command * : options * )
{
}

# Declare flags and action for compilation
flags hpfortran OPTIONS <optimization>off : -O0 ;
flags hpfortran OPTIONS <optimization>speed : -O3 ;
flags hpfortran OPTIONS <optimization>space : -O1 ;

flags hpfortran OPTIONS <debug-symbols>on : -g ;
flags hpfortran OPTIONS <profiling>on : -pg ;

flags hpfortran DEFINES <define> ;
flags hpfortran INCLUDES <include> ;

rule compile.fortran
{
}

actions compile.fortran
{
  f77 +DD64 $(OPTIONS) -D$(DEFINES) -I$(INCLUDES) -c -o "$(<)" "$(>)" 
}

generators.register-fortran-compiler hpfortran.compile.fortran : FORTRAN : OBJ ; 
