#SPELL_OBJECT	= fuzzymatch.o
OBJECTS		= $(SPELL_OBJECT) stuff.o core.o respond.o matchers.o
CGI_OBJECTS	= cgi_main.o
PLAIN_OBJECTS	= main.o
WX_OBJECTS	= ainifile.o wxaine.o view.o doc.o
TEST_OBJECTS	= tester.o
CC		= gcc
WXCC		= g++
#SPELLCHECKER	= -DWITH_SPELL_CHECKER
CXXFLAGS	= $(SPELLCHECKER) -Wall -W -mcpu=i686 -funroll-loops -ffast-math -O3 -fwritable-strings
CFLAGS		= $(CXXFLAGS) -fomit-frame-pointer
LDFLAGS		= -s

# Additional optimization for x86 CPU
# Pick up your CPU: i386,i486,i586,i686
# (If you use gcc >= 3.0 you can also use "k6", "pentium", "athlon", etc.)
OPT		= -march=i586


# graphical version, to compile, needs wxWindows libraries
# (you can get free copy from http://www.wxwindows.org)
# at least version 2.4.0

help :	
	@echo "make what?"
	@echo "make all    - all executables"
	@echo "make wx     - GUI version"
	@echo "make plain  - single user and command line version of Aine"
	@echo "make cgi    - cgi-version"
	@echo "make tester - tester (for Aine developers, to stress-test Aine)"
	@echo "make clean  - deletes *.o"

clean :
	- rm -f *.o ../aine.cgi ../aine ../wxaine ../tester


all : cgi plain wx

cgi : $(OBJECTS) $(CGI_OBJECTS)
	$(CC) $(CFLAGS) $(OPT) $(LDFLAGS) $(OBJECTS) $(CGI_OBJECTS) -static  -o ../aine.cgi

plain : $(OBJECTS) $(PLAIN_OBJECTS)
	$(CC) $(CFLAGS) $(OPT) $(LDFLAGS) $(OBJECTS) $(PLAIN_OBJECTS) -o ../aine

tester : $(OBJECTS) $(TEST_OBJECTS)
	$(CC) $(CFLAGS) $(OPT) $(LDFLAGS) $(OBJECTS) $(TEST_OBJECTS) -o ../tester

wx : $(OBJECTS) $(WX_OBJECTS)
	$(CC) $(CXXFLAGS) $(OPT) $(LDFAGS) $(OBJECTS) $(WX_OBJECTS)  `wx-config --libs` -o ../wxaine


main.o : main.c
	$(CC) $(CFLAGS) $(OPT) -c main.c

cgi_main.o : cgi_main.c
	$(CC) $(CFLAGS) $(OPT) -c cgi_main.c

respond.o : respond.c
	$(CC) $(CFLAGS) $(OPT) -c respond.c

matchers.o : matchers.c
	$(CC) $(CFLAGS) $(OPT) -c matchers.c

core.o : core.c
	$(CC) $(CFLAGS) $(OPT) -c core.c

stuff.o : stuff.c
	$(CC) $(CFLAGS) $(OPT) -c stuff.c

fuzzymatch.o : fuzzymatch.c
	$(CC) $(CFLAGS) $(OPT) -c fuzzymatch.c

tester.o : tester.c
	$(CC) $(CFLAGS) $(OPT) -c tester.c

ainifile.o : ainifile.cpp
	$(WXCC) $(CXXFLAGS) $(OPT) `wx-config --cxxflags` -c ainifile.cpp

wxaine.o : wxaine.cpp
	$(WXCC) $(CXXFLAGS) $(OPT) `wx-config --cxxflags` -c wxaine.cpp

view.o : view.cpp
	$(WXCC) $(CXXFLAGS) $(OPT) `wx-config --cxxflags` -c view.cpp

doc.o : doc.cpp
	$(WXCC) $(CXXFLAGS) $(OPT) `wx-config --cxxflags` -c doc.cpp


# not used anymore
#megahal.o : megahal.c
#	gcc -fPIC $(CFLAGS) $(OPT) -c megahal.c
