# Top level configure fragment for libgccjit.so.
#   Copyright (C) 2013-2022 Free Software Foundation, Inc.

#This file is part of GCC.

#GCC is free software; you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation; either version 3, or (at your option)
#any later version.

#GCC is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with GCC; see the file COPYING3.  If not see
# <http://www.gnu.org/licenses/>.

# Configure looks for the existence of this file to auto-config each language.
# We define several parameters used by configure:
#
# language	- name of language as it would appear in $(LANGUAGES)
# compilers	- value to add to $(COMPILERS)

language="jit"

compilers=""

target_libs=""

gtfiles="\$(srcdir)/jit/dummy-frontend.cc"

# The configuration requires --enable-host-shared
# for jit to be supported (only when not building for Mingw).
# Hence to get the jit, one must configure with:
#   --enable-host-shared --enable-languages=jit
build_by_default="no"
