|
|
1.1 ! root 1: # Makefile for Mach 4 kernel directory ! 2: # Copyright 1997 Free Software Foundation, Inc. ! 3: # ! 4: # Permission to use, copy, modify and distribute this software and its ! 5: # documentation is hereby granted, provided that both the copyright ! 6: # notice and this permission notice appear in all copies of the ! 7: # software, derivative works or modified versions, and any portions ! 8: # thereof, and that both notices appear in supporting documentation. ! 9: # ! 10: # THE FREE SOFTWARE FOUNDATION ALLOWS FREE USE OF THIS SOFTWARE IN ITS ! 11: # "AS IS" CONDITION. THE FREE SOFTWARE FOUNDATION DISCLAIMS ANY ! 12: # LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE ! 13: # USE OF THIS SOFTWARE. ! 14: ! 15: ! 16: ! 17: ! 18: # Variables from `configure'. ! 19: srcdir=@srcdir@ ! 20: systype=@systype@ ! 21: prefix=@prefix@ ! 22: ! 23: installed-clib=$(prefix)/lib/libcrt.a ! 24: exec_prefix=$(prefix) ! 25: ! 26: bootdir=$(exec_prefix)/boot ! 27: includedir=$(prefix)/include ! 28: libexecdir=$(exec_prefix)/libexec ! 29: bindir=$(exec_prefix)/bin ! 30: ! 31: sysdep = $(srcdir)/$(systype) ! 32: ! 33: cross_compiling=@cross_compiling@ ! 34: ! 35: # Programs found by configure. ! 36: AWK=@AWK@ ! 37: INSTALL=@INSTALL@ ! 38: CC=@CC@ ! 39: BUILD_CC=@BUILD_CC@ ! 40: LEX=@LEX@ ! 41: YACC=@YACC@ ! 42: ! 43: LEXLIB=@LEXLIB@ ! 44: ! 45: INSTALL_PROGRAM=$(INSTALL) ! 46: INSTALL_DATA=$(INSTALL) -m 644 ! 47: ! 48: CFLAGS=@CFLAGS@ ! 49: ! 50: # We build these locally ! 51: MIG=./mig ! 52: MIGCOM=./migcom ! 53: ! 54: all: ! 55: ! 56: # All the possible architectures ! 57: all-archs = i386 ! 58: ! 59: all-archs-subdirs = $(patsubst %,$(srcdir)/%/Subdirs,$(all-archs)) ! 60: all-archs-files = $(patsubst %,$(srcdir)/%/Files,$(all-archs)) ! 61: ! 62: # Files distributed from the top level directory: ! 63: topfiles = ChangeLog ChangeLog.0 ChangeLog.00 Drivers.macros Makefile.in \ ! 64: README INSTALL config.guess config.sub configure configure.in \ ! 65: gensym.awk install-sh version.c ! 66: ! 67: # All the source in each directory. ! 68: ! 69: # Old crud from a previous configure scheme ! 70: bogus-files = bootstrap_symbols.h fast_tas.h hw_footprint.h net_atm.h \ ! 71: power_save.h simple_clock.h stat_time.h xpr_debug.h \ ! 72: $(patsubst %,mach_%.h,assert counters debug fixpri host ipc_compat \ ! 73: ipc_debug ipc_test kdb ldebug lock_mon machine_routines mp_debug \ ! 74: pagemap pcsample ttd vm_debug) \ ! 75: $(patsubst %,norma_%.h,device ether ipc task vm) ! 76: ! 77: # Generic code for various hardware drivers ! 78: chips-files = atm.c audio.c bt431.c bt455.c bt459.c build_font.c busses.c \ ! 79: cfb_hdw.c cfb_misc.c dc503.c dtop_handlers.c dtop_hdw.c dz_hdw.c \ ! 80: fb_hdw.c fb_misc.c fdc_82077_hdw.c frc.c ims332.c isdn_79c30_hdw.c \ ! 81: kernel_font.c lance.c lance_mapped.c lk201.c mc_clock.c mouse.c \ ! 82: nc.c nw_mk.c pm_hdw.c pm_misc.c scc_8530_hdw.c screen.c \ ! 83: screen_switch.c serial_console.c sfb_hdw.c sfb_misc.c spans.c \ ! 84: tca100.c tca100_if.c xcfb_hdw.c xcfb_misc.c \ ! 85: atmreg.h audio_config.h audio_defs.h bt431.h bt455.h bt459.h \ ! 86: bt478.h busses.h dc503.h dtop.h dz_7085.h dz_defs.h eccreg.h \ ! 87: fdc_82077.h ims332.h isdn_79c30.h lance.h lk201.h mc_clock.h \ ! 88: nc.h nw.h nw_mk.h pm_defs.h scc_8530.h screen.h screen_defs.h \ ! 89: screen_switch.h serial_defs.h spans.h tca100.h tca100_if.h \ ! 90: vs42x_rb.h xcfb_monitor.h ! 91: ! 92: # Generic code for various SCSI unit types ! 93: scsi-files = disk_label.c mapped_scsi.c pc_scsi_label.c rz.c rz_audio.c \ ! 94: rz_cpu.c rz_disk.c rz_disk_bbr.c rz_host.c rz_tape.c scsi.c \ ! 95: scsi_alldevs.c scsi_comm.c scsi_cpu.c scsi_disk.c scsi_jukebox.c \ ! 96: scsi_optical.c scsi_printer.c scsi_rom.c scsi_scanner.c \ ! 97: scsi_tape.c scsi_worm.c \ ! 98: compat_30.h mapped_scsi.h rz.h rz_labels.h scsi.h scsi2.h \ ! 99: scsi_defs.h scsi_endian.h ! 100: ! 101: # Icky kernel debugger ! 102: ddb-cfiles = $(addprefix db_,$(ddb-names)) ! 103: ddb-names = access.c aout.c break.c command.c cond.c examine.c expr.c \ ! 104: ext_symtab.c input.c lex.c macro.c mp.c output.c print.c run.c \ ! 105: sym.c task_thread.c trap.c variables.c watch.c write_cmd.c ! 106: ddb-files = $(ddb-cfiles) $(patsubst %,db_%.h, \ ! 107: access break command expr lex output print run sym task_thread \ ! 108: variables watch) nlist.h stab.h tr.h ! 109: ! 110: # Device support interfaces ! 111: device-files = blkio.c chario.c cirbuf.c cons.c dev_lookup.c dev_name.c \ ! 112: dev_pager.c device_init.c dk_label.c ds_routines.c net_io.c subrs.c \ ! 113: buf.h cirbuf.h conf.h cons.h dev_hdr.h dev_master.h device_port.h \ ! 114: device_types_kernel.h ds_routines.h errno.h if_ether.h if_hdr.h \ ! 115: io_req.h net_io.h param.h tty.h memory_object_reply.cli \ ! 116: dev_forward.defs device_pager.srv device_reply.cli device.srv ! 117: ! 118: # IPC implementation ! 119: ipc-cfiles = $(addprefix ipc_,$(ipc-names)) \ ! 120: mach_msg.c mach_port.c mach_rpc.c mach_debug.c fipc.c ! 121: ipc-names = entry.c hash.c init.c kmsg.c marequest.c mqueue.c \ ! 122: notify.c object.c port.c pset.c right.c space.c splay.c \ ! 123: table.c target.c thread.c ! 124: ipc-files = $(ipc-cfiles) mach_port.srv fipc.h port.h mach_msg.h \ ! 125: $(patsubst %,ipc_%.h, \ ! 126: entry hash init kmsg kmsg_queue machdep marequest mqueue notify \ ! 127: object port pset right space splay table target thread types) ! 128: ! 129: # "kernel" implementation (tasks, threads, trivia, etc.) ! 130: kern-cfiles = act.c ast.c bootstrap.c counters.c debug.c eventcount.c \ ! 131: exception.c host.c ipc_host.c ipc_kobject.c ipc_mig.c ipc_sched.c \ ! 132: ipc_tt.c kalloc.c lock.c lock_mon.c mach_clock.c mach_factor.c \ ! 133: machine.c pc_sample.c printf.c priority.c processor.c profile.c \ ! 134: queue.c sched_prim.c startup.c strings.c syscall_emulation.c \ ! 135: syscall_subr.c syscall_sw.c task.c thread.c thread_swap.c \ ! 136: time_stamp.c timer.c xpr.c zalloc.c elf-load.c ! 137: kern-files = $(kern-cfiles) \ ! 138: act.h assert.h ast.h compat_xxx_defs.h counters.h cpu_number.h \ ! 139: debug.h eventcount.h host.h ipc_host.h ipc_kobject.h ipc_sched.h \ ! 140: ipc_tt.h kalloc.h kern_types.h lock.h mach_param.h macro_help.h \ ! 141: pc_sample.h processor.h queue.h refcount.h sched.h sched_prim.h \ ! 142: shuttle.h strings.h syscall_emulation.h syscall_subr.h syscall_sw.h \ ! 143: task.h thread.h thread_swap.h time_out.h time_stamp.h timer.h xpr.h \ ! 144: zalloc.h \ ! 145: mach.srv mach4.srv mach_debug.srv mach_host.srv ! 146: ! 147: # Still more trivia ! 148: util-cfiles = about_to_die.c cpu.c cpu_init.c die.c putchar.c puts.c ! 149: util-files = $(util-cfiles) config.h cpu.h cpu_subs.h cpus.h debug.h \ ! 150: phys_mem.h ref_count.h ! 151: ! 152: # Virtual memory implementation ! 153: vm-cfiles = $(addprefix vm_,$(vm-names)) memory_object.c ! 154: vm-names = debug.c external.c fault.c init.c kern.c map.c \ ! 155: object.c pageout.c resident.c user.c ! 156: vm-files = $(vm-cfiles) memory_object_default.cli memory_object_user.cli \ ! 157: memory_object.h pmap.h $(patsubst %,vm_%.h, \ ! 158: external fault kern map object page pageout user) ! 159: ! 160: ! 161: ! 162: # Object files that go into the kernel image. (This will be augmented by the ! 163: # machine dependent Makefile fragment.) ! 164: ! 165: # Basic kernel source for Mach ! 166: objfiles := $(subst .c,.o,$(ipc-cfiles) $(kern-cfiles) \ ! 167: $(util-cfiles) $(vm-cfiles)) ! 168: vpath %.c $(srcdir)/ipc $(srcdir)/kern $(srcdir)/util $(srcdir)/vm ! 169: ! 170: # These device support files are always needed; the others are needed only ! 171: # if particular drivers want the routines. ! 172: # XXX functions in device/subrs.c should each be moved elsewhere ! 173: objfiles += cons.o dev_lookup.o dev_name.o dev_pager.o device_init.o \ ! 174: ds_routines.o subrs.o net_io.o blkio.o chario.o ! 175: vpath %.c $(srcdir)/device ! 176: ! 177: # DDB support -- eventually to die. Please. ! 178: objfiles += $(subst .c,.o,$(ddb-cfiles)) ! 179: vpath %.c $(srcdir)/ddb ! 180: ! 181: # Version number ! 182: objfiles += version.o ! 183: vpath version.c $(srcdir) ! 184: ! 185: ! 186: # Header files installed for user use ! 187: device-headers= $(addprefix device/,audio_status.h bpf.h device.defs \ ! 188: device_reply.defs device_request.defs device_types.defs \ ! 189: device_types.h disk_status.h net_status.h tape_status.h \ ! 190: tty_status.h) ! 191: mach-headers= $(addprefix mach/, bootstrap.defs default_pager.defs \ ! 192: default_pager_helper.defs default_pager_types.defs \ ! 193: exc.defs mach.defs mach4.defs mach_host.defs mach_norma.defs \ ! 194: mach_port.defs mach_types.defs memory_object.defs \ ! 195: memory_object_default.defs norma_task.defs notify.defs \ ! 196: std_types.defs \ ! 197: alert.h boolean.h boot.h default_pager_types.h exception.h \ ! 198: host_info.h kern_return.h mach_param.h mach_types.h \ ! 199: machine.h macro_help.h memory_object.h message.h mig_errors.h \ ! 200: msg_type.h multiboot.h norma_special_ports.h notify.h \ ! 201: pc_sample.h policy.h port.h proc_ops.h processor_info.h \ ! 202: profil.h profilparam.h rpc.h std_types.h syscall_sw.h \ ! 203: task_info.h task_special_ports.h thread_info.h \ ! 204: thread_special_ports.h thread_status.h thread_switch.h \ ! 205: time_value.h version.h vm_attributes.h vm_inherit.h \ ! 206: vm_param.h vm_prot.h vm_statistics.h inline.h) ! 207: mach-exec-headers= $(addprefix mach/exec/, a.out.h elf.h exec.h) ! 208: mach-debug-headers:= $(addprefix mach_debug/, hash_info.h ipc_info.h \ ! 209: mach_debug.defs mach_debug_types.defs mach_debug_types.h \ ! 210: pc_info.h vm_info.h zone_info.h) ! 211: ! 212: installed-headers:= $(device-headers) $(mach-headers) $(mach-exec-headers) ! 213: ! 214: # Other headers for the distribution. We don't install these, because the ! 215: # GNU C library has correct versions for users to use. ! 216: other-sys-headers := types.h time.h reboot.h ioctl.h ! 217: other-mach-headers := mig_support.h mach_traps.h error.h ! 218: other-headers := alloca.h ! 219: ! 220: ! 221: # We steal routines from the C library and put them here. ! 222: # If we link against the C library directly, then we have to hope that we have ! 223: # correctly found all the dependencies that might bring in C library code. ! 224: # This method is much safer because it's easy to check this one object file ! 225: # for sanity. ! 226: objfiles += clib-routines.o ! 227: ! 228: clib-routines = memcpy memset bcopy bzero htonl ntohl ntohs ! 229: ! 230: clib-routines.o: $(installed-clib) ! 231: $(LD) -o clib-routines.o -r $(addprefix -u ,$(clib-routines)) $(installed-clib) ! 232: ! 233: # This rule checks clib-routines and makes sure it doesn't have any ! 234: # extra symbols. ! 235: kernel: check-clib-routines ! 236: check-clib-routines: clib-routines.o ! 237: test `echo $(clib-routines) | wc -w` -eq `nm $< | wc -l` && touch check-clib-routines ! 238: ! 239: ! 240: # Empty dependency file ! 241: clib-routines.d:; touch $@ ! 242: ! 243: ! 244: ! 245: # Automatically generated source ! 246: ! 247: # User stubs ! 248: objfiles += memory_object_user_user.o memory_object_default_user.o \ ! 249: device_reply_user.o memory_object_reply_user.o ! 250: ! 251: # Server stubs ! 252: objfiles += device_server.o device_pager_server.o mach_port_server.o \ ! 253: mach_server.o mach4_server.o mach_debug_server.o mach_host_server.o ! 254: ! 255: # Where to find the relevant Mig source files ! 256: vpath %.cli $(srcdir)/vm $(srcdir)/device ! 257: vpath %.srv $(srcdir)/device $(srcdir)/ipc $(srcdir)/kern ! 258: ! 259: ! 260: ! 261: ! 262: # ! 263: # Compilation flags ! 264: # ! 265: ! 266: DEFINES += -DMACH -DCMU -DMACH_KERNEL -DKERNEL ! 267: INCLUDES += -I. -I$(srcdir) -I$(srcdir)/include \ ! 268: -I$(srcdir)/bogus -I$(srcdir)/util -I$(srcdir)/kern -I$(srcdir)/device ! 269: ! 270: ! 271: include $(sysdep)/Makefrag ! 272: ! 273: CPPFLAGS += -nostdinc $(DEFINES) $(INCLUDES) ! 274: ! 275: MIGFLAGS += $(CPPFLAGS) ! 276: ! 277: ! 278: all: kernel cross-migcom ! 279: ! 280: ! 281: # ! 282: # Kernel Image ! 283: # ! 284: # (The newline in this command makes it much easier to read in make output.) ! 285: kernel: $(objfiles) ! 286: $(LD) -o $@ $(LDFLAGS) \ ! 287: $(objfiles) ! 288: ! 289: ! 290: ! 291: # ! 292: # Installation ! 293: # ! 294: installed-headers-names = $(addprefix $(includedir)/,$(installed-headers)) ! 295: installed-sysdep-headers-names = $(addprefix $(includedir)/,$($(systype)-installed-headers)) ! 296: install: mkinstalldirs kernel $(installed-headers-names) $(installed-sysdep-headers-names) cross-mig cross-migcom ! 297: $(INSTALL_PROGRAM) kernel $(bootdir)/gnumach ! 298: $(INSTALL_PROGRAM) cross-mig $(bindir)/mig ! 299: $(INSTALL_PROGRAM) cross-migcom $(libexecdir)/mig ! 300: -ln -s $(systype) $(includedir)/mach/machine ! 301: ! 302: $(installed-headers-names): $(includedir)/%: $(srcdir)/include/% ! 303: $(INSTALL_DATA) $< $@ ! 304: ! 305: $(installed-sysdep-headers-names): $(includedir)/%: $(sysdep)/include/% ! 306: $(INSTALL_DATA) $< $@ ! 307: ! 308: mkinstalldirs: ! 309: mkdir -p $(bootdir) $(includedir) $(includedir)/device \ ! 310: $(includedir)/mach $(includedir)/mach/$(systype) ! 311: ! 312: ! 313: # ! 314: # Building the distribution ! 315: # ! 316: ! 317: dist: ! 318: rm -rf gnumach-$(version) ! 319: mkdir gnumach-$(version) ! 320: # Directories ! 321: mkdir gnumach-$(version)/{bogus,chips,ddb,device,ipc,kern,mig,scsi,util,vm,include} ! 322: mkdir gnumach-$(version)/include/{mach,device,mach_debug,sys} ! 323: mkdir gnumach-$(version)/include/mach/exec ! 324: for dir in `cat $(all-archs-subdirs)`; do \ ! 325: mkdir -p gnumach-$(version)/$$dir; \ ! 326: done ! 327: # Files ! 328: ln $(addprefix $(srcdir)/,$(topfiles)) gnumach-$(version) ! 329: ln $(addprefix $(srcdir)/bogus/,$(bogus-files)) gnumach-$(version)/bogus ! 330: ln $(addprefix $(srcdir)/chips/,$(chips-files)) gnumach-$(version)/chips ! 331: ln $(addprefix $(srcdir)/ddb/,$(ddb-files)) gnumach-$(version)/ddb ! 332: ln $(addprefix $(srcdir)/device/,$(device-files)) gnumach-$(version)/device ! 333: ln $(addprefix $(srcdir)/ipc/,$(ipc-files)) gnumach-$(version)/ipc ! 334: ln $(addprefix $(srcdir)/kern/,$(kern-files)) gnumach-$(version)/kern ! 335: ln $(addprefix $(srcdir)/mig/,$(mig-files)) gnumach-$(version)/mig ! 336: ln $(addprefix $(srcdir)/scsi/,$(scsi-files)) gnumach-$(version)/scsi ! 337: ln $(addprefix $(srcdir)/util/,$(util-files)) gnumach-$(version)/util ! 338: ln $(addprefix $(srcdir)/vm/,$(vm-files)) gnumach-$(version)/vm ! 339: ln $(addprefix $(srcdir)/include/,$(mach-headers)) gnumach-$(version)/include/mach ! 340: ln $(addprefix $(srcdir)/include/,$(device-headers)) gnumach-$(version)/include/device ! 341: ln $(addprefix $(srcdir)/include/,$(mach-debug-headers)) gnumach-$(version)/include/mach_debug ! 342: ln $(addprefix $(srcdir)/include/,$(mach-exec-headers)) gnumach-$(version)/include/mach/exec ! 343: ln $(addprefix $(srcdir)/include/,$(other-headers)) gnumach-$(version)/include ! 344: ln $(addprefix $(srcdir)/include/sys/,$(other-sys-headers)) gnumach-$(version)/include/sys ! 345: ln $(addprefix $(srcdir)/include/mach/,$(other-mach-headers)) gnumach-$(version)/include/mach ! 346: # Files in arch dirs ! 347: for file in `cat $(all-archs-files)`; do \ ! 348: ln $(srcdir)/$$file gnumach-$(version)/`dirname $$file`; \ ! 349: done ! 350: for arch in $(all-archs); do \ ! 351: ln -s $$arch gnumach-$(version)/$$arch/include/mach/machine; \ ! 352: done ! 353: tar cfz gnumach-$(version).tar.gz gnumach-$(version) ! 354: rm -rf gnumach-$(version) ! 355: ! 356: ! 357: ! 358: # ! 359: # Autoconf support ! 360: # ! 361: $(srcdir)/configure: configure.in ! 362: cd $(srcdir) && autoconf ! 363: ! 364: Makefile: Makefile.in config.status ! 365: ./config.status ! 366: ! 367: config.status: configure ! 368: ./config.status --recheck ! 369: ! 370: vpath %.in $(srcdir) ! 371: vpath configure $(srcdir) ! 372: ! 373: ! 374: ! 375: # ! 376: # How to do some things ! 377: # ! 378: ! 379: # Building foo.h from foo.sym: ! 380: %.symc: %.sym ! 381: $(AWK) -f $(srcdir)/gensym.awk $< >$*.symc ! 382: %.symc.o: %.symc ! 383: $(CC) -S $(CPPFLAGS) $(CFLAGS) $(CPPFLAGS-$@) -x c -o $@ $< ! 384: %.h: %.symc.o ! 385: sed <$< -e 's/^[^*].*$$//' | \ ! 386: sed -e 's/^[*]/#define/' -e 's/mAgIc[^-0-9]*//' >$@ ! 387: ! 388: # Building from foo.cli ! 389: %.h %_user.c: %.cli $(MIG) $(MIGCOM) ! 390: $(MIG) $(MIGFLAGS) -header $*.h -user $*_user.c -server /dev/null $< ! 391: ! 392: # Building from foo.srv ! 393: %_interface.h %_server.c: %.srv $(MIG) $(MIGCOM) ! 394: $(MIG) $(MIGFLAGS) -header $*_interface.h -server $*_server.c -user /dev/null $< ! 395: ! 396: # ! 397: # Dependency generation ! 398: # ! 399: ! 400: # Include dependency files ! 401: ifneq ($(no_deps),t) ! 402: ! 403: # For each file generated by MiG we need a .d file. ! 404: servers = $(filter %_server.o,$(objfiles)) ! 405: include $(subst _server.o,.migs_d,$(servers)) /dev/null ! 406: include $(subst _server.o,.migsh_d,$(servers)) /dev/null ! 407: ! 408: # vm_user.o fits the pattern, but is not actually a MiG-related file. ! 409: users = $(filter-out vm_user.o,$(filter %_user.o,$(objfiles))) ! 410: include $(subst _user.o,.migu_d,$(users)) /dev/null ! 411: include $(subst _user.o,.miguh_d,$(users)) /dev/null ! 412: ! 413: # For each .o file we need a .d file. ! 414: include $(subst .o,.d,$(filter %.o,$(objfiles))) /dev/null ! 415: ! 416: endif ! 417: ! 418: # Here is how to make those dependency files ! 419: ! 420: %.migs_d: %.srv ! 421: (set -e; $(CPP) $(MIGFLAGS) -M -MG -x c $< | \ ! 422: sed -e 's/\.srv\.o:/_server.c $@:/' > $@) ! 423: ! 424: %.migu_d: %.cli ! 425: (set -e; $(CPP) $(MIGFLAGS) -M -MG -x c $< | \ ! 426: sed -e 's/\.cli\.o:/_user.c $@:/' > $@) ! 427: ! 428: %.migsh_d: %.migs_d ! 429: sed -e 's/_server\.c /_interface.h /' -e 's/migs_d/migsh_d/' < $< > $@ ! 430: ! 431: %.miguh_d: %.migu_d ! 432: sed -e 's/_user\.c /.h /' -e 's/migu_d/miguh_d/' < $< > $@ ! 433: ! 434: # Generic rule for $(CC) based compilation for making dependencies ! 435: define make-deps ! 436: set -e; $(CC) $(CFLAGS) $(CPPFLAGS) -M -MG $< | \ ! 437: sed > [email protected] -e 's/$*\.o:/$*.o $@:/' ! 438: mv -f [email protected] $@ ! 439: endef ! 440: ! 441: %.d: %.c; $(make-deps) ! 442: %.d: %.S; $(make-deps) ! 443: ! 444: # .s files don't go through the preprocessor, so we do this ! 445: # This rule must come *after* the genuine ones above, so that ! 446: # make doesn't build a .s file and then make an empty dependency ! 447: # list. ! 448: %.d: %.s ! 449: echo '$*.o: $<' > $@ ! 450: ! 451: ! 452: # How to build MiG: ! 453: ! 454: mig-objfiles = error.o global.o header.o lexxer.o migcom.o parser.o routine.o \ ! 455: server.o statement.o string.o type.o user.o utils.o ! 456: mig-csrcfiles = $(subst .o,.c,$(mig-objfiles)) ! 457: mig-othersrc = alloc.h boolean.h error.h global.h lexxer.h message.h \ ! 458: mig_string.h routine.h statement.h type.h utils.h write.h \ ! 459: lexxer.l parser.y mig.sh parser.h cpu.sym ! 460: ! 461: mig-files = $(mig-csrcfiles) $(mig-othersrc) ChangeLog ! 462: ! 463: vpath cpu.sym $(srcdir)/mig ! 464: ! 465: # Don't use $(CPPFLAGS) here; MiG needs none of the Mach headers except ! 466: # what happens automagically to build cpu.h. ! 467: ! 468: # Here's how to build MiG for the target. ! 469: cross-mig-objfiles = $(addprefix cross-,$(mig-objfiles)) ! 470: ! 471: $(cross-mig-objfiles): cross-%.o: $(srcdir)/mig/%.c ! 472: $(CC) -c $(CFLAGS) -I. -I$(srcdir)/mig -o $@ $< ! 473: ! 474: ./cross-migcom: $(cross-mig-objfiles) ! 475: $(CC) $(CFLAGS) $(cross-mig-objfiles) $(LEXLIB) -o $@ ! 476: ! 477: # Dependencies for these .o files ! 478: ifneq ($(no_deps),t) ! 479: include $(subst .o,.d,$(cross-mig-objfiles)) /dev/null ! 480: endif ! 481: ! 482: $(subst .o,.d,$(cross-mig-objfiles)): cross-%.d: $(srcdir)/mig/%.c ! 483: set -e; $(CC) $(CFLAGS) -M -MG -I. -I$(srcdir)/mig $< | \ ! 484: sed > [email protected] -e 's/$*\.o:/cross-$*.o $@:/' ! 485: mv -f [email protected] $@ ! 486: ! 487: ! 488: ifeq ($(cross_compiling),yes) ! 489: # When cross compiling, we build two migcoms; one for our use and one to ! 490: # install. Otherwise, we just build the one. ! 491: ! 492: $(mig-objfiles): %.o: $(srcdir)/mig/%.c ! 493: $(BUILD_CC) -c $(BUILD_CFLAGS) -I. -I$(srcdir)/mig -o $@ $< ! 494: ! 495: ./migcom: $(mig-objfiles) ! 496: $(BUILD_CC) $(BUILD_CFLAGS) $(mig-objfiles) $(LEXLIB) -o $@ ! 497: ! 498: ifneq ($(no_deps),t) ! 499: include $(subst .o,.d,$(mig-objfiles)) ! 500: endif ! 501: ! 502: $(subst .o,.d,$(mig-objfiles)): %.d: $(srcdir)/mig/%.c ! 503: set -e; $(BUILD_CC) $(BUILD_CFLAGS) -M -MG -I. -I$(srcdir)/mig $< | \ ! 504: sed > [email protected] -e 's/$*\.o:/$*.o $@:/' ! 505: mv -f [email protected] $@ ! 506: ! 507: else ! 508: ./migcom: ./cross-migcom ! 509: rm -f $@ ! 510: ln $< $@ ! 511: endif ! 512: ! 513: $(srcdir)/mig/lexxer.c: $(srcdir)/mig/lexxer.l ! 514: $(LEX) $(LFLAGS) $< ! 515: mv lex.yy.c $*.c ! 516: ! 517: $(srcdir)/mig/parser.c $(srcdir)/mig/parser.h: $(srcdir)/mig/parser.y ! 518: $(YACC) $(YFLAGS) -d $< ! 519: mv y.tab.c $(srcdir)/mig/parser.c ! 520: mv y.tab.h $(srcdir)/mig/parser.h ! 521: ! 522: # Version of mig script that looks for the right local tools ! 523: ifeq ($(cross_compiling),yes) ! 524: ./mig: $(srcdir)/mig/mig.sh Makefile ! 525: sed -e 's,@MIGDIR@,.,g' \ ! 526: -e 's,@CPP@,${BUILD_CC} -x c-header -E,g' \ ! 527: $< >[email protected] && chmod +x [email protected] && mv -f [email protected] $@ ! 528: else ! 529: ./mig: $(srcdir)/mig/mig.sh Makefile ! 530: sed -e 's,@MIGDIR@,.,g' \ ! 531: -e 's,@CPP@,${CC} -x c-header -E,g' \ ! 532: $< >[email protected] && chmod +x [email protected] && mv -f [email protected] $@ ! 533: endif ! 534: ! 535:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.