# See /ux/core/libs/libc/make-ReadMe for build info.
NONREGEXP_C= \
 __ASCII_to_digit.o \
 _errlocale.o \
 _printmsg.o \
 a64l.o  \
 abort.o  \
 abs.o  \
 acltostr.o \
 assert.o \
 atoi.o  \
 atol.o  \
 atold.o  \
 audnetd.o \
 bsearch.o \
 btoc.o  \
 catgets.o \
 chownacl.o \
 cleanenv.o \
 clock.o  \
 closedir.o \
 confstr.o \
 copystring.o \
 cpacl.o  \
 ctime.o  \
 ctype.o  \
 difftime.o \
 disktab.o \
 div.o  \
 drand48.o \
 ecvt.o  \
 euc.o  \
 execvp.o \
 exit.o  \
 fgetccent.o \
 frexp.o  \
 ftwh.o  \
 gcvt.o  \
 getcccid.o \
 getccent.o \
 getccnam.o \
 getcdf.o \
 getclock.o \
 getfsent.o \
 getfsgent.o \
 getgrent.o \
 getlocale.o \
 getlogin.o \
 getpw.o  \
 getpwent.o \
 getspwent.o \
 getsubopt.o \
 getut.o  \
 getutx.o \
 grantpt.o \
 hidecdf.o \
 hsearch.o \
 initgroups.o \
 is_local_root.o \
 is_native_fs.o \
 isatty.o \
 killpg.o \
 l3.o  \
 l64a.o  \
 labs.o  \
 lckpwd.o \
 ldecvt.o \
 ldexp.o  \
 ldgcvt.o \
 ldiv.o  \
 lfind.o  \
 logname.o \
 lsearch.o \
 ltoa.o  \
 ltostr.o \
 malloc.o \
 memmove.o \
 mktemp.o \
 mktime.o \
 mktimer.o \
 mntent.o \
 modf.o  \
 net_aton.o \
 net_ntoa.o \
 nl_ctype.o \
 nlist.o  \
 opendir.o \
 perror.o \
 pstatwrap.o \
 ptsname.o \
 putpwent.o \
 qfdata.o \
 qfmul.o  \
 qfns.o  \
 qfsn.o  \
 qsort.o  \
 raise.o  \
 rand.o  \
 random.o \
 readdir.o \
 realpath.o	\
 regcmp.o \
 regex2.o \
 rewinddir.o \
 scandir.o \
 seekdir.o \
 setlocale2.o \
 setlocale90.o \
 sigsend.o \
 sigsetops.o \
 sleep.o  \
 ssignal.o \
 strcspn.o \
 strdup.o \
 strerror.o \
 strord.o \
 strpbrk.o \
 strrstr.o \
 strspn.o \
 strstr.o \
 strtoacl.o \
 strtok.o \
 swab.o  \
 sysconf.o \
 tell.o  \
 telldir.o \
 termios.o \
 tfind.o  \
 tsearch.o \
 ttyname.o \
 ttyslot.o \
 ultoa.o  \
 ultostr.o \
 unlockpt.o \
 wtmplog.o \
 getmount.o

NONREGEXP_ANSI= \
 NLSsetup.o \
 __fnmatch_sb.o \
 __fnmatch_std.o \
 __iswctype_std.o \
 __mbstopcs.o \
 __mbtopc.o \
 __pcstombs.o \
 __pctomb.o \
 __rpmatch_std.o \
 __strcoll_sb.o \
 __strcoll_std.o \
 __strxfrm_sb.o \
 __strxfrm_std.o \
 __wcscoll_std.o \
 __wcsxfrm_std.o \
 back_pos.o \
 backward.o \
 catopen.o \
 character.o \
 colval.o \
 errlst.o \
 fnmatch.o \
 forw_pos.o \
 forward.o \
 getdate.o \
 getenv.o \
 getopt.o \
 getwd.o \
 isalnum.o \
 isalpha.o \
 isascii.o \
 isblank.o \
 iscntrl.o \
 isctype.o \
 isdigit.o \
 isgraph.o \
 islower.o \
 isprint.o \
 ispunct.o \
 isspace.o \
 isupper.o \
 isxdigit.o \
 lc_load.o \
 localeconv.o \
 mblen.o \
 mbs.o \
 mbsadvance.o \
 mbscat.o \
 mbscmp.o \
 mbscpy.o \
 mbsinvalid.o \
 mbsncmp.o \
 mbspbrk.o \
 mbstomb.o \
 mbstowcs.o \
 mbswidth.o \
 mbtowc.o \
 nl_langinf.o \
 putenv.o \
 regex.o \
 regexp_jacket.o \
 replacement.o \
 rpmatch.o \
 strcoll.o \
 strfmon.o \
 strftime.o \
 strptime.o \
 strxfrm.o \
 toascii.o \
 tolower.o \
 toupper.o \
 wcstombs.o \
 wctomb.o

OTH_ANSI_EXT= \
 wordexp.o


REGEXP_ANSI= \
 __regcomp_std.o	\
 __regexec_std.o	\
 __reg_std_stubs.o \
 regexec.o \
 regcomp.o \
 regerror.o \
 regfree.o 

REGEXP_C= \
 regex90.o 

REGEXP_OBJS= $(REGEXP_ANSI) $(REGEXP_C)


REENT_OBJS =  \
 acltostr.ro \
 disktab.ro \
 drand48.ro \
 getgrent.ro \
 getlocale.ro \
 getlogin.ro \
 getpwent.ro \
 getspwent.ro \
 getut.ro \
 l64a.ro  \
 ltoa.ro  \
 ltostr.ro \
 ptsname.ro \
 readdir.ro \
 strerror.ro \
 strtoacl.ro \
 strtok.ro \
 ttyname.ro \
 ultoa.ro \
 ultostr.ro

REENT_ANSI_OBJS = 

BE_REENT_ANSI_OBJS =  \
 setlocale.bero 

PROD_REENT_ANSI_OBJS =  \
 setlocale.ro 

S1170_OBJS = \
 bsd_signal.o  \
 getdtablesize.o \
 gethostid.o  \
 getpagesize.o  \
 setreuid.o  \
 siginterrupt.o  \
 ualarm.o  \
 usleep.o  \
 utimes.o

S1170_ARCHIVE_ONLY= makecontext.o

#
# The following are the remaining routines needed to make libc meet
# the COSE API Specification 1170.
#
COSE_C= \
 basename.o \
 dirname.o \
 insque.o 

COSE_ANSI=\
 sighold.o \
 sigrelse.o \
 sigignore.o \
 sigset.o

BE_ANSIC_OBJS=\
 iconv.beo	\
 setlocale.beo

PROD_ANSIC_OBJS=\
 iconv.o 	\
 setlocale.o


COSE_OBJS = $(S1170_OBJS) $(COSE_C) $(COSE_ANSI)

# core/gcdnosysfs.o replaces getcwd for 9.x compatible (BE) version of libc.
NEWCWD= getcwd.o

# Macros corresponding to generic build rules

COBJS =	$(REGEXP_C) $(NONREGEXP_C) $(COSE_C) $(NEWCWD)

ANSIC_OBJS= $(REGEXP_ANSI) $(NONREGEXP_ANSI) __sysconf_dld.o

OTH_CLEAN= \
 memccpy.o \
 strncpy.o 

ANSI_CLEAN_OBJS= $(COSE_ANSI) $(S1170_OBJS) $(OTH_CLEAN)

ANSI_EXT= $(S1170_ARCHIVE_ONLY) $(OTH_ANSI_EXT)

ASM_PURE_OBJS = \
 mult32_xmpyu.o

# ASM_OBJS do not get built. It is here to provide
# the correct rules to the sources. context.o is
# only built for Archive libraries, if this is fixed
# in the future, then ASM_OBJS can be used in the OBJS
# list. Otherwise, if you want to add an item to be 
# built with ASM_OBJS rules for shared and archive, 
# create an ASM_REG_OBJS,
# include it in the ASM_OBJS list, but put the
# ASM_REG_OBJS in the OBJS list.

ASM_OBJS = \
 context.o

ASM_SED_OBJS = \
 calloc.o \
 datalock.o \
 memchr.o \
 memcmp.o \
 memcpy.o \
 memset.o \
 strcat.o \
 strchr.o \
 strcmp.o \
 strcpy.o \
 strlen.o \
 strnlen.o \
 strncat.o \
 strncmp.o \
 strrchr.o

# These "special" objects have unique build rules below, and
# don't use generic build rules.

SPECIAL_OBJS= syslog.o fsetaclent.o fcpacl.o \
  strtol.o strtoul.o strtoll.o strtoull.o \
  wordexp.o vxfs_subr_libc.o dial.o atof.o \
  statfsdev.o ftw64.o nftw64.o nftw2_64.o statfsdev64.o	\
  prealloc.o prealloc64.o setaclent.o devnm.o	\
  ftok.o mon.o remove.o glob.o statvxfs.o 	\
  ftw.o nftw.o nftw2.o

# Order to archive/link into library

OBJS= $(ASM_SED_OBJS) $(ASM_PURE_OBJS)	\
	$(NONREGEXP_C) $(NONREGEXP_ANSI) reg_expr.o \
	$(SPECIAL_OBJS) $(REENT_OBJS) $(REENT_ANSI_OBJS) \
	$(COSE_OBJS) $(OTH_CLEAN)

# BE Only Objects
BE_OBJS= $(BE_ANSIC_OBJS) $(BE_REENT_ANSI_OBJS)

# Product Only Objects - what shipped to customer
PROD_OBJS= $(PROD_ANSIC_OBJS) $(PROD_REENT_ANSI_OBJS)

# These are broken for shared libs until Davis
ARCHIVE_ONLY_OBJS= context.o makecontext.o
SHARED_ONLY_OBJS= __sysconf_dld.o 


CLUTTER= perror.msg getopt_lib.msg perror.cat getopt_lib.cat regcomp.cat \
	 perror_temp.c $(ARCHIVE_ONLY_OBJS) $(SHARED_ONLY_OBJS) $(REGEXP_OBJS)

# Default build flavor

FLAVOR= ../../archive_pa1

include $(FLAVOR)/make.flavor


# Catalog rules


reg_expr.o: $(REGEXP_OBJS)
	rm -f $@
	$(LD) -r -o $@ $?
	

perror.msg: perror_temp.c
	rm -f $@ 
	$(FINDMSG) $? > $@

perror_temp.c: $(SUBDIR)/errlst.c
	rm -f $@
	echo '#define NL_SETN 1' > $@
	$(CC) -C -E $? >> $@

getopt_lib.msg:	$(SUBDIR)/getopt.c
	rm -f $@ 
	$(FINDMSG) $? > $@

perror.cat getopt_lib.cat: $$(@:.cat=.msg)
	rm -f $@ 
	$(GENCAT) $@ $?

regcomp.cat: $(SUBDIR)/$$(@:.cat=.msg)
	rm -f $@ 
	$(GENCAT) $@ $?

#-------------------------------
# Files requiring explicit rules for compilation:
#-------------------------------


CC_64 = -D_FILE_OFFSET_BITS=64 -D_CREATE64_VERS -D__CREATE64_VERS -D_HPUX_SOURCE $(AEXT)
CC_32 = -D_FILE_OFFSET_BITS=32 $(AEXT)

statfsdev.o: $(SUBDIR)/statfsdev.c
	rm -f $@
	$(CC) $(AEXT) -D_LARGEFILE64_SOURCE $(CFLAGS) -c $? -o $@

statfsdev64.o: $(SUBDIR)/statfsdev64.c
	rm -f $@
	$(CC) $(CC_64) $(CFLAGS) -c $? -o $@

ftw.o: $(SUBDIR)/ftw.c
	rm -f $@
	$(CC) $(CC_32) $(CFLAGS) -c $? -o $@

ftw64.o: $(SUBDIR)/ftw.c
	rm -f $@
	$(CC) $(CC_64) $(CFLAGS) -c $? -o $@

nftw.o: $(SUBDIR)/nftw.c
	rm -f $@
	$(CC) $(CC_32) $(CFLAGS) -c $? -o $@

nftw64.o: $(SUBDIR)/nftw.c
	rm -f $@
	$(CC) $(CC_64) $(CFLAGS) -c $? -o $@

nftw2.o: $(SUBDIR)/nftw2.c
	rm -f $@
	$(CC) $(CC_32) $(CFLAGS) -c $? -o $@

nftw2_64.o: $(SUBDIR)/nftw2.c
	rm -f $@
	$(CC) $(CC_64) $(CFLAGS) -c $? -o $@

prealloc.o: $(SUBDIR)/prealloc64.c
	rm -f $@
	$(CC) $(CC_32) -D_LARGEFILE_SOURCE $(CFLAGS) -c $? -o $@

prealloc64.o: $(SUBDIR)/prealloc64.c
	rm -f $@
	$(CC) $(CC_64) -D_LARGEFILE_SOURCE $(CFLAGS) -c $? -o $@

syslog.o: $(SUBDIR)/syslog.c
	rm -f $@
	$(CC) $(CFLAGS) $(NONANSI) +O2 -c $? -o $@

fsetaclent.o: $(SUBDIR)/setaclent.c
	rm -f $@
	$(CC) $(CFLAGS) -D_FILE_OFFSET_BITS=64 -DFVERSION -c $? -o $@

setaclent.o: $(SUBDIR)/setaclent.c
	rm -f $@
	$(CC) $(CFLAGS) -D_FILE_OFFSET_BITS=64 -c $? -o $@

fcpacl.o: $(SUBDIR)/cpacl.c
	rm -f $@
	$(CC) $(CFLAGS) -DFVERSION -c $? -o $@

strtol.o: $(SUBDIR)/strtoll.c
	rm -f $@
	$(CC) -Aa -DSDEF_NAME="strtol" -DNAME="_strtol" -D_HPUX_SOURCE \
	  $(CFLAGS) -c $? -o $@

strtoul.o: $(SUBDIR)/strtoull.c
	rm -f $@
	$(CC) -Aa  -DSDEF_NAME="strtoul" -DNAME="_strtoul"  -D_HPUX_SOURCE \
	  $(CFLAGS) -c $? -o $@

strtoll.o: $(SUBDIR)/strtoll.c
	rm -f $@
	$(CC) -Aa -Ae -D__STDC_EXT__  -DNAME="__strtoll" -D_HPUX_SOURCE \
	  -D_NAMESPACE_CLEAN $(CFLAGS) -c $? -o $@

strtoull.o: $(SUBDIR)/strtoull.c
	rm -f $@
	$(CC) -Aa -Ae -D__STDC_EXT__  -DNAME="__strtoull" -D_HPUX_SOURCE \
	  -D_NAMESPACE_CLEAN $(CFLAGS) -c $? -o $@

atof.o: $(SUBDIR)/$$(@:.o=.c)
	rm -f $@
	$(CC) $(AEXT) -D_NAMESPACE_CLEAN $(CFLAGS) -c $? -o $@

vxfs_subr_libc.o: $(SUBDIR)/$$(@:.o=.c)
	rm -f $@
	$(CC) $(AEXT) -D_HPUX_SOURCE -DBIGFS -D__HIGHC__ $(CFLAGS) -c $? -o $@

dial.o: $(SUBDIR)/$$(@:.o=.c)
	rm -f $@
	$(CC) -D_HPUX_SOURCE  -DDATAKIT $(CFLAGS) $(NONANSI) -c $? -o $@

devnm.o:	$(SUBDIR)/$$(@:.o=.c)
	rm -f $@
	$(CC) -D_FILE_OFFSET_BITS=64 $(CFLAGS) $(NONANSI) -c $? -o $@

ftok.o:	$(SUBDIR)/$$(@:.o=.c)
	rm -f $@
	$(CC) -D_FILE_OFFSET_BITS=64 $(CFLAGS) -c $? -o $@

mon.o:	$(SUBDIR)/$$(@:.o=.c)
	rm -f $@
	$(CC) -D_FILE_OFFSET_BITS=64 $(CFLAGS) $(NONANSI) -c $? -o $@

remove.o:	$(SUBDIR)/$$(@:.o=.c)
	rm -f $@
	$(CC) -D_FILE_OFFSET_BITS=64 $(CFLAGS) -c $? -o $@

glob.o:	$(SUBDIR)/$$(@:.o=.c)
	rm -f $@
	$(CC) $(AEXT) -D_FILE_OFFSET_BITS=64 -D_HPUX_SOURCE $(CFLAGS) -c $? -o $@

statvxfs.o:	$(SUBDIR)/$$(@:.o=.c)
	rm -f $@
	$(CC) $(AEXT) -D_FILE_OFFSET_BITS=64 -D_HPUX_SOURCE $(CFLAGS) -c $? -o $@
