# $NetBSD: Makefile,v 1.3 2013/11/05 02:32:12 gdt Exp $ LIBISPRIVATE= yes NOGCCERROR= .include .include "../Makefile.inc" LIB= sim SRCS= debug.c filter_filename.c bits.c sim-endian.c os_emul.c emul_generic.c \ emul_bugapi.c emul_chirp.c emul_netbsd.c emul_unix.c registers.c vm.c \ corefile.c model.c spreg.c cpu.c interrupts.c events.c cap.c device.c \ tree.c device_table.c itable.c mon.c icache.c semantics.c idecode.c \ support.c psim.c pk_disklabel.c hw_cpu.c hw_memory.c hw_nvram.c \ hw_iobus.c hw_htab.c hw_disk.c hw_trace.c hw_register.c hw_vm.c \ hw_init.c hw_core.c hw_pal.c hw_com.c hw_eeprom.c hw_opic.c hw_glue.c \ hw_phb.c hw_ide.c options.c sim_calls.c callback.c targ-map.c gdb-sim.c MIC= ${HOST_SH} ${DIST}/move-if-change HOST_CPPFLAGS+= -I. \ -I${DIST}/sim/ppc -I${DIST}/include \ -I${.CURDIR}/arch/${GDB_MACHINE_ARCH} \ -I${.CURDIR}/../libbfd/arch/${GDB_MACHINE_ARCH} \ -I${DIST}/bfd \ -I${DIST}/gdb \ -I${DIST}/gdb/config \ -DHAVE_COMMON_FPU \ -I${.CURDIR}/../arch/${GDB_MACHINE_ARCH} \ -I${DIST}/sim/common PSIM_DEFINES= -DHAVE_CONFIG_H \ -DDEFAULT_INLINE=PSIM_INLINE_LOCALS \ -DWITH_HOST_BYTE_ORDER=BYTE_ORDER \ -DWITH_SMP=5 \ -DHAVE_TERMIOS_STRUCTURE \ -DHAVE_DEVZERO # we need the same -I flags for host / target. CPPFLAGS+= ${HOST_CPPFLAGS} ${PSIM_DEFINES} # # These portions run several programs to generate more code to compile. # # igen portion IGEN_FLAGS= -E -F 32,f,o -CSRI 1024 -N 5 \ -o ${DIST}/sim/ppc/dc-complex \ -I ${DIST}/sim/ppc -i ${DIST}/sim/ppc/ppc-instructions \ -n icache.h -hc tmp-icache.h \ -n icache.c -c tmp-icache.c \ -n semantics.h -hs tmp-semantics.h \ -n semantics.c -s tmp-semantics.c \ -n idecode.h -hd tmp-idecode.h \ -n idecode.c -d tmp-idecode.c \ -n itable.h -ht tmp-itable.h \ -n itable.c -t tmp-itable.c \ -n model.h -hm tmp-model.h \ -n model.c -m tmp-model.c \ -n support.h -hf tmp-support.h \ -n support.c -f tmp-support.c IGENED_FILES= icache.h icache.c idecode.h idecode.c semantics.h semantics.c \ itable.h itable.c model.h model.c support.h support.c IGENSRCS= igen.c table.c lf.c misc.c filter_host.c ld-decode.c ld-cache.c filter.c ld-insn.c gen-model.c gen-itable.c gen-icache.c gen-semantics.c gen-idecode.c gen-support.c IGENOBJS= ${IGENSRCS:S/.c/.lo/} DPSRCS+= ${IGENED_FILES:M*.h} ${IGENED_FILES}: run-igen run-igen: igen ppc-instructions ${_MKMSG_CREATE} ${IGENED_FILES} rm -f ${.TARGET} ./igen ${IGEN_FLAGS} ${MIC} tmp-icache.h icache.h ${MIC} tmp-icache.c icache.c ${MIC} tmp-idecode.h idecode.h ${MIC} tmp-idecode.c idecode.c ${MIC} tmp-semantics.h semantics.h ${MIC} tmp-semantics.c semantics.c ${MIC} tmp-itable.h itable.h ${MIC} tmp-itable.c itable.c ${MIC} tmp-model.h model.h ${MIC} tmp-model.c model.c ${MIC} tmp-support.h support.h ${MIC} tmp-support.c support.c touch ${.TARGET} igen: ${IGENOBJS} ${HOST_LINK.c} ${IGENOBJS} -o ${.TARGET} # dgen portion DGEN_FLAGS= -r ${DIST}/sim/ppc/ppc-spr-table \ -n spreg.h -hp tmp-spreg.h \ -n spreg.c -p tmp-spreg.c DGENED_FILES= spreg.h spreg.c DGENSRCS= dgen.c table.c lf.c misc.c filter_host.c DGENOBJS= ${DGENSRCS:S/.c/.lo/} DPSRCS+= ${DGENED_FILES:M*.h} ${DGENED_FILES}: run-dgen run-dgen: dgen ./dgen ${DGEN_FLAGS} ${MIC} tmp-spreg.h spreg.h ${MIC} tmp-spreg.c spreg.c touch run-dgen dgen: ${DGENOBJS} ${HOST_LINK.c} ${DGENOBJS} -o ${.TARGET} # gentmap portion GENTMAPSRCS= gentmap.c GENTMAPOBJS= ${GENTMAPSRCS:S/.c/.lo/} gentmap: ${GENTMAPOBJS} ${HOST_LINK.c} ${GENTMAPOBJS} -o ${.TARGET} gentmap.c: targ-vals.def targ-vals.def: ${DIST}/sim/ppc/../common/nltvals.def rm -f targ-vals.def tmp-def cat ${DIST}/sim/ppc/../common/nltvals.def > tmp-vals.def ${MIC} tmp-vals.def targ-vals.def targ-vals.h: gentmap targ-vals.def rm -f tmp-vals.h ./gentmap -h > tmp-vals.h ${MIC} tmp-vals.h targ-vals.h DPSRCS+= targ-vals.h targ-map.c: gentmap targ-vals.def rm -f tmp-map.c ./gentmap -c > tmp-map.c ${MIC} tmp-map.c targ-map.c # hw.c / hw.h portion HWSRCS= hw_cpu.c hw_memory.c hw_nvram.c hw_iobus.c hw_htab.c hw_disk.c \ hw_trace.c hw_register.c hw_vm.c hw_init.c hw_core.c hw_pal.c \ hw_com.c hw_eeprom.c hw_opic.c hw_glue.c hw_phb.c hw_ide.c hw.h hw.c: run-hw run-hw: Makefile f=""; \ for i in ${HWSRCS}; do \ case " $$f " in \ *" $$i "*) ;; \ *) f="$$f $$i" ;; \ esac ; \ done ; \ for hw in $$f; do \ echo $$hw; \ done | ${TOOL_SED} -e 's/^.*\(hw_.*\)\.c/\1/' \ -e 's/^/extern const device_descriptor /' \ -e 's/$$/_device_descriptor\[\];/' \ > tmp-hw.h f=""; \ for i in ${HWSRCS}; do \ case " $$f " in \ *" $$i "*) ;; \ *) f="$$f $$i" ;; \ esac ; \ done ; \ for hw in $$f; do \ echo $$hw; \ done | ${TOOL_SED} -e 's/^.*\(hw_.*\)\.c/\1/' \ -e 's/^/ /' \ -e 's/$$/_device_descriptor,/' > tmp-hw.c ${MIC} tmp-hw.h hw.h ${MIC} tmp-hw.c hw.c touch run-hw DPSRCS+= hw.h # package portion PACKAGE_SRC = pk_disklabel.c PK_H = pk.h ${PK_H}: run-pk run-pk: $(PACKAGE_SRC) f=""; \ for i in $(PACKAGE_SRC) ; do \ case " $$f " in \ *" $$i "*) ;; \ *) f="$$f $$i" ;; \ esac ; \ done ; \ for pk in $$f; do \ echo $$pk; \ done | ${TOOL_SED} -e 's/^.*pk_\(.*\)\.c/\1/' \ -e 's/^/extern package_create_instance_callback pk_/' \ -e 's/$$/_create_instance;/' > tmp-pk.h ${MIC} tmp-pk.h pk.h touch run-pk DPSRCS+= ${PK_H} # defines portion DEFINES_H= defines.h ${DEFINES_H}: run-defines run-defines: ${TOOL_SED} -n -e '/^#define HAVE_/s/ 1$$/",/' \ -e '/^#define HAVE_/s//"HAVE_/p' \ < ${.CURDIR}/arch/${GDB_MACHINE_ARCH}/config.h > tmp-defines.h ${MIC} tmp-defines.h defines.h touch run-defines DPSRCS+= ${DEFINES_H} # misc. dependancies. filter_host.c: ${DIST}/sim/ppc/filter_filename.c cp -f ${.ALLSRC} ${.TARGET} filter_host.lo: ppc-config.h ppc-config.h: ${DIST}/sim/ppc/std-config.h cp -f ${.ALLSRC} ${.TARGET} DPSRCS+= ppc-config.h CLEANFILES+= igen dgen gentmap *.lo \ ppc-config.h filter_host.c \ tmp-icache.h icache.h \ tmp-icache.c icache.c \ tmp-idecode.h idecode.h \ tmp-idecode.c idecode.c \ tmp-semantics.h semantics.h \ tmp-semantics.c semantics.c \ tmp-itable.h itable.h \ tmp-itable.c itable.c \ tmp-model.h model.h \ tmp-model.c model.c \ tmp-support.h support.h \ tmp-support.c support.c \ tmp-spreg.h spreg.h \ tmp-spreg.c spreg.c \ tmp-vals.h targ-vals.h \ hw.c hw.h \ defines.h pk.h \ targ-map.c targ-vals.def \ run-defines run-dgen run-hw run-igen run-pk .SUFFIXES: .lo .c.lo: ${HOST_COMPILE.c} -o ${.TARGET} $< .PATH: ${DIST}/sim/ppc ${DIST}/sim/common .include .include "../../Makefile.inc"