From: Philip Homburg Date: Mon, 29 May 2006 12:25:44 +0000 (+0000) Subject: Install /usr/lib/descr from the source tree. X-Git-Tag: v3.1.3~354 X-Git-Url: http://zhaoyanbai.com/repos/man.delv.html?a=commitdiff_plain;h=5f19e53afb67e2bbd3d9a74027dba13bce8f7288;p=minix.git Install /usr/lib/descr from the source tree. --- diff --git a/commands/i386/Makefile b/commands/i386/Makefile index 75fc447bd..3890056b9 100755 --- a/commands/i386/Makefile +++ b/commands/i386/Makefile @@ -11,7 +11,8 @@ acd: acd.c $(CCLD) -o $@ -DARCH=\"`arch`\" -DDESCR=\"/usr/lib/descr\" $? install -S 50kw $@ -install:: /usr/bin/acd /usr/bin/cc /usr/bin/m2 /usr/bin/pc +install:: /usr/bin/acd /usr/bin/cc /usr/bin/m2 /usr/bin/pc \ + /usr/lib/descr /usr/bin/acd: acd install -cs -o bin $? $@ @@ -19,6 +20,9 @@ install:: /usr/bin/acd /usr/bin/cc /usr/bin/m2 /usr/bin/pc /usr/bin/cc /usr/bin/m2 /usr/bin/pc: /usr/bin/acd install -l $? $@ +/usr/lib/descr: acd.descr + install $? $@ + clean:: rm -rf a.out core acd diff --git a/commands/i386/acd.descr b/commands/i386/acd.descr new file mode 100644 index 000000000..933060dd9 --- /dev/null +++ b/commands/i386/acd.descr @@ -0,0 +1,479 @@ +# ACD pass description for the ACK compilers. +# +# Pre-set variables. +# PROGRAM - Name the compiler driver is called with. +# ARCH - Default target architecture. + +# Library directories search path. +L = /lib /usr/lib + +# ACK Compilers support search path. +A = $L $L/ack + +# ARCH must be defined. +ifndef ARCH + error "\$ARCH is not predefined" + +# Get ARCH from the environment if set. +import ARCH + +# Compiler passes. +ACK_CPP = $A/cpp.ansi $CPP_F $PREDEF $NOLINENO +ACK_CEM = $A/em_cemcom.ansi -L $CPP_F $PREDEF \ + -Vw${W}.${W}i${W}.${W}p${P}.${W}f4.${W}s2.2l4.${W}d8.${W} +ACK_M2 = $A/em_m2 -I$MOD_INCL -WR \ + -Vw${W}.${W}i${W}.${W}p${P}.${W}l4.${W}f4.${W}d8.${W} +ACK_PC = $A/em_pc \ + -Vw${W}.${W}i${W}.${W}l4.${W}p${P}.${W}f8.${W}S${W}.${W} +MOD_INCL = $A/m2 + +ACK_DECODE = $A/em_decode +ACK_ENCODE = $A/em_encode +ACK_OPT = $A/em_opt +ACK_EGO = $A/em_ego -P $A/ego -M$EGO_DESCR +EGO_DESCR = $A/ego/${ARCH}descr + +ACK_OPT2 = $A/em_opt2 +ACK_CG = $A/$ARCH/cg +ACK_AS = $A/$ARCH/as \- +ACK_LED = $A/em_led -a0:$W -a1:$W -a2:$W -a3:$W +ACK_CV = $A/cv +ASMCONV = $L/asmconv +AAL = /usr/bin/aal + +# Minix predefined symbols. +CPP_F = -D__minix -D__$ARCH + +# Library path. +LIBPATH = $USERLIBPATH $A/$ARCH + +# Default output "model". +MODEL = -sep + +# Floating point is done in software. +LIBS = -fsoft + +# Default optimization level. +OPT_LEVEL = 1 + +# Call names. +if $PROGRAM = acc + PROGRAM = cc +if $PROGRAM = apc + PROGRAM = pc +if $PROGRAM = am2 + PROGRAM = m2 +if $PROGRAM = kcc + PROGRAM = cc + +# Default transformation target. +stop .out + +# Select the runtime environment by option or program name. +arg -.c +if $PROGRAM = cc + ifndef RTSO + RTSO = -.c + LIBS = $LIBS + -.c + +arg -.mod +if $PROGRAM = m2 + ifndef RTSO + RTSO = -.mod + LIBS = $LIBS + -.mod + +arg -.p +if $PROGRAM = pc + ifndef RTSO + RTSO = -.p + LIBS = $LIBS + -.p + +# Omit the runtime startoff, but keep the libraries. +arg -.o + RTSO = + +arg -.$any + error ".$any: unknown language" + +# Select the target architecture. +arg -m$arch + ARCH = $arch + +# Preprocessor directives. +arg -D$name +arg -D $name + CPP_F = $CPP_F -D$name +arg -U$name +arg -U $name + CPP_F = $CPP_F -U$name +arg -I$dir +arg -I $dir + CPP_F = $CPP_F -I$dir + ACK_M2 = $ACK_M2 -I$dir + +# Debugging. +arg -g # Add debugging info. + ACK_CEM = $ACK_CEM -g + ACK_CG = $ACK_CG -gdb + +arg -n # Suppress line numbers. + ACK_M2 = $ACK_M2 -L + ACK_PC = $ACK_PC -L +arg -a # Enable assertions. +arg -A # Enable array bound checks. + ACK_M2 = $ACK_M2 $* + ACK_PC = $ACK_PC $* + +# Language checking. +arg -w # No warnings. + ACK_CEM = $ACK_CEM $* + ACK_M2 = $ACK_M2 $* + ACK_PC = $ACK_PC $* + +arg -ws # No strict warnings. + ACK_CEM = $ACK_CEM -s + ACK_M2 = $ACK_M2 -wR + +arg -wa # No warnings and no strict warnings. + ACK_CEM = $ACK_CEM -a + ACK_M2 = $ACK_M2 -wR + +arg -wo # No warnings about old style C. + ACK_CPP = $ACK_CPP -o + ACK_CEM = $ACK_CEM -o + ACK_M2 = $ACK_M2 -wO + +arg -3 # Only accept 3rd generation Modula-2. + ACK_M2 = $ACK_M2 $* + +arg -_ # Allow underscores in identifiers. + ACK_M2 = $ACK_M2 -U + ACK_PC = $ACK_PC -U + +arg -w$any +arg -F +arg -m + # Ignore strange -w flags, and past and present i86 compiler flags. + +# Stop suffix. +arg -c + stop .o + +arg -c.$stop + stop .$stop + +arg -E + stop .E + +arg -P + CPP_F = $CPP_F -P + stop .i + +arg -S + stop .s + +# Optimization. +arg -O + OPT_LEVEL = 1 + +arg -O$n + numeric $n + OPT_LEVEL = $n + +arg -OS # Optimize for size. + ACK_EGO = $ACK_EGO -S +arg -OT # Optimize for time. + ACK_EGO = $ACK_EGO -T + +# Library search path. +arg -L$dir +arg -L $dir + USERLIBPATH = $USERLIBPATH $dir/$ARCH $dir + +# -llib must be searched in $LIBPATH later. +arg -l$lib +arg -l $lib + $> = $LIBPATH/lib$lib.a + +# Software floating point, hardware floating point, or no floating point. +arg -f +arg -fp +arg -fsoft + LIBS = $LIBS + -fsoft + +arg -fhard + LIBS = $LIBS - -fsoft + +arg -fnone + LIBS = $LIBS + -fnone + +# Output model. +arg -com + MODEL = # Common I&D. + +arg -sep +arg -i # Separate I&D. + MODEL = -sep + +arg -r # Relocatable object (combined .o) + MODEL = -r + +# Strip executable. +arg -s + ACK_LED = $ACK_LED -s + +# Size of heap+stack. +arg -stack $size + ACK_CV = $ACK_CV -S $size + +# Change output file. +arg -o$out +arg -o $out + OUT = $out + +# Complain about just -D, -U, -I, ... +arg -D; arg -U; arg -I; arg -L; arg -l; arg -o; arg -stack + error "argument expected after '$*'" + +arg -R$pass-$flag # The ACK way of passing options to passes. +arg -Wack-R$pass-$flag # The ACD way. + if $pass = cpp + ACK_CPP = $ACK_CPP -$flag + if $pass = cem + ACK_CEM = $ACK_CEM -$flag + if $pass = m2 + ACK_M2 = $ACK_M2 -$flag + if $pass = pc + ACK_PC = $ACK_PC -$flag + if $pass = opt + ACK_OPT = $ACK_OPT -$flag + if $pass = ego + ACK_EGO = $ACK_EGO -$flag + if $pass = opt2 + ACK_OPT2 = $ACK_OPT2 -$flag + if $pass = cg + ACK_CG = $ACK_CG -$flag + if $pass = as + ACK_AS = $ACK_AS -$flag + if $pass = led + ACK_LED = $ACK_LED -$flag + +arg -Was-$dialect # Default assembly dialect. + ASDIALECT = $dialect + +arg -W$any + # Ignore any other -W options. + +# Complain about unknown options, don't give them to the loader. +arg -$any + error "$*: unknown option" + +# Do the scanning phase early, we need to know the architecture. +scan + +# The word and pointer sizes of the target. +if $ARCH = i86 + W = 2; P = 2 +if $ARCH = i386 + W = 4; P = 4 + +ifndef W + error "$ARCH: unsupported architecture" + +# Optimize -O2 or higher? +if (0 1 - $OPT_LEVEL) = (0 1) + ACK_EGO = $ACK_EGO -O$OPT_LEVEL + ACK_OPT = $ACK_OPT -m0 # Leave multiplication optimization to opt2. + prefer .m .gk + +# Tell cem to reverse bitfields on the i386 to be compatible with gcc. +if $ARCH = i386 + ACK_CEM = $ACK_CEM -Vr + +# Predefined preprocessor flags. +PREDEF = -D_EM_WSIZE=$W -D_EM_PSIZE=$P -D_EM_SSIZE=2 -D_EM_LSIZE=4 \ + -D_EM_FSIZE=4 -D_EM_DSIZE=8 -D__ACK__ -D_ACK + +# Preprocess C source. +transform .c .i + $ACK_CPP $* > $> + +# Preprocess any type of file and send it to standard output or $OUT. +transform "" .E + if $* = "-" + file = # Standard input. + else + file = $* + ifndef OUT + $ACK_CPP $file + else + $ACK_CPP $file > $OUT + +# Compile C source to EM-code. +transform .c .k +transform .i .k + $ACK_CEM $* $> + ifndef RTSO + RTSO = -.c + LIBS = $LIBS + -.c + +# Compile Modula-2 source to EM-code. +transform .mod .k + ifhash $* + apply .c .i + $ACK_M2 $* $> + ifndef RTSO + RTSO = -.mod + LIBS = $LIBS + -.mod + +# Compile Pascal source to EM-code. +transform .p .k + ifhash $* + apply .c .i + $ACK_PC $* $> + ifndef RTSO + RTSO = -.p + LIBS = $LIBS + -.p + +# Compact EM to readable EM. +transform .k .e +transform .m .e +transform .gk .e +transform .g .e + $ACK_DECODE $* > $> + +# Readable EM to compact EM. +transform .e .k + ifhash $* + NOLINENO = -P # Encode chokes on cpp line directives. + apply .c .i + unset NOLINENO + $ACK_ENCODE $* > $> + +# Peephole optimization. +transform .k .m + $ACK_OPT $* > $> + +# Global optimization. +transform .m .gk + $ACK_EGO $* > $> + +# Second peephole optimization after global optimization. +transform .gk .g + $ACK_OPT2 $* > $> + +# EM-code to target machine assembly. +transform .m .ack.s +transform .g .ack.s +transform .m .s +transform .g .s + if $ARCH = i386 + $ACK_CG -F__fp_hook $* > $> + else + $ACK_CG $* > $> + +# How to treat plain .s? +ifndef ASDIALECT + transform .s .ack.s + $> = $* + +# Assembly to object file. +transform .ack.s .o + ifhash $* + apply .c .i + if $> = $<.o + ifdef OUT + $> = $OUT + $ACK_AS -o $> $* + +# Combine object files and libraries to an executable. +combine (.o .a) .out + if $MODEL = () + model = -b0:0 + if $MODEL = (-sep) + model = -b0:0 -b1:0 + rtso = + if $RTSO = -.c + rtso = $A/$ARCH/crtso.o + if $RTSO = -.mod + rtso = $A/$ARCH/m2rtso.o + if $RTSO = -.p + rtso = $A/$ARCH/prtso.o + libm2 = ; libp = ; libd = ; libc = ; libfp = + if (-.mod - $LIBS) = () + libm2 = $A/$ARCH/libm2.a + libc = $A/$ARCH/libc.a + if (-.p - $LIBS) = () + libp = $A/$ARCH/libp.a + libc = $A/$ARCH/libc.a + if (-.c - $LIBS) = () + libd = $A/$ARCH/libd.a + libc = $A/$ARCH/libc.a + if (-fsoft - $LIBS) = () + libfp = $A/$ARCH/libfp.a + libs = $libm2 $libp $libd $libc $libfp $A/$ARCH/libe.a + ifndef OUT + OUT = a.out + if (-r - $MODEL) = () + # Combine to an object file. + $ACK_LED -r -o $OUT $* + else + # Combine to an executable. + mktemp EXE + $ACK_LED $model -o $EXE $rtso $* $libs $A/$ARCH/end.a + cp $EXE ack.out + $ACK_CV -x -m$ARCH $EXE $OUT + +# Add object files to a library. +combine (.o) .a + if $> = $<.a + ifdef OUT + $> = $OUT + $AAL cr $> $* + +# Assembly conversions. + +# ACK assembly to ACK Xenix assembly. +transform .ack.s .ncc.s + ifhash $* + apply .c .i + $ASMCONV -m$ARCH ack ncc $* $> + +# ACK assembly to GNU assembly. +transform .ack.s .gnu.s + ifhash $* + apply .c .i + $ASMCONV -m$ARCH ack gnu $* $> + +# ACK Xenix assembly to ACK assembly. +transform .ncc.s .ack.s + ifhash $* + apply .c .i + $ASMCONV -m$ARCH ncc ack $* $> + +# ACK Xenix assembly to GNU assembly. +transform .ncc.s .gnu.s + ifhash $* + apply .c .i + $ASMCONV -m$ARCH ncc gnu $* $> + +# BCC assembly to ACK assembly. +transform .bas.s .ack.s + ifhash $* + apply .c .i + $ASMCONV -m$ARCH bas ack $* $> + +# BCC assembly to ACK Xenix assembly. +transform .bas.s .ncc.s + ifhash $* + apply .c .i + $ASMCONV -m$ARCH bas ncc $* $> + +# BCC assembly to GNU assembly. +transform .bas.s .gnu.s + ifhash $* + apply .c .i + $ASMCONV -m$ARCH bas gnu $* $> + +#ifdef ASDIALECT + # Treat plain .s as being in the given dialect. + transform .s .$ASDIALECT.s + $> = $*