dmake 3.6 patch 1 (part 04/05)
Dennis Vadura
dvadura at watdragon.waterloo.edu
Thu Nov 1 12:29:16 AEST 1990
#!/bin/sh
# this is part 4 of a multipart archive
# do not concatenate these parts, unpack them in order with /bin/sh
# file dm36.p1 continued
#
CurArch=4
if test ! -r s2_seq_.tmp
then echo "Please unpack part 1 first!"
exit 1; fi
( read Scheck
if test "$Scheck" != $CurArch
then echo "Please unpack part $Scheck next!"
exit 1;
else exit 0; fi
) < s2_seq_.tmp || exit 1
sed 's/^X//' << 'SHAR_EOF' >> dm36.p1
XX***************
XX*** 34,39 ****
XX--- 34,46 ----
XX *
XX */
XX
XX+ #if defined (_MSC_VER)
XX+ # if _MSC_VER < 500
XX+ Force a compile-time blowup.
XX+ Do not define define _MSC_VER for MSC compilers ealier than 5.0.
XX+ # endif
XX+ #endif
XX+
XX /* define this for configurations that don't have the coreleft function
XX * so that the code compiles. To my knowledge coreleft exists only on
XX * Turbo C, but it is needed here since the function is used in many debug
XX***************
XX*** 48,57 ****
XX # define SIGTERM SIGINT
XX #endif
XX
XX! /* Fixes unimplemented line buffering for MSC
XX * MSC _IOLBF is the same as _IOFBF
XX- * This redefinition causes the following warning, but ignore it
XX- * c:/usr/include/stdio.h(129) : warning C4005: '_IOLBF' : macro redefinition
XX */
XX #if defined(MSDOS) && defined (_MSC_VER)
XX # undef _IOLBF
XX--- 55,62 ----
XX # define SIGTERM SIGINT
XX #endif
XX
XX! /* Fixes unimplemented line buffering for MSC 5.x and 6.0.
XX * MSC _IOLBF is the same as _IOFBF
XX */
XX #if defined(MSDOS) && defined (_MSC_VER)
XX # undef _IOLBF
XX***************
XX*** 59,65 ****
XX #endif
XX
XX /* in alloc.h: size_t is redefined
XX! * defined in stdio.h which is included alloc.h
XX */
XX #if defined(MSDOS) && defined (_MSC_VER)
XX # define _TYPES_
XX--- 64,70 ----
XX #endif
XX
XX /* in alloc.h: size_t is redefined
XX! * defined in stdio.h which is included by alloc.h
XX */
XX #if defined(MSDOS) && defined (_MSC_VER)
XX # define _TYPES_
XX*** /u2/dvadura/src/generic/dmake/src-patchlvl1/msdos/exec.h Sat Oct 6 12:05:40 1990
XX--- msdos/exec.h Sun Oct 28 23:16:16 1990
XX***************
XX*** 9,16 ****
XX #endif
XX #endif
XX
XX! extern int exec ANSI((int, char far *, char far *, unsigned int,
XX! unsigned int, char far *));
XX
XX #ifndef MK_FP
XX #define MK_FP(seg,ofs) \
XX--- 9,15 ----
XX #endif
XX #endif
XX
XX! extern int exec ANSI((int, char far *, char far *, unsigned int, char far *));
XX
XX #ifndef MK_FP
XX #define MK_FP(seg,ofs) \
XX*** /u2/dvadura/src/generic/dmake/src-patchlvl1/msdos/exec.asm Sat Oct 6 12:05:50 1990
XX--- msdos/exec.asm Sun Oct 28 23:16:15 1990
XX***************
XX*** 1,6 ****
XX! ; You must assemble this file with masm (or tasm) flag
XX! ; /dmmodel where model is one of {small, compact, medium, large}
XX ;
XX ifdef msmall
XX .model small
XX argbase equ 4
XX--- 1,44 ----
XX! ; SYNOPSIS
XX! ; Exec code for the swapping version of DOS spawn.
XX! ;
XX! ; DESCRIPTION
XX! ; This code is a model independent version of DOS exec that will swap
XX! ; the calling process out to secondary storage prior to running the
XX! ; child. The prototype for calling the exec function is below.
XX ;
XX+ ; exec( int swap, char far *program, char far *cmdtail,
XX+ ; int environment_seg, int env_size, char far *tmpfilename );
XX+ ;
XX+ ;
XX+ ; To assemble this file issue the command:
XX+ ;
XX+ ; tasm /mx /t /dmmodel exec.asm
XX+ ;
XX+ ; where 'model' is one of {small, compact, medium, large}, you may
XX+ ; also use MASM 5.1 to assemble this file, in this case simply replace
XX+ ; 'tasm' with 'masm' in the above command line.
XX+ ;
XX+ ; AUTHOR
XX+ ; Dennis Vadura, dvadura at watdragon.uwaterloo.ca
XX+ ; CS DEPT, University of Waterloo, Waterloo, Ont., Canada
XX+ ;
XX+ ; COPYRIGHT
XX+ ; Copyright (c) 1990 by Dennis Vadura. All rights reserved.
XX+ ;
XX+ ; This program is free software; you can redistribute it and/or
XX+ ; modify it under the terms of the GNU General Public License
XX+ ; (version 1), as published by the Free Software Foundation, and
XX+ ; found in the file 'LICENSE' included with this distribution.
XX+ ;
XX+ ; This program is distributed in the hope that it will be useful,
XX+ ; but WITHOUT ANY WARRANTY; without even the implied warrant of
XX+ ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
XX+ ; GNU General Public License for more details.
XX+ ;
XX+ ; You should have received a copy of the GNU General Public License
XX+ ; along with this program; if not, write to the Free Software
XX+ ; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
XX+ ;
XX ifdef msmall
XX .model small
XX argbase equ 4
XX***************
XX*** 21,28 ****
XX a_prog equ <bp+argbase+2>
XX a_tail equ <bp+argbase+6>
XX a_env equ <bp+argbase+10>
XX! a_esiz equ <bp+argbase+12>
XX! a_tmp equ <bp+argbase+14>
XX
XX
XX ; Define all useful equ's
XX--- 59,65 ----
XX a_prog equ <bp+argbase+2>
XX a_tail equ <bp+argbase+6>
XX a_env equ <bp+argbase+10>
XX! a_tmp equ <bp+argbase+12>
XX
XX
XX ; Define all useful equ's
XX***************
XX*** 49,57 ****
XX old_ss dw ? ; save stack seg across exec
XX old_sp dw ? ; save stack ptr across exec
XX progsize dw ? ; original size of the program
XX resend dw ? ; paragraph where resident code ends
XX envseg dw ? ; paragraph of environment segment
XX- envsize dw ? ; length of environment in paragraphs
XX psp dw ? ; our own psp
XX swap dw ? ; swapping selection flag
XX retcode dw ? ; return code from exec
XX--- 86,94 ----
XX old_ss dw ? ; save stack seg across exec
XX old_sp dw ? ; save stack ptr across exec
XX progsize dw ? ; original size of the program
XX+ rootsize dw ? ; size of base root kept during swap
XX resend dw ? ; paragraph where resident code ends
XX envseg dw ? ; paragraph of environment segment
XX psp dw ? ; our own psp
XX swap dw ? ; swapping selection flag
XX retcode dw ? ; return code from exec
XX***************
XX*** 126,132 ****
XX ; First define the critical-error and control-brk handlers.
XX ; The critical error handler simply pops the machine state and returns an
XX ; access denied result code.
XX! crit_err_handler proc near
XX add sp, 6 ; ip/cs/flags ...
XX pop ax
XX pop bx
XX--- 163,169 ----
XX ; First define the critical-error and control-brk handlers.
XX ; The critical error handler simply pops the machine state and returns an
XX ; access denied result code.
XX! crit_err_handler proc far
XX add sp, 6 ; ip/cs/flags ...
XX pop ax
XX pop bx
XX***************
XX*** 150,174 ****
XX
XX ;-----------------------------------------------------------------------------
XX ; Here we set the interrupted flag, and terminate the currently running
XX! ; ess. proc
XX! ctl_brk_handler proc near
XX inc cs:interrupted ; set the flag
XX
XX ; Make certain it isn't us that is going to get terminated.
XX ; There is a small window where the in_exec flag is set but the child is
XX ; not running yet, I assume that DOS doesn't test for ctl_brk at that time
XX! ; as it is bussily creating a new ess. proc
XX cmp cs:in_exec,0
XX! je just_return
XX! mov ax, 04cffH ; stop the sucker!
XX! int 21H
XX! just_return: ret
XX ctl_brk_handler endp
XX
XX
XX ;-----------------------------------------------------------------------------
XX ; Something really nasty happened, so abort the exec call and exit.
XX! ; This kills the calling ess proc altogether, and is a very nasty way of
XX ; termination since files may still be open etc.
XX abort_exec_rhdr label near
XX mov dx, offset error_rhdr
XX--- 187,211 ----
XX
XX ;-----------------------------------------------------------------------------
XX ; Here we set the interrupted flag, and terminate the currently running
XX! ; process.
XX! ctl_brk_handler proc far
XX! clc ; make sure carry is clear
XX inc cs:interrupted ; set the flag
XX
XX ; Make certain it isn't us that is going to get terminated.
XX ; There is a small window where the in_exec flag is set but the child is
XX ; not running yet, I assume that DOS doesn't test for ctl_brk at that time
XX! ; as it is bussily creating a new process.
XX cmp cs:in_exec,0
XX! je just_return ; note this implies CF == 0
XX! stc ; set CF to abort child
XX! just_return: iret
XX ctl_brk_handler endp
XX
XX
XX ;-----------------------------------------------------------------------------
XX ; Something really nasty happened, so abort the exec call and exit.
XX! ; This kills the calling process altogether, and is a very nasty way of
XX ; termination since files may still be open etc.
XX abort_exec_rhdr label near
XX mov dx, offset error_rhdr
XX***************
XX*** 187,196 ****
XX jmp print_it
XX abort_exec proc near
XX mov dx, offset error_string
XX! print_it: mov bx, [swap]
XX call [free_resource+bx]
XX mov ax, cs
XX mov ds, ax
XX mov ah, 9
XX int 21H
XX kill_program: mov ax, 04cffH ; nuke it!
XX--- 224,235 ----
XX jmp print_it
XX abort_exec proc near
XX mov dx, offset error_string
XX! print_it: push dx
XX! mov bx, [swap]
XX call [free_resource+bx]
XX mov ax, cs
XX mov ds, ax
XX+ pop dx
XX mov ah, 9
XX int 21H
XX kill_program: mov ax, 04cffH ; nuke it!
XX***************
XX*** 402,408 ****
XX ; - walk DOS allocation chain and write out all other segments owned by
XX ; the current program that are contiguous with the _psp segment
XX ; - copy the environment down to low memory
XX! ; - resize the current _psp segment to savesize+envsize.
XX ; - free all segments belonging to program except current _psp segment
XX swap_out proc near
XX mov ax, 05800H ; get memory alocation strategy
XX--- 441,447 ----
XX ; - walk DOS allocation chain and write out all other segments owned by
XX ; the current program that are contiguous with the _psp segment
XX ; - copy the environment down to low memory
XX! ; - resize the current _psp segment to savesize
XX ; - free all segments belonging to program except current _psp segment
XX swap_out proc near
XX mov ax, 05800H ; get memory alocation strategy
XX***************
XX*** 427,432 ****
XX--- 466,472 ----
XX add bx, ax ; bx is size of program to keep
XX sub si, bx ; si is # of paragraphs to save.
XX add di, bx ; di is paragraph to start at
XX+ mov rootsize, bx
XX mov resend, di ; cs:resend is saved start para
XX mov al, seg_no_alloc ; set no allocation for segment
XX call write_segment
XX***************
XX*** 434,441 ****
XX
XX ; We have now saved the portion of the program segment that will not remain
XX ; resident during the exec. We should now walk the DOS allocation chain and
XX! ; write out all other segments owned by the current ess. proc
XX! mov ax, [psp]
XX dec ax
XX mov es, ax
XX mov bx, offset write_segment_data
XX--- 474,481 ----
XX
XX ; We have now saved the portion of the program segment that will not remain
XX ; resident during the exec. We should now walk the DOS allocation chain and
XX! ; write out all other segments owned by the current process.
XX! save_segments: mov ax, [psp]
XX dec ax
XX mov es, ax
XX mov bx, offset write_segment_data
XX***************
XX*** 443,486 ****
XX jc abort_swap_out
XX
XX ; Now we must walk the chain of allocated memory blocks again and free
XX! ; all those that are owned by the current ess, proc except the one that is
XX! ; the current ess' proc psp.
XX! free_segments: mov es, [psp]
XX mov bx, offset free_dos_segment
XX call walk_arena_chain
XX! jnc copy_environ
XX jmp abort_exec_free ; can't fix it up now.
XX
XX! ; we have now written all segments that belong to the program to some
XX! ; other resource. We can now copy the environment and resize the psp
XX! ; segment.
XX! copy_environ: mov ax, [envseg] ; get the environment segment
XX! or ax, ax ; skip copy if it's null
XX! je resize_program
XX! push ds
XX! push es
XX! mov bx, [resend] ; here is where the environ goes
XX! mov es, bx
XX! mov cx, [envsize]
XX! add bx, cx
XX! sub bx, [psp]
XX! mov [envsize], bx ; bx is size of program after
XX! shl cx, 1 ; environ is copied.
XX! shl cx, 1
XX! shl cx, 1
XX! shl cx, 1
XX! mov ds, ax ; ds:si is source address
XX! xor si, si ; es:di is dest address
XX! mov di, si ; cx is count in bytes.
XX! call copy_data
XX! mov [envseg], es ; point the envseg at the
XX! pop es ; right spot
XX! pop ds
XX!
XX! ; We now resize the program to the size specified by cs:envsize. This will
XX! ; free the memory taken up by the current program segment.
XX resize_program: mov es, [psp] ; es is segment to resize.
XX! mov bx, [envsize] ; bx is size of segment.
XX mov ah, 04aH ; resize memory block
XX int 21H
XX jnc swap_out_ok
XX--- 483,502 ----
XX jc abort_swap_out
XX
XX ; Now we must walk the chain of allocated memory blocks again and free
XX! ; all those that are owned by the current process, except the one that is
XX! ; the current process' psp.
XX! free_segments: mov ax, [psp]
XX! dec ax
XX! mov es,ax
XX mov bx, offset free_dos_segment
XX call walk_arena_chain
XX! jnc resize_program
XX jmp abort_exec_free ; can't fix it up now.
XX
XX! ; We now resize the program to the size specified by cs:rootsize. This will
XX! ; free most of the memory taken up by the current program segment.
XX resize_program: mov es, [psp] ; es is segment to resize.
XX! mov bx, [rootsize] ; bx is size of segment.
XX mov ah, 04aH ; resize memory block
XX int 21H
XX jnc swap_out_ok
XX***************
XX*** 513,530 ****
XX no_swap_out: cmp [interrupted], 0 ; were we interrupted?
XX jne leave_exec ; yep, so clean up, don't exec
XX
XX ; set up the parameter block for the DOS exec call.
XX ; offset contents
XX ; 00 segment address of environment to be passed,
XX ; 0 => use parents env.
XX! ; 02 pointer to command tail for new ess. proc
XX ; 06 pointer to fcb1
XX ; 0a pointer to fcb2
XX mov cx, cs
XX mov [word ptr ex_cmdtail], offset cmdtail
XX mov [word ptr ex_cmdtail+2], cx
XX- mov ax, [envseg]
XX- mov [ex_envseg], ax
XX
XX ; set up registers for exec call
XX ; ds:dx - pointer to pathname of program to execute
XX--- 529,557 ----
XX no_swap_out: cmp [interrupted], 0 ; were we interrupted?
XX jne leave_exec ; yep, so clean up, don't exec
XX
XX+ ; free passed in environment block if it is non zero.
XX+ ; This way the parent program does not need to free it.
XX+ mov ax, [envseg]
XX+ or ax, ax
XX+ je setup_block
XX+ push ax
XX+ mov es, ax
XX+ mov ah, 49H
XX+ int 21H
XX+ pop ax
XX+
XX ; set up the parameter block for the DOS exec call.
XX ; offset contents
XX ; 00 segment address of environment to be passed,
XX ; 0 => use parents env.
XX! ; 02 pointer to command tail for new process.
XX ; 06 pointer to fcb1
XX ; 0a pointer to fcb2
XX+ setup_block: mov ax, [envseg]
XX+ mov [ex_envseg], ax
XX mov cx, cs
XX mov [word ptr ex_cmdtail], offset cmdtail
XX mov [word ptr ex_cmdtail+2], cx
XX
XX ; set up registers for exec call
XX ; ds:dx - pointer to pathname of program to execute
XX***************
XX*** 560,574 ****
XX cbw
XX mov [retcode], ax
XX
XX! leave_exec: mov [in_exec], 0 ; all done, reset in_exec flag
XX! cmp [swap], 0 ; check swap, if non-zero swap back in
XX je no_swap_in
XX call swap_in
XX- no_swap_in: ret
XX- do_exec endp
XX
XX
XX
XX ;==============================================================================
XX ; Everything past this point is overwriten with the environment and new
XX ; program after the currently executing program is swapped out.
XX--- 587,605 ----
XX cbw
XX mov [retcode], ax
XX
XX! leave_exec: cmp [swap], 0 ; check swap, if non-zero swap back in
XX je no_swap_in
XX call swap_in
XX
XX+ ; Clear the in_exec after the swap back in. This way we are guaranteed to
XX+ ; get parent in and the resources freed should a ^C be hit when we are reading
XX+ ; the image in.
XX+ no_swap_in: mov [in_exec], 0
XX+ ret
XX+ do_exec endp
XX
XX
XX+
XX ;==============================================================================
XX ; Everything past this point is overwriten with the environment and new
XX ; program after the currently executing program is swapped out.
XX***************
XX*** 596,602 ****
XX
XX
XX ;-----------------------------------------------------------------------------
XX! ; This routine is used to walk the DOS alocated memory block chain and,
XX ; starting at address supplied in the es register. For each block it
XX ; calls the routine specified by the bx register with the segment length
XX ; in si, and it's address in di. It does not apply the routine to the
XX--- 627,633 ----
XX
XX
XX ;-----------------------------------------------------------------------------
XX! ; This routine is used to walk the DOS allocated memory block chain
XX ; starting at address supplied in the es register. For each block it
XX ; calls the routine specified by the bx register with the segment length
XX ; in si, and it's address in di. It does not apply the routine to the
XX***************
XX*** 612,625 ****
XX mov di, es
XX inc di
XX mov ax, word ptr es:1
XX cmp ax, cs:psp ; is it owned by us?
XX jne walk_done ; NOPE! -- all done
XX! cmp di, cs:psp ; make sure we don't
XX! je next_block ; touch our psp
XX push di
XX push si
XX push bx
XX! call bx ; handle the segment
XX pop bx
XX pop si
XX pop di
XX--- 643,663 ----
XX mov di, es
XX inc di
XX mov ax, word ptr es:1
XX+
XX+ ; Stop the search if the block is NOT owned by us. Ignore our own psp block
XX+ ; and our environment segment block.
XX cmp ax, cs:psp ; is it owned by us?
XX jne walk_done ; NOPE! -- all done
XX! cmp di, cs:envseg ; skip our environment
XX! je next_block
XX! cmp di, cs:psp ; skip our psp
XX! je next_block
XX!
XX! ; Now save state and call the routine pointed at by [bx].
XX push di
XX push si
XX push bx
XX! call bx
XX pop bx
XX pop si
XX pop di
XX***************
XX*** 818,825 ****
XX ; This is the main entry routine into the swap code and corresponds to the
XX ; following C function call:
XX ;
XX! ; exec( int swap, char far *program, char far *cmdtail,
XX! ; int environment_seg, int env_size, char far *tmpfilename );
XX ;
XX ; Exec performs the following:
XX ; 1. set up the local code segment copies of arguments to the exec call.
XX--- 856,863 ----
XX ; This is the main entry routine into the swap code and corresponds to the
XX ; following C function call:
XX ;
XX! ; exec( int swap, char far *program, char far *cmdtail, int environment_seg,
XX! ; char far *tmpfilename );
XX ;
XX ; Exec performs the following:
XX ; 1. set up the local code segment copies of arguments to the exec call.
XX***************
XX*** 827,839 ****
XX ; stack.
XX ; 3. save old interrupt vectors for ctrl-brk.
XX ; 4. install our own handler for the ctrl-brk interrupt, our handler
XX! ; terminates the current running ess, proc and returns with non-zero
XX ; status code.
XX ; 5. get our psp
XX ; 6. setup arguments for exec call
XX ; 7. exec the program, save result code on return.
XX ; 8. restore previous ctrl-brk and crit-error handler.
XX! ; 9. restore previous ess proc stack, and segment registers.
XX ; 10. return from exec with child result code in AX
XX ; and global _Interrupted flag set to true if child execution was
XX ; interrupted.
XX--- 865,877 ----
XX ; stack.
XX ; 3. save old interrupt vectors for ctrl-brk.
XX ; 4. install our own handler for the ctrl-brk interrupt, our handler
XX! ; terminates the current running process, and returns with non-zero
XX ; status code.
XX ; 5. get our psp
XX ; 6. setup arguments for exec call
XX ; 7. exec the program, save result code on return.
XX ; 8. restore previous ctrl-brk and crit-error handler.
XX! ; 9. restore previous process stack, and segment registers.
XX ; 10. return from exec with child result code in AX
XX ; and global _Interrupted flag set to true if child execution was
XX ; interrupted.
XX***************
XX*** 862,869 ****
XX mov es:swap, ax
XX mov ax, ss:[a_env] ; save env seg to use
XX mov es:envseg, ax
XX- mov ax, ss:[a_esiz] ; get environment's size
XX- mov es:envsize, ax
XX
XX mov di, offset cs:cmdpath ; copy the command
XX lds si, ss:[a_prog] ; 65 bytes worth
XX--- 900,905 ----
XX*** /u2/dvadura/src/generic/dmake/src-patchlvl1/msdos/config.mk Thu Oct 4 09:24:52 1990
XX--- msdos/config.mk Sun Oct 28 23:16:14 1990
XX***************
XX*** 6,12 ****
XX
XX # Memory model to compile for
XX # set to s - small, m - medium, c - compact, l - large
XX! MODEL = c
XX
XX STARTUPFILE = $(OS)/startup.mk
XX
XX--- 6,16 ----
XX
XX # Memory model to compile for
XX # set to s - small, m - medium, c - compact, l - large
XX! .IF $(DEBUG)
XX! MODEL = l
XX! .ELSE
XX! MODEL = c
XX! .END
XX
XX STARTUPFILE = $(OS)/startup.mk
XX
XX***************
XX*** 18,25 ****
XX LDTMPLIB = <+$(LDLIBS:s,/,\\,:t"+\n")\n+>
XX
XX # Debug flags
XX! DB_CFLAGS = -DDBUG -v
XX! DB_LDFLAGS = /v
XX DB_LDLIBS =
XX
XX # NO Debug flags
XX--- 22,29 ----
XX LDTMPLIB = <+$(LDLIBS:s,/,\\,:t"+\n")\n+>
XX
XX # Debug flags
XX! DB_CFLAGS = -DDBUG
XX! DB_LDFLAGS =
XX DB_LDLIBS =
XX
XX # NO Debug flags
XX***************
XX*** 31,38 ****
XX CFLAGS += -I$(OS)
XX
XX # Common MSDOS source files.
XX! # Define NOSWAP to non-null for the swap code to be excluded on making.
XX! .IF $(NOSWAP) == $(NULL)
XX SWP_SRC = find.c spawn.c
XX ASRC += exec.asm
XX .END
XX--- 35,44 ----
XX CFLAGS += -I$(OS)
XX
XX # Common MSDOS source files.
XX! # Define SWAP to anything but 'y' for the swap code to be excluded on making.
XX! # Swapping for DOS versions is enabled by default.
XX! SWAP *= y
XX! .IF $(SWAP) == y
XX SWP_SRC = find.c spawn.c
XX ASRC += exec.asm
XX .END
XX*** /u2/dvadura/src/generic/dmake/src-patchlvl1/msdos/arlib.c Sat Oct 6 12:05:18 1990
XX--- msdos/arlib.c Mon Oct 22 16:53:32 1990
XX***************
XX*** 1,4 ****
XX! /* RCS -- $Header: /u2/dvadura/src/generic/dmake/src/msdos/RCS/arlib.c,v 1.1 90/10/06 12:05:19 dvadura Exp $
XX -- SYNOPSIS -- Library access code.
XX --
XX -- DESCRIPTION
XX--- 1,4 ----
XX! /* RCS -- $Header: /u2/dvadura/src/generic/dmake/src/msdos/RCS/arlib.c,v 1.1 90/10/06 12:05:19 dvadura Exp Locker: dvadura $
XX -- SYNOPSIS -- Library access code.
XX --
XX -- DESCRIPTION
XX***************
XX*** 35,41 ****
XX
XX #include "extern.h"
XX #include "stdmacs.h"
XX- #include "vextern.h"
XX
XX time_t
XX seek_arch(name, lib)
XX--- 35,40 ----
XX*** /u2/dvadura/src/generic/dmake/src-patchlvl1/man/dmake.tf Sat Oct 6 12:05:02 1990
XX--- man/dmake.tf Sun Oct 28 13:26:42 1990
XX***************
XX*** 3,15 ****
XX .ds TB "0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.5i +0.5i +2.0i
XX .de Ip
XX .fi
XX! .nr Ip \w\\$1
XX .IP "\\$1" \\n(Ipu
XX \\$2
XX .nf
XX ..
XX .de Is
XX! .nr )I \w\\$1u
XX ..
XX .de Ii
XX .in \\n()Ru
XX--- 3,15 ----
XX .ds TB "0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.2i +0.5i +0.5i +2.0i
XX .de Ip
XX .fi
XX! .nr Ip \w'\\$1 '
XX .IP "\\$1" \\n(Ipu
XX \\$2
XX .nf
XX ..
XX .de Is
XX! .nr )I \w'\\$1'u
XX ..
XX .de Ii
XX .in \\n()Ru
XX***************
XX*** 50,57 ****
XX .B -f
XX flag then \fBdmake\fR uses standard input as the source of the makefile text.
XX .PP
XX! Any macro definitions (arguments with embedded
XX! .Q "="
XX signs) that appear on the command line are processed first
XX and supercede definitions for macros of the same name found
XX within the makefile. In general it is impossible for definitions found
XX--- 50,56 ----
XX .B -f
XX flag then \fBdmake\fR uses standard input as the source of the makefile text.
XX .PP
XX! Any macro definitions (arguments with embedded "="
XX signs) that appear on the command line are processed first
XX and supercede definitions for macros of the same name found
XX within the makefile. In general it is impossible for definitions found
XX***************
XX*** 77,85 ****
XX section found at the end of this document.
XX .SH OPTIONS
XX .IP "\fB\-A\fR"
XX! Enable AUGMAKE special inference rule transformations (see the
XX! .Q "PERCENT(%) RULES"
XX! section), these are set to off by default.
XX .IP "\fB\-e\fR"
XX Read the environment and define all strings of the
XX form '\fBENV-VAR\fP=\fIevalue\fP'
XX--- 76,83 ----
XX section found at the end of this document.
XX .SH OPTIONS
XX .IP "\fB\-A\fR"
XX! Enable AUGMAKE special inference rule transformations
XX! (see the "PERCENT(%) RULES" section), these are set to off by default.
XX .IP "\fB\-e\fR"
XX Read the environment and define all strings of the
XX form '\fBENV-VAR\fP=\fIevalue\fP'
XX***************
XX*** 120,128 ****
XX (useful for debugging, but cannot be re-read by \fBdmake\fP)
XX .IP "\fB\-P#\fR"
XX On systems that support multi-processing cause \fBdmake\fP to use \fI#\fP
XX! concurrent child processes to make targets. See the
XX! .Q "MULTI PROCESSING"
XX! section for more information.
XX .IP "\fB\-q\fR"
XX Check and see if the target is up to date. Exits with code 0 if up to date,
XX 1 otherwise.
XX--- 118,125 ----
XX (useful for debugging, but cannot be re-read by \fBdmake\fP)
XX .IP "\fB\-P#\fR"
XX On systems that support multi-processing cause \fBdmake\fP to use \fI#\fP
XX! concurrent child processes to make targets.
XX! See the "MULTI PROCESSING" section for more information.
XX .IP "\fB\-q\fR"
XX Check and see if the target is up to date. Exits with code 0 if up to date,
XX 1 otherwise.
XX***************
XX*** 718,724 ****
XX Thus using another example we have:
XX .RS
XX .sp
XX! .Is "test/{ f1 ""f2"" """" }.o "
XX .Ii "test/{f1 f2}.o"
XX --> test/f1.o test/f2.o
XX .Ii "test/ {f1 f2}.o"
XX--- 715,721 ----
XX Thus using another example we have:
XX .RS
XX .sp
XX! .Is "test/{ f1 f2 }.o "
XX .Ii "test/{f1 f2}.o"
XX --> test/f1.o test/f2.o
XX .Ii "test/ {f1 f2}.o"
XX***************
XX*** 725,732 ****
XX --> test/ f1.o f2.o
XX .Ii "test/{f1 f2} .o"
XX --> test/f1 test/f2 .o
XX! .Ii "test/{ f1 ""f2"" """" }.o"
XX! --> test/f1.o test/f2.o test/.o
XX .sp
XX .Ii and
XX .sp
XX--- 722,729 ----
XX --> test/ f1.o f2.o
XX .Ii "test/{f1 f2} .o"
XX --> test/f1 test/f2 .o
XX! .Ii "test/{ "f1" """" }.o"
XX! --> test/f1.o test/.o
XX .sp
XX .Ii and
XX .sp
XX*** /u2/dvadura/src/generic/dmake/src-patchlvl1/man/dmake.p Sat Oct 6 12:26:44 1990
XX--- man/dmake.p Sun Oct 28 13:27:42 1990
XX***************
XX*** 869,879 ****
XX A null token in the token list is specified using "". Thus
XX using another example we have:
XX
XX! test/{f1 f2}.o --> test/f1.o test/f2.o
XX! test/ {f1 f2}.o --> test/ f1.o f2.o
XX! test/{f1 f2} .o --> test/f1 test/f2 .o
XX! test/{ f1 "f2" "" }.o --> test/f1.o test/f2.o
XX! test/.o
XX
XX and
XX
XX--- 869,878 ----
XX A null token in the token list is specified using "". Thus
XX using another example we have:
XX
XX! test/{f1 f2}.o --> test/f1.o test/f2.o
XX! test/ {f1 f2}.o --> test/ f1.o f2.o
XX! test/{f1 f2} .o --> test/f1 test/f2 .o
XX! test/{ --> test/f1.o test/.o
XX
XX and
XX
XX***************
XX*** 890,895 ****
XX--- 889,895 ----
XX dencies. Such entries are called _t_a_r_g_e_t_/_p_r_e_r_e_q_u_i_s_i_t_e or
XX _r_u_l_e definitions. Each rule definition is optionally fol-
XX lowed by a set of lines that provide a recipe for updating
XX+ any targets defined by the rule. Whenever ddmmaakkee attempts to
XX
XX
XX
XX***************
XX*** 902,908 ****
XX
XX
XX
XX- any targets defined by the rule. Whenever ddmmaakkee attempts to
XX bring a target up to date and an explicit recipe is provided
XX with a rule defining the target, that recipe is used to
XX update the target. A rule definition begins with a line
XX--- 902,907 ----
XX***************
XX*** 954,959 ****
XX--- 953,959 ----
XX
XX -- says to clear the previous list of prerequisites before
XX adding the new prerequisites. Thus,
XX+
XX
XX
XX
XX*** /u2/dvadura/src/generic/dmake/src-patchlvl1/man/dmake.nc Sat Oct 6 12:26:46 1990
XX--- man/dmake.nc Mon Oct 29 20:29:13 1990
XX***************
XX*** 869,879 ****
XX A null token in the token list is specified using "". Thus
XX using another example we have:
XX
XX! test/{f1 f2}.o --> test/f1.o test/f2.o
XX! test/ {f1 f2}.o --> test/ f1.o f2.o
XX! test/{f1 f2} .o --> test/f1 test/f2 .o
XX! test/{ f1 "f2" "" }.o --> test/f1.o test/f2.o
XX! test/.o
XX
XX and
XX
XX--- 869,878 ----
XX A null token in the token list is specified using "". Thus
XX using another example we have:
XX
XX! test/{f1 f2}.o --> test/f1.o test/f2.o
XX! test/ {f1 f2}.o --> test/ f1.o f2.o
XX! test/{f1 f2} .o --> test/f1 test/f2 .o
XX! test/{ --> test/f1.o test/.o
XX
XX and
XX
XX***************
XX*** 890,895 ****
XX--- 889,895 ----
XX dencies. Such entries are called target/prerequisite or
XX rule definitions. Each rule definition is optionally fol-
XX lowed by a set of lines that provide a recipe for updating
XX+ any targets defined by the rule. Whenever dmake attempts to
XX
XX
XX
XX***************
XX*** 902,908 ****
XX
XX
XX
XX- any targets defined by the rule. Whenever dmake attempts to
XX bring a target up to date and an explicit recipe is provided
XX with a rule defining the target, that recipe is used to
XX update the target. A rule definition begins with a line
XX--- 902,907 ----
XX***************
XX*** 954,959 ****
XX--- 953,959 ----
XX
XX - says to clear the previous list of prerequisites before
XX adding the new prerequisites. Thus,
XX+
XX
XX
XX
XX*** /u2/dvadura/src/generic/dmake/src-patchlvl1/makefile.mk Tue Oct 9 21:19:30 1990
XX--- makefile.mk Tue Oct 30 13:24:08 1990
XX***************
XX*** 9,15 ****
XX #
XX # Valid values for the above macros are:
XX #
XX! # OS - unix, msdos
XX # OSRELEASE - bsd43, sysvr3, 386ix
XX # - tccdos, mscdos (valid only of OS == msdos)
XX # OSENVIRONMENT - uw {valid for unix, bsd43 configuration only.}
XX--- 9,15 ----
XX #
XX # Valid values for the above macros are:
XX #
XX! # OS - unix, msdos, tos
XX # OSRELEASE - bsd43, sysvr3, 386ix
XX # - tccdos, mscdos (valid only of OS == msdos)
XX # OSENVIRONMENT - uw {valid for unix, bsd43 configuration only.}
XX***************
XX*** 153,162 ****
XX #
XX # dmake scripts -- makes all the script files at once.
XX #
XX! SH = $(@:s/swp-/-/:s,-,/,:s/scripts/${SCRIPTFILE}/:s/c60d/cd/)
XX! MS = MAKESTARTUP=$(@:s/swp-/-/:s,-,/,:s/scripts/startup.mk/:s/c60d/cd/)
XX
XX! scripts: unix-scripts msdos-scripts
XX
XX # To add a new environment for UNIX, simply create the appropriate entry
XX # in the style below for the macro which contains the OS, OSRELEASE and
XX--- 153,164 ----
XX #
XX # dmake scripts -- makes all the script files at once.
XX #
XX! SH_n = $(@:s/swp-/-/:s,-,/,:s/scripts/${SCRIPTFILE}/)
XX! MS_n = MAKESTARTUP=$(@:s/swp-/-/:s,-,/,:s/scripts/startup.mk/)
XX! SH = $(SH_n:s/c40d/cd/:s/c50d/cd/:s/c51d/cd/:s/c60d/cd/)
XX! MS = $(MS_n:s/c40d/cd/:s/c50d/cd/:s/c51d/cd/:s/c60d/cd/)
XX
XX! scripts: unix-scripts atari-tos-scripts msdos-scripts
XX
XX # To add a new environment for UNIX, simply create the appropriate entry
XX # in the style below for the macro which contains the OS, OSRELEASE and
XX***************
XX*** 169,176 ****
XX unix-386ix-scripts-flags = OS=unix OSRELEASE=386ix OSENVIRONMENT=
XX unix-bsd43-uw-scripts-flags= OS=unix OSRELEASE=bsd43 OSENVIRONMENT=uw
XX unix-bsd43-vf-scripts-flags= OS=unix OSRELEASE=bsd43 OSENVIRONMENT=vf
XX
XX! unix-scripts: clean
XX $(MAKE) SCRIPTFILE=make.sh unix-bsd43-scripts
XX $(MAKE) SCRIPTFILE=make.sh unix-bsd43-uw-scripts
XX $(MAKE) SCRIPTFILE=make.sh unix-bsd43-vf-scripts
XX--- 171,179 ----
XX unix-386ix-scripts-flags = OS=unix OSRELEASE=386ix OSENVIRONMENT=
XX unix-bsd43-uw-scripts-flags= OS=unix OSRELEASE=bsd43 OSENVIRONMENT=uw
XX unix-bsd43-vf-scripts-flags= OS=unix OSRELEASE=bsd43 OSENVIRONMENT=vf
XX+ tos--scripts-flags = OS=tos OSRELEASE= OSENVIRONMENT=
XX
XX! unix-scripts .SWAP : clean
XX $(MAKE) SCRIPTFILE=make.sh unix-bsd43-scripts
XX $(MAKE) SCRIPTFILE=make.sh unix-bsd43-uw-scripts
XX $(MAKE) SCRIPTFILE=make.sh unix-bsd43-vf-scripts
XX***************
XX*** 178,185 ****
XX $(MAKE) SCRIPTFILE=make.sh unix-sysvr1-scripts
XX $(MAKE) SCRIPTFILE=make.sh unix-386ix-scripts
XX
XX! unix-%-scripts:; $(MAKECMD) -ns $(MS) $($@-flags) >$(SH)
XX
XX # We make the standard dos scripts here, but we have to go and fix up the
XX # make.bat file since it contains names of temporary files for the response
XX # files required by the linker. We need to also construct the response file
XX--- 181,192 ----
XX $(MAKE) SCRIPTFILE=make.sh unix-sysvr1-scripts
XX $(MAKE) SCRIPTFILE=make.sh unix-386ix-scripts
XX
XX! unix-%-scripts .SWAP :; $(MAKECMD) -ns $(MS) $($@-flags) >$(SH)
XX! tos-%-scripts .SWAP :; $(MAKECMD) -ns $(MS) $($@-flags) >$(SH)
XX
XX+ atari-tos-scripts .SWAP : clean
XX+ $(MAKE) SCRIPTFILE=make.sh tos--scripts
XX+
XX # We make the standard dos scripts here, but we have to go and fix up the
XX # make.bat file since it contains names of temporary files for the response
XX # files required by the linker. We need to also construct the response file
XX***************
XX*** 190,216 ****
XX # unix environment, and then make certain that the fix-msdos-%-scripts target
XX # performs the correct function for the new environment.
XX msdos-cf = OS=msdos OSENVIRONMENT=
XX! msdos-tccdos-scripts-flags = $(msdos-cf) OSRELEASE=tccdos NOSWAP=y
XX msdos-tccdosswp-scripts-flags = $(msdos-cf) OSRELEASE=tccdos
XX! msdos-mscdos-scripts-flags = $(msdos-cf) OSRELEASE=mscdos NOSWAP=y
XX! msdos-msc60dos-scripts-flags= $(msdos-cf) OSRELEASE=mscdos NOSWAP=y MSC_VER=6.0
XX! msdos-mscdosswp-scripts-flags = $(msdos-cf) OSRELEASE=mscdos
XX msdos-msc60dosswp-scripts-flags = $(msdos-cf) OSRELEASE=mscdos MSC_VER=6.0
XX
XX! msdos-scripts: clean
XX $(MAKE) SCRIPTFILE=mk.bat msdos-tccdos-scripts
XX $(MAKE) SCRIPTFILE=mkswp.bat msdos-tccdosswp-scripts
XX- $(MAKE) SCRIPTFILE=mk.bat msdos-mscdos-scripts
XX- $(MAKE) SCRIPTFILE=mk60.bat msdos-msc60dos-scripts
XX- $(MAKE) SCRIPTFILE=mkswp.bat msdos-mscdosswp-scripts
XX- $(MAKE) SCRIPTFILE=mk60swp.bat msdos-msc60dosswp-scripts
XX
XX! msdos-%-scripts:
XX $(MAKE) -nus $(MS) $($@-flags) >$(SH)
XX $(MAKE) -s $(MAKEMACROS) $(MS) $($@-flags) fix-msdos-$*-scripts
XX
XX! MAPOBJ = $(*:s/tccdos/obj/:s/mscdos/obj/:s/msc60dos/obj60/).rsp
XX! MAPLIB = $(*:s/tccdos/lib/:s/mscdos/lib/:s/msc60dos/lib60/).rsp
XX OBJRSP = $(SH:s,fix/,,:s,${SCRIPTFILE},${MAPOBJ},)
XX LIBRSP = $(SH:s,fix/,,:s,${SCRIPTFILE},${MAPLIB},)
XX DOSOBJ = $(CSTARTUP) $(OBJDIR)/{$(OBJECTS)}
XX--- 197,230 ----
XX # unix environment, and then make certain that the fix-msdos-%-scripts target
XX # performs the correct function for the new environment.
XX msdos-cf = OS=msdos OSENVIRONMENT=
XX! msdos-tccdos-scripts-flags = $(msdos-cf) OSRELEASE=tccdos SWAP=n
XX msdos-tccdosswp-scripts-flags = $(msdos-cf) OSRELEASE=tccdos
XX! msdos-msc40dos-scripts-flags= $(msdos-cf) OSRELEASE=mscdos SWAP=n MSC_VER=4.0
XX! msdos-msc40dosswp-scripts-flags = $(msdos-cf) OSRELEASE=mscdos MSC_VER=4.0
XX! msdos-msc50dos-scripts-flags= $(msdos-cf) OSRELEASE=mscdos SWAP=n MSC_VER=5.0
XX! msdos-msc50dosswp-scripts-flags = $(msdos-cf) OSRELEASE=mscdos MSC_VER=5.0
XX! msdos-msc51dos-scripts-flags= $(msdos-cf) OSRELEASE=mscdos SWAP=n MSC_VER=5.1
XX! msdos-msc51dosswp-scripts-flags = $(msdos-cf) OSRELEASE=mscdos MSC_VER=5.1
XX! msdos-msc60dos-scripts-flags= $(msdos-cf) OSRELEASE=mscdos SWAP=n MSC_VER=6.0
XX msdos-msc60dosswp-scripts-flags = $(msdos-cf) OSRELEASE=mscdos MSC_VER=6.0
XX
XX! msdos-scripts: clean tcc-scripts msc-scripts;
XX!
XX! tcc-scripts .SWAP :
XX $(MAKE) SCRIPTFILE=mk.bat msdos-tccdos-scripts
XX $(MAKE) SCRIPTFILE=mkswp.bat msdos-tccdosswp-scripts
XX
XX! msc-scripts .SWAP :! 40 50 51 60
XX! $(MAKE) SCRIPTFILE=mk$?.bat msdos-msc$?dos-scripts
XX! $(MAKE) SCRIPTFILE=mk$?swp.bat msdos-msc$?dosswp-scripts
XX! 40 50 51 60:;
XX!
XX! msdos-%-scripts .SWAP :
XX $(MAKE) -nus $(MS) $($@-flags) >$(SH)
XX $(MAKE) -s $(MAKEMACROS) $(MS) $($@-flags) fix-msdos-$*-scripts
XX
XX! MAPOBJ = obj$(SWAP:s/y/swp/:s/n//).rsp
XX! MAPLIB = lib$(SWAP:s/y/swp/:s/n//).rsp
XX OBJRSP = $(SH:s,fix/,,:s,${SCRIPTFILE},${MAPOBJ},)
XX LIBRSP = $(SH:s,fix/,,:s,${SCRIPTFILE},${MAPLIB},)
XX DOSOBJ = $(CSTARTUP) $(OBJDIR)/{$(OBJECTS)}
XX*** /u2/dvadura/src/generic/dmake/src-patchlvl1/makefile Sat Oct 6 12:04:34 1990
XX--- makefile Tue Oct 30 13:23:40 1990
XX***************
XX*** 12,35 ****
XX @echo " make bsd43vf - Generic BSD 4.3 that needs vfprintf"
XX @echo " make sysvr3 - Generic SysV R3 UNIX"
XX @echo " make sysvr1 - Generic SysV R1 UNIX"
XX- @echo " make 386ix - 386/ix (SysV R3) [NOTE: not tested]"
XX @echo " make dynix - Sequent DYNIX system"
XX @echo " make ultrix - Ultrix 3.0 system"
XX @echo " make mips - Any MIPS box"
XX @echo " make tcc - DOS with tcc 2.0"
XX @echo " make tccswp - swapping DOS version with tcc 2.0"
XX! @echo " make msc - DOS with MSC 4.0 to 5.1"
XX @echo " make msc60 - DOS with MSC 6.0"
XX! @echo " make mscswp - swapping DOS version with MSC 4.0 to 5.1"
XX @echo " make msc60swp - swapping DOS version with MSC 6.0"
XX
XX bsd43uw :; /bin/sh -x < unix/bsd43/uw/make.sh
XX bsd43vf dynix mips :; /bin/sh -x < unix/bsd43/vf/make.sh
XX sysvr1 sysvr3 bsd43 386ix :; /bin/sh -x < unix/$@/make.sh
XX! ultrix : sysvr3;
XX
XX # DOS with some form of make and sh
XX # Note if you do not have a 'make and/or sh' program under MSDOS then
XX # typing 'make' in the dmake distribution directory will invoke the make.bat
SHAR_EOF
echo "End of part 4, continue with part 5"
echo "5" > s2_seq_.tmp
exit 0
--
--------------------------------------------------------------------------------
"This is almost worth the HIGH blood pressure!" he |Dennis Vadura
thought as yet another mosquito exploded.-R.Patching|dvadura at dragon.uwaterloo.ca
================================================================================
More information about the Comp.sources.bugs
mailing list