##===- Makefile.f2c ----------------------------------------*- Makefile -*-===##
#
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
# 
#===------------------------------------------------------------------------===#
#
# Enable running Fortran programs with LLVM by using f2c to convert to C and
# link with libf2c, but only until we have a Fortran front-end.
#
##===----------------------------------------------------------------------===##

# FIXME: This would be autoconf'd
include $(LEVEL)/Makefile.config

# Make sure the correct targets come first.
ifdef TEST
test::
else
all::
endif

ifneq ($(USE_F2C),1)
all test::
	echo "The f2c program was not found"
	exit 1
endif

.PRECIOUS: %.c

clean::
	rm -f $(Source:%.f=%.c)

%.c: %.f
	$(F2C) $< > /dev/null 2>&1

CPPFLAGS = -I$(F2C_INC) 
LDFLAGS += -L$(F2C_LIB) -lf2c


# 'main' is defined in the f2c runtime library.  The function exported from the
# program is named MAIN__
EXTRA_LINKTIME_OPT_FLAGS += -internalize-public-api-list=MAIN__
