1# 2# This file and its contents are supplied under the terms of the 3# Common Development and Distribution License ("CDDL"), version 1.0. 4# You may only use this file in accordance with the terms of version 5# 1.0 of the CDDL. 6# 7# A full copy of the text of the CDDL should have accompanied this 8# source. A copy of the CDDL is also available via the Internet at 9# http://www.illumos.org/license/CDDL. 10# 11 12# 13# Copyright 2016 Toomas Soome <tsoome@me.com> 14# Copyright 2019 Joyent, Inc. 15# 16 17# 18# Notes: 19# - We don't use the libc strerror/sys_errlist because the string table is 20# quite large. 21# 22 23# standalone components and stuff we have modified locally 24SRCS += $(ZLIB)/gzguts.h $(ZLIB)/zutil.h 25SRCS += $(SASRC)/__main.c $(SASRC)/abort.c $(SASRC)/assert.c 26SRCS += $(SASRC)/bcd.c $(SASRC)/environment.c 27SRCS += $(SASRC)/getopt.c $(SASRC)/random.c 28SRCS += $(SASRC)/sbrk.c $(SASRC)/twiddle.c 29SRCS += $(SASRC)/zalloc.c $(SASRC)/zalloc_malloc.c 30 31OBJECTS += __main.o abort.o assert.o bcd.o environment.o \ 32 getopt.o gets.o globals.o pager.o panic.o printf.o \ 33 strdup.o strerror.o strtol.o strtoll.o strtoul.o strtoull.o random.o \ 34 sbrk.o twiddle.o zalloc.o zalloc_malloc.o 35 36# private (pruned) versions of libc string functions 37SRCS += $(SASRC)/strcasecmp.c 38OBJECTS += strcasecmp.o 39 40# from libc 41SRCS += $(SASRC)/ntoh.c 42OBJECTS += ntoh.o 43 44# string functions from libc 45SRCS += $(SASRC)/string/bcmp.c $(SASRC)/string/bcopy.c 46SRCS += $(SASRC)/string/bzero.c $(SASRC)/string/ffs.c 47SRCS += $(SASRC)/string/fls.c $(SASRC)/string/memccpy.c 48SRCS += $(SASRC)/string/memchr.c $(SASRC)/string/memcmp.c 49SRCS += $(SASRC)/string/memcpy.c $(SASRC)/string/memmove.c 50SRCS += $(SASRC)/string/memset.c $(SASRC)/string/strcat.c 51SRCS += $(SASRC)/string/strchr.c $(SASRC)/string/strcmp.c 52SRCS += $(SASRC)/string/strcpy.c $(SASRC)/string/stpcpy.c 53SRCS += $(SASRC)/string/stpncpy.c $(SASRC)/string/strcspn.c 54SRCS += $(SASRC)/string/strlcat.c $(SASRC)/string/strlcpy.c 55SRCS += $(SASRC)/string/strlen.c $(SASRC)/string/strncat.c 56SRCS += $(SASRC)/string/strncmp.c $(SASRC)/string/strncpy.c 57SRCS += $(SASRC)/string/strpbrk.c $(SASRC)/string/strrchr.c 58SRCS += $(SASRC)/string/strsep.c $(SASRC)/string/strspn.c 59SRCS += $(SASRC)/string/strstr.c $(SASRC)/string/strtok.c 60SRCS += $(SASRC)/string/swab.c $(SASRC)/string/strnlen.c 61 62SRCS += $(SASRC)/qdivrem.c 63 64OBJECTS += bcmp.o bcopy.o bzero.o ffs.o fls.o \ 65 memccpy.o memchr.o memcmp.o memcpy.o memmove.o memset.o \ 66 qdivrem.o strcat.o strchr.o strcmp.o strcpy.o stpcpy.o stpncpy.o \ 67 strcspn.o strlcat.o strlcpy.o strlen.o strncat.o strncmp.o strncpy.o \ 68 strpbrk.o strrchr.o strsep.o strspn.o strstr.o strtok.o swab.o \ 69 strnlen.o 70 71# uuid functions from libc 72SRCS += $(SASRC)/uuid/uuid_create_nil.c 73SRCS += $(SASRC)/uuid/uuid_equal.c 74SRCS += $(SASRC)/uuid/uuid_is_nil.c 75 76SRCS += $(SASRC)/uuid_from_string.c 77SRCS += $(SASRC)/uuid_to_string.c 78 79OBJECTS += uuid_create_nil.o uuid_equal.o uuid_from_string.o uuid_is_nil.o \ 80 uuid_to_string.o 81 82# decompression functionality from libbz2 83# NOTE: to actually test this functionality after libbz2 upgrade compile 84# loader(8) with LOADER_BZIP2_SUPPORT defined 85objs/_bzlib.o := CPPFLAGS += -DBZ_LOADER -DBZ_NO_STDIO -DBZ_NO_COMPRESS 86objs/_bzlib.o := CPPFLAGS += -I$(SRC)/common/bzip2 87objs/_bzlib.o: libstand_bzlib_private.h 88pics/_bzlib.o := CPPFLAGS += -DBZ_LOADER -DBZ_NO_STDIO -DBZ_NO_COMPRESS 89pics/_bzlib.o := CPPFLAGS += -I$(SRC)/common/bzip2 90pics/_bzlib.o: libstand_bzlib_private.h 91objs/_crctable.o := CPPFLAGS += -DBZ_LOADER -DBZ_NO_STDIO -DBZ_NO_COMPRESS 92objs/_crctable.o := CPPFLAGS += -I$(SRC)/common/bzip2 93objs/_crctable.o: libstand_bzlib_private.h 94pics/_crctable.o := CPPFLAGS += -DBZ_LOADER -DBZ_NO_STDIO -DBZ_NO_COMPRESS 95pics/_crctable.o := CPPFLAGS += -I$(SRC)/common/bzip2 96pics/_crctable.o: libstand_bzlib_private.h 97objs/_decompress.o := CPPFLAGS += -DBZ_LOADER -DBZ_NO_STDIO -DBZ_NO_COMPRESS 98objs/_decompress.o := CPPFLAGS += -I$(SRC)/common/bzip2 99objs/_decompress.o: libstand_bzlib_private.h 100pics/_decompress.o := CPPFLAGS += -DBZ_LOADER -DBZ_NO_STDIO -DBZ_NO_COMPRESS 101pics/_decompress.o := CPPFLAGS += -I$(SRC)/common/bzip2 102pics/_decompress.o: libstand_bzlib_private.h 103objs/_huffman.o := CPPFLAGS += -DBZ_LOADER -DBZ_NO_STDIO -DBZ_NO_COMPRESS 104objs/_huffman.o := CPPFLAGS += -I$(SRC)/common/bzip2 105objs/_huffman.o: libstand_bzlib_private.h 106pics/_huffman.o := CPPFLAGS += -DBZ_LOADER -DBZ_NO_STDIO -DBZ_NO_COMPRESS 107pics/_huffman.o := CPPFLAGS += -I$(SRC)/common/bzip2 108pics/_huffman.o: libstand_bzlib_private.h 109objs/_randtable.o := CPPFLAGS += -DBZ_LOADER -DBZ_NO_STDIO -DBZ_NO_COMPRESS 110objs/_randtable.o := CPPFLAGS += -I$(SRC)/common/bzip2 111objs/_randtable.o: libstand_bzlib_private.h 112pics/_randtable.o := CPPFLAGS += -DBZ_LOADER -DBZ_NO_STDIO -DBZ_NO_COMPRESS 113pics/_randtable.o := CPPFLAGS += -I$(SRC)/common/bzip2 114pics/_randtable.o: libstand_bzlib_private.h 115objs/bzipfs.o := CPPFLAGS += -DBZ_LOADER -DBZ_NO_STDIO -DBZ_NO_COMPRESS 116objs/bzipfs.o := CPPFLAGS += -I$(SRC)/common/bzip2 117objs/bzipfs.o: libstand_bzlib_private.h 118pics/bzipfs.o := CPPFLAGS += -DBZ_LOADER -DBZ_NO_STDIO -DBZ_NO_COMPRESS 119pics/bzipfs.o := CPPFLAGS += -I$(SRC)/common/bzip2 120pics/bzipfs.o: libstand_bzlib_private.h 121SRCS += libstand_bzlib_private.h 122 123# too hairy 124objs/_inflate.o := SMATCH=off 125pics/_inflate.o := SMATCH=off 126 127SRCS += _bzlib.c _crctable.c _decompress.c _huffman.c _randtable.c 128OBJECTS += _bzlib.o _crctable.o _decompress.o _huffman.o _randtable.o 129CLEANFILES += _bzlib.c _crctable.c _decompress.c _huffman.c _randtable.c 130 131_bzlib.c: $(SRC)/common/bzip2/bzlib.c 132 sed "s|bzlib_private\.h|libstand_bzlib_private.h|" $^ > $@ 133 134_crctable.c: $(SRC)/common/bzip2/crctable.c 135 sed "s|bzlib_private\.h|libstand_bzlib_private.h|" $^ > $@ 136 137_decompress.c: $(SRC)/common/bzip2/decompress.c 138 sed "s|bzlib_private\.h|libstand_bzlib_private.h|" $^ > $@ 139 140_huffman.c: $(SRC)/common/bzip2/huffman.c 141 sed "s|bzlib_private\.h|libstand_bzlib_private.h|" $^ > $@ 142 143_randtable.c: $(SRC)/common/bzip2/randtable.c 144 sed "s|bzlib_private\.h|libstand_bzlib_private.h|" $^ > $@ 145 146CLEANFILES += libstand_bzlib_private.h 147libstand_bzlib_private.h: $(SRC)/common/bzip2/bzlib_private.h 148 sed -e 's|<stdlib.h>|"stand.h"|' $^ > $@ 149 150# decompression functionality from zlib 151objs/adler32.o := CPPFLAGS += -I$(ZLIB) 152pics/adler32.o := CPPFLAGS += -I$(ZLIB) 153objs/crc32.o := CPPFLAGS += -I$(ZLIB) 154pics/crc32.o := CPPFLAGS += -I$(ZLIB) 155objs/_infback.o := CPPFLAGS += -I$(ZLIB) 156pics/_infback.o := CPPFLAGS += -I$(ZLIB) 157objs/_infback.o pics/_infback.o: libstand_zutil.h libstand_gzguts.h 158objs/_inffast.o := CPPFLAGS += -I$(ZLIB) 159pics/_inffast.o := CPPFLAGS += -I$(ZLIB) 160objs/_inffast.o pics/_inffast.o: libstand_zutil.h libstand_gzguts.h 161objs/_inflate.o := CPPFLAGS += -I$(ZLIB) 162pics/_inflate.o := CPPFLAGS += -I$(ZLIB) 163objs/_inflate.o pics/_inflate.o: libstand_zutil.h libstand_gzguts.h 164objs/_inftrees.o := CPPFLAGS += -I$(ZLIB) 165pics/_inftrees.o := CPPFLAGS += -I$(ZLIB) 166objs/_inftrees.o pics/_inftrees.o: libstand_zutil.h libstand_gzguts.h 167objs/_zutil.o := CPPFLAGS += -I$(ZLIB) 168pics/_zutil.o := CPPFLAGS += -I$(ZLIB) 169objs/_zutil.o pics/_zutil.o: libstand_zutil.h libstand_gzguts.h 170objs/gzipfs.o := CPPFLAGS += -I$(ZLIB) 171pics/gzipfs.o := CPPFLAGS += -I$(ZLIB) 172objs/gzip.o := CPPFLAGS += -I$(ZLIB) 173pics/gzip.o := CPPFLAGS += -I$(ZLIB) 174 175SRCS += $(ZLIB)/adler32.c $(ZLIB)/crc32.c \ 176 libstand_zutil.h libstand_gzguts.h 177OBJECTS += adler32.o crc32.o 178 179_infback.c: $(ZLIB)/infback.c 180 sed -e "s|zutil\.h|libstand_zutil.h|" \ 181 -e "s|gzguts\.h|libstand_gzguts.h|" \ 182 $^ > $@ 183_inffast.c: $(ZLIB)/inffast.c 184 sed -e "s|zutil\.h|libstand_zutil.h|" \ 185 -e "s|gzguts\.h|libstand_gzguts.h|" \ 186 $^ > $@ 187_inflate.c: $(ZLIB)/inflate.c 188 sed -e "s|zutil\.h|libstand_zutil.h|" \ 189 -e "s|gzguts\.h|libstand_gzguts.h|" \ 190 $^ > $@ 191_inftrees.c: $(ZLIB)/inftrees.c 192 sed -e "s|zutil\.h|libstand_zutil.h|" \ 193 -e "s|gzguts\.h|libstand_gzguts.h|" \ 194 $^ > $@ 195_zutil.c: $(ZLIB)/zutil.c 196 sed -e "s|zutil\.h|libstand_zutil.h|" \ 197 -e "s|gzguts\.h|libstand_gzguts.h|" \ 198 $^ > $@ 199 200SRCS += _infback.c _inffast.c _inflate.c _inftrees.c _zutil.c 201OBJECTS += _infback.o _inffast.o _inflate.o _inftrees.o _zutil.o 202CLEANFILES += _infback.c _inffast.c _inflate.c _inftrees.c _zutil.c 203 204# depend on stand.h being able to be included multiple times 205libstand_zutil.h: $(ZLIB)/zutil.h 206 sed -e 's|<fcntl.h>|"stand.h"|' \ 207 -e 's|<stddef.h>|"stand.h"|' \ 208 -e 's|<string.h>|"stand.h"|' \ 209 -e 's|<stdio.h>|"stand.h"|' \ 210 -e 's|<stdlib.h>|"stand.h"|' \ 211 $^ > $@ 212 213libstand_gzguts.h: $(ZLIB)/gzguts.h 214 sed -e 's|<fcntl.h>|"stand.h"|' \ 215 -e 's|<stddef.h>|"stand.h"|' \ 216 -e 's|<string.h>|"stand.h"|' \ 217 -e 's|<stdio.h>|"stand.h"|' \ 218 -e 's|<stdlib.h>|"stand.h"|' \ 219 $^ > $@ 220 221CLEANFILES += libstand_zutil.h libstand_gzguts.h 222 223# lz4 decompression functionality 224pics/lz4.o := CPPFLAGS += -I$(LZ4) 225objs/lz4.o := CPPFLAGS += -I$(LZ4) 226SRCS += $(LZ4)/lz4.c 227OBJECTS += lz4.o 228 229# io routines 230SRCS += $(SASRC)/closeall.c $(SASRC)/dev.c \ 231 $(SASRC)/ioctl.c $(SASRC)/nullfs.c \ 232 $(SASRC)/stat.c $(SASRC)/fstat.c $(SASRC)/close.c \ 233 $(SASRC)/lseek.c $(SASRC)/open.c $(SASRC)/read.c \ 234 $(SASRC)/write.c $(SASRC)/readdir.c 235 236OBJECTS += closeall.o dev.o ioctl.o nullfs.o stat.o fstat.o close.o lseek.o \ 237 open.o read.o write.o readdir.o 238 239# SMBios routines 240SRCS += smbios.c 241OBJECTS += smbios.o 242# Export serial numbers, UUID, and asset tag from loader. 243# Use little-endian UUID format as defined in SMBIOS 2.6. 244pics/smbios.o := CPPFLAGS += -DSMBIOS_SERIAL_NUMBERS -DSMBIOS_LITTLE_ENDIAN_UUID 245objs/smbios.o := CPPFLAGS += -DSMBIOS_SERIAL_NUMBERS -DSMBIOS_LITTLE_ENDIAN_UUID 246 247# network routines 248SRCS += $(SASRC)/arp.c $(SASRC)/ether.c $(SASRC)/ip.c \ 249 $(SASRC)/inet_ntoa.c $(SASRC)/in_cksum.c \ 250 $(SASRC)/net.c $(SASRC)/udp.c $(SASRC)/netif.c \ 251 $(SASRC)/rpc.c 252OBJECTS += arp.o ether.o ip.o inet_ntoa.o in_cksum.o net.o udp.o netif.o rpc.o 253 254# network info services: 255SRCS += $(SASRC)/bootp.c $(SASRC)/rarp.c \ 256 $(SASRC)/bootparam.c 257OBJECTS += bootp.o rarp.o bootparam.o 258 259# boot filesystems 260SRCS += $(SASRC)/ufs.c 261SRCS += $(SASRC)/nfs.c 262SRCS += $(SASRC)/cd9660.c 263SRCS += $(SASRC)/tftp.c 264SRCS += $(SASRC)/gzipfs.c 265SRCS += $(SASRC)/bzipfs.c 266SRCS += $(SASRC)/dosfs.c 267OBJECTS += ufs.o 268OBJECTS += nfs.o 269OBJECTS += cd9660.o 270OBJECTS += tftp.o 271OBJECTS += gzipfs.o 272OBJECTS += bzipfs.o 273OBJECTS += dosfs.o 274 275# utility 276SRCS += $(SRC)/common/util/explicit_bzero.c 277SRCS += $(SRC)/common/util/memmem.c 278OBJECTS += explicit_bzero.o 279OBJECTS += memmem.o 280