#########################################################################
#
#  Authors:
#  Harri Pitkänen (hatapitk@cc.jyu.fi), 2005
#
#  The Contents of this file are made available subject to the terms of
#  GNU Lesser General Public License Version 2.1
#
#  GNU Lesser General Public License Version 2.1
#  =============================================
#
#  This library is free software; you can redistribute it and/or
#  modify it under the terms of the GNU Lesser General Public
#  License version 2.1, as published by the Free Software Foundation.
#
#  This library is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
#  Lesser General Public License for more details.
#
#  You should have received a copy of the GNU Lesser General Public
#  License along with this library; if not, write to the Free Software
#  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
#  MA  02110-1301, USA
#########################################################################

ifndef OO_SDK_HOME
$(error You must run setsdkenv before running make)
endif
PRJ=$(OO_SDK_HOME)
include $(OO_SDK_HOME)/settings/settings.mk
include $(OO_SDK_HOME)/settings/std.mk
include $(OO_SDK_HOME)/settings/dk.mk
include setup.mk

ifdef LF_CC
	CC=$(LF_CC)
endif

ifdef LF_LINK
	LINK=$(LF_LINK)
endif

ifeq "$(PLATFORM)" "windows"
	CC_FLAGS=-c -GX -MT
	CC_INCLUDES=-I. -I$(PRJ)/include
	ifeq "$(LF_DEBUG)" "LOG"
		CC_DEFINES+= -DSOIKKO_DEBUG
	endif
	ifeq "$(LF_DEBUG)" "FULL"
		CC_DEFINES+= -DSOIKKO_DEBUG
		CC_FLAGS+= -Zi
	endif
endif
ifeq "$(PLATFORM)" "linux"
	CC_FLAGS=-c -O -fpic
	CC_INCLUDES=-I. -I$(PRJ)/include
	LINK_LIBS=-L$(PRJ)/$(PLATFORM)/lib -L"$(OFFICE_PROGRAM_PATH)"
	ifeq "$(LF_DEBUG)" "LOG"
		CC_DEFINES+= -DSOIKKO_DEBUG
	endif
	ifeq "$(LF_DEBUG)" "FULL"
		CC_DEFINES+= -DSOIKKO_DEBUG
		CC_FLAGS=-c -g -fpic
	endif
endif

LF_SHORTNAME=oo2-soikko
LF_OUTDIR=./build
LF_TYPEFLAG=$(LF_OUTDIR)/types.flag
LF_HPPDIR=$(LF_OUTDIR)/hpp
LF_SLONAME=$(LF_SHORTNAME).$(SHAREDLIB_EXT)
LF_SLO=$(LF_OUTDIR)/pkg/$(UNOPKG_PLATFORM)/$(LF_SLONAME)
ifeq "$(LF_DEBUG)" "NO"
	LF_PACKAGEFILE=$(LF_SHORTNAME)-$(UNOPKG_PLATFORM)-$(LF_VERSION).$(UNOPKG_EXT)
else
	LF_PACKAGEFILE=$(LF_SHORTNAME)-$(UNOPKG_PLATFORM)-dbg-$(LF_VERSION).$(UNOPKG_EXT)
endif
LF_PACKAGE=$(LF_OUTDIR)/$(LF_PACKAGEFILE)
LF_LIBSOIKKO=libsoikko.$(SHAREDLIB_EXT)
LF_SPELLDICT=soikko-sp.fi_FI.dic
LF_HYPHDICT=soikko-hy.fi_FI.dic

LF_CXXFILES = apu.cxx commonfi.cxx sprophelp.cxx sspellimp.cxx register.cxx  \
	XSpellAlternatives_impl.cxx hyphenimp.cxx XHyphenatedWord_impl.cxx  \
	XPossibleHyphens_impl.cxx

LF_SLOFILES = $(patsubst %.cxx,$(LF_OUTDIR)/%.$(OBJ_EXT),$(LF_CXXFILES))

# Rules
.PHONY: all tgz

all : $(LF_PACKAGE)

$(LF_TYPEFLAG) :
	$(CPPUMAKER) -Gc -BUCR -O$(LF_HPPDIR) $(OFFICE_TYPE_LIBRARY)
	echo flagged > $@

$(LF_OUTDIR)/%.$(OBJ_EXT) : %.cxx $(LF_TYPEFLAG)
	$(CC) $(CC_FLAGS) $(CC_INCLUDES) $(STL_INCLUDES) -I$(LF_HPPDIR) $(CC_DEFINES) $(CC_OUTPUT_SWITCH)$@ $<

ifeq "$(OS)" "WIN"
$(LF_SLO) : $(LF_SLOFILES)
	$(LINK) $(COMP_LINK_FLAGS) /OUT:$@ \
	/MAP:$(LF_OUTDIR)/$(LF_SHORTNAME).map $(LF_SLOFILES) \
	 $(CPPUHELPERLIB) $(CPPULIB) $(SALLIB) $(STLPORTLIB) msvcrt.lib kernel32.lib
else
$(LF_SLO) : $(LF_SLOFILES)
	-$(MKDIR) $(subst /,$(PS),$(@D))
	$(LINK) $(COMP_LINK_FLAGS) $(LINK_LIBS) -o $@ $^ \
	 $(CPPUHELPERLIB) $(CPPULIB) $(SALLIB) $(STLPORTLIB)
endif

$(LF_OUTDIR)/pkg/META-INF/manifest.xml :
	-$(MKDIR) $(subst /,$(PS),$(@D))
	@echo $(OSEP)?xml version="$(QM)1.0$(QM)" encoding="$(QM)UTF-8$(QM)"?$(CSEP) > $@
	@echo $(OSEP)!DOCTYPE manifest:manifest PUBLIC "$(QM)-//OpenOffice.org//DTD Manifest 1.0//EN$(QM)" "$(QM)Manifest.dtd$(QM)"$(CSEP) >> $@
	@echo $(OSEP)manifest:manifest xmlns:manifest="$(QM)http://openoffice.org/2001/manifest$(QM)"$(CSEP) >> $@
	@echo $(SQM)  $(SQM)$(OSEP)manifest:file-entry manifest:media-type="$(QM)application/vnd.sun.star.uno-component;type=native;platform=$(UNOPKG_PLATFORM)$(QM)" >> $@
	@echo $(SQM)                       $(SQM)manifest:full-path="$(QM)$(UNOPKG_PLATFORM)/$(LF_SLONAME)$(QM)"/$(CSEP) >> $@
	@echo $(SQM)  $(SQM)$(OSEP)manifest:file-entry manifest:media-type="$(QM)application/vnd.sun.star.configuration-data$(QM)" >> $@
	@echo $(SQM)                       $(SQM)manifest:full-path="$(QM)config.xcu$(QM)"/$(CSEP) >> $@
	@echo $(SQM)  $(SQM)$(OSEP)manifest:file-entry manifest:media-type="$(QM)application/vnd.sun.star.configuration-schema$(QM)" >> $@
	@echo $(SQM)                       $(SQM)manifest:full-path="$(QM)config.xcs$(QM)"/$(CSEP) >> $@
	@echo $(OSEP)/manifest:manifest$(CSEP) >> $@

$(LF_OUTDIR)/pkg/$(UNOPKG_PLATFORM)/$(LF_LIBSOIKKO) : soikko/$(LF_LIBSOIKKO)
	-$(MKDIR) $(subst /,$(PS),$(@D))
	$(COPY) $< $@

$(LF_OUTDIR)/pkg/shared/$(LF_SPELLDICT) : soikko/$(LF_SPELLDICT)
	-$(MKDIR) $(subst /,$(PS),$(@D))
	$(COPY) $< $@

$(LF_OUTDIR)/pkg/shared/$(LF_HYPHDICT) : soikko/$(LF_HYPHDICT)
	-$(MKDIR) $(subst /,$(PS),$(@D))
	$(COPY) $< $@

$(LF_OUTDIR)/pkg/config.xcu : config.xcu
	-$(MKDIR) $(subst /,$(PS),$(@D))
	$(COPY) $< $@

$(LF_OUTDIR)/pkg/config.xcs : config.xcs
	-$(MKDIR) $(subst /,$(PS),$(@D))
	$(COPY) $< $@

$(LF_OUTDIR)/$(LF_SHORTNAME)-$(LF_VERSION)/COPYING.% : COPYING.%
	-$(MKDIR) $(subst /,$(PS),$(@D))
	$(COPY) $< $@

$(LF_OUTDIR)/$(LF_SHORTNAME)-$(LF_VERSION)/COPYING : COPYING
	-$(MKDIR) $(subst /,$(PS),$(@D))
	$(COPY) $< $@

$(LF_OUTDIR)/$(LF_SHORTNAME)-$(LF_VERSION)/ASENNUS.txt : ASENNUS.txt
	-$(MKDIR) $(subst /,$(PS),$(@D))
	$(COPY) $< $@

$(LF_OUTDIR)/$(LF_SHORTNAME)-$(LF_VERSION)/install-oo2-soikko : install-oo2-soikko
	-$(MKDIR) $(subst /,$(PS),$(@D))
	$(COPY) $< $@

$(LF_OUTDIR)/$(LF_SHORTNAME)-$(LF_VERSION)/$(LF_PACKAGEFILE) : $(LF_OUTDIR)/$(LF_PACKAGEFILE)
	-$(MKDIR) $(subst /,$(PS),$(@D))
	$(COPY) $< $@

$(LF_PACKAGE) : $(LF_SLO) $(LF_OUTDIR)/pkg/META-INF/manifest.xml \
	 $(LF_OUTDIR)/pkg/$(UNOPKG_PLATFORM)/$(LF_LIBSOIKKO) \
	 $(LF_OUTDIR)/pkg/shared/$(LF_SPELLDICT) \
	 $(LF_OUTDIR)/pkg/shared/$(LF_HYPHDICT) \
	 $(LF_OUTDIR)/pkg/config.xcu \
	 $(LF_OUTDIR)/pkg/config.xcs
	cd $(LF_OUTDIR)/pkg && $(SDK_ZIP) ../$(LF_PACKAGEFILE) META-INF/manifest.xml $(UNOPKG_PLATFORM)/$(LF_SLONAME) \
	 $(UNOPKG_PLATFORM)/$(LF_LIBSOIKKO) shared/$(LF_SPELLDICT) shared/$(LF_HYPHDICT) config.xcu config.xcs

$(LF_OUTDIR)/$(LF_SHORTNAME)-$(LF_VERSION).tar.gz: $(LF_OUTDIR)/$(LF_SHORTNAME)-$(LF_VERSION)/COPYING.soikko \
	$(LF_OUTDIR)/$(LF_SHORTNAME)-$(LF_VERSION)/COPYING.lgpl \
	$(LF_OUTDIR)/$(LF_SHORTNAME)-$(LF_VERSION)/COPYING.gpl \
	$(LF_OUTDIR)/$(LF_SHORTNAME)-$(LF_VERSION)/COPYING \
	$(LF_OUTDIR)/$(LF_SHORTNAME)-$(LF_VERSION)/ASENNUS.txt \
	$(LF_OUTDIR)/$(LF_SHORTNAME)-$(LF_VERSION)/install-oo2-soikko \
	$(LF_OUTDIR)/$(LF_SHORTNAME)-$(LF_VERSION)/$(LF_PACKAGEFILE)
	tar czf $(LF_OUTDIR)/$(LF_SHORTNAME)-$(LF_VERSION).tar.gz --owner 0 --group 0 \
	-C $(LF_OUTDIR) $(LF_SHORTNAME)-$(LF_VERSION)


tgz: $(LF_OUTDIR)/$(LF_SHORTNAME)-$(LF_VERSION).tar.gz