TARGETS	= $(OBJDIR)amd64$(SOEXT) $(OBJDIR)arm$(SOEXT) $(OBJDIR)armeb$(SOEXT) $(OBJDIR)armel$(SOEXT) $(OBJDIR)dalvik$(SOEXT) $(OBJDIR)eth$(SOEXT) $(OBJDIR)i386$(SOEXT) $(OBJDIR)i386_real$(SOEXT) $(OBJDIR)i486$(SOEXT) $(OBJDIR)i586$(SOEXT) $(OBJDIR)i686$(SOEXT) $(OBJDIR)java$(SOEXT) $(OBJDIR)mips$(SOEXT) $(OBJDIR)mipseb$(SOEXT) $(OBJDIR)mipsel$(SOEXT) $(OBJDIR)sparc$(SOEXT) $(OBJDIR)sparc64$(SOEXT) $(OBJDIR)template$(SOEXT) $(OBJDIR)yasep$(SOEXT) $(OBJDIR)yasep16$(SOEXT) $(OBJDIR)yasep32$(SOEXT)
OBJDIR	=
PREFIX	= /usr/local
DESTDIR	=
LIBDIR	= $(PREFIX)/lib
CC	= cc
CPPFLAGSF= -I../../include
CPPFLAGS=
CFLAGSF	= `pkg-config --cflags libSystem` -fPIC
CFLAGS	= -W -Wall -g -O2 -D_FORTIFY_SOURCE=2 -fstack-protector
LDFLAGSF= `pkg-config --libs libSystem`
EXEEXT	=
AR	= ar
ARFLAGS	= -rc
RANLIB	= ranlib
CCSHARED= $(CC) -shared
SOEXT	= .so
RM	= rm -f
LN	= ln -f
MKDIR	= mkdir -m 0755 -p
INSTALL	= install


all: $(TARGETS)

amd64_OBJS = $(OBJDIR)amd64.o
amd64_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
amd64_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)

$(OBJDIR)amd64$(SOEXT): $(amd64_OBJS)
	$(CCSHARED) -o $(OBJDIR)amd64$(SOEXT) $(amd64_OBJS) $(amd64_LDFLAGS)

arm_OBJS = $(OBJDIR)arm.o
arm_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
arm_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)

$(OBJDIR)arm$(SOEXT): $(arm_OBJS)
	$(CCSHARED) -o $(OBJDIR)arm$(SOEXT) $(arm_OBJS) $(arm_LDFLAGS)

armeb_OBJS = $(OBJDIR)armeb.o
armeb_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
armeb_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)

$(OBJDIR)armeb$(SOEXT): $(armeb_OBJS)
	$(CCSHARED) -o $(OBJDIR)armeb$(SOEXT) $(armeb_OBJS) $(armeb_LDFLAGS)

armel_OBJS = $(OBJDIR)armel.o
armel_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
armel_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)

$(OBJDIR)armel$(SOEXT): $(armel_OBJS)
	$(CCSHARED) -o $(OBJDIR)armel$(SOEXT) $(armel_OBJS) $(armel_LDFLAGS)

dalvik_OBJS = $(OBJDIR)dalvik.o
dalvik_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
dalvik_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)

$(OBJDIR)dalvik$(SOEXT): $(dalvik_OBJS)
	$(CCSHARED) -o $(OBJDIR)dalvik$(SOEXT) $(dalvik_OBJS) $(dalvik_LDFLAGS)

eth_OBJS = $(OBJDIR)eth.o
eth_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
eth_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)

$(OBJDIR)eth$(SOEXT): $(eth_OBJS)
	$(CCSHARED) -o $(OBJDIR)eth$(SOEXT) $(eth_OBJS) $(eth_LDFLAGS)

i386_OBJS = $(OBJDIR)i386.o
i386_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
i386_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)

$(OBJDIR)i386$(SOEXT): $(i386_OBJS)
	$(CCSHARED) -o $(OBJDIR)i386$(SOEXT) $(i386_OBJS) $(i386_LDFLAGS)

i386_real_OBJS = $(OBJDIR)i386_real.o
i386_real_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
i386_real_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)

$(OBJDIR)i386_real$(SOEXT): $(i386_real_OBJS)
	$(CCSHARED) -o $(OBJDIR)i386_real$(SOEXT) $(i386_real_OBJS) $(i386_real_LDFLAGS)

i486_OBJS = $(OBJDIR)i486.o
i486_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
i486_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)

$(OBJDIR)i486$(SOEXT): $(i486_OBJS)
	$(CCSHARED) -o $(OBJDIR)i486$(SOEXT) $(i486_OBJS) $(i486_LDFLAGS)

i586_OBJS = $(OBJDIR)i586.o
i586_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
i586_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)

$(OBJDIR)i586$(SOEXT): $(i586_OBJS)
	$(CCSHARED) -o $(OBJDIR)i586$(SOEXT) $(i586_OBJS) $(i586_LDFLAGS)

i686_OBJS = $(OBJDIR)i686.o
i686_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
i686_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)

$(OBJDIR)i686$(SOEXT): $(i686_OBJS)
	$(CCSHARED) -o $(OBJDIR)i686$(SOEXT) $(i686_OBJS) $(i686_LDFLAGS)

java_OBJS = $(OBJDIR)java.o
java_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
java_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)

$(OBJDIR)java$(SOEXT): $(java_OBJS)
	$(CCSHARED) -o $(OBJDIR)java$(SOEXT) $(java_OBJS) $(java_LDFLAGS)

mips_OBJS = $(OBJDIR)mips.o
mips_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
mips_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)

$(OBJDIR)mips$(SOEXT): $(mips_OBJS)
	$(CCSHARED) -o $(OBJDIR)mips$(SOEXT) $(mips_OBJS) $(mips_LDFLAGS)

mipseb_OBJS = $(OBJDIR)mipseb.o
mipseb_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
mipseb_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)

$(OBJDIR)mipseb$(SOEXT): $(mipseb_OBJS)
	$(CCSHARED) -o $(OBJDIR)mipseb$(SOEXT) $(mipseb_OBJS) $(mipseb_LDFLAGS)

mipsel_OBJS = $(OBJDIR)mipsel.o
mipsel_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
mipsel_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)

$(OBJDIR)mipsel$(SOEXT): $(mipsel_OBJS)
	$(CCSHARED) -o $(OBJDIR)mipsel$(SOEXT) $(mipsel_OBJS) $(mipsel_LDFLAGS)

sparc_OBJS = $(OBJDIR)sparc.o
sparc_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
sparc_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)

$(OBJDIR)sparc$(SOEXT): $(sparc_OBJS)
	$(CCSHARED) -o $(OBJDIR)sparc$(SOEXT) $(sparc_OBJS) $(sparc_LDFLAGS)

sparc64_OBJS = $(OBJDIR)sparc64.o
sparc64_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
sparc64_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)

$(OBJDIR)sparc64$(SOEXT): $(sparc64_OBJS)
	$(CCSHARED) -o $(OBJDIR)sparc64$(SOEXT) $(sparc64_OBJS) $(sparc64_LDFLAGS)

template_OBJS = $(OBJDIR)template.o
template_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
template_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)

$(OBJDIR)template$(SOEXT): $(template_OBJS)
	$(CCSHARED) -o $(OBJDIR)template$(SOEXT) $(template_OBJS) $(template_LDFLAGS)

yasep_OBJS = $(OBJDIR)yasep.o
yasep_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
yasep_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)

$(OBJDIR)yasep$(SOEXT): $(yasep_OBJS)
	$(CCSHARED) -o $(OBJDIR)yasep$(SOEXT) $(yasep_OBJS) $(yasep_LDFLAGS)

yasep16_OBJS = $(OBJDIR)yasep16.o
yasep16_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
yasep16_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)

$(OBJDIR)yasep16$(SOEXT): $(yasep16_OBJS)
	$(CCSHARED) -o $(OBJDIR)yasep16$(SOEXT) $(yasep16_OBJS) $(yasep16_LDFLAGS)

yasep32_OBJS = $(OBJDIR)yasep32.o
yasep32_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
yasep32_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)

$(OBJDIR)yasep32$(SOEXT): $(yasep32_OBJS)
	$(CCSHARED) -o $(OBJDIR)yasep32$(SOEXT) $(yasep32_OBJS) $(yasep32_LDFLAGS)

$(OBJDIR)amd64.o: amd64.c amd64.ins amd64.pre amd64.reg common.ins i386.h i386.ins i386.pre i386.reg i486.ins i686.ins i686.reg null.ins null.pre
	$(CC) $(amd64_CFLAGS) -o $(OBJDIR)amd64.o -c amd64.c

$(OBJDIR)arm.o: arm.c arm.h arm.ins arm.reg common.ins null.ins
	$(CC) $(arm_CFLAGS) -o $(OBJDIR)arm.o -c arm.c

$(OBJDIR)armeb.o: armeb.c $(OBJDIR)arm.o
	$(CC) $(armeb_CFLAGS) -o $(OBJDIR)armeb.o -c armeb.c

$(OBJDIR)armel.o: armel.c $(OBJDIR)arm.o
	$(CC) $(armel_CFLAGS) -o $(OBJDIR)armel.o -c armel.c

$(OBJDIR)dalvik.o: dalvik.c common.ins dalvik.ins dalvik.reg null.ins
	$(CC) $(dalvik_CFLAGS) -o $(OBJDIR)dalvik.o -c dalvik.c

$(OBJDIR)eth.o: eth.c common.ins eth.ins null.ins
	$(CC) $(eth_CFLAGS) -o $(OBJDIR)eth.o -c eth.c

$(OBJDIR)i386.o: i386.c common.ins i386.def i386.h i386.ins i386.pre i386.pre i386.reg null.ins null.pre
	$(CC) $(i386_CFLAGS) -o $(OBJDIR)i386.o -c i386.c

$(OBJDIR)i386_real.o: i386_real.c common.ins i386.h i386.ins i386.pre i386.reg null.ins null.pre
	$(CC) $(i386_real_CFLAGS) -o $(OBJDIR)i386_real.o -c i386_real.c

$(OBJDIR)i486.o: i486.c common.ins i386.def i386.h i386.ins i386.pre i386.reg i486.ins null.ins null.pre
	$(CC) $(i486_CFLAGS) -o $(OBJDIR)i486.o -c i486.c

$(OBJDIR)i586.o: i586.c common.ins i386.def i386.h i386.ins i386.pre i386.reg i486.ins i586.ins null.ins null.pre
	$(CC) $(i586_CFLAGS) -o $(OBJDIR)i586.o -c i586.c

$(OBJDIR)i686.o: i686.c common.ins i386.def i386.h i386.ins i386.pre i386.reg i486.ins i686.ins i686.reg null.ins null.pre
	$(CC) $(i686_CFLAGS) -o $(OBJDIR)i686.o -c i686.c

$(OBJDIR)java.o: java.c common.ins null.ins
	$(CC) $(java_CFLAGS) -o $(OBJDIR)java.o -c java.c

$(OBJDIR)mips.o: mips.c common.ins mips.h mips.ins mips.reg null.ins
	$(CC) $(mips_CFLAGS) -o $(OBJDIR)mips.o -c mips.c

$(OBJDIR)mipseb.o: mipseb.c $(OBJDIR)mips.o
	$(CC) $(mipseb_CFLAGS) -o $(OBJDIR)mipseb.o -c mipseb.c

$(OBJDIR)mipsel.o: mipsel.c $(OBJDIR)mips.o
	$(CC) $(mipsel_CFLAGS) -o $(OBJDIR)mipsel.o -c mipsel.c

$(OBJDIR)sparc.o: sparc.c common.ins null.ins sparc.h sparc.ins sparc.reg
	$(CC) $(sparc_CFLAGS) -o $(OBJDIR)sparc.o -c sparc.c

$(OBJDIR)sparc64.o: sparc64.c common.ins null.ins sparc.h sparc.ins sparc.reg
	$(CC) $(sparc64_CFLAGS) -o $(OBJDIR)sparc64.o -c sparc64.c

$(OBJDIR)template.o: template.c common.ins null.ins null.pre
	$(CC) $(template_CFLAGS) -o $(OBJDIR)template.o -c template.c

$(OBJDIR)yasep.o: yasep.c common.ins null.ins yasep.h yasep.ins yasep.reg
	$(CC) $(yasep_CFLAGS) -o $(OBJDIR)yasep.o -c yasep.c

$(OBJDIR)yasep16.o: yasep16.c common.ins null.ins yasep.c yasep.h yasep.ins yasep.reg
	$(CC) $(yasep16_CFLAGS) -o $(OBJDIR)yasep16.o -c yasep16.c

$(OBJDIR)yasep32.o: yasep32.c common.ins null.ins yasep.c yasep.h yasep.ins yasep.reg
	$(CC) $(yasep32_CFLAGS) -o $(OBJDIR)yasep32.o -c yasep32.c

clean:
	$(RM) -- $(amd64_OBJS) $(arm_OBJS) $(armeb_OBJS) $(armel_OBJS) $(dalvik_OBJS) $(eth_OBJS) $(i386_OBJS) $(i386_real_OBJS) $(i486_OBJS) $(i586_OBJS) $(i686_OBJS) $(java_OBJS) $(mips_OBJS) $(mipseb_OBJS) $(mipsel_OBJS) $(sparc_OBJS) $(sparc64_OBJS) $(template_OBJS) $(yasep_OBJS) $(yasep16_OBJS) $(yasep32_OBJS)

distclean: clean
	$(RM) -- $(TARGETS)

install: all
	$(MKDIR) $(DESTDIR)$(LIBDIR)/Asm/arch
	$(INSTALL) -m 0755 $(OBJDIR)amd64$(SOEXT) $(DESTDIR)$(LIBDIR)/Asm/arch/amd64$(SOEXT)
	$(MKDIR) $(DESTDIR)$(LIBDIR)/Asm/arch
	$(INSTALL) -m 0755 $(OBJDIR)arm$(SOEXT) $(DESTDIR)$(LIBDIR)/Asm/arch/arm$(SOEXT)
	$(MKDIR) $(DESTDIR)$(LIBDIR)/Asm/arch
	$(INSTALL) -m 0755 $(OBJDIR)armeb$(SOEXT) $(DESTDIR)$(LIBDIR)/Asm/arch/armeb$(SOEXT)
	$(MKDIR) $(DESTDIR)$(LIBDIR)/Asm/arch
	$(INSTALL) -m 0755 $(OBJDIR)armel$(SOEXT) $(DESTDIR)$(LIBDIR)/Asm/arch/armel$(SOEXT)
	$(MKDIR) $(DESTDIR)$(LIBDIR)/Asm/arch
	$(INSTALL) -m 0755 $(OBJDIR)dalvik$(SOEXT) $(DESTDIR)$(LIBDIR)/Asm/arch/dalvik$(SOEXT)
	$(MKDIR) $(DESTDIR)$(LIBDIR)/Asm/arch
	$(INSTALL) -m 0755 $(OBJDIR)eth$(SOEXT) $(DESTDIR)$(LIBDIR)/Asm/arch/eth$(SOEXT)
	$(MKDIR) $(DESTDIR)$(LIBDIR)/Asm/arch
	$(INSTALL) -m 0755 $(OBJDIR)i386$(SOEXT) $(DESTDIR)$(LIBDIR)/Asm/arch/i386$(SOEXT)
	$(MKDIR) $(DESTDIR)$(LIBDIR)/Asm/arch
	$(INSTALL) -m 0755 $(OBJDIR)i386_real$(SOEXT) $(DESTDIR)$(LIBDIR)/Asm/arch/i386_real$(SOEXT)
	$(MKDIR) $(DESTDIR)$(LIBDIR)/Asm/arch
	$(INSTALL) -m 0755 $(OBJDIR)i486$(SOEXT) $(DESTDIR)$(LIBDIR)/Asm/arch/i486$(SOEXT)
	$(MKDIR) $(DESTDIR)$(LIBDIR)/Asm/arch
	$(INSTALL) -m 0755 $(OBJDIR)i586$(SOEXT) $(DESTDIR)$(LIBDIR)/Asm/arch/i586$(SOEXT)
	$(MKDIR) $(DESTDIR)$(LIBDIR)/Asm/arch
	$(INSTALL) -m 0755 $(OBJDIR)i686$(SOEXT) $(DESTDIR)$(LIBDIR)/Asm/arch/i686$(SOEXT)
	$(MKDIR) $(DESTDIR)$(LIBDIR)/Asm/arch
	$(INSTALL) -m 0755 $(OBJDIR)java$(SOEXT) $(DESTDIR)$(LIBDIR)/Asm/arch/java$(SOEXT)
	$(MKDIR) $(DESTDIR)$(LIBDIR)/Asm/arch
	$(INSTALL) -m 0755 $(OBJDIR)mips$(SOEXT) $(DESTDIR)$(LIBDIR)/Asm/arch/mips$(SOEXT)
	$(MKDIR) $(DESTDIR)$(LIBDIR)/Asm/arch
	$(INSTALL) -m 0755 $(OBJDIR)mipseb$(SOEXT) $(DESTDIR)$(LIBDIR)/Asm/arch/mipseb$(SOEXT)
	$(MKDIR) $(DESTDIR)$(LIBDIR)/Asm/arch
	$(INSTALL) -m 0755 $(OBJDIR)mipsel$(SOEXT) $(DESTDIR)$(LIBDIR)/Asm/arch/mipsel$(SOEXT)
	$(MKDIR) $(DESTDIR)$(LIBDIR)/Asm/arch
	$(INSTALL) -m 0755 $(OBJDIR)sparc$(SOEXT) $(DESTDIR)$(LIBDIR)/Asm/arch/sparc$(SOEXT)
	$(MKDIR) $(DESTDIR)$(LIBDIR)/Asm/arch
	$(INSTALL) -m 0755 $(OBJDIR)sparc64$(SOEXT) $(DESTDIR)$(LIBDIR)/Asm/arch/sparc64$(SOEXT)
	$(MKDIR) $(DESTDIR)$(LIBDIR)/Asm/arch
	$(INSTALL) -m 0755 $(OBJDIR)yasep$(SOEXT) $(DESTDIR)$(LIBDIR)/Asm/arch/yasep$(SOEXT)
	$(MKDIR) $(DESTDIR)$(LIBDIR)/Asm/arch
	$(INSTALL) -m 0755 $(OBJDIR)yasep16$(SOEXT) $(DESTDIR)$(LIBDIR)/Asm/arch/yasep16$(SOEXT)
	$(MKDIR) $(DESTDIR)$(LIBDIR)/Asm/arch
	$(INSTALL) -m 0755 $(OBJDIR)yasep32$(SOEXT) $(DESTDIR)$(LIBDIR)/Asm/arch/yasep32$(SOEXT)

uninstall:
	$(RM) -- $(DESTDIR)$(LIBDIR)/Asm/arch/amd64$(SOEXT)
	$(RM) -- $(DESTDIR)$(LIBDIR)/Asm/arch/arm$(SOEXT)
	$(RM) -- $(DESTDIR)$(LIBDIR)/Asm/arch/armeb$(SOEXT)
	$(RM) -- $(DESTDIR)$(LIBDIR)/Asm/arch/armel$(SOEXT)
	$(RM) -- $(DESTDIR)$(LIBDIR)/Asm/arch/dalvik$(SOEXT)
	$(RM) -- $(DESTDIR)$(LIBDIR)/Asm/arch/eth$(SOEXT)
	$(RM) -- $(DESTDIR)$(LIBDIR)/Asm/arch/i386$(SOEXT)
	$(RM) -- $(DESTDIR)$(LIBDIR)/Asm/arch/i386_real$(SOEXT)
	$(RM) -- $(DESTDIR)$(LIBDIR)/Asm/arch/i486$(SOEXT)
	$(RM) -- $(DESTDIR)$(LIBDIR)/Asm/arch/i586$(SOEXT)
	$(RM) -- $(DESTDIR)$(LIBDIR)/Asm/arch/i686$(SOEXT)
	$(RM) -- $(DESTDIR)$(LIBDIR)/Asm/arch/java$(SOEXT)
	$(RM) -- $(DESTDIR)$(LIBDIR)/Asm/arch/mips$(SOEXT)
	$(RM) -- $(DESTDIR)$(LIBDIR)/Asm/arch/mipseb$(SOEXT)
	$(RM) -- $(DESTDIR)$(LIBDIR)/Asm/arch/mipsel$(SOEXT)
	$(RM) -- $(DESTDIR)$(LIBDIR)/Asm/arch/sparc$(SOEXT)
	$(RM) -- $(DESTDIR)$(LIBDIR)/Asm/arch/sparc64$(SOEXT)
	$(RM) -- $(DESTDIR)$(LIBDIR)/Asm/arch/yasep$(SOEXT)
	$(RM) -- $(DESTDIR)$(LIBDIR)/Asm/arch/yasep16$(SOEXT)
	$(RM) -- $(DESTDIR)$(LIBDIR)/Asm/arch/yasep32$(SOEXT)

.PHONY: all clean distclean install uninstall
