CC = gcc
TARGET = elfos_app
CFLAG = -W -Wall -O2 -g
all : $(TARGET)

$(TARGET) : elfos.o mm.o scheduler.o thread.o setup.o port.o emul.o movement.o interrupt.o iosubsys.o thread_op.o pipe.o lnodes.o list.o queue.o semaphore.o
	gcc -g -e main elfos.o mm.o scheduler.o thread.o setup.o port.o emul.o movement.o interrupt.o iosubsys.o thread_op.o pipe.o lnodes.o list.o queue.o semaphore.o -o $(TARGET) -lpthread 

#$(TARGET) : elfos.o mm.o scheduler.o thread.o setup.o port.o emul.o movement.o interrupt.o iosubsys.o thread_op.o pipe.o
#	gcc -e main elfos.o mm.o scheduler.o thread.o setup.o port.o emul.o movement.o interrupt.o iosubsys.o thread_op.o pipe.o -o $(TARGET) -lpthread 

elfos.o : elfos/elfos.c
	$(CC) $(CFLAG) -c elfos/elfos.c -o elfos.o 
mm.o : mm/mm.c
	$(CC) $(CFLAG) -c mm/mm.c -o mm.o 
scheduler.o: scheduler/scheduler.c
	$(CC) $(CFLAG) -c scheduler/scheduler.c -o scheduler.o 
thread.o: thread/thread.c
	$(CC) $(CFLAG) -c thread/thread.c -o thread.o 
thread_op.o: thread/thread_op.c
	$(CC) $(CFLAG) -c thread/thread_op.c -o thread_op.o
setup.o: init/setup.c
	$(CC) $(CFLAG) -c init/setup.c -o setup.o 
port.o: arch/port.c
	$(CC) $(CFLAG) -c arch/port.c -o port.o 
emul.o: emul/emul.c
	$(CC) $(CFLAG) -c emul/emul.c -o emul.o 
movement.o: movement/movement.c
	$(CC) $(CFLAG) -c movement/movement.c -o movement.o 
interrupt.o: interrupt/interrupt.c
	$(CC) $(CFLAG) -c interrupt/interrupt.c -o interrupt.o 
iosubsys.o: io/iosubsys.c
	$(CC) $(CFLAG) -c io/iosubsys.c -o iosubsys.o 
pipe.o: object/pipe.c
	$(CC) $(CFLAG) -c object/pipe.c -o pipe.o 
lnodes.o: list/lnodes.c
	$(CC) $(CFLAG) -c list/lnodes.c -o lnodes.o
list.o: list/list.o
	$(CC) $(CFLAG) -c list/list.c -o list.o
queue.o: list/queue.o
	$(CC) $(CFLAG) -c list/queue.c -o queue.o
semaphore.o: list/semaphore.c
	$(CC) $(CFLAG) -c list/semaphore.c -o semaphore.o

clean:
	rm *.o
