-COBJ = main.o lib.o loadlib.o elf.o pe.o
-AOBJ = core.ao vfs.ao mm.ao
-BIN = ../ld-acess.so
-
-CFLAGS = -Wall -fno-builtin -fno-leading-underscore -fno-stack-protector
-ASFLAGS = -felf
-LDFLAGS = -T link.ld -Map map.txt -Bstatic
-
-
-.PHONY: all clean install
-
-all: $(BIN)
-
-clean:
- $(RM) $(BIN) $(AOBJ) $(COBJ) ld-acess.dmp ld-acess.dsm link.txt map.txt
+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
+EXTRACLEAN = $(_OBJPREFIX)_stublib.o
+INCFILES := sys/sys.h
+
+CFLAGS = -g -Wall -fno-builtin -fno-stack-protector -fPIC
+# -fno-leading-underscore
+CFLAGS += $(CPPFLAGS) -Werror
+LDFLAGS = -g -T arch/$(ARCHDIR).ld -Map map.txt --export-dynamic
+
+ifeq ($(ARCH),native)
+XBIN := $(addprefix $(OUTPUTDIR)Libs/,$(EXTRABIN))
+$(XBIN): obj-$(ARCH)/_stublib.o
+all: $(XBIN)
+LDFLAGS :=
+BIN :=
+OBJ :=
+endif
+
+include ../Makefile.tpl
+
+# create libld-acess.so
+$(_XBIN): $(_OBJPREFIX)_stublib.o
+ @echo [LD] -o -shared libld-acess.so
+ $(LD) -shared -o $@ $< $(LDFLAGS)
+# @$(LD) $(LDFLAGS) -o $@ $(OBJ)
+
+
+# Override .ao to look in the object prefix for the source
+$(_OBJPREFIX)arch/$(ARCHDIR).ao_: $(_OBJPREFIX)arch/$(ARCHDIR).$(ASSUFFIX)
+ @echo [AS] -o $@
+ @mkdir -p $(dir $@)
+ @$(AS) $(ASFLAGS) -o $@ $<