#
# A make file to build Roman Kantor's cartesian plotting code as a library.
#

# Standard defines:
CXX = g++
CXX_FLAGS = -O -Wall `fltk-config --cxxflags`

PREFIX = /usr/local

STATIC_LIBRARY = libfltk_cartesian.a
DYNAMIC_LIBRARY = libfltk_cartesian.so.1.0
STATIC_OBJS = Fl_Cartesian.o
DYNAMIC_OBJS = Fl_Cartesian.lo

#@# Targets follow ---------------------------------

all:	 $(STATIC_LIBRARY) $(DYNAMIC_LIBRARY)

example: example.cxx
	$(CXX) `fltk-config --cxxflags` -o example example.cxx -lfltk_cartesian `fltk-config --ldflags`

install: $(STATIC_LIBRARY) $(DYNAMIC_LIBRARY)
	mkdir -p $(PREFIX)/lib
	mkdir -p $(PREFIX)/include
	mkdir -p $(PREFIX)/include/FL
	install -m 644 Fl_Cartesian.H $(PREFIX)/include/FL
	install -m 755 $(DYNAMIC_LIBRARY) $(PREFIX)/lib
	( cd $(PREFIX)/lib ; ln -sf libfltk_cartesian.so.1.0 libfltk_cartesian.so.1 )
	( cd $(PREFIX)/lib ; ln -sf libfltk_cartesian.so.1.0 libfltk_cartesian.so )
	install -m 644 $(STATIC_LIBRARY) $(PREFIX)/lib
	/sbin/ldconfig

$(STATIC_LIBRARY): $(STATIC_OBJS)
	ar rcs $(STATIC_LIBRARY) $(STATIC_OBJS)
	ranlib $(STATIC_LIBRARY)

$(DYNAMIC_LIBRARY): $(DYNAMIC_OBJS)
	$(CC) -shared -Wl,-soname,libfltk_cartesian.so.1 -o $@ $(DYNAMIC_OBJS)
	/sbin/ldconfig -n .
	ln -sf libfltk_cartesian.so.1 libfltk_cartesian.so

clean:
	rm -f *.o *.so *.so.* *.lo
	rm -f $(STATIC_LIBRARY) $(DYNAMIC_LIBRARY)
	rm -f example

#@# Dependency rules follow -----------------------------

Fl_Cartesian.lo: Fl_Cartesian.cxx Fl_Cartesian.H
	$(CXX) -fPIC $(CXX_FLAGS) -c -o $@ $<

Fl_Cartesian.o: Fl_Cartesian.cxx Fl_Cartesian.H
	$(CXX) $(CXX_FLAGS) -c -o $@ $<
