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 binary.o memory.o exports.o
+OBJ += elf.o elf_load.o
+OBJ := $(addprefix obj-$(PLATFORM)/,$(OBJ))
ifeq ($(PLATFORM),win)
BIN := ../ld-acess.exe
+ LINKADDR := 0x70000000
+ LDFLAGS += -lws2_32 -Wl,--image-base,$(LINKADDR)
endif
ifeq ($(PLATFORM),lin)
BIN := ../ld-acess
- LD += -m elf_i386
+ LINKADDR := 0x70000000
+# LD += -m elf_i386
endif
-CFLAGS += -Wall -Werror -g -m32
+CFLAGS += -Wall
+CFLAGS += -Werror
+CFLAGS += -g -std=c99
+CPPFLAGS += -DARCHDIR_is_x86_64=1
+LDFLAGS += -g -Wl,-T,obj-$(PLATFORM)/link.ld
+
+DEPFILES = $(filter %.o,$(OBJ))
+DEPFILES := $(DEPFILES:%=%.dep)
.PHONY: all clean
all: $(BIN)
clean:
- $(RM) $(BIN) $(OBJ)
+ $(RM) $(BIN) $(OBJ) $(DEPFILES) obj-$(PLATFORM)/link.ld
+
+$(BIN): obj-$(PLATFORM)/link.ld $(OBJ)
+ $(CC) -o $@ $(OBJ) $(LDFLAGS)
-$(BIN): link.ld.$(PLATFORM) $(OBJ)
-# $(LD) -g -o $@ $(OBJ) -T link.ld.$(PLATFORM)
- $(CC) -g -o $@ $(OBJ) -m32 -Wl,-T,link.ld.$(PLATFORM)
+obj-$(PLATFORM)/%.o: %.c
+ @mkdir -p $(dir $@)
+ @echo [CC] -o $@
+ @$(CC) -c $< -o $@ $(CFLAGS) $(CPPFLAGS)
-%.o.$(PLATFORM): %.c
- $(CC) -c $< -o $@ $(CFLAGS) $(CPPFLAGS)
+# Modify the default makefile to put the executable at 1MB instead
+obj-lin/link.ld: Makefile
+ @mkdir -p $(dir $@)
+ @echo "Making Linker Script ($@)"
+ $(LD) -g --verbose | awk '{ if( substr($$1,0,5) == "====="){ bPrint = !bPrint; } else { if(bPrint){ print $$0;} } }' | sed 's/\b0x[048][0-9]*\b/$(LINKADDR)/g' | sed 's/CONSTANT (MAXPAGESIZE)/0x1000/g' > $@
# Modify the default makefile to put the executable at 1MB instead
-link.ld.lin:
- $(LD) --verbose | awk '{ if( substr($$0,0,5) == "====="){ bPrint = !bPrint; } else { if(bPrint){ print $$0;} } }' | sed 's/\b0x0[08][0-9]*\b/0x00100000/g' > $@
+obj-win/link.ld: Makefile
+ @mkdir -p $(dir $@)
+ @echo "Making Linker Script ($@)"
+ $(LD) -g --verbose | awk '{ if( substr($$1,0,5) == "====="){ bPrint = !bPrint; } else { if(bPrint){ print $$0;} } }' | sed 's/\b0x[048][0-9]*\b/$(LINKADDR)/g' | sed 's/CONSTANT (MAXPAGESIZE)/0x1000/g' > $@
+
+-include $(DEPFILES)