Makefile revision 7014882c6a3672fd0e5d60200af8643ae53c5928
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# CDDL HEADER START
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# The contents of this file are subject to the terms of the
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# Common Development and Distribution License (the "License").
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# You may not use this file except in compliance with the License.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# or http://www.opensolaris.org/os/licensing.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# See the License for the specific language governing permissions
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# and limitations under the License.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# When distributing Covered Code, include this CDDL HEADER in each
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# If applicable, add the following below this CDDL HEADER, with the
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# fields enclosed by brackets "[]" replaced with your own identifying
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# information: Portions Copyright [yyyy] [name of copyright owner]
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# CDDL HEADER END
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# Use is subject to license terms.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkTESTPROG = gssdtest
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkOUTPUT_OPTION = -I.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkPROG= gssd
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkMANIFEST= gss.xml
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkGSSD_BASEOBJS = gssd.o gssd_proc.o gssd_generic.o gssd_getuid.o
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkGSSC_BASEOBJS = gssdtest.o gssd_release_name_and_type.o gssd_clnt_stubs.o \
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk gssd_handle.o
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkGD_OBJS = gssd_svc.o
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkGC_OBJS = gssd_clnt.o
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkG_OBJS = gssd_xdr.o
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkGSSDOBJS = $(GSSD_BASEOBJS) $(GD_OBJS) $(G_OBJS)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkGSSCOBJS = $(GSSC_BASEOBJS) $(GC_OBJS) $(G_OBJS)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkGSSD_LINTS = $(GSSD_BASEOBJS:.o=.c)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkGSSC_LINTS = $(GSSC_BASEOBJS:.o=.c)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkROBJS = $(GD_OBJS) $(GC_OBJS) $(G_OBJS)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkOBJS = $(GSSD_BASEOBJS) $(GD_OBJS) $(GSSC_BASEOBJS) $(GC_OBJS) $(G_OBJS)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkSRCS = $(OBJS:.o=.c)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkRSRC = $(ROBJS:.o=.c)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkRSRC += gssd.h
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkCLOBBERFILES += $(TESTPROG)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkinclude ../../Makefile.cmd
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkROOTMANIFESTDIR= $(ROOTSVCNETWORKRPC)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkTEXT_DOMAIN = SUNW_OST_NETRPC
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkPOFILE = $(PROG).po
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkPOFILES = generic.po
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# Override $ROOTLIB
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkROOTLIB= $(ROOT)/usr/lib/gss
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkDIRS= $(ROOTLIB)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkCPPFLAGS += -I$(SRC)/uts/common/gssapi/include
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkCOPTFLAG += $(XESS) #-I$(KINCDIR)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkCERRWARN += -_gcc=-Wno-unused-variable
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkCERRWARN += -_gcc=-Wno-implicit-function-declaration
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkCERRWARN += -_gcc=-Wno-parentheses
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkCERRWARN += -_gcc=-Wno-uninitialized
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkLDLIBS += -lgss -lnsl
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkgssd := MAPFILES = $(MAPFILE.INT) $(MAPFILE.NGB)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkgssd := LDFLAGS += $(MAPFILES:%=-M%)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk$(GPROGS) := CPPFLAGS += -DSYSV -DSunOS=50
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk.KEEP_STATE:
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkall: $(PROG) $(TESTPROG)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk$(ROOTLIB):
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(INS.dir)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk$(ROOTLIB)/%: %
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(INS.file)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkgssd: $(GSSDOBJS) $$(MAPFILES)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(LINK.c) $(GSSDOBJS) -o $@ $(LDLIBS)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(POST_PROCESS)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkgssdtest: $(GSSCOBJS)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(LINK.c) $(GSSCOBJS) -o $@ $(LDLIBS)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(POST_PROCESS)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkGSSDX= $(SRC)/uts/common/gssapi/gssd.x
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkgssd.x: $(GSSDX)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk rm -f $@
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk cp $(GSSDX) $@
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# Rules to generate derived rpcgen files from gssd.x spec file.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# NOTE WELL: There is code in gssd that assumes gssd is NOT
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# multi-threaded. Do NOT add -A to the rpcgen argument list in the
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# Makefile unless you also remove this assumption.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkgssd.h: gssd.x
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(RM) $@
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(RPCGEN) -M -h gssd.x > $@
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkgssd_clnt.c: gssd.x
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(RM) $@
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(RPCGEN) -M -l gssd.x > $@
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkgssd_svc.c: gssd.x
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(RM) $@
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(RPCGEN) -M -m gssd.x > $@
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkgssd_xdr.c: gssd.x
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(RM) $@
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(RPCGEN) -M -c gssd.x > $@
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk$(OBJS): gssd.h
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkinstall: all $(DIRS) $(ROOTLIBPROG) $(ROOTMANIFEST)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkinstall_h:
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkclean:
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(RM) $(OBJS) $(RSRC) gssd.x
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenklint_gssd:
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(LINT.c) $(GSSD_LINTS)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenklint_gssc:
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(LINT.c) $(GSSC_LINTS)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenklint: lint_gssd lint_gssc
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkcheck: $(CHKMANIFEST)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkinclude ../../Makefile.targ
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# EXPORT DELETE START
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# Special targets to clean up the source tree for export distribution
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# The WS target modifies the SCCS files as well, so a working workspace
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# can be shipped.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# Warning: These targets change the source tree, the first only at the
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# plain source level, but the second changes the guts!
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkEXPORT_SRC:
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(RM) Makefile+ gssd_clnt_stubs.c+ gssd_proc.c+ gssdtest.c+
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk sed -e "/^# EXPORT DELETE START/,/^# EXPORT DELETE END/d" \
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk < Makefile > Makefile+
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(MV) Makefile+ Makefile
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk sed -e "/EXPORT DELETE START/,/EXPORT DELETE END/d" \
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk < gssd_clnt_stubs.c > gssd_clnt_stubs.c+
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(MV) gssd_clnt_stubs.c+ gssd_clnt_stubs.c
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk sed -e "/EXPORT DELETE START/,/EXPORT DELETE END/d" \
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk < gssd_proc.c > gssd_proc.c+
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(MV) gssd_proc.c+ gssd_proc.c
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk sed -e "/EXPORT DELETE START/,/EXPORT DELETE END/d" \
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk < gssdtest.c > gssdtest.c+
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(MV) gssdtest.c+ gssdtest.c
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(CHMOD) 444 Makefile gssd_clnt_stubs.c gssd_proc.c gssdtest.c
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# EXPORT DELETE END
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk$(POFILE): $(DERIVED_FILES) .WAIT $(POFILES)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(RM) $@
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(CAT) $(POFILES) > $@
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkgeneric.po: FRC
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(RM) messages.po
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(XGETTEXT) $(XGETFLAGS) `$(GREP) -l gettext *.[ch]`
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(SED) "/^domain/d" messages.po > $@
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(RM) messages.po
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkFRC:
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk