gecko/build/unix/elfhack/Makefile.in
2012-05-21 12:12:37 +01:00

100 lines
2.3 KiB
Makefile

#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
DEPTH = ../../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
INTERNAL_TOOLS = 1
HOST_PROGRAM = elfhack
NO_DIST_INSTALL = 1
NO_PROFILE_GUIDED_OPTIMIZE = 1
VPATH += $(topsrcdir)/build
HOST_CPPSRCS = \
elf.cpp \
elfhack.cpp \
$(NULL)
OS_CXXFLAGS := $(filter-out -fno-exceptions,$(OS_CXXFLAGS)) -fexceptions
ifneq (,$(filter %86,$(TARGET_CPU)))
CPU := x86
else
ifneq (,$(filter arm%,$(TARGET_CPU)))
CPU := arm
else
CPU := $(TARGET_CPU)
endif
endif
CSRCS := \
inject/$(CPU).c \
inject/$(CPU)-noinit.c \
test.c \
$(NULL)
ifndef CROSS_COMPILE
CSRCS += dummy.c
endif
WRAP_LDFLAGS=
# need this to suppress errors due to /usr/include/linux/byteorder/swab.h
# on mozilla buildbots
OS_CXXFLAGS := $(filter-out -pedantic,$(OS_CXXFLAGS))
include $(topsrcdir)/config/rules.mk
test$(DLL_SUFFIX): test.$(OBJ_SUFFIX) elfhack $(CSRCS:.c=.$(OBJ_SUFFIX))
$(MKSHLIB) $(LDFLAGS) $<
@echo ===
@echo === If you get failures below, please file a bug describing the error
@echo === and your environment \(compiler and linker versions\), and use
@echo === --disable-elf-hack until this is fixed.
@echo ===
@rm -f $@.bak
$(CURDIR)/elfhack -b -f $@
# Fail if the backup file doesn't exist
[ -f "$@.bak" ]
# Fail if the new library doesn't contain less relocations
[ $$(objdump -R $@.bak | wc -l) -gt $$(objdump -R $@ | wc -l) ]
.PRECIOUS: test$(DLL_SUFFIX)
GARBAGE += test$(DLL_SUFFIX) test$(DLL_SUFFIX).bak
libs:: test$(DLL_SUFFIX)
ifndef CROSS_COMPILE
dummy: dummy.$(OBJ_SUFFIX) test$(DLL_SUFFIX)
$(CC) -o $@ $^ $(LDFLAGS)
libs:: dummy
# Will either crash or return exit code 1 if elfhack is broken
LD_LIBRARY_PATH=$(CURDIR) $(CURDIR)/dummy
GARBAGE += dummy
endif
inject:
$(NSINSTALL) -D $@
inject/%.c: inject.c | inject
cp $< $@
GARBAGE_DIRS += inject
inject/%.$(OBJ_SUFFIX): DEFINES += -DBITS=$(if $(HAVE_64BIT_OS),64,32)
inject/%.$(OBJ_SUFFIX): CFLAGS := -O2 -fno-stack-protector $(filter -m% -I%,$(CFLAGS))
inject/$(CPU)-noinit.$(OBJ_SUFFIX): DEFINES += -DNOINIT
test.$(OBJ_SUFFIX): CFLAGS := -O0
host_elf.$(OBJ_SUFFIX) host_elfhack.$(OBJ_SUFFIX): elfxx.h