|  | # Plugin for offload execution on Intel MIC devices. | 
|  | # | 
|  | # Copyright (C) 2014-2017 Free Software Foundation, Inc. | 
|  | # | 
|  | # Contributed by Ilya Verbin <ilya.verbin@intel.com> and | 
|  | # Andrey Turetskiy <andrey.turetskiy@intel.com>. | 
|  | # | 
|  | # This file is part of the GNU Offloading and Multi Processing Library | 
|  | # (libgomp). | 
|  | # | 
|  | # Libgomp 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. | 
|  | # | 
|  | # Libgomp 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. | 
|  | # | 
|  | # Under Section 7 of GPL version 3, you are granted additional | 
|  | # permissions described in the GCC Runtime Library Exception, version | 
|  | # 3.1, as published by the Free Software Foundation. | 
|  | # | 
|  | # You should have received a copy of the GNU General Public License and | 
|  | # a copy of the GCC Runtime Library Exception along with this program; | 
|  | # see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see | 
|  | # <http://www.gnu.org/licenses/>. | 
|  |  | 
|  |  | 
|  | AUTOMAKE_OPTIONS = foreign | 
|  | ACLOCAL_AMFLAGS = -I ../.. -I ../../config | 
|  |  | 
|  | # Directories | 
|  | build_dir = $(top_builddir) | 
|  | source_dir = $(top_srcdir) | 
|  | coi_inc_dir = $(top_srcdir)/../include/coi | 
|  | include_src_dir = $(top_srcdir)/../../include | 
|  | libgomp_src_dir = $(top_srcdir)/../../libgomp | 
|  | libgomp_dir = $(build_dir)/../../libgomp | 
|  | liboffload_src_dir = $(top_srcdir)/../runtime | 
|  | liboffload_dir = $(top_builddir)/.. | 
|  |  | 
|  | # May be used by toolexeclibdir. | 
|  | gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../../gcc/BASE-VER) | 
|  | libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/include | 
|  | # Search for main_target_image.h in these directories | 
|  | target_prefix_dir = $(libdir)/gcc/$(accel_target)/$(gcc_version)$(MULTISUBDIR) | 
|  | target_build_dir = $(accel_search_dir)/$(accel_target)$(MULTISUBDIR)/liboffloadmic/plugin | 
|  | target_install_dir = $(accel_search_dir)/lib/gcc/$(accel_target)/$(gcc_version)$(MULTISUBDIR) | 
|  |  | 
|  | if PLUGIN_HOST | 
|  | toolexeclib_LTLIBRARIES = libgomp-plugin-intelmic.la | 
|  | libgomp_plugin_intelmic_la_SOURCES = libgomp-plugin-intelmic.cpp | 
|  | libgomp_plugin_intelmic_la_CPPFLAGS = $(CPPFLAGS) -DLINUX -DCOI_LIBRARY_VERSION=2 -DOFFLOAD_DEBUG=1 -DSEP_SUPPORT -DTIMING_SUPPORT -DHOST_LIBRARY=1 -I$(coi_inc_dir) -I$(liboffload_src_dir) -I$(libgomp_src_dir) -I$(libgomp_dir) -I$(include_src_dir) -I$(target_prefix_dir)/include -I$(target_build_dir) -I$(target_install_dir)/include | 
|  | libgomp_plugin_intelmic_la_LDFLAGS = -L$(liboffload_dir)/.libs -loffloadmic_host -version-info 1:0:0 | 
|  | else # PLUGIN_TARGET | 
|  | plugin_includedir = $(libsubincludedir) | 
|  | plugin_include_HEADERS = main_target_image.h | 
|  | AM_CPPFLAGS = $(CPPFLAGS) -DLINUX -DCOI_LIBRARY_VERSION=2 -DOFFLOAD_DEBUG=1 -DSEP_SUPPORT -DTIMING_SUPPORT -DHOST_LIBRARY=0 -I$(coi_inc_dir) -I$(liboffload_src_dir) -I$(libgomp_dir) | 
|  | AM_CXXFLAGS = $(CXXFLAGS) | 
|  | AM_LDFLAGS = -L$(liboffload_dir)/.libs -L$(libgomp_dir)/.libs -loffloadmic_target -lcoi_device -lgomp -rdynamic | 
|  | endif | 
|  |  | 
|  | main_target_image.h: offload_target_main | 
|  | @echo -n "const int image_size = " > $@ | 
|  | @stat -c '%s' $< >> $@ | 
|  | @echo ";" >> $@ | 
|  | @echo "struct MainTargetImage {" >> $@ | 
|  | @echo "  int64_t size;" >> $@ | 
|  | @echo "  char name[sizeof \"offload_target_main\"];" >> $@ | 
|  | @echo "  uint8_t data[image_size];" >> $@ | 
|  | @echo "};" >> $@ | 
|  | @echo "extern \"C\" const MainTargetImage main_target_image = {" >> $@ | 
|  | @echo "  image_size, \"offload_target_main\"," >> $@ | 
|  | @cat $< | xxd -include >> $@ | 
|  | @echo "};" >> $@ | 
|  |  | 
|  | offload_target_main: $(liboffload_dir)/ofldbegin.o offload_target_main.o $(liboffload_dir)/ofldend.o | 
|  | $(CXX) $(AM_LDFLAGS) $^ -o $@ | 
|  |  | 
|  | offload_target_main.o: offload_target_main.cpp | 
|  | $(CXX) $(AM_CXXFLAGS) $(AM_CPPFLAGS) -c $< -o $@ | 
|  |  | 
|  | # Work around what appears to be a GNU make bug handling MAKEFLAGS | 
|  | # values defined in terms of make variables, as is the case for CC and | 
|  | # friends when we are called from the top level Makefile. | 
|  | AM_MAKEFLAGS = \ | 
|  | "AR_FLAGS=$(AR_FLAGS)" \ | 
|  | "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ | 
|  | "CFLAGS=$(CFLAGS)" \ | 
|  | "CXXFLAGS=$(CXXFLAGS)" \ | 
|  | "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ | 
|  | "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \ | 
|  | "INSTALL=$(INSTALL)" \ | 
|  | "INSTALL_DATA=$(INSTALL_DATA)" \ | 
|  | "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ | 
|  | "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ | 
|  | "JC1FLAGS=$(JC1FLAGS)" \ | 
|  | "LDFLAGS=$(LDFLAGS)" \ | 
|  | "LIBCFLAGS=$(LIBCFLAGS)" \ | 
|  | "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ | 
|  | "MAKE=$(MAKE)" \ | 
|  | "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \ | 
|  | "PICFLAG=$(PICFLAG)" \ | 
|  | "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ | 
|  | "SHELL=$(SHELL)" \ | 
|  | "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ | 
|  | "exec_prefix=$(exec_prefix)" \ | 
|  | "infodir=$(infodir)" \ | 
|  | "libdir=$(libdir)" \ | 
|  | "prefix=$(prefix)" \ | 
|  | "includedir=$(includedir)" \ | 
|  | "AR=$(AR)" \ | 
|  | "AS=$(AS)" \ | 
|  | "LD=$(LD)" \ | 
|  | "LIBCFLAGS=$(LIBCFLAGS)" \ | 
|  | "NM=$(NM)" \ | 
|  | "PICFLAG=$(PICFLAG)" \ | 
|  | "RANLIB=$(RANLIB)" \ | 
|  | "DESTDIR=$(DESTDIR)" | 
|  |  | 
|  | MAKEOVERRIDES = | 
|  |  | 
|  | include $(top_srcdir)/../../multilib.am |