ROOTDIR = ../../../..

include $(ROOTDIR)/src/makefile.inc
INCLUDES = -I../Include \
	-I../../Include \
	-I../../../../include/Martini \
	-I../../../../../../org.eclipse.hyades.probekit/src-native/BCI/Common \
	-I../../../../../../org.eclipse.hyades.probekit/src-native/BCI/BCIEng \
	-I../../../../../../org.eclipse.hyades.probekit/src-native/BCI/BCIEng/BCIEngJ \
	-I../../../../../../org.eclipse.hyades.probekit/src-native/BCI/JClass \
    -I../../../../../../org.apache.harmony_vmcore_verifier/src/include \
    -I../../../../../../org.apache.harmony_vmcore_verifier/src/vmcore/include \
    -I../../../../../../org.apache.harmony_vmcore_verifier/src/vmcore/src/verifier-3363/x_verifier

ifdef LINUX
	LD_RPATH =  -Wl,-rpath,\$$ORIGIN 
else
ifdef SOLARIS
	LD_RPATH = -R \$$ORIGIN
else
ifdef SOLARISX86
	LD_RPATH = -R \$$ORIGIN
endif
endif
endif


OBJS = $(OBJDIR)/BCIToMIEInstructionMapper.o \
	$(OBJDIR)/BciUtils.o \
	$(OBJDIR)/class_interface.o \
	$(OBJDIR)/Command.o \
	$(OBJDIR)/ExtRefJ_Interface.o \
	$(OBJDIR)/ExtRefJ_StatMethod.o \
	$(OBJDIR)/FlowGraph.o \
	$(OBJDIR)/FlowGraphNode.o \
	$(OBJDIR)/InsSet.o \
	$(OBJDIR)/JavaClass.o \
	$(OBJDIR)/JavaField.o \
	$(OBJDIR)/JavaFields.o \
	$(OBJDIR)/JavaHelpers.o \
	$(OBJDIR)/JavaMethod.o \
	$(OBJDIR)/JavaMethods.o \
	$(OBJDIR)/JClassBuilder.o \
	$(OBJDIR)/JClassFile.o \
	$(OBJDIR)/JFileStream.o \
	$(OBJDIR)/JIE.o \
	$(OBJDIR)/JIEInstructionCodec.o \
	$(OBJDIR)/JIEUtils.o \
	$(OBJDIR)/JMemStream.o \
	$(OBJDIR)/JStream.o \
	$(OBJDIR)/JVMInsSet.o \
	$(OBJDIR)/MethodInstrumentor.o \
	$(OBJDIR)/MIEInstruction.o \
	$(OBJDIR)/MIEInstructionFactory.o \
	$(OBJDIR)/MIEProtectedBlock.o \
	$(OBJDIR)/Module.o \
	$(OBJDIR)/ModuleJ.o \
	$(OBJDIR)/WideStringUtils.o \

DEFINES += -DSTATIC_BUILD -DPLATFORM_POSIX

ifdef SOLARISX86
	VERIFIER_LIB=solaris
			
	ifdef SIXTYFOURBIT
		DEFINES += -DEM64T_ARCH -D_EM64T_		
		EXTRA_VERIFIER_PATH=-L../../../../../../org.apache.harmony_vmcore_verifier/lib/solaris/release/EM64T
	else
		EXTRA_VERIFIER_PATH=-L../../../../../../org.apache.harmony_vmcore_verifier/lib/solaris/release/IA32/
	endif
endif


ifdef SOLARIS

	DEFINES += -DSPARC_ARCH 
	VERIFIER_LIB=solaris
		
	ifdef SIXTYFOURBIT
		EXTRA_VERIFIER_PATH=-L../../../../../../org.apache.harmony_vmcore_verifier/lib/linux/release/SPARC-V9/
	else
		EXTRA_VERIFIER_PATH=-L../../../../../../org.apache.harmony_vmcore_verifier/lib/linux/release/SPARC/
	endif
endif

ifdef AIX
	DEFINES += -DAIX 

	ifdef RELEASE
	        VERLIB = ../../../../../../org.apache.harmony_vmcore_verifier/lib/linux/release/$(PLATFORM_AND_MODE_NAME)
	else
	        VERLIB = ../../../../../../org.apache.harmony_vmcore_verifier/lib/linux/debug/$(PLATFORM_AND_MODE_NAME)
	endif

endif

ifdef LINUX
	DEFINES += -DLINUX
	VERIFIER_LIB=linux
	EXTRA_VERIFIER_PATH=-L../../../../../../org.apache.harmony_vmcore_verifier/lib/linux/$(PLATFORM_AND_MODE_NAME) 
endif

LIB = libJIE.so

VER_FILE = JIE.ver

all: release

release: $(OBJDIR) $(OUTDIR)/$(LIB)

$(OBJDIR): 
	mkdir -p $(OBJDIR) ; mkdir -p $(OUTDIR)

clean: 
	rm -rf $(OBJS) $(OUTDIR)/$(LIB)
	rm -f libJIE.x

include ./Makefile.dep

$(OUTDIR)/$(LIB): $(OBJS)
ifdef AIX
	$(CPP_LINK) $(OBJS) -o $@ -L../../../../bin/linux/$(PLATFORM_AND_MODE_NAME) -L$(OUTDIR) \
	-L ../../../../../../org.apache.harmony_vmcore_verifier/lib/linux/$(PLATFORM_AND_MODE_NAME) \
	-L $(VERLIB) \
	-lMartiniOSA -lverifier $(OUTDIR)/LibraryLoader.a -lpthread -ldl $(STD_LIBS) $(VER_SCR)  
else
ifdef MVS
		$(CPP_LINK) $(OBJS) -o $@ -L../../../../bin/linux/$(PLATFORM_AND_MODE_NAME) -L$(OUTDIR) \
		-L ../../../../../../org.apache.harmony_vmcore_verifier/lib/linux/$(PLATFORM_AND_MODE_NAME) \
		../OSA/zOS/libMartiniOSA.x -lverifier $(OUTDIR)/LibraryLoader.a $(STD_LIBS) $(VER_SCR)
else
		$(CPP_LINK) $(LD_RPATH) $(OBJS) -o $@ -L../../../../bin/$(VERIFIER_LIB)/$(PLATFORM_AND_MODE_NAME) -L$(OUTDIR) \
		$(EXTRA_VERIFIER_PATH) \
		-lMartiniOSA -lverifier $(OUTDIR)/LibraryLoader.a -lpthread -ldl $(STD_LIBS) $(VER_SCR)
endif
endif

