#
# BEGIN COPYRIGHT BLOCK
# This Program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; version 2 of the License.
# 
# This Program 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 General Public License for more details.
# 
# You should have received a copy of the GNU General Public License along with
# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
# Place, Suite 330, Boston, MA 02111-1307 USA.
# 
# In addition, as a special exception, Red Hat, Inc. gives You the additional
# right to link the code of this Program with code not covered under the GNU
# General Public License ("Non-GPL Code") and to distribute linked combinations
# including the two, subject to the limitations in this paragraph. Non-GPL Code
# permitted under this exception must only link to the code of this Program
# through those well defined interfaces identified in the file named EXCEPTION
# found in the source code files (the "Approved Interfaces"). The files of
# Non-GPL Code may instantiate templates or use macros or inline functions from
# the Approved Interfaces without causing the resulting work to be covered by
# the GNU General Public License. Only Red Hat, Inc. may make changes or
# additions to the list of Approved Interfaces. You must obey the GNU General
# Public License in all respects for all of the Program code and other code used
# in conjunction with the Program except the Non-GPL Code covered by this
# exception. If you modify this file, you may extend this exception to your
# version of the file, but you are not obligated to do so. If you do not wish to
# provide this exception without modification, you must delete this exception
# statement from your version and license this file solely under the GPL without
# exception. 
# 
# 
# Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
# Copyright (C) 2005 Red Hat, Inc.
# All rights reserved.
# END COPYRIGHT BLOCK
#
#
# Makefile for libaccess.a
#
BUILD_ROOT=../..
MODULE=LibAccess
include $(BUILD_ROOT)/nsdefs.mk

OBJDEST=$(OBJDIR)/lib/libaccess
UTESTDEST=$(OBJDIR)/lib/libaccess/utest
LEX=flex

include $(BUILD_ROOT)/nsconfig.mk

ifeq ($(ARCH), WINNT)
LIBS=$(OBJDIR)/lib/libaccess.lib
CC=cl -nologo -MT
VALUES=$(OBJDEST)/values.h
else
VALUES=
LIBS=$(OBJDIR)/lib/libaccess.a
endif

all: $(OBJDEST) $(LIBS)

$(OBJDEST):
	mkdir -p $(OBJDEST)

$(UTESTDEST):
	mkdir -p $(UTESTDEST)

OSOBJS = 

OBJS=$(addprefix $(OBJDEST)/,	usi.o \
				nseframe.o \
				nsautherr.o \
				symbols.o \
                                acltools.o \
                                aclutil.o \
				aclcache.o \
				aclflush.o \
				authdb.o \
				method.o \
				ldapacl.o \
				register.o \
                                lasdns.o \
                                lasip.o \
                                lastod.o \
				usrcache.o \
				lasgroup.o \
				lasuser.o \
                                aclspace.o \
                                acl.tab.o \
                                acl.yy.o \
                                acleval.o \
				oneeval.o \
				access_plhash.o \
				aclerror.o \
                                $(OSOBJS) \
				)

MODULE_CFLAGS=-I$(BUILD_ROOT)/include -DACL_LIB_INTERNAL $(TESTFLAGS)

ifeq ($(LDAP_NO_LIBLCACHE),1)
MODULE_CFLAGS+=-DNO_LIBLCACHE
endif

LOCAL_DEPS = $(LDAPSDK_DEP)

$(LIBS): $(LOCAL_DEPS) $(OBJS)
	rm -f $@
	$(AR) $(OBJS)
	$(RANLIB) $@ 

include $(INCLUDE_DEPENDS)

#
# acl.tab.c acl.tab.h and acl.yy.c should not be generated by the build,
# they are checked in and should be pulled from the tree by
# default.  The following rules are provided in case the grammar or
# lexer needs changes.
#

#
# Right now it's best to run yacc on a Solaris machine because the
# /usr/lib/yaccpar makes the NT compiler happier.  It should work on
# other UNIX systems -- but that's what is checked in and tested.
#
yacc:
	$(YACC) -d acltext.y
	sed -f yy-sed y.tab.h > acl.tab.h
	sed -f yy-sed y.tab.c > acl.tab.cpp
	rm y.tab.h y.tab.c

#
# Flex generates a case insenitive lexer.  It also provides mechanisms
# that allow NSPR to replace it's standard IO routines.  The standard UNIX
# lex wants to use some stupid library!  One would think that lex could
# generate all the code it needs just like FLEX.
# 
flex: 
	$(LEX) -i aclscan.l
	sed -f yy-sed lex.yy.c > acl.yy.cpp
	rm lex.yy.c
