WARN_FLAGS= -Werror -Wall -Wextra
CXXFLAGS = $(WARN_FLAGS)
-CXXFLAGS+= -O2 -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -D_FILE_OFFSET_BITS=64
+CXXFLAGS+= -O2 -fvisibility=hidden -fvisibility-inlines-hidden -D_FILE_OFFSET_BITS=64
# binary
BIN_SRC := parser.cpp
LIB_SRC := parse_elf.cpp elf_impl.cpp
LIB_OBJ := $(LIB_SRC:.cpp=.o)
-%.o : %.cpp
- $(CXX) -c $(CXXFLAGS) $< -o $@
+parser.o: parser.cpp
+ $(CXX) -c $(CXXFLAGS) -fpie $< -o $@
+
+parse_elf.o: parse_elf.cpp
+ $(CXX) -c $(CXXFLAGS) -fPIC $< -o $@
+
+elf_impl.o: elf_impl.cpp
+ $(CXX) -c $(CXXFLAGS) -fPIC $< -o $@
all: elfparser elflib
$(CXX) $^ $(CXXFLAGS) -shared -o $@
$(BIN_TARGET): $(BIN_OBJ) $(LIB_TARGET)
- $(CXX) $^ -o $@ -L. -lparserelf
+ $(CXX) $^ -o $@ -L. -lparserelf -pie
install_elf: elfparser
[ -d "$(DESTDIR)/$(BINDIR)" ] || mkdir -p $(DESTDIR)/$(BINDIR)