]> Zhao Yanbai Git Server - minix.git/commitdiff
Install /usr/lib/descr from the source tree.
authorPhilip Homburg <philip@cs.vu.nl>
Mon, 29 May 2006 12:25:44 +0000 (12:25 +0000)
committerPhilip Homburg <philip@cs.vu.nl>
Mon, 29 May 2006 12:25:44 +0000 (12:25 +0000)
commands/i386/Makefile
commands/i386/acd.descr [new file with mode: 0644]

index 75fc447bdfa8e168e15ad099d5a21bffd9d32e2a..3890056b998a72d5a838f7a5f6c2ef1cfdd4412b 100755 (executable)
@@ -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 (file)
index 0000000..933060d
--- /dev/null
@@ -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
+               $> = $*