PROJECT(FMLIBS C CXX)
CMAKE_MINIMUM_REQUIRED(VERSION 2.6 FATAL_ERROR)

IF (CMAKE_GENERATOR MATCHES "Visual Studio")

FIND_PROGRAM( F2C_PROG NAMES f2c.exe f2c PATHS ${LOCAL_PATH} DOC "Fortran to C translator" )
FIND_LIBRARY( F2C_LIBRARY NAMES vcf2c f2c PATHS ${LOCAL_PATH} DOC "Fortran to C Library" )
FIND_PATH( F2C_INCLUDE_DIR f2c.h PATHS ${LOCAL_PATH} DOC "Path to f2c.h" )
INCLUDE_DIRECTORIES(${F2C_INCLUDE_DIR}) 

ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio")

INCLUDE(MacroAddFileDependencies)

###########################################################################
# Macro for f2c conversion
MACRO( CONVERT_F2C dep C_FILES )
	IF( NOFORTRAN AND F2C_PROG )
		FOREACH( nm ${ARGN} )
			GET_FILENAME_COMPONENT(outfile ${nm} NAME_WE)
			ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${outfile}.c 
			  COMMAND ${F2C_PROG} 
			  ARGS -d${CMAKE_CURRENT_BINARY_DIR} -g -c ${nm}
			  #MAIN_DEPENDENCY ${dep}
			  DEPENDS ${nm}
			  WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
			  VERBATIM
			) 
			MACRO_ADD_FILE_DEPENDENCIES(${nm} ${CMAKE_CURRENT_BINARY_DIR}/${outfile}.c )
			SET( ${C_FILES} ${${C_FILES}} ${CMAKE_CURRENT_BINARY_DIR}/${outfile}.c )
		ENDFOREACH( nm ${ARGN} )
	ENDIF( NOFORTRAN AND F2C_PROG )
ENDMACRO( CONVERT_F2C dep C_FILES )


IF( CMAKE_GENERATOR MATCHES "Visual Studio" )
   SET( NOFORTRAN TRUE )
ENDIF( CMAKE_GENERATOR MATCHES "Visual Studio" )

IF ( APPLE )
   SET( NOFORTRAN TRUE )
ENDIF ( APPLE )

IF( NOFORTRAN )
  PROJECT(FMLIBS CXX C )
ELSE( NOFORTRAN )
  PROJECT(FMLIBS CXX C Fortran)
ENDIF( NOFORTRAN )

OPTION(BUILD_AMD "Build AMD library" ON)
OPTION(BUILD_ARPACK "Build ARPACK library" ON)
OPTION(BUILD_UMFPACK "Build UMFPACK library" ON)
OPTION(BUILD_LAPACK "Build LAPACK library" ON)

IF( BUILD_AMD )
ADD_SUBDIRECTORY( AMD )
ENDIF( BUILD_AMD )

IF( BUILD_ARPACK )
ADD_SUBDIRECTORY( ARPACK )
ENDIF( BUILD_ARPACK )

IF( BUILD_UMFPACK )
ADD_SUBDIRECTORY( UMFPACK )
ENDIF( BUILD_UMFPACK )

IF( BUILD_LAPACK )
ADD_SUBDIRECTORY( lapack )
ENDIF( BUILD_LAPACK )
