
CC=icc
CFLAGS= -O1 -tpp6 -march pentiumiii -axK  -Ob2 -ip -ipo -ipo_obj -Zp8 -I/opt/intel/compiler50/ia32/include/

altCC=gcc
altCFLAGS= -O2 -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -falign-functions=8


OBJ=InventorWriter.o Piece.o Solver.o Puzzle.o PuzzlePieces.o


all: puzzle solver createSolver fastSolver

puzzle: $(OBJ) main.o
	$(CC) $(OBJ) main.o -o puzzle

piecePositions.h: puzzle
	./puzzle code > piecePositions.h

solver: piecePositions.h solver.o
	$(CC) solver.o  -o solver

createSolver: piecePositions.h createSolver.o
	$(CC) createSolver.o  -o createSolver

fastSolver.c: createSolver
	./createSolver > fastSolver.c

fastSolver: createSolver fastSolver.c
	$(altCC) $(altCFLAGS) fastSolver.c  -o fastSolver

clean:
	rm -f *.o *~ *.iv *.il core*


distclean:
	rm -f *.o *~ *.iv *.il puzzle solver fastSolver createSolver core*


mrproper:
	rm -f *.o *~ *.iv *.il puzzle piecePositions.h createSolver solver fastSolver.c fastSolver  core*


.cpp.o:
	$(CC) -c $(CFLAGS) $*.cpp

.c.o:
	$(CC) -c  $(CFLAGS) $*.c


InventorWriter.o: InventorWriter.h Makefile
PuzzlePieces.o: Puzzle.h PuzzlePieces.h Makefile
Piece.o: Piece.h Puzzle.h InventorWriter.h Makefile
Solver.o: Solver.h Piece.h Puzzle.h PuzzlePieces.h Makefile
Puzzle.o: Puzzle.h PuzzlePieces.h Makefile
main.o: Puzzle.h Piece.h Solver.h InventorWriter.h Makefile
solver.o: Piece.h piecePositions.h

