OPEN2X = /opt/openwiz/toolchain/arm-openwiz-linux-gnu
HOST = arm-openwiz-linux-gnu

CC = $(OPEN2X)/bin/$(HOST)-gcc
CXX = $(OPEN2X)/bin/$(HOST)-g++
AR = $(OPEN2X)/bin/$(HOST)-ar
RANLIB = $(OPEN2X)/bin/$(HOST)-ranlib

all: castor.o libcastor.so.0.1 png.o libcastor_extra.so.0.1 install

castor.o:
	$(CC) -fPIC -c castor.c
libcastor.so.0.1:
	$(CC) -shared -W1,-soname,libcastor.so.0 -o libcastor.so.0.1 castor.o
	$(AR) rc libcastor.a castor.o
	$(RANLIB) libcastor.a

png.o:
	$(CC) -fPIC -c -I$(OPEN2X)/include png.c
libcastor_extra.so.0.1:
	$(CC) -shared -W1,-soname,libcastor_extra.so.0 -o libcastor_extra.so.0.1 png.o
	$(AR) rc libcastor_extra.a png.o
	$(RANLIB) libcastor_extra.a

install:
	mkdir -p $(OPEN2X)/lib
	mkdir -p $(OPEN2X)/include
	cp -f libcastor.so.0.1 $(OPEN2X)/lib/libcastor.so.0.1
	cp -f libcastor.a $(OPEN2X)/lib/libcastor.a
	cp -f castor.h $(OPEN2X)/include/castor.h
	cp -f polluxregs.h $(OPEN2X)/include/polluxregs.h
	cp -f castor_extra.h $(OPEN2X)/include/castor_extra.h
	cp -f libcastor_extra.so.0.1 $(OPEN2X)/lib/libcastor_extra.so.0.1
	cp -f libcastor_extra.a $(OPEN2X)/lib/libcastor_extra.a

	cp -f libcastor.so.0.1 libcastor.so

clean:
	rm -f *.o
	rm -rf lib*

testapp:
	$(CXX) main.cpp -L$(OPEN2X)/lib -I$(OPEN2X)/include -lcastor -lcastor_extra -lpng -lz -o lctest

