EYESIMLIBS = /user/res/uwarobot/eyesim5-libs

LIBPATH = -L$(QTDIR)/lib -L$(EYESIMLIBS)/lib -L/usr/X11R6/lib
CXXFLAGS += -I$(QTDIR)/include -I$(EYESIMLIBS)/include -I$(EYESIMLIBS)/include -I/usr/local/include
DEBUGFLAGS = -DDEBUG -g -O -fno-inline -fno-default-inline -fno-inline-functions -ftemplate-depth-25 
OPTFLAGS = -O3
LIBS = $(LIBPATH) -lccgnu2 -lpthread -lxml2 -lSoQt -lCoin -lqt -lz
# COLLECTPATH = /usr/lib/gcc-lib/i386-linux/2.95.4/collect2
GCCLIB = /usr/lib/gcc-lib/i386-redhat-linux/2.96

# endif

UIS = $(wildcard *.ui)
UI_SRCS = $(patsubst %.ui, %.cc, $(UIS)) $(patsubst %.ui, %.moc.cc, $(UIS))
UI_HDRS = $(patsubst %.ui, %.h, $(UIS))
SRCS = $(wildcard *.cc)
OBJS = $(patsubst %.cc, %.o, $(SRCS) $(UI_SRCS))
MOCS = console.moc gui.moc

# LIBS = $(LIBPATH) -lccgnu -lpthread -lxml2 libSoQt.a libCoin.a /usr/lib/libqt-gl.a -lSM -lpng -ljpeg -lmng -lz -lGL -L/usr/X11R6/lib -lXft -lXrender -lXi -lXmu

# this is the ultimate static compilation (but it does not work)
LIBS_STATIC = $(LIBPATH) -static -lccgnu2 -lpthread -lxml2 -lSoQt -lCoin -lqt-gl -lSM -lICE -ljpeg -lpng -lmng -llcms -lz -lGL -L/usr/X11R6/lib -lXft -lfreetype -lXmu -lXext -lXi -lXrender -lX11

MOC = $(QTDIR)/bin/moc
UIC	= $(QTDIR)/bin/uic
CC = gcc # this is to prevent the problem of extern "C++"
CXX = g++ # this is to prevent the problem of extern "C++"

CXXFLAGS += -I./robios -I./libutil
CXXFLAGS += -Wall -Wno-reorder -Wno-sign-compare
CXXFLAGS += -D_REENTRANT
# CXXFLAGS += $(DEBUGFLAGS)
CXXFLAGS += $(OPTFLAGS)
CXXFLAGS += -D__FUNC__=\"__func__\"
CXXFLAGS += -fPIC
# CXXFLAGS += -include /usr/include/cc++/thread.h
CFLAGS += -I./robios -I./libutil -fPIC -g
CFLAGS += $(DEBUGFLAGS)

%.h: %.ui
	$(UIC) -o $@ $<
%.cc: %.ui %.h
	$(UIC) -o $@ -impl $(patsubst %.cc, %.h, $@) $<

%.moc: %.h
	$(MOC) -o $@ $<
%.moc.cc: %.h
	$(MOC) -o $@ $<

all: eyesim

eyesim: $(OBJS)
	$(CXX) -rdynamic $(CXXFLAGS) $^ -o $@ $(LIBS) -ldl

eyesim-static: $(OBJS)
#	$(CXX) -v -rdynamic $(CXXFLAGS) $^ -o $@ $(LIBS_STATIC) -ldl
	$(GCCLIB)/collect2 -m elf_i386 --export-dynamic -dynamic-linker /lib/ld-linux.so.2 /usr/lib/crt1.o /usr/lib/crti.o $(GCCLIB)/crtbegin.o -L/usr/X11R6/lib -L$(GCCLIB) -L$(EYESIMLIBS)/lib -L$(QTDIR)/lib -static -lccgnu2 -lpthread -lSoQt -lCoin -lqt -lSM -lICE -ljpeg -lpng -lz -lGL -lXft -lXmu -lXext -lXi -lXrender -lX11 -call_shared -ldl -lstdc++ -lm -lgcc -lc -lxml2 $(GCCLIB)/crtend.o /usr/lib/crtn.o -o $@ $(OBJS)

eyesim-xena: $(OBJS)
	$(CXX) $(CXXFLAGS) $^ -o $@ $(LIBPATH) -Wl,--export-dynamic -Wl,-Bstatic -lstdc++ -lccgnu2 -lpthread -lSM -lICE -ljpeg -lpng -lz -lXft -lXmu -lXext -lXi -lXrender -lX11 -ldl -lc -lXt -lstdc++ -lGL -lGLU -lSoQt -lqt-mt -lCoin -ldl -lm -Wl,-Bdynamic -lxml2 $(OBJS)

dummy.so: dummy.o
	$(CC) -shared $< -o $@

clean:
	rm -f *.d *.o *~ *.moc *.so eyesim eyesim-static Makefile.deps $(UI_HDRS) $(UI_SRCS)

eyesim-5.0-bin.tgz:
	 tar cvzf $@ README eyesim-static test/ robios/

eyesim-5.0.tgz: clean
	cd .. && tar cvzf $@ eyesim

depend Makefile.deps:
	touch -t 200001010000 $(MOCS) $(UI_HDRS)
	$(CXX) -MM $(CXXFLAGS) $(SRCS) > Makefile.deps

ifneq ($(MAKECMDGOALS),clean)
-include Makefile.deps
endif
