-# Acess Dynamic Linker (ELF) Version 1\r
-# LD-ACESS.SO\r
-# Makefile\r
-\r
--include ../Makefile.cfg\r
-\r
-COBJ = main.o lib.o loadlib.o elf.o pe.o\r
-AOBJ = helpers.ao\r
-BIN = ../ld-acess.so\r
-\r
-CFLAGS = -Wall -fno-builtin -fleading-underscore -fno-stack-protector\r
-ASFLAGS = -felf\r
-LDFLAGS = -T link.ld -Map map.txt -Bstatic\r
-\r
-\r
-.PHONY: all clean\r
-\r
-all: $(BIN)\r
-\r
-clean:\r
- $(RM) $(BIN) $(AOBJ) $(COBJ) ld-acess.dmp ld-acess.dsm link.txt map.txt\r
-\r
-$(BIN): $(AOBJ) $(COBJ)\r
- @echo --- $(LD) -shared -o $@\r
- @$(LD) $(LDFLAGS) -o $(BIN) $(AOBJ) $(COBJ) > link.txt\r
- $(OBJDUMP) -x $(BIN) > ld-acess.dmp\r
- $(OBJDUMP) -d $(BIN) > ld-acess.dsm\r
- $(xCP) $(BIN) $(DISTROOT)/Libs/
-\r
-$(COBJ): %.o: %.c\r
- @echo $(CC) -o $@\r
- @$(CC) $(CFLAGS) -o $@ -c $<\r
-\r
-$(AOBJ): %.ao: %.asm\r
- @echo $(AS) -o $@\r
- @$(AS) $(ASFLAGS) -o $@ $<\r
-
+# Acess Dynamic Linker (ELF) Version 1
+# LD-ACESS.SO
+# Makefile
+
+-include ../Makefile.cfg
+
+OBJ := main.o lib.o loadlib.o export.o elf.o pe.o
+OBJ += arch/$(ARCHDIR).ao
+BIN = ld-acess.so
+EXTRABIN := libld-acess.so
+
+CFLAGS = -Wall -fno-builtin -fno-leading-underscore -fno-stack-protector -fPIC
+CFLAGS += $(CPPFLAGS)
+LDFLAGS = -T arch/$(ARCHDIR).ld -Map map.txt --export-dynamic
+
+include ../Makefile.tpl
+
+# create libld-acess.so
+$(_XBIN): $(_BIN)
+ @echo [LD] -o -shared libld-acess.so
+ @$(LD) $(LDFLAGS) -shared -o $@ $(OBJ)
+
+# Override .ao to look in the object prefix for the source
+%.ao: %.asm
+ @echo [AS] -o $@
+ @mkdir -p $(dir $@)
+ @$(AS) $(ASFLAGS) -o $@ $<
+
+.PRECIOUS: $(OBJ:%.ao=%.asm)
+
+# Preprocessing objects if needed
+$(_OBJPREFIX)%: %.h
+ @echo [CPP] -o $@
+ @mkdir -p $(dir $@)
+ @$(CPP) $(CPPFLAGS) -P -D_ASM_ $< -o $@
+