1# Make-lang.in -- Top level -*- makefile -*- fragment for gcc BRIG (HSAIL) 2# frontend. 3 4# Copyright (C) 2015-2021 Free Software Foundation, Inc. 5 6# This file is part of GCC. 7 8# GCC is free software; you can redistribute it and/or modify 9# it under the terms of the GNU General Public License as published by 10# the Free Software Foundation; either version 3, or (at your option) 11# any later version. 12 13# GCC is distributed in the hope that it will be useful, 14# but WITHOUT ANY WARRANTY; without even the implied warranty of 15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16# GNU General Public License for more details. 17 18# You should have received a copy of the GNU General Public License 19# along with GCC; see the file COPYING3. If not see 20# <http://www.gnu.org/licenses/>. 21 22# This file provides the language dependent support in the main Makefile. 23 24# Installation name. 25 26GCCBRIG_INSTALL_NAME := $(shell echo gccbrig|sed '$(program_transform_name)') 27GCCBRIG_TARGET_INSTALL_NAME := $(target_noncanonical)-$(shell echo gccbrig|sed \ 28 '$(program_transform_name)') 29 30# The name for selecting brig in LANGUAGES. 31brig: brig1$(exeext) 32brig.serial = brig1$(exeext) 33 34.PHONY: brig 35 36CFLAGS-brig/brigspec.o += $(DRIVER_DEFINES) 37 38GCCBRIG_OBJS = $(GCC_OBJS) brig/brigspec.o 39gccbrig$(exeext): $(GCCBRIG_OBJS) $(EXTRA_GCC_OBJS) libcommon-target.a \ 40 $(LIBDEPS) 41 +$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \ 42 $(GCCBRIG_OBJS) $(EXTRA_GCC_OBJS) libcommon-target.a \ 43 $(EXTRA_GCC_LIBS) $(LIBS) 44 45# The cross-compiler version. This is built mainly as a signal to the 46# brig.install-common target. If this executable exists, it means that 47# brig.all.cross was run. 48gccbrig-cross$(exeext): gccbrig$(exeext) 49 -rm -f gccbrig-cross$(exeext) 50 cp gccbrig$(exeext) gccbrig-cross$(exeext) 51 52# Use strict warnings. 53brig-warn = $(STRICT_WARN) 54 55BRIG_OBJS = \ 56 brig/brig-lang.o \ 57 brig/brig-code-entry-handler.o \ 58 brig/brig-function-handler.o \ 59 brig/brig-variable-handler.o \ 60 brig/brig-fbarrier-handler.o \ 61 brig/brig-label-handler.o \ 62 brig/brig-comment-handler.o \ 63 brig/brig-basic-inst-handler.o \ 64 brig/brig-cvt-inst-handler.o \ 65 brig/brig-seg-inst-handler.o \ 66 brig/brig-lane-inst-handler.o \ 67 brig/brig-queue-inst-handler.o \ 68 brig/brig-copy-move-inst-handler.o \ 69 brig/brig-signal-inst-handler.o \ 70 brig/brig-atomic-inst-handler.o \ 71 brig/brig-arg-block-handler.o \ 72 brig/brig-control-handler.o \ 73 brig/brig-cmp-inst-handler.o \ 74 brig/brig-branch-inst-handler.o \ 75 brig/brig-mem-inst-handler.o \ 76 brig/brig-module-handler.o \ 77 brig/brig-inst-mod-handler.o \ 78 brig/brig-function.o \ 79 brig/brig-to-generic.o \ 80 brig/brig-machine.o \ 81 brig/brig-util.o 82 83brig_OBJS = $(BRIG_OBJS) brig/brigspec.o 84 85brig1$(exeext): $(BRIG_OBJS) attribs.o $(BACKEND) $(LIBDEPS) $(brig.prev) 86 @$(call LINK_PROGRESS,$(INDEX.brig),start) 87 +$(LLINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \ 88 $(BRIG_OBJS) attribs.o $(BACKEND) $(LIBS) \ 89 $(BACKENDLIBS) 90 @$(call LINK_PROGRESS,$(INDEX.brig),end) 91 92# Documentation. 93 94BRIG_TEXI_FILES = \ 95 brig/gccbrig.texi \ 96 $(gcc_docdir)/include/fdl.texi \ 97 $(gcc_docdir)/include/gpl_v3.texi \ 98 $(gcc_docdir)/include/gcc-common.texi \ 99 gcc-vers.texi 100 101doc/gccbrig.info: $(BRIG_TEXI_FILES) 102 if test "x$(BUILD_INFO)" = xinfo; then \ 103 rm -f doc/gccbrig.info*; \ 104 $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir) \ 105 -I $(gcc_docdir)/include -o $@ $<; \ 106 else true; fi 107 108doc/gccbrig.dvi: $(BRIG_TEXI_FILES) 109 $(TEXI2DVI) -I $(abs_docdir) -I $(abs_docdir)/include -o $@ $< 110 111doc/gccbrig.pdf: $(BRIG_TEXI_FILES) 112 $(TEXI2PDF) -I $(abs_docdir) -I $(abs_docdir)/include -o $@ $< 113 114$(build_htmldir)/brig/index.html: $(BRIG_TEXI_FILES) 115 $(mkinstalldirs) $(@D) 116 rm -f $(@D)/* 117 $(TEXI2HTML) -I $(gcc_docdir) -I $(gcc_docdir)/include \ 118 -I $(srcdir)/brig -o $(@D) $< 119 120.INTERMEDIATE: gccbrig.pod 121 122gccbrig.pod: brig/gccbrig.texi 123 -$(TEXI2POD) -D gccbrig < $< > $@ 124 125# Build hooks. 126 127brig.all.cross: gccbrig-cross$(exeext) 128brig.start.encap: gccbrig$(exeext) 129brig.rest.encap: 130brig.info: doc/gccbrig.info 131brig.dvi: doc/gccbrig.dvi 132brig.pdf: doc/gccbrig.pdf 133brig.html: $(build_htmldir)/brig/index.html 134brig.srcinfo: doc/gccbrig.info 135 -cp -p $^ $(srcdir)/doc 136 137brig.srcextra: 138brig.tags: force 139 cd $(srcdir)/brig; \ 140 etags -o TAGS.sub *.c *.h; \ 141 etags --include TAGS.sub --include ../TAGS.sub 142 143brig.man: doc/gccbrig.1 144brig.srcman: doc/gccbrig.1 145 -cp -p $^ $(srcdir)/doc 146 147lang_checks += check-brig 148 149# No brig-specific selftests 150selftest-brig: 151 152# Install hooks. 153 154brig.install-common: installdirs 155 -rm -f $(DESTDIR)$(bindir)/$(GCCBRIG_INSTALL_NAME)$(exeext) 156 $(INSTALL_PROGRAM) gccbrig$(exeext) \ 157 $(DESTDIR)$(bindir)/$(GCCBRIG_INSTALL_NAME)$(exeext) 158 -if test -f brig1$(exeext); then \ 159 if test -f gccbrig-cross$(exeext); then \ 160 :; \ 161 else \ 162 rm -f $(DESTDIR)$(bindir)/$(GCCBRIG_TARGET_INSTALL_NAME)$(exeext); \ 163 ( cd $(DESTDIR)$(bindir) && \ 164 $(LN) $(GCCBRIG_INSTALL_NAME)$(exeext) \ 165 $(GCCBRIG_TARGET_INSTALL_NAME)$(exeext) ); \ 166 fi; \ 167 fi 168 169brig.install-plugin: 170 171brig.install-info: #$(DESTDIR)$(infodir)/gccbrig.info 172 173brig.install-pdf: doc/gccbrig.pdf 174 @$(NORMAL_INSTALL) 175 test -z "$(pdfdir)" || $(mkinstalldirs) "$(DESTDIR)$(pdfdir)/gcc" 176 @for p in doc/gccbrig.pdf; do \ 177 if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ 178 f=$(pdf__strip_dir) \ 179 echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(pdfdir)/gcc/$$f'"; \ 180 $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(pdfdir)/gcc/$$f"; \ 181 done 182 183brig.install-html: $(build_htmldir)/brig 184 @$(NORMAL_INSTALL) 185 test -z "$(htmldir)" || $(mkinstalldirs) "$(DESTDIR)$(htmldir)" 186 @for p in $(build_htmldir)/brig; do \ 187 if test -f "$$p" || test -d "$$p"; then d=""; else d="$(srcdir)/"; \ 188 fi; \ 189 f=$(html__strip_dir) \ 190 if test -d "$$d$$p"; then \ 191 echo " $(mkinstalldirs) '$(DESTDIR)$(htmldir)/$$f'"; \ 192 $(mkinstalldirs) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \ 193 echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \ 194 $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f"; \ 195 else \ 196 echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(htmldir)/$$f'"; \ 197 $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(htmldir)/$$f"; \ 198 fi; \ 199 done 200 201brig.install-man: $(DESTDIR)$(man1dir)/$(GCCBRIG_INSTALL_NAME)$(man1ext) 202 203$(DESTDIR)$(man1dir)/$(GCCBRIG_INSTALL_NAME)$(man1ext): doc/gccbrig.1 \ 204 installdirs 205 -rm -f $@ 206 -$(INSTALL_DATA) $< $@ 207 -chmod a-x $@ 208 209brig.uninstall: 210 rm -rf $(DESTDIR)$(bindir)/$(GCCBRIG_INSTALL_NAME)$(exeext) 211 rm -rf $(DESTDIR)$(man1dir)/$(GCCBRIG_INSTALL_NAME)$(man1ext) 212 rm -rf $(DESTDIR)$(bindir)/$(GCCBRIG_TARGET_INSTALL_NAME)$(exeext) 213 rm -rf $(DESTDIR)$(infodir)/gccbrig.info* 214 215# Clean hooks. 216 217brig.mostlyclean: 218 -rm -f brig/*$(objext) 219 -rm -f brig/*$(coverageexts) 220brig.clean: 221brig.distclean: 222brig.maintainer-clean: 223 -rm -f $(docobjdir)/gccbrig.1 224 225# Stage hooks. 226 227brig.stage1: stage1-start 228 -mv brig/*$(objext) stage1/brig 229brig.stage2: stage2-start 230 -mv brig/*$(objext) stage2/brig 231brig.stage3: stage3-start 232 -mv brig/*$(objext) stage3/brig 233brig.stage4: stage4-start 234 -mv brig/*$(objext) stage4/brig 235brig.stageprofile: stageprofile-start 236 -mv brig/*$(objext) stageprofile/brig 237brig.stagefeedback: stagefeedback-start 238 -mv brig/*$(objext) stagefeedback/brig 239 240CFLAGS-brig/brig-lang.o += -DDEFAULT_TARGET_VERSION=\"$(version)\" \ 241 -DDEFAULT_TARGET_MACHINE=\"$(target_noncanonical)\" 242 243BRIGINCLUDES = -I $(srcdir)/brig -I $(srcdir)/brig/brigfrontend 244 245brig/brig-machine.o: brig/brigfrontend/brig-machine.c 246 $(COMPILE) $(BRIGINCLUDES) $< 247 $(POSTCOMPILE) 248 249brig/%.o: brig/brigfrontend/%.cc 250 $(COMPILE) $(BRIGINCLUDES) $< 251 $(POSTCOMPILE) 252