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 OmniOS Community Edition (OmniOSce) Association.
  26 # Copyright (c) 2017 Joyent, Inc.
  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/pci/%.c
 125         $(COMPILE.c) -o $@ $<
 126         $(CTFCONVERT_O)
 127 
 128 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/pciex/%.c
 129         $(COMPILE.c) -o $@ $<
 130         $(CTFCONVERT_O)
 131 
 132 $(OBJS_DIR)/%.o:                $(UTSBASE)/intel/io/pciex/hotplug/%.c
 133         $(COMPILE.c) -o $@ $<
 134         $(CTFCONVERT_O)
 135 
 136 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/pcplusmp/%.c
 137         $(COMPILE.c) -o $@ $<
 138         $(CTFCONVERT_O)
 139 
 140 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/pcplusmp/%.s
 141         $(COMPILE.s) -o $@ $<
 142 
 143 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/apix/%.c
 144         $(COMPILE.c) -o $@ $<
 145         $(CTFCONVERT_O)
 146 
 147 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/ppm/%.c
 148         $(COMPILE.c) -o $@ $<
 149         $(CTFCONVERT_O)
 150 
 151 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/ppm/%.s
 152         $(COMPILE.s) -o $@ $<
 153 
 154 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/psm/%.c
 155         $(COMPILE.c) -o $@ $<
 156         $(CTFCONVERT_O)
 157 
 158 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/psm/%.s
 159         $(COMPILE.s) -o $@ $<
 160 
 161 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/tzmon/%.c
 162         $(COMPILE.c) -o $@ $<
 163         $(CTFCONVERT_O)
 164 
 165 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/ml/%.s
 166         $(COMPILE.s) -o $@ $<
 167 
 168 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/os/%.c
 169         $(COMPILE.c) -_gcc=-fno-stack-protector -o $@ $<
 170         $(CTFCONVERT_O)
 171 
 172 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/os/cpupm/%.c
 173         $(COMPILE.c) -o $@ $<
 174         $(CTFCONVERT_O)
 175 
 176 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/boot/%.c
 177         $(COMPILE.c) -o $@ $<
 178         $(CTFCONVERT_O)
 179 
 180 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/vm/%.c
 181         $(COMPILE.c) -o $@ $<
 182         $(CTFCONVERT_O)
 183 
 184 $(OBJS_DIR)/%.o:                $(UTSBASE)/common/io/%.c
 185         $(COMPILE.c) -o $@ $<
 186         $(CTFCONVERT_O)
 187 
 188 $(OBJS_DIR)/%.o:                $(UTSBASE)/common/io/ppm/%.c
 189         $(COMPILE.c) -o $@ $<
 190         $(CTFCONVERT_O)
 191 
 192 $(OBJS_DIR)/%.o:                $(UTSBASE)/common/io/pciex/%.c
 193         $(COMPILE.c) -o $@ $<
 194         $(CTFCONVERT_O)
 195 
 196 $(OBJS_DIR)/%.o:                $(UTSBASE)/common/os/%.c
 197         $(COMPILE.c) -o $@ $<
 198         $(CTFCONVERT_O)
 199 
 200 $(OBJS_DIR)/%.o:                $(SRC)/common/dis/i386/%.c
 201         $(COMPILE.c) -o $@ $<
 202         $(CTFCONVERT_O)
 203 
 204 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/gfx_private/%.c
 205         $(COMPILE.c) -o $@ $<
 206         $(CTFCONVERT_O)
 207 
 208 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/io/xsvc/%.c
 209         $(COMPILE.c) -o $@ $<
 210         $(CTFCONVERT_O)
 211 
 212 $(OBJS_DIR)/%.o:                $(UTSBASE)/common/xen/os/%.c
 213         $(COMPILE.c) -o $@ $<
 214         $(CTFCONVERT_O)
 215 
 216 $(OBJS_DIR)/%.o:                $(UTSBASE)/i86pc/dboot/%.c
 217         $(COMPILE.c) -o $@ $<
 218         $(CTFCONVERT_O)
 219 
 220 #
 221 # dboot stuff is always 32 bit, linked to run with phys_addr == virt_addr
 222 #
 223 DBOOT_OBJS_DIR  = dboot/$(OBJS_DIR)
 224 DBOOT_MACH_32   = -D_BOOT_TARGET_i386
 225 DBOOT_MACH_64   = -D_BOOT_TARGET_amd64
 226 DBOOT_DEFS      = -D_BOOT $(DBOOT_MACH_$(CLASS))
 227 DBOOT_DEFS      += -D_MACHDEP -U_KERNEL -D_I32LPx
 228 DBOOT_FLAGS     = $(CCVERBOSE) $(CSTD) $(CERRWARN) $(CCNOAUTOINLINE)
 229 
 230 DBOOT_CC_INCL   = -I$(SRC)/common -I$(SRC)/common/util $(INCLUDE_PATH)
 231 DBOOT_AS_INCL   = $(AS_INC_PATH)
 232 
 233 DBOOT_AS        = $(ONBLD_TOOLS)/bin/$(MACH)/aw
 234 
 235 $(DBOOT_OBJS_DIR)/%.o:          $(UTSBASE)/i86pc/boot/%.c
 236         $(i386_CC) $(DBOOT_FLAGS) -O $(DBOOT_DEFS) $(DBOOT_CC_INCL) -c -o $@ $<
 237 
 238 $(DBOOT_OBJS_DIR)/%.o:          $(UTSBASE)/i86pc/dboot/%.c
 239         $(i386_CC) $(DBOOT_FLAGS) -O $(DBOOT_DEFS) $(DBOOT_CC_INCL) -c -o $@ $<
 240 
 241 $(DBOOT_OBJS_DIR)/%.o:          $(UTSBASE)/intel/ia32/%.s
 242         $(DBOOT_AS) -P -D_ASM $(DBOOT_DEFS) $(DBOOT_AS_INCL) -o $@ $<
 243 
 244 $(DBOOT_OBJS_DIR)/%.o:          $(SRC)/common/font/%.c
 245         $(i386_CC) $(DBOOT_FLAGS) -O $(DBOOT_DEFS) $(DBOOT_CC_INCL) -c -o $@ $<
 246 
 247 $(DBOOT_OBJS_DIR)/$(FONT).c:    $(FONT_DIR)/$(FONT_SRC).bdf
 248         $(VTFONTCVT) -f source -o $@ $(FONT_DIR)/$(FONT_SRC).bdf
 249 
 250 $(DBOOT_OBJS_DIR)/%.o:          $(DBOOT_OBJS_DIR)/%.c
 251         $(i386_CC) $(DBOOT_FLAGS) -O $(DBOOT_DEFS) $(DBOOT_CC_INCL) -c -o $@ $<
 252 
 253 $(DBOOT_OBJS_DIR)/%.o:          $(COMMONBASE)/crypto/sha1/%.c
 254         $(i386_CC) $(DBOOT_FLAGS) -O $(DBOOT_DEFS) $(DBOOT_CC_INCL) -c -o $@ $<
 255 
 256 $(DBOOT_OBJS_DIR)/%.o:          $(DBOOT_OBJS_DIR)/%.c
 257         $(i386_CC) $(DBOOT_FLAGS) -O $(DBOOT_DEFS) $(DBOOT_CC_INCL) -c -o $@ $<
 258 
 259 $(DBOOT_OBJS_DIR)/%.o:          $(COMMONBASE)/util/%.c
 260         $(i386_CC) $(DBOOT_FLAGS) -O $(DBOOT_DEFS) $(DBOOT_CC_INCL) -c -o $@ $<
 261 
 262 $(DBOOT_OBJS_DIR)/%.o:          $(COMMONBASE)/util/i386/%.s
 263         $(DBOOT_AS) -P -D_ASM $(DBOOT_DEFS) $(DBOOT_AS_INCL) -o $@ $<
 264 
 265 $(DBOOT_OBJS_DIR)/%.o:          $(UTSBASE)/i86pc/dboot/%.s
 266         $(DBOOT_AS) -P -D_ASM $(DBOOT_DEFS) $(DBOOT_AS_INCL) -o $@ $<
 267 
 268 #
 269 # Stuff to build bios_call.o for the kernel.
 270 #
 271 MAPFILE_BIOS    = $(UTSBASE)/i86pc/conf/Mapfile.bios
 272 $(OBJS_DIR)/bios_call.o:    $(UTSBASE)/i86pc/ml/bios_call_src.s
 273         $(COMPILE.s) -o $(OBJS_DIR)/bios_call_src.o \
 274                 $(UTSBASE)/i86pc/ml/bios_call_src.s
 275         $(LD) -dn -M $(MAPFILE_BIOS)  \
 276                 -o $(OBJS_DIR)/bios_call_src $(OBJS_DIR)/bios_call_src.o
 277         @echo "  .data"                         > $(OBJS_DIR)/bios_call.s
 278         @echo "  .globl bios_image"             >> $(OBJS_DIR)/bios_call.s
 279         @echo "bios_image:"                     >> $(OBJS_DIR)/bios_call.s
 280         $(ELFEXTRACT) $(OBJS_DIR)/bios_call_src >> $(OBJS_DIR)/bios_call.s
 281         @echo "  .align 4"                      >> $(OBJS_DIR)/bios_call.s
 282         @echo "  .globl bios_size"              >> $(OBJS_DIR)/bios_call.s
 283         @echo "bios_size:"                      >> $(OBJS_DIR)/bios_call.s
 284         @echo "  .long . - bios_image"          >> $(OBJS_DIR)/bios_call.s
 285         $(COMPILE.s) -o $@ $(OBJS_DIR)/bios_call.s
 286 
 287 #
 288 # Stuff to build fb_swtch.o for the kernel.
 289 #
 290 MAPFILE_FBSWTCH = $(UTSBASE)/i86pc/conf/Mapfile.fb_swtch
 291 $(OBJS_DIR)/fb_swtch.o:    $(UTSBASE)/i86pc/ml/fb_swtch_src.s
 292         $(COMPILE.s) -o $(OBJS_DIR)/fb_swtch_src.o \
 293                 $(UTSBASE)/i86pc/ml/fb_swtch_src.s
 294         $(LD) -dn -M $(MAPFILE_FBSWTCH)  \
 295                 -o $(OBJS_DIR)/fb_swtch_src $(OBJS_DIR)/fb_swtch_src.o
 296         @echo "  .data"                         > $(OBJS_DIR)/fb_swtch.s
 297         @echo "  .globl fb_swtch_image"         >> $(OBJS_DIR)/fb_swtch.s
 298         @echo "fb_swtch_image:"                 >> $(OBJS_DIR)/fb_swtch.s
 299         $(ELFEXTRACT) $(OBJS_DIR)/fb_swtch_src  >> $(OBJS_DIR)/fb_swtch.s
 300         @echo "  .align 4"                      >> $(OBJS_DIR)/fb_swtch.s
 301         @echo "  .globl fb_swtch_size"          >> $(OBJS_DIR)/fb_swtch.s
 302         @echo "fb_swtch_size:"                  >> $(OBJS_DIR)/fb_swtch.s
 303         @echo "  .long . - fb_swtch_image"      >> $(OBJS_DIR)/fb_swtch.s
 304         $(COMPILE.s) -o $@ $(OBJS_DIR)/fb_swtch.s
 305 
 306 # ridiculous contortions ---
 307 ATOMIC_SUBDIR_32        = i386
 308 ATOMIC_SUBDIR_64        = amd64
 309 ATOMIC_SUBDIR           = $(ATOMIC_SUBDIR_$(CLASS))
 310 
 311 $(OBJS_DIR)/%.o:                $(SRC)/common/atomic/$(ATOMIC_SUBDIR)/%.s
 312         $(COMPILE.s) -o $@ $<
 313 
 314 #
 315 # dtrace stubs
 316 #
 317 
 318 $(OBJS_DIR)/dtracestubs.s:      $(UNIX_O) $(LIBS)
 319         $(NM) -u $(UNIX_O) $(LIBS) | \
 320         $(EGREP) '(__dtrace_probe_|smap_(disable|enable))' | $(SORT) | \
 321             $(UNIQ) | $(AWK) '{ \
 322             printf("\t.globl %s\n\t.type %s,@function\n%s:\n", \
 323             $$1, $$1, $$1); }' > $(OBJS_DIR)/dtracestubs.s
 324 
 325 $(DTRACESTUBS): $(DTRACESTUBS_O)
 326         $(BUILD.SO) $(DTRACESTUBS_O)