#======================================================================
#
# Makefile for Fl_RichTextDisplay and Fl_RichTextEditor demo program.
#
#======================================================================

#===== Compiler names:
CXX	= g++
CC		= gcc

#===== Flags for C++ compiler:
ARCHFLAGS	= 
# for optimization, uncomment this:
#OPTIM			=  -O3 -Wall -Wunused -Wno-format-y2k  -fno-exceptions -fno-strict-aliasing
# for debugging, uncomment this:
OPTIM			=  -g -O0 -Wall -Wunused -Wno-format-y2k  -fexceptions -fno-strict-aliasing
CFLAGS		= $(OPTIM)    -mno-cygwin -mwindows -DWIN32  -mno-cygwin
CXXFLAGS		= $(OPTIM)    -mno-cygwin -mwindows -DWIN32  -mno-cygwin -fpermissive

#===== Library names:
FLTKPATH		= C:/fltk-1.3.x-r8617
LIBNAME		= $(FLTKPATH)/lib/libfltk.a
FLLIBNAME	= $(FLTKPATH)/lib/libfltk_forms.a
GLLIBNAME	= $(FLTKPATH)/lib/libfltk_gl.a
IMGLIBNAME	= $(FLTKPATH)/lib/libfltk_images.a

#===== Library linking macros:
AUDIOLIBS	= -lwinmm
DSOFLAGS	= -mwindows  -mno-cygwin
LDFLAGS		= $(OPTIM) -mwindows  -mno-cygwin -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -Wl,-subsystem,windows
LDLIBS		=  -lole32 -luuid -lcomctl32 -lwsock32
GLDLIBS		= -lglu32 -lopengl32  -lole32 -luuid -lcomctl32 -lwsock32
LINKFLTK	= $(FLTKPATH)/lib/libfltk.a
LINKFLTKGL	= $(FLTKPATH)/lib/libfltk_gl.a
LINKFLTKFORMS	= $(FLTKPATH)/lib/libfltk_forms.a $(FLTKPATH)/lib/libfltk.a
LINKFLTKIMG	= $(FLTKPATH)/lib/libfltk_images.a $(FLTKPATH)/lib/libfltk.a $(IMAGELIBS)
IMAGELIBS	= -L$(FLTKPATH)/lib -lfltk_png -lfltk_z -lfltk_jpeg 

#===== Include macro
INC	= $(FLTKPATH)

#===== Possible steps after linking...
POSTBUILD	= :

#===== Be quiet when building...
.SILENT:

#===== Build commands and filename extensions...
.SUFFIXES:	.0 .1 .3 .6 .c .cpp .h .fl .man .o .z $(EXEEXT)

.o$(EXEEXT):
	echo Linking $@...
	$(CXX) $(ARCHFLAGS) $(LDFLAGS) $< $(LINKFLTK) $(LDLIBS) -o $@
	$(POSTBUILD) $@ $(FLTKPATH)/FL/mac.r

.c.o:
	echo Compiling $<...
	$(CC) -I$(INC) $(ARCHFLAGS) -I$(INC)/png -I$(INC)/jpeg -I$(INC)/zlib $(CFLAGS) -c $<

.cpp.o:
	echo Compiling $<...
	$(CXX) -I$(INC) $(ARCHFLAGS) -I$(INC)/png -I$(INC)/jpeg -I$(INC)/zlib $(CXXFLAGS) -c $<

# What C++ files to compile:
CPPFILES =\
	demo.cpp \
	Fl_RichTextDisplay.cpp \
	Fl_RichTextEditor.cpp \
	Character.cpp \
	Undo.cpp \
	EditorContent.cpp
	
# Objects:
OBJECTS = $(CPPFILES:.cpp=.o)

# Executables to make
ALL =\
	textdemo$(EXEEXT)
all:	$(ALL)

# The library for RTDE
LIBRARY = ../lib/libRTDE.a
$(LIBRARY):	$(OBJECTS)
	echo ar cr $@ ...
	ar cr $@ $(OBJECTS)
	ranlib $@
	cp Character.h ../include/.
	cp Fl_RichTextDisplay.h ../include/.
	cp Fl_RichTextEditor.h ../include/.
	cp Undo.h ../include/.
	cp Hyperlink.h ../include/.
	cp List.h ../include/.
	cp ResultType.h ../include/.
	cp EditorContent.h ../include/.

# Build and link the demo program (this will force the library to be recompiled if necessary, too!)
textdemo$(EXEEXT): demo.o $(LIBRARY)
	echo Linking $@...
	$(CXX) $(ARCHFLAGS) $(LDFLAGS) demo.o -o $@ -L../lib -lRTDE $(LINKFLTKIMG) $(LDLIBS) -static-libgcc -static-libstdc++
	$(POSTBUILD) $@ ../FL/mac.r
