/* * NAME * f77 - the Fortran compiler cookbook * * DESCRIPTION * This cookbook describes how to work with C files. * Include file dependencies are automatically determined. * * RECIPES * %.o: %.f77 make object files form C source files * * VARIABLES * f77 The Fortran compiler command * Not altered if already defined. * f77_flags options to pass to the Fortran compiler command * Not altered if already defined. * The default is empty. * ld_flags Options passed to the compiler when linking, * these are typically library search paths and libraries. * Not altered if already defined. * The default is empty. * f77_src Fortran source files in the current directory. * dot_src Source files constructable in the current directory * (unioned with existing setting, if necessary). * dot_obj Object files constructable in the current directory * (unioned with existing setting, if necessary). * dot_clean Files which may be removed from the current directory * in a clean target. * * SEE ALSO * program The program cookbook: * ld The linker program * ld_flags The linker options, NOT libraries. * ld_libraries The linker options (-L, -l) for libraries. * * MANIFEST: cookbook for using Fortran * Copyright (C) 1997-2007 Peter Miller */ #pragma once if [not [defined c_incl]] then c_incl = [find_command c_incl]; if [not [defined f77]] then f77 = f77; if [not [defined f77_flags]] then f77_flags = ; f77_src = [glob "*.f77" ]; if [not [defined dot_src]] then dot_src = ; dot_src = [stringset [dot_src] [f77_src] - [fromto %.f77 %.s [f77_src]]]; if [not [defined dot_obj]] then dot_obj = ; dot_obj = [stringset [dot_obj] [fromto %.f77 %.o [f77_src]]]; if [not [defined dot_clean]] then dot_clean = ; dot_clean = [stringset [dot_clean] [fromto %.f77 %.o [f77_src]] [fromto %.f77 %.s [f77_src]] ]; %.o: %.f77 { [f77] [f77_flags] [addprefix "-I" [search_list]] -c [resolve %.f77]; } /* * if the c_incl command is available, then check dependencies */ #if [c_incl] %.f77.d: %.f77 { [c_incl] -nc -ns -nrec --language\=optimistic [cc_include_flags] [resolve %.f77] [addprefix "-I" [search_list]] -prefix "'cascade %.f77 ='" -suffix "';'" > [target]; } %.inc.d: %.inc { [c_incl] -nc -ns -nrec [cc_include_flags] [resolve %.inc] [addprefix "-I" [search_list]] -prefix "'cascade %.inc ='" -suffix "';'" > [target]; } f77_dep_files = [addsuffix ".d" [f77_src] [glob "*.inc"]]; #include-cooked [f77_dep_files] #endif