#**************************************************************
#  
#  Licensed to the Apache Software Foundation (ASF) under one
#  or more contributor license agreements.  See the NOTICE file
#  distributed with this work for additional information
#  regarding copyright ownership.  The ASF licenses this file
#  to you under the Apache License, Version 2.0 (the
#  "License"); you may not use this file except in compliance
#  with the License.  You may obtain a copy of the License at
#  
#    http://www.apache.org/licenses/LICENSE-2.0
#  
#  Unless required by applicable law or agreed to in writing,
#  software distributed under the License is distributed on an
#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
#  KIND, either express or implied.  See the License for the
#  specific language governing permissions and limitations
#  under the License.
#  
#**************************************************************



$(eval $(call gb_Library_Library,vbaswobj))

$(eval $(call gb_Library_set_componentfile,vbaswobj,sw/util/vbaswobj))

$(eval $(call gb_Library_set_include,vbaswobj,\
	-I$(SRCDIR)/sw/source/core/inc \
	-I$(SRCDIR)/sw/source/filter/inc \
	-I$(SRCDIR)/sw/source/ui/inc \
	-I$(SRCDIR)/sw/inc/pch \
	-I$(SRCDIR)/sw/inc \
	-I$(WORKDIR)/Misc/sw/ \
	$$(INCLUDE) \
	-I$(OUTDIR)/inc/ \
))

$(eval $(call gb_Library_add_api,vbaswobj,\
	udkapi \
	offapi \
	oovbaapi \
))

$(eval $(call gb_Library_add_linked_libs,vbaswobj,\
	comphelper \
	cppu \
	cppuhelper \
	editeng \
	i18nisolang1 \
	sal \
	sb \
	sfx \
	stl \
	svl \
	svt \
	svx \
	svxcore \
	sw \
	tk \
	tl \
	utl \
	vbahelper \
	vcl \
    $(gb_STDLIBS) \
))

$(eval $(call gb_Library_add_exception_objects,vbaswobj,\
	sw/source/ui/vba/service \
	sw/source/ui/vba/vbadocument \
	sw/source/ui/vba/vbasections \
	sw/source/ui/vba/vbadialog \
	sw/source/ui/vba/vbawrapformat \
	sw/source/ui/vba/vbafont \
	sw/source/ui/vba/vbaheaderfooterhelper \
	sw/source/ui/vba/vbarangehelper \
	sw/source/ui/vba/vbaaddin \
	sw/source/ui/vba/vbaautotextentry \
	sw/source/ui/vba/vbarange \
	sw/source/ui/vba/vbadocumentproperties \
	sw/source/ui/vba/vbaeventshelper \
	sw/source/ui/vba/vbastyle \
	sw/source/ui/vba/vbapane \
	sw/source/ui/vba/vbaglobals \
	sw/source/ui/vba/vbatemplate \
	sw/source/ui/vba/vbaaddins \
	sw/source/ui/vba/vbaview \
	sw/source/ui/vba/vbaheaderfooter \
	sw/source/ui/vba/vbabookmarks \
	sw/source/ui/vba/vbaoptions \
	sw/source/ui/vba/vbadialogs \
	sw/source/ui/vba/vbapalette \
	sw/source/ui/vba/vbaparagraph \
	sw/source/ui/vba/vbafind \
	sw/source/ui/vba/vbasection \
	sw/source/ui/vba/vbabookmark \
	sw/source/ui/vba/vbaapplication \
	sw/source/ui/vba/vbawindow \
	sw/source/ui/vba/vbareplacement \
	sw/source/ui/vba/vbatable \
	sw/source/ui/vba/vbaselection \
	sw/source/ui/vba/vbasystem \
	sw/source/ui/vba/vbainformationhelper \
	sw/source/ui/vba/vbapagesetup \
	sw/source/ui/vba/vbafield \
	sw/source/ui/vba/vbatables \
	sw/source/ui/vba/vbavariable \
	sw/source/ui/vba/vbadocuments \
	sw/source/ui/vba/vbaparagraphformat \
	sw/source/ui/vba/vbaborders \
	sw/source/ui/vba/vbavariables \
	sw/source/ui/vba/vbastyles \
	sw/source/ui/vba/vbapanes \
	sw/source/ui/vba/wordvbahelper \
))

# vim: set noet sw=4 ts=4:
