ftmemsim-valgrind/Makefile.vex.am
Petar Jovanovic eddb917a6c mips: Add nanoMIPS support to Valgrind 1/4
Necessary changes to support nanoMIPS on Linux.

Part 1/4 - VEX changes

Patch by Aleksandar Rikalo, Dimitrije Nikolic, Tamara Vlahovic and
Aleksandra Karadzic.

nanoMIPS architecture in brief

Designed for embedded devices, nanoMIPS is a variable lengths instruction
set architecture (ISA) offering high performance in substantially reduced
code size.

The nanoMIPS ISA combines recoded and new 16-, 32-, and 48-bit instructions
to achieve an ideal balance of performance and code density.
It incorporates all MIPS32 instructions and architecture modules including
MIPS DSP and MIPS MT, as well as new instructions for advanced code size
reduction.

nanoMIPS is supported in release 6 of the MIPS architecture. It is first
implemented in the new MIPS I7200 multi-threaded multi-core processor
series. Compiler support is included in the MIPS GNU-based development
tools.

Related KDE issue: #400872.
2019-08-21 16:08:42 +00:00

216 lines
6.6 KiB
Makefile

# VEX/Makefile is generated from this file at configure-time.
include $(top_srcdir)/Makefile.all.am
#----------------------------------------------------------------------------
# Headers, etc
#----------------------------------------------------------------------------
EXTRA_DIST = \
HACKING.README \
LICENSE.README \
LICENSE.GPL \
auxprogs/genoffsets.c
pkginclude_HEADERS = \
pub/libvex.h \
pub/libvex_basictypes.h \
pub/libvex_emnote.h \
pub/libvex_guest_offsets.h \
pub/libvex_guest_x86.h \
pub/libvex_guest_amd64.h \
pub/libvex_guest_ppc32.h \
pub/libvex_guest_ppc64.h \
pub/libvex_guest_arm.h \
pub/libvex_guest_arm64.h \
pub/libvex_guest_s390x.h \
pub/libvex_guest_mips32.h \
pub/libvex_guest_mips64.h \
pub/libvex_s390x_common.h \
pub/libvex_ir.h \
pub/libvex_trc_values.h \
pub/libvex_inner.h
# libvex_inner.h is special: it is a public header for valgrind core,
# but should not be used by the end user
noinst_HEADERS = \
priv/main_globals.h \
priv/main_util.h \
priv/ir_match.h \
priv/ir_opt.h \
priv/guest_generic_bb_to_IR.h \
priv/guest_generic_x87.h \
priv/guest_x86_defs.h \
priv/guest_amd64_defs.h \
priv/guest_ppc_defs.h \
priv/guest_arm_defs.h \
priv/guest_arm64_defs.h \
priv/guest_s390_defs.h \
priv/guest_mips_defs.h \
priv/mips_defs.h \
priv/guest_nanomips_defs.h \
priv/host_generic_regs.h \
priv/host_generic_simd64.h \
priv/host_generic_simd128.h \
priv/host_generic_simd256.h \
priv/host_generic_maddf.h \
priv/host_x86_defs.h \
priv/host_amd64_defs.h \
priv/host_ppc_defs.h \
priv/host_arm_defs.h \
priv/host_arm64_defs.h \
priv/host_s390_defs.h \
priv/s390_disasm.h \
priv/s390_defs.h \
priv/host_mips_defs.h \
priv/host_nanomips_defs.h \
priv/common_nanomips_defs.h
BUILT_SOURCES = pub/libvex_guest_offsets.h
CLEANFILES = pub/libvex_guest_offsets.h
if COMPILER_IS_CLANG
CFLAGS_FOR_GENOFFSETS = $(CFLAGS) -no-integrated-as
else
CFLAGS_FOR_GENOFFSETS = $(CFLAGS)
endif
# for VEX building, use the LTO versions, in case they differ from non lto versions
AR = ${LTO_AR}
RANLIB = ${LTO_RANLIB}
# This is very uggerly. Need to sed out both "xyzzyN" and
# "xyzzy$N" since gcc on different targets emits the constants
# differently -- with a leading $ on x86/amd64 but none on ppc32/64.
# ICC also emits the constants differently with a leading # #define
pub/libvex_guest_offsets.h: auxprogs/genoffsets.c \
pub/libvex_basictypes.h \
pub/libvex_guest_x86.h \
pub/libvex_guest_amd64.h \
pub/libvex_guest_ppc32.h \
pub/libvex_guest_ppc64.h \
pub/libvex_guest_arm.h \
pub/libvex_guest_arm64.h \
pub/libvex_guest_s390x.h \
pub/libvex_guest_mips32.h \
pub/libvex_guest_mips64.h
rm -f auxprogs/genoffsets.s
$(mkdir_p) auxprogs pub
$(CC) $(CFLAGS_FOR_GENOFFSETS) \
$(LIBVEX_CFLAGS_NO_LTO) \
$(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) \
-O -S -o auxprogs/genoffsets.s \
$(srcdir)/auxprogs/genoffsets.c
grep xyzzy auxprogs/genoffsets.s | grep "^[# ]*#define" \
| sed "s/# #define/#define/g" \
| sed "s/xyzzy\\$$//g" \
| sed "s/xyzzy#//g" \
| sed "s/xyzzy//g" \
> pub/libvex_guest_offsets.h
rm -f auxprogs/genoffsets.s
#----------------------------------------------------------------------------
# libvex-<platform>-<os>.a : containing all VEX objects, including
# a main_main.o compiled in single arch (guest==host).
# libvexmultiarch-<platform>-<os>.a, only containing multiarch_main_main.o,
# which is main_main.c compiled so that any guest/host combination
# can be done at runtime.
#----------------------------------------------------------------------------
pkglib_LIBRARIES = libvex-@VGCONF_ARCH_PRI@-@VGCONF_OS@.a \
libvexmultiarch-@VGCONF_ARCH_PRI@-@VGCONF_OS@.a
if VGCONF_HAVE_PLATFORM_SEC
pkglib_LIBRARIES += libvex-@VGCONF_ARCH_SEC@-@VGCONF_OS@.a \
libvexmultiarch-@VGCONF_ARCH_SEC@-@VGCONF_OS@.a
endif
LIBVEX_SOURCES_COMMON = \
priv/main_globals.c \
priv/main_main.c \
priv/main_util.c \
priv/ir_defs.c \
priv/ir_inject.c \
priv/ir_match.c \
priv/ir_opt.c \
priv/guest_generic_bb_to_IR.c \
priv/guest_generic_x87.c \
priv/guest_x86_helpers.c \
priv/guest_x86_toIR.c \
priv/guest_amd64_helpers.c \
priv/guest_amd64_toIR.c \
priv/guest_ppc_helpers.c \
priv/guest_ppc_toIR.c \
priv/guest_arm_helpers.c \
priv/guest_arm_toIR.c \
priv/guest_arm64_helpers.c \
priv/guest_arm64_toIR.c \
priv/guest_s390_helpers.c \
priv/guest_s390_toIR.c \
priv/guest_mips_helpers.c \
priv/guest_mipsdsp_toIR.c \
priv/guest_mips_toIR.c \
priv/guest_nanomips_helpers.c \
priv/guest_nanomips_toIR.c \
priv/host_generic_regs.c \
priv/host_generic_simd64.c \
priv/host_generic_simd128.c \
priv/host_generic_simd256.c \
priv/host_generic_maddf.c \
priv/host_generic_reg_alloc2.c \
priv/host_generic_reg_alloc3.c \
priv/host_x86_defs.c \
priv/host_x86_isel.c \
priv/host_amd64_defs.c \
priv/host_amd64_isel.c \
priv/host_ppc_defs.c \
priv/host_ppc_isel.c \
priv/host_arm_defs.c \
priv/host_arm_isel.c \
priv/host_arm64_defs.c \
priv/host_arm64_isel.c \
priv/host_s390_defs.c \
priv/host_s390_isel.c \
priv/s390_disasm.c \
priv/host_mips_defs.c \
priv/host_nanomips_defs.c \
priv/host_mips_isel.c \
priv/host_nanomips_isel.c
LIBVEXMULTIARCH_SOURCES = priv/multiarch_main_main.c
LIBVEX_CFLAGS_NO_LTO = \
-Wbad-function-cast \
-fstrict-aliasing
LIBVEX_CFLAGS = ${LTO_CFLAGS} \
${LIBVEX_CFLAGS_NO_LTO}
libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES = $(LIBVEX_SOURCES_COMMON)
libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS = \
$(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) -Ipriv
libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS = \
$(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) $(LIBVEX_CFLAGS)
if VGCONF_HAVE_PLATFORM_SEC
libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES = $(LIBVEX_SOURCES_COMMON)
libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS = \
$(AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) -Ipriv
libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS = \
$(AM_CFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) $(LIBVEX_CFLAGS)
endif
libvexmultiarch_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES = \
$(LIBVEXMULTIARCH_SOURCES)
libvexmultiarch_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS = \
$(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) -Ipriv
libvexmultiarch_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS = \
$(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) $(LIBVEX_CFLAGS)
if VGCONF_HAVE_PLATFORM_SEC
libvexmultiarch_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES = \
$(LIBVEXMULTIARCH_SOURCES)
libvexmultiarch_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS = \
$(AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) -Ipriv
libvexmultiarch_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS = \
$(AM_CFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) $(LIBVEX_CFLAGS)
endif