SHELL=/bin/sh

CPPFILES = \
	Fl.C \
	Fl_Adjuster.C \
	Fl_Bitmap.C \
	Fl_Browser.C \
	Fl_Browser_.C \
	Fl_Box.C \
	Fl_Button.C \
	Fl_Chart.C \
	Fl_Check_Button.C \
	Fl_Choice.C \
	Fl_Clock.C \
	Fl_Color_Chooser.C \
	Fl_Counter.C \
	Fl_Dial.C \
	Fl_Double_Window.C \
	Fl_Gl_Choice.C \
	Fl_Gl_Overlay.C \
	Fl_Gl_Window.C \
	Fl_Group.C \
	Fl_Group_flip.C \
	Fl_Image.C \
	Fl_Input.C \
	Fl_Input_.C \
	Fl_Light_Button.C \
	Fl_Menu.C \
	Fl_Menu_.C \
	Fl_Menu_Button.C \
	Fl_Menu_Window.C \
	Fl_Menu_add.C \
	Fl_Output.C \
	Fl_Overlay_Window.C \
	Fl_Pixmap.C \
	Fl_Positioner.C \
	Fl_Repeat_Button.C \
	Fl_Return_Button.C \
	Fl_Roller.C \
	Fl_Round_Button.C \
	Fl_Scroll.C \
	Fl_Single_Window.C \
	Fl_Slider.C \
	Fl_Tabs.C \
	Fl_Tile.C \
	Fl_Valuator.C \
	Fl_Value_Input.C \
	Fl_Value_Output.C \
	Fl_Value_Slider.C \
	Fl_Widget.C \
	Fl_Window.C \
	Fl_Window_fullscreen.C \
	Fl_Window_hotspot.C \
	Fl_Window_iconize.C \
	Fl_abort.C \
	Fl_arg.C \
	Fl_cutpaste.C \
	Fl_display.C \
	Fl_get_key.C \
	Fl_visual.C \
	Fl_x.C \
	filename_absolute.C \
	filename_expand.C \
	filename_ext.C \
	filename_match.C \
	filename_setext.C \
	fl_50percent.C \
	fl_arc.C \
	fl_arci.C \
	fl_ask.C \
	fl_boxtype.C \
	fl_color.C \
	fl_cursor.C \
	fl_curve.C \
	fl_diamond_box.C \
	fl_draw.C \
	fl_draw_image.C \
	fl_draw_pixmap.C \
	fl_engraved_label.C \
	fl_file_chooser.C \
	fl_font.C \
	fl_labeltype.C \
	fl_oval_box.C \
	fl_overlay.C \
	fl_overlay_visual.C \
	fl_rect.C \
	fl_round_box.C \
	fl_rounded_box.C \
	fl_scandir.C \
	fl_set_font.C \
	fl_set_fonts.C \
	fl_set_gray.C \
	fl_shadow_box.C \
	fl_shortcut.C \
	fl_show_colormap.C \
	fl_symbols.C \
	fl_vertex.C \
	forms.C \
	forms_bitmap.C \
	forms_free.C \
	forms_fselect.C \
	forms_pixmap.C \
	forms_timer.C \
	gl_draw.C \
	gl_start.C \
	glut.C \
	glut_font.C

CFILES = scandir.c numericsort.c

CLEAN =

################################################################

include ../makeinclude

TARGET = ../lib/$(LIBNAME)

OBJECTS = $(CPPFILES:.C=.o) $(CFILES:.c=.o)

$(TARGET) : $(OBJECTS)
	$(AR) $(TARGET) $(OBJECTS)
	$(RANLIB) $(TARGET)
	touch make_timestamp

.C.o :
	$(CXX) $(CXXFLAGS) -I.. -c $<
.c.o :
	$(CC) $(CFLAGS) -I.. -c -o $@ $<

clean :
	-@ rm -f *.o *.do $(TARGET) $(CLEAN) core *~ makedepend
	touch makedepend

depend:
	$(CXX) $(CXXFLAGS) -I.. -M $(CPPFILES) $(CFILES) > makedepend
include makedepend

################################################################

TARGET_D = ../lib/$(LIBNAME_D)

debug: $(TARGET_D)

OBJECTS_D = $(CPPFILES:.C=.do) $(CFILES:.c=.do)

.SUFFIXES : .C .c .o .do

.C.do :
	$(CXX) $(CXXFLAGS_D) -I.. -c -o $@ $<
.c.do :
	$(CC) $(CFLAGS) -I.. -c -o $@ $<

$(TARGET_D) : $(OBJECTS_D)
	$(AR) $(TARGET_D) $(OBJECTS_D)
	$(RANLIB) $(TARGET_D)

################################################################
# Linux-specific shared libraries:

include ../version

SHBASENAME  = libfltk.so
SONAME      = $(SHBASENAME).$(VERSION)
SHLIBNAME   = $(SHBASENAME).$(VERSION).$(REVISION)
PICOBJECTS   = $(CPPFILES:.C=.pic.o) $(CFILES:.c=.pic.o)

shared: ../lib/$(SHLIBNAME) ../lib/$(SONAME) ../lib/$(SHBASENAME)
	touch make_timestamp

../lib/$(SHLIBNAME): $(PICOBJECTS)
	$(CXX) -shared -Wl,-soname,$(SONAME) $(GLDLIBS) -o $@ $(PICOBJECTS)

../lib/$(SONAME): ../lib/$(SHLIBNAME)
	ln -nsf $(SHLIBNAME) $@

../lib/$(SHBASENAME): ../lib/$(SHLIBNAME)
	ln -nsf $(SHLIBNAME) $@

%.pic.o: %.C
	$(CXX) -fPIC $(CXXFLAGS)   -I.. -c -o $@ $<
%.pic.o: %.c
	$(CC)  -fPIC $(CFLAGS)     -I.. -c -o $@ $<

################################################################

install: make_timestamp
	cp -d ../lib/lib* $(libdir)
	cp -rf ../FL $(includedir)
	@chown -R root $(includedir)/FL
	@chmod -R a+r,u+w,g-w,o-w $(includedir)/FL

uninstall:
	-@ rm -f $(libdir)/libfltk*
	-@ rm -rf $(includedir)/FL
