Elfspy/makefile
2016-09-16 17:45:35 +02:00

57 lines
1.3 KiB
Makefile

.SECONDEXPANSION:
LIBRARIES := elfspy demo
BINARIES := example1 example2 example3 example5 example6 example7 example9
elfspy_OBJS := \
Error.o \
Report.o \
Fail.o \
MFile.o \
ELFInfo.o \
GOTEntry.o \
SPY.o \
Call.o
demo_OBJS := \
demo.o
example1_LIBRARIES := elfspy demo
example2_LIBRARIES := elfspy demo
example3_LIBRARIES := elfspy demo
example5_LIBRARIES := elfspy demo
example6_LIBRARIES := elfspy demo
example7_LIBRARIES := elfspy demo
example9_LIBRARIES := elfspy demo
all : $(BINARIES)
CXXFLAGS := -I.. -std=c++14 -g -fPIC -O0
GCLIB_PATH := /home/robin/glibc/2.23/bin \
GCLIB_LIBPATH := $(GCLIB_PATH)/lib \
DYNAMIC_DEBUG := \
-L$(GCLIB_LIBPATH) \
-Wl,--rpath=$(GCLIB_LIBPATH) \
-Wl,--dynamic-linker=$(GCLIB_LIBPATH)/ld-linux-x86-64.so.2
BIND_ALL := -z now
LD_FLAGS := # $(BIND_ALL)
#LD_FLAGS := $(DYNAMIC_DEBUG) -rdynamic -ldl
%.o : %.cpp
g++ $(CXXFLAGS) -c $< -o $@
$(patsubst %,lib%.so,$(LIBRARIES)) : $$($$(patsubst lib%.so,%,$$@)_OBJS)
g++ $(CXXFLAGS) -shared $^ -o $@ $(LD_FLAGS)
readelf -Wa $@ | c++filt > $(@:%.so=%.elf)
$(BINARIES) : $$(@).cpp $$(patsubst %,lib%.so,$$($$@_LIBRARIES))
g++ $(CXXFLAGS) $(@).cpp -o $@ $(LD_FLAGS) -L. $(patsubst %,-l%,$($@_LIBRARIES)) -rdynamic -ldl
readelf -Wa $@ | c++filt > $(@).elf
clean :
rm -f *.o *.so $(BINARIES) *.elf