# --------------------------------------------------------------------
# Makefile for Ipe
# --------------------------------------------------------------------

OBJDIR = $(BUILDDIR)/obj/ipe
include ../common.mak

TARGET = $(call exe_target,ipe)

CPPFLAGS += -I../include -I../ipecanvas -I../ipecairo -I../ipelua \
	-I../ipeui \
	$(LUA_CFLAGS) $(UI_CFLAGS) $(CAIRO_CFLAGS) $(ZLIB_CFLAGS)
LIBS += -L$(buildlib) -lipecanvas -lipecairo -lipelua -lipe -lipeui \
	$(LUA_LIBS) $(UI_LIBS) $(CAIRO_LIBS) $(ZLIB_LIBS) $(DL_LIBS)

ifdef IPEBUNDLE
CPPFLAGS += -DIPEBUNDLE
else
CPPFLAGS += -DIPELETDIR=\"$(IPELETDIR)\"
CPPFLAGS += -DIPELUADIR=\"$(IPELUADIR)\"
CPPFLAGS += -DIPEICONDIR=\"$(IPEICONDIR)\"
CPPFLAGS += -DIPEDOCDIR=\"$(IPEDOCDIR)\"
CPPFLAGS += -DIPESTYLEDIR=\"$(IPESTYLEDIR)\"
endif

all: $(TARGET)

sources	= tools.cpp appui.cpp uilua.cpp 
qt_sources = main_qt.cpp appui_qt.cpp controls_qt.cpp 
moc_headers = appui_qt.h controls_qt.h
win_sources = main_win.cpp appui_win.cpp pathview_win.cpp pagesorter_win.cpp
gtk_sources = main_gtk.cpp appui_gtk.cpp

ifdef WIN32
CXXFLAGS += -mwindows
LDFLAGS  += -mwindows

resource = $(OBJDIR)/res.o

$(resource): ipe.rc
	$(WINDRES) -i ipe.rc -o $@ --include-dir=.

else
resource = 
endif

$(TARGET): $(objects) $(resource)
	$(MAKE_BINDIR)
	$(CXX) $(LDFLAGS) -o $@ $^ $(LIBS)

clean:
	@-rm -f $(objects) $(resource) $(TARGET) $(DEPEND)

$(DEPEND): Makefile
	$(MAKE_DEPEND)

-include $(DEPEND)

RESOURCES = $(BUILDDIR)/Ipe.app/Contents/Resources

ifdef IPEBUNDLE

app:
	$(INSTALL_DIR) $(RESOURCES)/scripts
	$(INSTALL_DIR) $(RESOURCES)/lua
	$(INSTALL_DIR) $(RESOURCES)/styles
	$(INSTALL_DIR) $(RESOURCES)/icons
	$(INSTALL_DIR) $(BUILDDIR)/Ipe.app/Contents/SharedSupport/doc
	$(INSTALL_SCRIPTS) ../../scripts/* $(RESOURCES)/scripts
	$(INSTALL_FILES) lua/*.lua $(RESOURCES)/lua
	$(INSTALL_FILES) ../../styles/basic.isy $(RESOURCES)/styles
	$(INSTALL_FILES) ../../styles/colors.isy $(RESOURCES)/styles
	$(INSTALL_FILES) ../../styles/beamer.isy $(RESOURCES)/styles
	$(INSTALL_FILES) ../../styles/presentation.isy $(RESOURCES)/styles
	$(INSTALL_FILES) icons/*.png $(RESOURCES)/icons
	$(INSTALL_FILES) Info.plist $(BUILDDIR)/Ipe.app/Contents
	$(INSTALL_FILES) ipe.icns $(RESOURCES)
	$(INSTALL_FILES) ../../build/doc/* \
		$(BUILDDIR)/Ipe.app/Contents/SharedSupport/doc
	$(INSTALL_PROGRAMS) ipe.sh $(BUILDDIR)/Ipe.app/Contents/MacOS

# This is for building a distributable bundle,
# and assumes a specific build setup:

distribution:
	$(INSTALL_PROGRAMS) $(X11LIBS)/lib/libpng16.16.dylib $(buildlib)
	$(INSTALL_PROGRAMS) $(X11LIBS)/lib/libpixman-1.0.dylib $(buildlib)
	$(INSTALL_PROGRAMS) $(X11LIBS)/lib/libfreetype.6.dylib $(buildlib)
	$(INSTALL_PROGRAMS) $(X11LIBS)/lib/libcairo.2.dylib $(buildlib)
	$(INSTALL_PROGRAMS) $(X11LIBS)/lib/liblua53.dylib $(buildlib)

else

install: $(TARGET)
	$(INSTALL_DIR) $(INSTALL_ROOT)$(IPEBINDIR) 
	$(INSTALL_DIR) $(INSTALL_ROOT)$(IPEMANDIR) 
	$(INSTALL_DIR) $(INSTALL_ROOT)$(IPEDOCDIR) 
	$(INSTALL_DIR) $(INSTALL_ROOT)$(IPELUADIR) 
	$(INSTALL_DIR) $(INSTALL_ROOT)$(IPESTYLEDIR) 
	$(INSTALL_DIR) $(INSTALL_ROOT)$(IPESCRIPTDIR) 
	$(INSTALL_DIR) $(INSTALL_ROOT)$(IPEICONDIR)
	$(INSTALL_PROGRAMS) $(TARGET) $(INSTALL_ROOT)$(IPEBINDIR)
	$(INSTALL_SCRIPTS) ../../scripts/* $(INSTALL_ROOT)$(IPESCRIPTDIR)
	$(INSTALL_FILES) ../../man/*.1 $(INSTALL_ROOT)$(IPEMANDIR) 
	$(INSTALL_FILES) ../../build/doc/* $(INSTALL_ROOT)$(IPEDOCDIR)
	$(INSTALL_FILES) lua/*.lua $(INSTALL_ROOT)$(IPELUADIR)
	$(INSTALL_FILES) ../../styles/basic.isy $(INSTALL_ROOT)$(IPESTYLEDIR)
	$(INSTALL_FILES) ../../styles/colors.isy $(INSTALL_ROOT)$(IPESTYLEDIR)
	$(INSTALL_FILES) ../../styles/beamer.isy $(INSTALL_ROOT)$(IPESTYLEDIR)
	$(INSTALL_FILES) ../../styles/presentation.isy \
			 $(INSTALL_ROOT)$(IPESTYLEDIR)
	$(INSTALL_FILES) icons/*.png $(INSTALL_ROOT)$(IPEICONDIR)

endif

# --------------------------------------------------------------------
