#CXX=g++-4.9
CXX=g++
#CXX=clang++-3.8
CXXFLAGS = -O2 -std=c++11
CPPFLAGS += -Wall -Wextra

CXXFLAGS += -fno-rtti -fno-exceptions
#CXXFLAGS += -m32 -static

#CXXFLAGS += -g
CXXLFAGS += -s

CXXFLAGS += -ffunction-sections -fdata-sections -Wl,--gc-sections -fno-asynchronous-unwind-tables

X86FLAGS = -march=native
ARMFLAGS = -mcpu=cortex-r4

STRIPSECT= -R.comment -R.note -R.note.ABI-tag -R.note.gnu.build-id -R.eh_frame -R.eh_frame_hdr -R.ARM.exidx
# -R.gnu.version -R.gnu.version_r

all: 1.out 2.out 1a.out 2a.out
#3.out

1.out: dump_1.hh main.cc
	$(CXX) -o $@ $(CXXFLAGS) main.cc -DHEADER="\"$<\"" $(CPPFLAGS) $(LDFLAGS) $(X86FLAGS)
	strip -X $@
	strip $(STRIPSECT) $@
	#sstrip -z $@

1o.out: dump_1.hh main.cc
	$(CXX) -o $@ $(CXXFLAGS) main.cc -DHEADER="\"$<\"" $(CPPFLAGS) $(LDFLAGS) $(X86FLAGS) -Ofast
	strip -X $@
	strip $(STRIPSECT) $@
	#sstrip -z $@

2.out: dump_2.hh main.cc
	$(CXX) -o $@ $(CXXFLAGS) main.cc -DHEADER="\"$<\"" $(CPPFLAGS) $(LDFLAGS) $(X86FLAGS)
	strip -X $@
	strip $(STRIPSECT) $@
	#sstrip -z $@

1a.out: dump_1.hh main.cc
	arm-linux-gnueabi-$(CXX) -o $@ $(CXXFLAGS) main.cc -DHEADER="\"$<\"" $(CPPFLAGS) $(LDFLAGS) $(ARMFLAGS)
	arm-linux-gnueabi-strip -X $@
	arm-linux-gnueabi-strip $(STRIPSECT) $@
	#sstrip -z $@

2a.out: dump_2.hh main.cc
	arm-linux-gnueabi-$(CXX) -o $@ $(CXXFLAGS) main.cc -DHEADER="\"$<\"" $(CPPFLAGS) $(LDFLAGS) $(ARMFLAGS)
	arm-linux-gnueabi-strip -X $@
	arm-linux-gnueabi-strip $(STRIPSECT) $@
	#sstrip -z $@
