CC = gcc
CXX = g++
AR = ar

TRIPLET := $(shell $(CC) -dumpmachine)

DEFTARGET = tlclient.bin
ifneq ($(findstring -mingw,$(TRIPLET)),)
DEFTARGET = tlclient.exe
endif
ifneq ($(findstring -darwin,$(TRIPLET)),)
DEFTARGET = tlclient
endif

.PHONY: all
all:
	$(MAKE) $(DEFTARGET)

XMLRPC_LIB = xmlrpc++/libXmlRpc.a

OBJECTS_CLOSED = tlclient.a libcert.a

OBJECTS_OPEN = \
		localename.o \
		Fl_Monitor_Arrangement.o \
		Fl_Navigation.o \
		Fl_Password_Input.o \
		Fl_Suggestion_Item_.o \
		Fl_Suggestion_Window_.o \
		Fl_Suggestion_Input.o \
		event_dispatch_handler.o \
		theme.o \
		$(XMLRPC_LIB)

OBJECTS = $(OBJECTS_CLOSED) $(OBJECTS_OPEN)

X11_OBJECTS_OPEN = XmuClientWin.o 

FLTK_LIBS = -lfltk -lfltk_images

UNIX_LIBS = -lXrandr -lXext -lX11 -lneon -ltasn1 -ltre -lnettle -ldl

WIN_LIBS = -luuid -lws2_32 -lole32 -liphlpapi -lintl -lmpr -lneon -ltasn1 -ltre -lwinspool -lpowrprof -lpsapi -liconv -lnettle

MACOS_LIBS = -lintl -lneon -ltasn1 -ltre -liconv -lnettle -framework Carbon -framework CoreFoundation -framework IOKit -framework Cocoa

%.o: %.c
	$(CC) -c $(CPPFLAGS) $(CFLAGS) -o "$@" "$<"
%.o: %.cxx
	$(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o "$@" "$<"

tlclient.bin: $(OBJECTS) $(X11_OBJECTS_OPEN)
	$(CXX) -o $@ $(TLCLIENT_ARCHIVE) $(OBJECTS) $(X11_OBJECTS_OPEN) $(FLTK_LIBS) $(UNIX_LIBS)

tlclient.exe: $(OBJECTS)
	$(CXX) -o tlclient.exe $(OBJECTS) $(FLTK_LIBS) $(WIN_LIBS) -mwindows

tlclient: $(OBJECTS)
	$(CXX) -o $@ $(TLCLIENT_ARCHIVE) $(OBJECTS) $(FLTK_LIBS) $(MACOS_LIBS)


$(XMLRPC_LIB):
	$(MAKE) -C xmlrpc++ libXmlRpc.a

.PHONY: clean
clean:
	$(MAKE) -C xmlrpc++ clean
	rm -f *.o tlclient.bin tlclient.exe tlclient
