# $Id: modules,v 1.17 2006/12/24 00:52:39 tom Exp $
##############################################################################
# Copyright (c) 1998-2004,2006 Free Software Foundation, Inc.                #
#                                                                            #
# Permission is hereby granted, free of charge, to any person obtaining a    #
# copy of this software and associated documentation files (the "Software"), #
# to deal in the Software without restriction, including without limitation  #
# the rights to use, copy, modify, merge, publish, distribute, distribute    #
# with modifications, sublicense, and/or sell copies of the Software, and to #
# permit persons to whom the Software is furnished to do so, subject to the  #
# following conditions:                                                      #
#                                                                            #
# The above copyright notice and this permission notice shall be included in #
# all copies or substantial portions of the Software.                        #
#                                                                            #
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,   #
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL    #
# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      #
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING    #
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER        #
# DEALINGS IN THE SOFTWARE.                                                  #
#                                                                            #
# Except as contained in this notice, the name(s) of the above copyright     #
# holders shall not be used in advertising or otherwise to promote the sale, #
# use or other dealings in this Software without prior written               #
# authorization.                                                             #
##############################################################################
#
# Author: Thomas E. Dickey	1996-on
#

@ base
# Library objects
m_attribs	lib		$(srcdir)	$(MENU_PRIV_H)
m_cursor	lib		$(srcdir)	$(MENU_PRIV_H)
m_driver	lib		$(srcdir)	$(MENU_PRIV_H)
m_format	lib		$(srcdir)	$(MENU_PRIV_H)
m_global	lib		$(srcdir)	$(MENU_PRIV_H)
m_hook		lib		$(srcdir)	$(MENU_PRIV_H)
m_item_cur	lib		$(srcdir)	$(MENU_PRIV_H)
m_item_nam	lib		$(srcdir)	$(MENU_PRIV_H)
m_item_new	lib		$(srcdir)	$(MENU_PRIV_H)
m_item_opt	lib		$(srcdir)	$(MENU_PRIV_H)
m_item_top	lib		$(srcdir)	$(MENU_PRIV_H)
m_item_use	lib		$(srcdir)	$(MENU_PRIV_H)
m_item_val	lib		$(srcdir)	$(MENU_PRIV_H)
m_item_vis	lib		$(srcdir)	$(MENU_PRIV_H)
m_items		lib		$(srcdir)	$(MENU_PRIV_H)
m_new		lib		$(srcdir)	$(MENU_PRIV_H)
m_opts		lib		$(srcdir)	$(MENU_PRIV_H)
m_pad		lib		$(srcdir)	$(MENU_PRIV_H)
m_pattern	lib		$(srcdir)	$(MENU_PRIV_H)
m_post		lib		$(srcdir)	$(MENU_PRIV_H)
m_req_name	lib		$(srcdir)	$(MENU_PRIV_H)
m_scale		lib		$(srcdir)	$(MENU_PRIV_H)
m_spacing	lib		$(srcdir)	$(MENU_PRIV_H)
m_sub		lib		$(srcdir)	$(MENU_PRIV_H)
m_trace		lib		$(srcdir)	$(MENU_PRIV_H)
m_userptr	lib		$(srcdir)	$(MENU_PRIV_H)
m_win		lib		$(srcdir)	$(MENU_PRIV_H)

# vile:makemode
