#**************************************************************
#  
#  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,ootk))

$(eval $(call gb_Library_set_componentfile,ootk,toolkit/util/ootk))

$(eval $(call gb_Library_add_package_headers,ootk,toolkit_inc))

#$(eval $(call gb_Library_add_precompiled_header,ootk,$(SRCDIR)/toolkit/inc/pch/precompiled_toolkit))

$(eval $(call gb_Library_set_include,ootk,\
	$$(INCLUDE) \
	-I$(SRCDIR)/toolkit/inc \
	-I$(SRCDIR)/toolkit/inc/pch \
	-I$(SRCDIR)/toolkit/source \
	-I$(OUTDIR)/inc/offuh \
))

$(eval $(call gb_Library_set_defs,ootk,\
	$$(DEFS) \
	-DTOOLKIT_DLLIMPLEMENTATION \
))

$(eval $(call gb_Library_add_linked_libs,ootk,\
	comphelper \
	cppu \
	cppuhelper \
	sal \
	stl \
	tl \
	utl \
	vcl \
	$(gb_STDLIBS) \
))

$(eval $(call gb_Library_add_exception_objects,ootk,\
	toolkit/source/awt/asynccallback \
	toolkit/source/awt/stylesettings \
	toolkit/source/awt/vclxaccessiblecomponent \
	toolkit/source/awt/vclxbitmap \
	toolkit/source/awt/vclxbutton \
	toolkit/source/awt/vclxcontainer \
	toolkit/source/awt/vclxdevice \
	toolkit/source/awt/vclxdialog \
	toolkit/source/awt/vclxfixedline \
	toolkit/source/awt/vclxfont \
	toolkit/source/awt/vclxgraphics \
	toolkit/source/awt/vclxmenu \
	toolkit/source/awt/vclxplugin \
	toolkit/source/awt/vclxpointer \
	toolkit/source/awt/vclxprinter \
	toolkit/source/awt/vclxregion \
	toolkit/source/awt/vclxscroller \
	toolkit/source/awt/vclxspinbutton \
	toolkit/source/awt/vclxsplitter \
	toolkit/source/awt/vclxsystemdependentwindow \
	toolkit/source/awt/vclxtabcontrol \
	toolkit/source/awt/vclxtabpage \
	toolkit/source/awt/vclxtabpagecontainer \
	toolkit/source/awt/animatedimagespeer \
	toolkit/source/awt/vclxtoolkit \
	toolkit/source/awt/vclxtopwindow \
	toolkit/source/awt/vclxwindow \
	toolkit/source/awt/vclxwindow1 \
	toolkit/source/awt/vclxwindows \
	toolkit/source/controls/accessiblecontrolcontext \
	toolkit/source/controls/controlmodelcontainerbase \
	toolkit/source/controls/dialogcontrol \
	toolkit/source/controls/eventcontainer \
	toolkit/source/controls/formattedcontrol \
	toolkit/source/controls/geometrycontrolmodel \
	toolkit/source/controls/grid/defaultgridcolumnmodel \
	toolkit/source/controls/grid/defaultgriddatamodel \
	toolkit/source/controls/grid/gridcolumn \
	toolkit/source/controls/grid/grideventforwarder \
	toolkit/source/controls/grid/sortablegriddatamodel \
	toolkit/source/controls/grid/gridcontrol \
	toolkit/source/controls/roadmapcontrol \
	toolkit/source/controls/roadmapentry \
	toolkit/source/controls/tabpagecontainer \
    toolkit/source/controls/tabpagemodel \
	toolkit/source/controls/stdtabcontroller \
	toolkit/source/controls/stdtabcontrollermodel \
	toolkit/source/controls/tkscrollbar \
	toolkit/source/controls/tkspinbutton \
	toolkit/source/controls/animatedimages \
	toolkit/source/controls/spinningprogress \
	toolkit/source/controls/tree/treecontrol \
	toolkit/source/controls/tree/treedatamodel \
	toolkit/source/controls/unocontrol \
	toolkit/source/controls/unocontrolbase \
	toolkit/source/controls/unocontrolcontainer \
	toolkit/source/controls/unocontrolcontainermodel \
	toolkit/source/controls/unocontrolmodel \
	toolkit/source/controls/unocontrols \
	toolkit/source/helper/accessibilityclient \
	toolkit/source/helper/externallock \
	toolkit/source/helper/fixedhyperbase \
	toolkit/source/helper/formpdfexport \
	toolkit/source/helper/imagealign \
	toolkit/source/helper/listenermultiplexer \
	toolkit/source/helper/property \
	toolkit/source/helper/registerservices \
	toolkit/source/helper/servicenames \
	toolkit/source/helper/tkresmgr \
	toolkit/source/helper/unomemorystream \
	toolkit/source/helper/unopropertyarrayhelper \
	toolkit/source/helper/unowrapper \
	toolkit/source/helper/vclunohelper \
	toolkit/source/layout/core/bin \
	toolkit/source/layout/core/box \
	toolkit/source/layout/core/box-base \
	toolkit/source/layout/core/byteseq \
	toolkit/source/layout/core/container \
	toolkit/source/layout/core/dialogbuttonhbox \
	toolkit/source/layout/core/factory \
	toolkit/source/layout/core/flow \
	toolkit/source/layout/core/helper \
	toolkit/source/layout/core/import \
	toolkit/source/layout/core/localized-string \
	toolkit/source/layout/core/proplist \
	toolkit/source/layout/core/root \
	toolkit/source/layout/core/table \
	toolkit/source/layout/core/timer \
	toolkit/source/layout/core/translate \
	toolkit/source/layout/core/vcl \
	toolkit/source/layout/vcl/wbutton \
	toolkit/source/layout/vcl/wcontainer \
	toolkit/source/layout/vcl/wfield \
	toolkit/source/layout/vcl/wrapper \
))

ifeq ($(GUIBASE),aqua)
$(eval $(call gb_Library_set_cxxflags,ootk,\
	$$(CXXFLAGS) $(gb_OBJCXXFLAGS)))
endif

ifeq ($(OS),LINUX)
$(eval $(call gb_Library_add_linked_libs,ootk,\
	X11 \
))
endif

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