merge latest Utah hp300 code including 68040 support
[unix-history] / usr / src / sys / hp300 / conf / Makefile.hp300
index 087dac5..74597d6 100644 (file)
@@ -1,15 +1,4 @@
-# Copyright (c) 1988 University of Utah.
-# Copyright (c) 1990 The Regents of the University of California.
-# All rights reserved.
-#
-# This code is derived from software contributed to Berkeley by
-# the Systems Programming Group of the University of Utah Computer
-# Science Department.
-#
-# %sccs.include.redist.sh
-#
-#      @(#)Makefile.hp300      7.2 (Berkeley) %G%
-#
+#      @(#)Makefile.hp300      7.14 (Berkeley) %G%
 #
 # Makefile for 4.4 BSD
 #
 #
 # Makefile for 4.4 BSD
 #
 #      /sys/conf/``machineid''
 # after which you should do
 #       config machineid
 #      /sys/conf/``machineid''
 # after which you should do
 #       config machineid
-# Generic makefile changes should be made in
+# Machine generic makefile changes should be made in
 #      /sys/conf/Makefile.``machinetype''
 #      /sys/conf/Makefile.``machinetype''
-# after which config should be rerun for all machines.
+# after which config should be rerun for all machines of that type.
 #
 # N.B.: NO DEPENDENCIES ON FOLLOWING FLAGS ARE VISIBLE TO MAKEFILE
 #      IF YOU CHANGE THE DEFINITION OF ANY OF THESE RECOMPILE EVERYTHING
 #
 # -DTRACE      compile in kernel tracing hooks
 # -DQUOTA      compile in file system quotas
 #
 # N.B.: NO DEPENDENCIES ON FOLLOWING FLAGS ARE VISIBLE TO MAKEFILE
 #      IF YOU CHANGE THE DEFINITION OF ANY OF THESE RECOMPILE EVERYTHING
 #
 # -DTRACE      compile in kernel tracing hooks
 # -DQUOTA      compile in file system quotas
-#
-AS=    as
-OAS=   oas
-CC=    cc -Dconst=__const__ -Dvolatile=__volatile__ \
-               -Dsigned=__signed__ -Dinline=__inline__ \
-               -Uunix -fpcc-struct-return
-LD=    /bin/ld
+
+
+# DEBUG is set to -g by config if debugging is requested (config -g).
+# PROF is set to -pg by config if profiling is requested (config -p).
+AS=    as ${DEBUG}
+CC=    cc ${DEBUG}
+CPP=   cpp
+LD=    ld
 TOUCH= touch -f -c
 
 TOUCH= touch -f -c
 
-INCLUDES= -I. -I../sys
+# source tree is located via $S relative to the compilation directory
+S=     ../..
+HP300= $S/hp300
+
+INCLUDES= -I. -I$S -I$S/sys
 COPTS= ${INCLUDES} ${IDENT} -DKERNEL -Dmc68020 -Dhp300 -DFPCOPROC -DREFBIT
 CFLAGS=        -O ${COPTS}
 
 COPTS= ${INCLUDES} ${IDENT} -DKERNEL -Dmc68020 -Dhp300 -DFPCOPROC -DREFBIT
 CFLAGS=        -O ${COPTS}
 
-AHEADS=
+# compile rules: rules are named ${TYPE}_${SUFFIX}${CONFIG_DEP}
+# where TYPE is NORMAL, DRIVER, or PROFILE}; SUFFIX is the file suffix,
+# capitalized (e.g. C for a .c file), and CONFIG_DEP is _C if the file
+# is marked as config-dependent.
+
+NORMAL_C=      ${CC} -c ${CFLAGS} ${PROF} $<
+NORMAL_C_C=    ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $<
+
+DRIVER_C=      ${CC} -c ${CFLAGS} ${PROF} $<
+DRIVER_C_C=    ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $<
+
+PROFILE_C=     ${CC} -S -c ${COPTS} $<; \
+               sed -e s/_mcount/mcount/ -e s/subrmcount/subr_mcount/ <$*.s | \
+               ${AS} -o $@; \
+               rm -f $*.s
+
+NORMAL_S=      ${CPP} ${COPTS} $< | ${AS} -o $@
+NORMAL_S_C=    ${CPP} ${COPTS} ${PARAM} $< | ${AS} -o $@
 
 %OBJS
 
 %CFILES
 
 
 %OBJS
 
 %CFILES
 
+# load lines for config "xxx" will be emitted as:
+# xxx: ${SYSTEM_DEP} swapxxx.o
+#      ${SYSTEM_LD_HEAD}
+#      ${SYSTEM_LD} swapxxx.o
+#      ${SYSTEM_LD_TAIL}
+SYSTEM_OBJ=    locore.o ${OBJS} param.o ioconf.o
+#SYSTEM_DEP=   Makefile symbols.sort ${SYSTEM_OBJ}
+SYSTEM_DEP=    Makefile ${SYSTEM_OBJ}
+SYSTEM_LD_HEAD=        rm -f $@
+SYSTEM_LD=     -@if [ X${DEBUG} = X-g ]; \
+               then strip=-X; \
+               else strip=-x; \
+               fi; \
+               echo ${LD} $$strip -n -o $@ -e start '$${SYSTEM_OBJ}' vers.o libquad.a; \
+               ${LD} $$strip -n -o $@ -e start ${SYSTEM_OBJ} vers.o libquad.a
+#SYSTEM_LD_TAIL= @echo rearranging symbols;\
+#              symorder symbols.sort $@;\
+SYSTEM_LD_TAIL=        @size $@; chmod 755 $@; \
+               [ X${DEBUG} = X-g ] && { \
+               echo cp $@ $@.gdb; rm -f $@.gdb; cp $@ $@.gdb; \
+               echo strip -d $@; strip -d $@; } || true
+
 %LOAD
 
 %LOAD
 
+newvers:
+       sh $S/conf/newvers.sh
+       ${CC} $(CFLAGS) -c vers.c
+
 clean:
 clean:
-       rm -f eddep *vmunix tags *.o locore.i [a-z]*.s \
-               errs linterrs makelinks
+       rm -f eddep *vmunix vmunix.gdb tags *.o locore.i [a-z]*.s \
+               Errs errs linterrs makelinks
 
 
-lint: param.c FRC
+lint: /tmp param.c
        @lint -hbxn -DGENERIC -Dvolatile= ${COPTS} ${PARAM} -UKGDB \
        @lint -hbxn -DGENERIC -Dvolatile= ${COPTS} ${PARAM} -UKGDB \
-         ../hp300/Locore.c ${CFILES} ../hp300/swapgeneric.c ioconf.c param.c|\
+           ${HP300}/hp300/Locore.c ${CFILES} ${HP300}/hp300/swapgeneric.c \
+           ioconf.c param.c| \
            grep -v 'struct/union .* never defined' | \
            grep -v 'possible pointer alignment problem'
 
            grep -v 'struct/union .* never defined' | \
            grep -v 'possible pointer alignment problem'
 
-../hp300/symbols.sort: ../hp300/symbols.raw
-       grep -v '^#' ../hp300/symbols.raw \
-           | sed 's/^  //' | sort -u > ../hp300/symbols.sort
-
-locore.o: assym.s ${AHEADS} ../hp300/vectors.s ../hp300/locore.s \
-    ../hp300/trap.h machine/psl.h machine/pte.h ../hp300/cpu.h
-       cat assym.s ../hp300/vectors.s ../hp300/locore.s > locore.c
-       ${CC} -E -DLOCORE -I../hp300 ${COPTS} locore.c > locore.i
-       @echo 'as -o locore.o $${AHEADS} locore.i'
-       @${OAS} -o locore.o ${AHEADS} locore.i
-       @rm locore.i
+symbols.sort: ${HP300}/hp300/symbols.raw
+       grep -v '^#' ${HP300}/hp300/symbols.raw \
+           | sed 's/^  //' | sort -u > symbols.sort
 
 
-FRC:
+locore.o: assym.s ${HP300}/hp300/vectors.s ${HP300}/hp300/locore.s 
+locore.o: ${HP300}/include/trap.h ${HP300}/include/psl.h ${HP300}/hp300/pte.h
+locore.o: ${HP300}/include/cpu.h
+       ${CPP} -DLOCORE ${COPTS} ${HP300}/hp300/locore.s | ${AS} -o locore.o
 
 # the following is necessary because autoconf.o depends on #if GENERIC
 autoconf.o: Makefile
 
 # the following is necessary because autoconf.o depends on #if GENERIC
 autoconf.o: Makefile
@@ -90,14 +123,15 @@ assym.s: genassym
        ./genassym >assym.s
 
 genassym:
        ./genassym >assym.s
 
 genassym:
-       ${CC} ${INCLUDES} ${IDENT} ${PARAM} -Dmc68020 -Dhp300 ../hp300/genassym.c
+       ${CC} ${INCLUDES} ${IDENT} ${PARAM} -Dmc68020 -Dhp300 -o genassym \
+           ${HP300}/hp300/genassym.c
 
 depend: assym.s param.c
 
 depend: assym.s param.c
-       mkdep ${COPTS} ${CFILES} ioconf.c
-       mkdep -a -p ${INCLUDES} ${IDENT} ${PARAM} -o genassym ../hp300/genassym.c
+       mkdep ${COPTS} ${CFILES} ioconf.c param.c
+       mkdep -a -p ${INCLUDES} ${IDENT} ${PARAM} ${HP300}/hp300/genassym.c
 
 links:
 
 links:
-       egrep '#if' ${CFILES} | sed -f ../conf/defines | \
+       egrep '#if' ${CFILES} | sed -f $S/conf/defines | \
          sed -e 's/:.*//' -e 's/\.c/.o/' | sort -u > dontlink
        echo ${CFILES} | tr -s ' ' '\12' | sed 's/\.c/.o/' | \
          sort -u | comm -23 - dontlink | \
          sed -e 's/:.*//' -e 's/\.c/.o/' | sort -u > dontlink
        echo ${CFILES} | tr -s ' ' '\12' | sed 's/\.c/.o/' | \
          sort -u | comm -23 - dontlink | \
@@ -105,24 +139,14 @@ links:
        sh makelinks && rm -f dontlink
 
 tags:
        sh makelinks && rm -f dontlink
 
 tags:
-       @echo "see ../kern/Makefile for tags"
-
-print:
-       @pr -f Makefile ../sys/TODO linterrs
-       @ctags -x ${CFILES} | pr -f -h XREF
-       @(size vmunix *.o) | pr -f -h sizes
-       @ls -ls | pr -f
-       @cd ../sys; ls -ls | pr -f ; pr -f *.h
-       @echo 'once upon a time ...'
-       @cd ../hp300; pr -f Locore.c vectors.s locore.s
-       @pr -f ${CFILES}
+       @echo "see $S/kern/Makefile for tags"
 
 ioconf.o: ioconf.c
        ${CC} -c ${CFLAGS} ioconf.c
 
 
 ioconf.o: ioconf.c
        ${CC} -c ${CFLAGS} ioconf.c
 
-param.c: ../conf/param.c
-       -rm -f param.c
-       cp ../conf/param.c .
+param.c: $S/conf/param.c
+       rm -f param.c
+       cp $S/conf/param.c .
 
 param.o: param.c Makefile
        ${CC} -c ${CFLAGS} ${PARAM} param.c
 
 param.o: param.c Makefile
        ${CC} -c ${CFLAGS} ${PARAM} param.c