## See sim/Makefile.am ## ## Copyright (C) 2020-2023 Free Software Foundation, Inc. ## ## This program 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 of the License, or ## (at your option) any later version. ## ## This program 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 this program. If not, see . %C%_run_SOURCES = %C%_run_LDADD = \ %D%/nrun.o \ %D%/libsim.a \ $(SIM_COMMON_LIBS) noinst_PROGRAMS += %D%/run ## List all generated headers to help Automake dependency tracking. BUILT_SOURCES += \ %D%/eng-le.h \ %D%/eng-be.h %C%_BUILD_OUTPUTS = \ %D%/mloop-le.c \ %D%/stamp-mloop-le \ %D%/mloop-be.c \ %D%/stamp-mloop-be ## This makes sure build tools are available before building the arch-subdirs. SIM_ALL_RECURSIVE_DEPS += $(%C%_BUILD_OUTPUTS) %D%/mloop-le.c %D%/eng-le.h: %D%/stamp-mloop-le ; @true %D%/stamp-mloop-le: $(srccom)/genmloop.sh %D%/mloop.in $(AM_V_GEN)$(SHELL) $(srccom)/genmloop.sh -shell $(SHELL) \ -mono -scache -prefix bpfbf_ebpfle -cpu bpfbf \ -infile $(srcdir)/%D%/mloop.in \ -outfile-prefix %D%/ -outfile-suffix -le $(AM_V_at)$(SHELL) $(srcroot)/move-if-change %D%/eng-le.hin %D%/eng-le.h $(AM_V_at)$(SHELL) $(srcroot)/move-if-change %D%/mloop-le.cin %D%/mloop-le.c $(AM_V_at)touch $@ %D%/mloop-be.c %D%/eng-be.h: %D%/stamp-mloop-be ; @true %D%/stamp-mloop-be: $(srccom)/genmloop.sh %D%/mloop.in $(AM_V_GEN)$(SHELL) $(srccom)/genmloop.sh -shell $(SHELL) \ -mono -scache -prefix bpfbf_ebpfbe -cpu bpfbf \ -infile $(srcdir)/%D%/mloop.in \ -outfile-prefix %D%/ -outfile-suffix -be $(AM_V_at)$(SHELL) $(srcroot)/move-if-change %D%/eng-be.hin %D%/eng-be.h $(AM_V_at)$(SHELL) $(srcroot)/move-if-change %D%/mloop-be.cin %D%/mloop-be.c $(AM_V_at)touch $@ MOSTLYCLEANFILES += $(%C%_BUILD_OUTPUTS) ## Target that triggers all cgen targets that works when --disable-cgen-maint. %D%/cgen: %D%/cgen-arch %D%/cgen-cpu %D%/cgen-defs-le %D%/cgen-defs-be %D%/cgen-decode-le %D%/cgen-decode-be %D%/cgen-arch: $(AM_V_GEN)mach=bpf cpu=bpfbf FLAGS="with-scache"; $(CGEN_GEN_ARCH) %D%/arch.h %D%/arch.c %D%/cpuall.h: @CGEN_MAINT@ %D%/cgen-arch %D%/cgen-cpu: $(AM_V_GEN)isa=ebpfle,ebpfbe cpu=bpfbf mach=bpf FLAGS="with-multiple-isa with-scache"; $(CGEN_GEN_CPU) $(AM_V_at)rm -f $(srcdir)/%D%/model.c %D%/cpu.h %D%/cpu.c %D%/model.c: @CGEN_MAINT@ %D%/cgen-cpu ## We need to generate a group of files per ISA. ## For eBPF little-endian: ## defs-le.h ## sem-le.c, decode-le.c, decode-le.h ## $(objdir)/mloop-le.c $(objdir)/eng-le.h ## For eBPF big-endian: ## defs-be.h ## sem-be.c, decode-be.c, decode-be.h ## $(objdir)/mloop-be.c $(objdir)/eng-le.h ## ## The rules below take care of that. %D%/cgen-defs-le: $(AM_V_GEN)isa=ebpfle cpu=bpfbf mach=bpf FLAGS="with-scache" SUFFIX="-le"; $(CGEN_GEN_DEFS) %D%/defs-le.h: @CGEN_MAINT@ %D%/cgen-defs-le %D%/cgen-defs-be: $(AM_V_GEN)isa=ebpfbe cpu=bpfbf mach=bpf FLAGS="with-scache" SUFFIX="-be"; $(CGEN_GEN_DEFS) %D%/defs-be.h: @CGEN_MAINT@ %D%/cgen-defs-be %D%/cgen-decode-le: $(AM_V_GEN)isa=ebpfle cpu=bpfbf mach=bpf FLAGS="with-scache" SUFFIX="-le" EXTRAFILES="$(CGEN_CPU_SEM)"; $(CGEN_GEN_DECODE) %D%/sem-le.c %D%/decode-le.c %D%/decode-le.h: @CGEN_MAINT@ %D%/cgen-decode-vle %D%/cgen-decode-be: $(AM_V_GEN)isa=ebpfbe cpu=bpfbf mach=bpf FLAGS="with-scache" SUFFIX="-be" EXTRAFILES="$(CGEN_CPU_SEM)"; $(CGEN_GEN_DECODE) %D%/sem-be.c %D%/decode-be.c %D%/decode-be.h: @CGEN_MAINT@ %D%/cgen-decode-be