PLATFORM := lin
endif
-OBJ := main.o syscalls.o request.o binary.o memory.o
-OBJ += elf.o
-OBJ := $(addsuffix .$(PLATFORM),$(OBJ))
+OBJ := main.o syscalls.o request.o memory.o exports.o
+OBJ := $(addprefix obj-$(PLATFORM)/,$(OBJ))
ifeq ($(PLATFORM),win)
- BIN := ../ld-acess.exe
+ BIN := ../ld-acess.dll
+ LDFLAGS += -lws2_32
endif
ifeq ($(PLATFORM),lin)
- BIN := ../ld-acess
+ BIN := ../ld-acess.so
endif
-CFLAGS += -Wall -Werror -g
+CFLAGS += -Wall
+CFLAGS += -Werror
+CFLAGS += -g -shared -fPIC
+CPPFLAGS += -DARCHDIR_is_x86_64=1
+LDFLAGS += -g -shared -Wl,--no-undefined
+
+DEPFILES = $(filter %.o,$(OBJ))
+DEPFILES := $(DEPFILES:%=%.dep)
.PHONY: all clean
all: $(BIN)
clean:
- $(RM) $(BIN) $(OBJ)
+ $(RM) $(BIN) $(OBJ) $(DEPFILES)
$(BIN): $(OBJ)
- $(CC) -g -o $@ $(OBJ)
+ $(CC) -o $@ $(OBJ) $(LDFLAGS)
+
+obj-$(PLATFORM)/%.o: %.c
+ @mkdir -p $(dir $@)
+ @echo [CC] -o $@
+ @$(CC) -c $< -o $@ $(CFLAGS) $(CPPFLAGS)
-%.o.$(PLATFORM): %.c
- $(CC) -c $< -o $@ $(CFLAGS) $(CPPFLAGS)
+-include $(DEPFILES)