Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!cs.utexas.edu!wuarchive!udel!princeton!notecnirp!nfs From: nfs@notecnirp.Princeton.EDU (Norbert Schlenker) Newsgroups: comp.os.minix Subject: Re: 1.5.3 library order Summary: An alternative method Keywords: library order Message-ID: <24485@princeton.Princeton.EDU> Date: 25 Feb 90 19:17:31 GMT References: <1659@crash.cts.com> Sender: news@princeton.Princeton.EDU Reply-To: nfs@notecnirp.UUCP (Norbert Schlenker) Organization: Dept. of Computer Science, Princeton University Lines: 195 In article <1659@crash.cts.com> cwr@pnet01.cts.com (Will Rose) writes: >I've managed to put together a 1.5.3 library order that will compile all >the commands, including those in the sub-directories, but it was not as >straightforward as I hoped... >... >Robert Hall (rhall@nosc.mil) sent me a message as to how a library order >might be built, and I used his algorithm: >[long description deleted] >... >For those that don't want to go through this fan-dance, I've appended my >library order below. It includes the new, fast, string library. If you >use this, you may need to explicitly delete the orginal memcpy, since >the new version is included in memmove. >... >[Will Rose's library order deleted] Until lorder and tsort are fixed (and maybe even after that), I think the following approach is better. It isn't better because it requires less work - it's better because it makes more sense. Here is the Makefile that I used under v1.4b to build libc.a. I modified it slightly for v1.5.0, but it probably needs to be updated for v1.5.3, because there are many new routines. I'd do it myself, but I have my own peculiar library (POSIX compatible and with my stdio routines) so the routine names don't match the ones distributed with 1.5.x. Surely some kind soul will be willing to update this for 1.5.3. Finally, how about something along these lines in future distributions? I vote for no more library order problems! Norbert -------------------------------------------------------------------------- AMOEBA = amoeba.s uniqport.s CURSES = curses.s termcap.s REGEXP = regexp.s regsub.s MISCELLANEOUS = \ crypt.s execn.s ffs.s getopt.s getpass.s gtty.s \ itoa.s lock.s lrand.s lsearch.s memccpy.s mktemp.s peekpoke.s \ popen.s portio.s putenv.s stderr.s stty.s swab.s syslib.s \ seekdir.s telldir.s NOT_QUITE_STDIO = printk.s prints.s POSIX_OHHELL = utime.s ASSERT = assert.s STRERROR = strerror.s TIME = ctime.s time.s STDIO = fclose.s fopen.s freopen.s \ scanf.s \ fgets.s fread.s gets.s fgetc.s ungetc.s \ fprintf.s sprintf.s vsprintf.c doprintf.s \ perror.s \ fputs.s fwrite.s fputc.s \ fseek.s ftell.s setbuf.s tmpnam.s \ cleanup.s fflush.s \ rename.s \ printdat.s STDLIB_OUT_OF_ORDER = abort.s system.s POSIX_OUT_OF_ORDER = \ execlp.s exec.s \ getcwd.s \ getlogin.s \ getdents.s getgrent.s getpwent.s \ ttyname.s \ closedir.s opendir.s readdir.s rewinddir.s \ pathconf.s fpathconf.s \ sleep.s POSIX = \ _exit.s \ access.s alarm.s \ chdir.s chmod.s chown.s close.s creat.s \ ctermid.s cuserid.s \ dup.s dup2.s \ fdopen.s fork.s fstat.s \ getegid.s geteuid.s getgid.s \ getgroups.s getpid.s getppid.s \ getuid.s \ isatty.s \ kill.s \ link.s lseek.s \ mkfifo.s \ open.s \ pause.s pipe.s \ read.s \ setgid.s setuid.s stat.s sysconf.s \ times.s \ umask.s unlink.s \ wait.s write.s MEMORY_ALLOCATION = malloc.s UNIX = \ brk.s chroot.s ioctl.s mknod.s mount.s \ ptrace.s stime.s sync.s umount.s STDLIB = \ abs.s atexit.s atoi.s atol.s \ bsearch.s div.s getenv.s \ labs.s ldiv.s qsort.s rand.s \ strtol.s strtoul.s CTYPE = ctype.s SETJMP = setjmp.s SIGNAL = signal.s catchsig.s COMPILER_INTERNAL = \ adi.s and.s blm.s cii.s cmi4.s cms.s cmu4.s com.s csa2.s csb2.s \ cuu.s _dupl.s dvi4.s dvu4.s exg.s fakfp.s gto.s iaar.s ilar.s \ inn.s ior.s isar.s lar2.s loi.s mli4.s mon.s nop.s rck.s \ rmi4.s rmu4.s sar2.s sbi.s set.s sti.s strhp.s xor.s \ ret6.s ret8.s lfr6.s lfr8.s retarea.s return.s stb.s COMPILER_TRAP = unknown.s fat.s trp.s vars.s EXIT = stop.s exit.s MINIX_INTERFACE = call.s sendrec.s message.s NON_STANDARD_STRING = \ bcmp.s bcopy.s bzero.s \ index.s rindex.s STRING = \ memchr.s memcmp.s memmove.s memset.s \ strcoll.s strxfrm.s \ strstr.s strcat.s strchr.s strcmp.s strcpy.s strcspn.s strlen.s \ strncat.s strncmp.s strncpy.s strpbrk.s strrchr.s strspn.s strtok.s ANSI_COMMON = errno.s libc.a: $(AMOEBA) libc.a: $(CURSES) libc.a: $(REGEXP) libc.a: $(MISCELLANEOUS) libc.a: $(NOT_QUITE_STDIO) libc.a: $(POSIX_OHHELL) libc.a: $(ASSERT) libc.a: $(STRERROR) libc.a: $(STDIO) libc.a: $(STDLIB_OUT_OF_ORDER) libc.a: $(TIME) libc.a: $(POSIX_OUT_OF_ORDER) libc.a: $(POSIX) libc.a: $(MEMORY_ALLOCATION) libc.a: $(UNIX) libc.a: $(STDLIB) libc.a: $(CTYPE) libc.a: $(SETJMP) libc.a: $(SIGNAL) libc.a: $(COMPILER_INTERNAL) libc.a: $(COMPILER_TRAP) libc.a: $(EXIT) libc.a: $(MINIX_INTERFACE) libc.a: $(NON_STANDARD_STRING) libc.a: $(STRING) libc.a: $(ANSI_COMMON) ar q libc.a $(AMOEBA) ar q libc.a $(CURSES) ar q libc.a $(REGEXP) ar q libc.a $(MISCELLANEOUS) ar q libc.a $(NOT_QUITE_STDIO) ar q libc.a $(POSIX_OHHELL) ar q libc.a $(ASSERT) ar q libc.a $(STRERROR) ar q libc.a $(STDIO) ar q libc.a $(STDLIB_OUT_OF_ORDER) ar q libc.a $(TIME) ar q libc.a $(POSIX_OUT_OF_ORDER) ar q libc.a $(POSIX) ar q libc.a $(MEMORY_ALLOCATION) ar q libc.a $(UNIX) ar q libc.a $(STDLIB) ar q libc.a $(CTYPE) ar q libc.a $(SETJMP) ar q libc.a $(SIGNAL) ar q libc.a $(COMPILER_INTERNAL) ar q libc.a $(COMPILER_TRAP) ar q libc.a $(EXIT) ar q libc.a $(MINIX_INTERFACE) ar q libc.a $(NON_STANDARD_STRING) ar q libc.a $(STRING) ar q libc.a $(ANSI_COMMON)