1 #
   2 # CDDL HEADER START
   3 #
   4 # The contents of this file are subject to the terms of the
   5 # Common Development and Distribution License (the "License").
   6 # You may not use this file except in compliance with the License.
   7 #
   8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9 # or http://www.opensolaris.org/os/licensing.
  10 # See the License for the specific language governing permissions
  11 # and limitations under the License.
  12 #
  13 # When distributing Covered Code, include this CDDL HEADER in each
  14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15 # If applicable, add the following below this CDDL HEADER, with the
  16 # fields enclosed by brackets "[]" replaced with your own identifying
  17 # information: Portions Copyright [yyyy] [name of copyright owner]
  18 #
  19 # CDDL HEADER END
  20 #
  21 
  22 #
  23 # Copyright (c) 1992, 2010, Oracle and/or its affiliates. All rights reserved.
  24 # Copyright 2015 Igor Kozhukhov <ikozhukhov@gmail.com>
  25 # Copyright 2019 Joyent, Inc.
  26 # Copyright 2019 OmniOS Community Edition (OmniOSce) Association.
  27 #
  28 
  29 #       This Makefile defines the build rules for the directory uts/i86pc
  30 #       and its children. These are the source files which are i86pc
  31 #       "implementation architecture" dependent.
  32 #
  33 #       The following two-level ordering must be maintained in this file.
  34 #         Lines are sorted first in order of decreasing specificity based on
  35 #         the first directory component.  That is, i86pc rules come before
  36 #         intel rules come before common rules.
  37 #
  38 #         Lines whose initial directory components are equal are sorted
  39 #         alphabetically by the remaining components.
  40 
  41 #
  42 #       Section 1a: C object build rules
  43 #
  44 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/conf/%.c
  45         $(COMPILE.c) -o $@ $<
  46         $(CTFCONVERT_O)
  47 
  48 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/cpu/amd_opteron/%.c
  49         $(COMPILE.c) -o $@ $<
  50         $(CTFCONVERT_O)
  51 
  52 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/cpu/authenticamd/%.c
  53         $(COMPILE.c) -o $@ $<
  54         $(CTFCONVERT_O)
  55 
  56 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/cpu/generic_cpu/%.c
  57         $(COMPILE.c) -o $@ $<
  58         $(CTFCONVERT_O)
  59 
  60 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/cpu/genuineintel/%.c
  61         $(COMPILE.c) -o $@ $<
  62         $(CTFCONVERT_O)
  63 
  64 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/%.c
  65         $(COMPILE.c) -o $@ $<
  66         $(CTFCONVERT_O)
  67 
  68 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/acpi_drv/%.c
  69         $(COMPILE.c) -o $@ $<
  70         $(CTFCONVERT_O)
  71 
  72 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/fipe/%.c
  73         $(COMPILE.c) -o $@ $<
  74         $(CTFCONVERT_O)
  75 
  76 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/acpi/acpidev/%.c
  77         $(COMPILE.c) -o $@ $<
  78         $(CTFCONVERT_O)
  79 
  80 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/acpi/acpinex/%.c
  81         $(COMPILE.c) -o $@ $<
  82         $(CTFCONVERT_O)
  83 
  84 SBD_IOCTL       = $(UTSBASE)/i86pc/sys/sbd_ioctl.h
  85 DRMACH_IO       = $(UTSBASE)/i86pc/io/acpi/drmach_acpi
  86 DRMACH_GENERR   = $(DRMACH_IO)/sbdgenerr
  87 DR_IO           = $(UTSBASE)/i86pc/io/dr
  88 DR_GENERR       = $(DR_IO)/sbdgenerr
  89 
  90 $(DRMACH_GENERR):       $(DR_IO)/sbdgenerr.pl
  91         $(RM) $@
  92         $(CAT) $(DR_IO)/sbdgenerr.pl > $@
  93         $(CHMOD) +x $@
  94 
  95 $(DRMACH_IO)/drmach_err.c:      $(DRMACH_GENERR) $(SBD_IOCTL)
  96         $(RM) $@
  97         $(DRMACH_GENERR) EX86 < $(SBD_IOCTL) > $(DRMACH_IO)/drmach_err.c
  98 
  99 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/acpi/drmach_acpi/%.c
 100         $(COMPILE.c) -o $@ $<
 101         $(CTFCONVERT_O)
 102 
 103 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/amd_iommu/%.c
 104         $(COMPILE.c) -o $@ $<
 105         $(CTFCONVERT_O)
 106 
 107 $(DR_GENERR):                   $(DR_IO)/sbdgenerr.pl
 108         $(RM) $@
 109         $(CAT) $(DR_IO)/sbdgenerr.pl > $@
 110         $(CHMOD) +x $@
 111 
 112 $(DR_IO)/dr_err.c:              $(DR_GENERR) $(SBD_IOCTL)
 113         $(RM) $@
 114         $(DR_GENERR) ESBD < $(SBD_IOCTL) > $(DR_IO)/dr_err.c
 115 
 116 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/dr/%.c
 117         $(COMPILE.c) -o $@ $<
 118         $(CTFCONVERT_O)
 119 
 120 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/ioat/%.c
 121         $(COMPILE.c) -o $@ $<
 122         $(CTFCONVERT_O)
 123 
 124 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/imc/%.c
 125         $(COMPILE.c) -o $@ $<
 126         $(CTFCONVERT_O)
 127 
 128 $(OBJS_DIR)/%.o:                $(SRC)/common/mc/imc/%.c
 129         $(COMPILE.c) -o $@ $<
 130         $(CTFCONVERT_O)
 131 
 132 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/pci/%.c
 133         $(COMPILE.c) -o $@ $<
 134         $(CTFCONVERT_O)
 135 
 136 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/pciex/%.c
 137         $(COMPILE.c) -o $@ $<
 138         $(CTFCONVERT_O)
 139 
 140 $(OBJS_DIR)/%.o:                $(UTSBASE)/intel/io/pciex/hotplug/%.c
 141         $(COMPILE.c) -o $@ $<
 142         $(CTFCONVERT_O)
 143 
 144 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/pcplusmp/%.c
 145         $(COMPILE.c) -o $@ $<
 146         $(CTFCONVERT_O)
 147 
 148 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/pcplusmp/%.s
 149         $(COMPILE.s) -o $@ $<
 150 
 151 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/apix/%.c
 152         $(COMPILE.c) -o $@ $<
 153         $(CTFCONVERT_O)
 154 
 155 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/ppm/%.c
 156         $(COMPILE.c) -o $@ $<
 157         $(CTFCONVERT_O)
 158 
 159 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/ppm/%.s
 160         $(COMPILE.s) -o $@ $<
 161 
 162 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/psm/%.c
 163         $(COMPILE.c) -o $@ $<
 164         $(CTFCONVERT_O)
 165 
 166 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/psm/%.s
 167         $(COMPILE.s) -o $@ $<
 168 
 169 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/tzmon/%.c
 170         $(COMPILE.c) -o $@ $<
 171         $(CTFCONVERT_O)
 172 
 173 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/ml/%.s
 174         $(COMPILE.s) -o $@ $<
 175 
 176 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/os/%.c
 177         $(COMPILE.c) -_gcc=-fno-stack-protector -o $@ $<
 178         $(CTFCONVERT_O)
 179 
 180 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/os/cpupm/%.c
 181         $(COMPILE.c) -o $@ $<
 182         $(CTFCONVERT_O)
 183 
 184 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/boot/%.c
 185         $(COMPILE.c) -o $@ $<
 186         $(CTFCONVERT_O)
 187 
 188 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/vm/%.c
 189         $(COMPILE.c) -o $@ $<
 190         $(CTFCONVERT_O)
 191 
 192 $(OBJS_DIR)/%.o:                $(UTSBASE)/common/io/%.c
 193         $(COMPILE.c) -o $@ $<
 194         $(CTFCONVERT_O)
 195 
 196 $(OBJS_DIR)/%.o:                $(UTSBASE)/common/io/ppm/%.c
 197         $(COMPILE.c) -o $@ $<
 198         $(CTFCONVERT_O)
 199 
 200 $(OBJS_DIR)/%.o:                $(UTSBASE)/common/io/pciex/%.c
 201         $(COMPILE.c) -o $@ $<
 202         $(CTFCONVERT_O)
 203 
 204 $(OBJS_DIR)/%.o:                $(UTSBASE)/common/os/%.c
 205         $(COMPILE.c) -o $@ $<
 206         $(CTFCONVERT_O)
 207 
 208 $(OBJS_DIR)/%.o:                $(SRC)/common/dis/i386/%.c
 209         $(COMPILE.c) -o $@ $<
 210         $(CTFCONVERT_O)
 211 
 212 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/gfx_private/%.c
 213         $(COMPILE.c) -o $@ $<
 214         $(CTFCONVERT_O)
 215 
 216 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/xsvc/%.c
 217         $(COMPILE.c) -o $@ $<
 218         $(CTFCONVERT_O)
 219 
 220 $(OBJS_DIR)/%.o:                $(UTSBASE)/common/xen/os/%.c
 221         $(COMPILE.c) -o $@ $<
 222         $(CTFCONVERT_O)
 223 
 224 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/dboot/%.c
 225         $(COMPILE.c) -o $@ $<
 226         $(CTFCONVERT_O)
 227 
 228 #
 229 # dboot stuff is always 32 bit, linked to run with phys_addr == virt_addr
 230 #
 231 DBOOT_OBJS_DIR  = dboot/$(OBJS_DIR)
 232 DBOOT_MACH_32   = -D_BOOT_TARGET_i386
 233 DBOOT_MACH_64   = -D_BOOT_TARGET_amd64
 234 DBOOT_DEFS      = -D_BOOT $(DBOOT_MACH_$(CLASS))
 235 DBOOT_DEFS      += -D_MACHDEP -U_KERNEL -D_I32LPx
 236 DBOOT_FLAGS     = $(CFLAGS_XARCH_32) $(CCVERBOSE) $(CSTD) $(CERRWARN)
 237 DBOOT_FLAGS     += $(CCNOAUTOINLINE)
 238 
 239 DBOOT_CC_INCL   = -I$(SRC)/common -I$(SRC)/common/util $(INCLUDE_PATH)
 240 DBOOT_AS_INCL   = $(AS_INC_PATH)
 241 
 242 DBOOT_AS        = $(ONBLD_TOOLS)/bin/$(MACH)/aw
 243 
 244 $(DBOOT_OBJS_DIR)/%.o:          $(UTSBASE)/i86pc/boot/%.c
 245         $(i386_CC) $(DBOOT_FLAGS) -O $(DBOOT_DEFS) $(DBOOT_CC_INCL) -c -o $@ $<
 246 
 247 $(DBOOT_OBJS_DIR)/%.o:          $(UTSBASE)/i86pc/dboot/%.c
 248         $(i386_CC) $(DBOOT_FLAGS) -O $(DBOOT_DEFS) $(DBOOT_CC_INCL) -c -o $@ $<
 249 
 250 $(DBOOT_OBJS_DIR)/%.o:          $(UTSBASE)/intel/ia32/%.s
 251         $(DBOOT_AS) -P -D_ASM $(DBOOT_DEFS) $(DBOOT_AS_INCL) -o $@ $<
 252 
 253 $(DBOOT_OBJS_DIR)/%.o:          $(SRC)/common/font/%.c
 254         $(i386_CC) $(DBOOT_FLAGS) -O $(DBOOT_DEFS) $(DBOOT_CC_INCL) -c -o $@ $<
 255 
 256 $(DBOOT_OBJS_DIR)/$(FONT).c:    $(FONT_DIR)/$(FONT_SRC).bdf
 257         $(VTFONTCVT) -f source -o $@ $(FONT_DIR)/$(FONT_SRC).bdf
 258 
 259 $(DBOOT_OBJS_DIR)/%.o:          $(DBOOT_OBJS_DIR)/%.c
 260         $(i386_CC) $(DBOOT_FLAGS) -O $(DBOOT_DEFS) $(DBOOT_CC_INCL) -c -o $@ $<
 261 
 262 $(DBOOT_OBJS_DIR)/%.o:          $(COMMONBASE)/crypto/sha1/%.c
 263         $(i386_CC) $(DBOOT_FLAGS) -O $(DBOOT_DEFS) $(DBOOT_CC_INCL) -c -o $@ $<
 264 
 265 $(DBOOT_OBJS_DIR)/%.o:          $(DBOOT_OBJS_DIR)/%.c
 266         $(i386_CC) $(DBOOT_FLAGS) -O $(DBOOT_DEFS) $(DBOOT_CC_INCL) -c -o $@ $<
 267 
 268 $(DBOOT_OBJS_DIR)/%.o:          $(COMMONBASE)/util/%.c
 269         $(i386_CC) $(DBOOT_FLAGS) -O $(DBOOT_DEFS) $(DBOOT_CC_INCL) -c -o $@ $<
 270 
 271 $(DBOOT_OBJS_DIR)/%.o:          $(COMMONBASE)/util/i386/%.s
 272         $(DBOOT_AS) -P -D_ASM $(DBOOT_DEFS) $(DBOOT_AS_INCL) -o $@ $<
 273 
 274 $(DBOOT_OBJS_DIR)/%.o:          $(UTSBASE)/i86pc/dboot/%.s
 275         $(DBOOT_AS) -P -D_ASM $(DBOOT_DEFS) $(DBOOT_AS_INCL) -o $@ $<
 276 
 277 #
 278 # Stuff to build bios_call.o for the kernel.
 279 #
 280 MAPFILE_BIOS    = $(UTSBASE)/i86pc/conf/Mapfile.bios
 281 $(OBJS_DIR)/bios_call.o:    $(UTSBASE)/i86pc/ml/bios_call_src.s
 282         $(COMPILE.s) -o $(OBJS_DIR)/bios_call_src.o \
 283                 $(UTSBASE)/i86pc/ml/bios_call_src.s
 284         $(LD) -dn -M $(MAPFILE_BIOS)  \
 285                 -o $(OBJS_DIR)/bios_call_src $(OBJS_DIR)/bios_call_src.o
 286         @echo "  .data"                         > $(OBJS_DIR)/bios_call.s
 287         @echo "  .globl bios_image"             >> $(OBJS_DIR)/bios_call.s
 288         @echo "bios_image:"                     >> $(OBJS_DIR)/bios_call.s
 289         $(ELFEXTRACT) $(OBJS_DIR)/bios_call_src >> $(OBJS_DIR)/bios_call.s
 290         @echo "  .align 4"                      >> $(OBJS_DIR)/bios_call.s
 291         @echo "  .globl bios_size"              >> $(OBJS_DIR)/bios_call.s
 292         @echo "bios_size:"                      >> $(OBJS_DIR)/bios_call.s
 293         @echo "  .long . - bios_image"          >> $(OBJS_DIR)/bios_call.s
 294         $(COMPILE.s) -o $@ $(OBJS_DIR)/bios_call.s
 295 
 296 #
 297 # Stuff to build fb_swtch.o for the kernel.
 298 #
 299 MAPFILE_FBSWTCH = $(UTSBASE)/i86pc/conf/Mapfile.fb_swtch
 300 $(OBJS_DIR)/fb_swtch.o:    $(UTSBASE)/i86pc/ml/fb_swtch_src.s
 301         $(COMPILE.s) -o $(OBJS_DIR)/fb_swtch_src.o \
 302                 $(UTSBASE)/i86pc/ml/fb_swtch_src.s
 303         $(LD) -dn -M $(MAPFILE_FBSWTCH)  \
 304                 -o $(OBJS_DIR)/fb_swtch_src $(OBJS_DIR)/fb_swtch_src.o
 305         @echo "  .data"                         > $(OBJS_DIR)/fb_swtch.s
 306         @echo "  .globl fb_swtch_image"         >> $(OBJS_DIR)/fb_swtch.s
 307         @echo "fb_swtch_image:"                 >> $(OBJS_DIR)/fb_swtch.s
 308         $(ELFEXTRACT) $(OBJS_DIR)/fb_swtch_src  >> $(OBJS_DIR)/fb_swtch.s
 309         @echo "  .align 4"                      >> $(OBJS_DIR)/fb_swtch.s
 310         @echo "  .globl fb_swtch_size"          >> $(OBJS_DIR)/fb_swtch.s
 311         @echo "fb_swtch_size:"                  >> $(OBJS_DIR)/fb_swtch.s
 312         @echo "  .long . - fb_swtch_image"      >> $(OBJS_DIR)/fb_swtch.s
 313         $(COMPILE.s) -o $@ $(OBJS_DIR)/fb_swtch.s
 314 
 315 # ridiculous contortions ---
 316 ATOMIC_SUBDIR_32        = i386
 317 ATOMIC_SUBDIR_64        = amd64
 318 ATOMIC_SUBDIR           = $(ATOMIC_SUBDIR_$(CLASS))
 319 
 320 $(OBJS_DIR)/%.o:                $(SRC)/common/atomic/$(ATOMIC_SUBDIR)/%.s
 321         $(COMPILE.s) -o $@ $<
 322 
 323 #
 324 # dtrace stubs
 325 #
 326 
 327 $(OBJS_DIR)/dtracestubs.s:      $(UNIX_O) $(LIBS)
 328         $(NM) -u $(UNIX_O) $(LIBS) | \
 329         $(EGREP) '(__dtrace_probe_|smap_(disable|enable))' | $(SORT) | \
 330             $(UNIQ) | $(AWK) '{ \
 331             printf("\t.globl %s\n\t.type %s,@function\n%s:\n", \
 332             $$1, $$1, $$1); }' > $(OBJS_DIR)/dtracestubs.s
 333 
 334 $(DTRACESTUBS): $(DTRACESTUBS_O)
 335         $(BUILD.SO) $(DTRACESTUBS_O)