1# Top level -*- makefile -*- fragment for LTO 2# Copyright (C) 2009-2020 Free Software Foundation, Inc. 3 4#This file is part of GCC. 5 6#GCC is free software; you can redistribute it and/or modify 7#it under the terms of the GNU General Public License as published by 8#the Free Software Foundation; either version 3, or (at your option) 9#any later version. 10 11#GCC is distributed in the hope that it will be useful, 12#but WITHOUT ANY WARRANTY; without even the implied warranty of 13#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14#GNU General Public License for more details. 15 16# You should have received a copy of the GNU General Public License 17# along with GCC; see the file COPYING3. If not see 18# <http://www.gnu.org/licenses/>. 19 20# Variables 21 22# The name of the LTO compiler. 23LTO_EXE = lto1$(exeext) 24LTO_DUMP_EXE = lto-dump$(exeext) 25LTO_DUMP_INSTALL_NAME := $(shell echo lto-dump|sed '$(program_transform_name)') 26# The LTO-specific object files inclued in $(LTO_EXE). 27LTO_OBJS = lto/lto-lang.o lto/lto.o lto/lto-object.o attribs.o lto/lto-partition.o lto/lto-symtab.o lto/lto-common.o 28lto_OBJS = $(LTO_OBJS) 29LTO_DUMP_OBJS = lto/lto-lang.o lto/lto-object.o attribs.o lto/lto-partition.o lto/lto-symtab.o lto/lto-dump.o lto/lto-common.o 30lto_dump_OBJS = $(LTO_DUMP_OBJS) 31 32# this is only useful in a LTO bootstrap, but this does not work right 33# now. Should reenable after this is fixed, but only when LTO bootstrap 34# is enabled. 35 36#ifeq ($(if $(wildcard ../stage_current),$(shell cat \ 37# ../stage_current)),stageautofeedback) 38#$(LTO_OBJS): CFLAGS += -fauto-profile=lto1.fda 39#$(LTO_OBJS): lto1.fda 40#endif 41 42# Rules 43 44# These hooks are used by the main GCC Makefile. Consult that 45# Makefile for documentation. 46lto.all.cross: $(LTO_EXE) $(LTO_DUMP_EXE) 47lto.start.encap: $(LTO_EXE) $(LTO_DUMP_EXE) 48lto.rest.encap: 49lto.tags: 50lto.install-common: installdirs 51 $(INSTALL_PROGRAM) $(LTO_DUMP_EXE) \ 52 $(DESTDIR)$(bindir)/$(LTO_DUMP_INSTALL_NAME)$(exeext) 53 54lto.install-man: 55lto.install-info: 56lto.dvi: 57lto.pdf: 58lto.install-pdf: 59lto.html: 60lto.install-html: 61lto.uninstall: 62lto.info: 63lto.man: 64lto.srcextra: 65lto.srcman: 66lto.srcinfo: 67lto.install-plugin: 68 69lto.mostlyclean: 70 rm -f $(LTO_OBJS) $(LTO_EXE) lto1.fda $(LTO_DUMP_OBJS) $(LTO_DUMP_EXE) lto-dump.fda 71 72lto.clean: 73lto.distclean: 74lto.maintainer-clean: 75lto.stage1: 76lto.stage2: 77lto.stage3: 78lto.stage4: 79lto.stageprofile: 80lto.stagefeedback: 81 82# LTO rules. 83 84# Use strict warnings for this front end. 85lto-warn = $(STRICT_WARN) 86 87$(LTO_EXE): $(LTO_OBJS) $(BACKEND) $(LIBDEPS) 88 +$(LLINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \ 89 $(LTO_OBJS) $(BACKEND) $(BACKENDLIBS) $(LIBS) 90 91$(LTO_DUMP_EXE): $(LTO_DUMP_OBJS) $(BACKEND) $(LIBDEPS) 92 +$(LLINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \ 93 $(LTO_DUMP_OBJS) $(BACKEND) $(BACKENDLIBS) $(LIBS) 94 95lto/lto-dump.o: $(LTO_OBJS) 96 97lto1.fda: ../prev-gcc/lto1$(exeext) ../prev-gcc/$(PERF_DATA) 98 $(CREATE_GCOV) -binary ../prev-gcc/lto1$(exeext) -gcov lto1.fda -profile ../prev-gcc/$(PERF_DATA) -gcov_version 1 99 100# LTO testing is done as part of C/C++/Fortran etc. testing. 101check-lto: 102 103# No LTO-specific selftests 104selftest-lto: 105