all: reader writer os libOS.so

reader: reader.o libOS.so
	gcc -o reader reader.o -L. -R. -lOS

reader.o: reader.c
	gcc -c -g -Wall reader.c

writer: writer.o libOS.so
	gcc -o writer writer.o -L. -R. -lOS

writer.o: writer.c
	gcc -c -g -Wall writer.c

libOS.so: LibOS.o Domain.o
	gcc -o libOS.so LibOS.o Domain.o -shared -lnsl -lsocket

LibOS.o: LibOS.c
	gcc -c -g -Wall LibOS.c -fpic

Domain.o: Domain.c
	gcc -c Domain.c -D_REENTRANT -fpic 

os: os.o Domain.o pipe.o hash_table.o
	gcc -o os os.o Domain.o pipe.o hash_table.o -lnsl -lsocket -lpthread

os.o: os.c
	gcc -c os.c -D_REENTRANT -g -Wall

pipe.o: pipe.c hash_table.o
	gcc -c -g -Wall pipe.c -D_REENTRANT

hash_table.o: hash_table.c 
	gcc -c -g -Wall hash_table.c -D_REENTRANT

clean:
	rm -f *.o
	rm -f reader writer os libOS.so


