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 # Copyright 2007 Sun Microsystems, Inc. All rights reserved. 23 # Use is subject to license terms. 24 # 25 # Copyright (c) 2018, Joyent, Inc. 26 27 PROG= file 28 XPG4PROG= file 29 MAGIC= magic 30 31 ELFCAP= $(SRC)/common/elfcap 32 SGSRTCID= $(SRC)/common/sgsrtcid 33 34 LOBJS= file.o elf_read32.o elf_read64.o magicutils.o 35 OBJS= $(LOBJS) elfcap.o 36 XPG4OBJS= $(OBJS:%.o=xpg4_%.o) 37 SRCS= file.c elf_read.c magicutils.c $(ELFCAP)/elfcap.c 38 39 include ../Makefile.cmd 40 41 CSTD= $(CSTD_GNU99) 42 C99LMODE= -Xc99=%all 43 44 CERRWARN += $(CNOWARN_UNINIT) 45 CERRWARN += -_gcc=-Wno-type-limits 46 47 POFILE= file_all.po 48 POFILES= $(SRCS:%.c=%.po) 49 50 # The debug binary can be built using the flags 51 # SOURCEDEBUG=yes CGLOBALSTATIC= 52 # This will avoid the multiple symbols definition error 53 # for static global variables in elf_read32.o and elf_read64.o 54 55 LDLIBS += -lelf 56 CPPFLAGS += -I$(ELFCAP) -I$(SGSRTCID) 57 $(XPG4) := CFLAGS += -DXPG4 58 59 ROOTETCMAGIC= $(MAGIC:%=$(ROOTETC)/%) 60 61 $(ROOTETCMAGIC) := FILEMODE = $(LIBFILEMODE) 62 63 .PARALLEL: $(OBJS) $(XPG4OBJS) $(POFILES) 64 65 .KEEP_STATE: 66 67 all: $(PROG) $(XPG4) $(MAGIC) 68 69 $(PROG) : $(OBJS) 70 $(LINK.c) $(OBJS) -o $@ $(LDLIBS) 71 $(POST_PROCESS) 72 73 $(XPG4) : $(XPG4OBJS) 74 $(LINK.c) $(XPG4OBJS) -o $@ $(LDLIBS) 75 $(POST_PROCESS) 76 77 %.o: %.c 78 $(COMPILE.c) -o $@ $< 79 80 %32.o: %.c 81 $(COMPILE.c) -o $@ $< 82 83 %64.o: %.c 84 $(COMPILE.c) -D_ELF64 -o $@ $< 85 86 xpg4_%.o: %.c 87 $(COMPILE.c) -o $@ $< 88 89 xpg4_%32.o: %.c 90 $(COMPILE.c) -o $@ $< 91 92 xpg4_%64.o: %.c 93 $(COMPILE.c) -D_ELF64 -o $@ $< 94 95 elfcap.o: $(ELFCAP)/elfcap.c 96 $(COMPILE.c) -o $@ $(ELFCAP)/elfcap.c 97 98 xpg4_elfcap.o: $(ELFCAP)/elfcap.c 99 $(COMPILE.c) -o $@ $(ELFCAP)/elfcap.c 100 101 $(POFILE): $(POFILES) 102 $(RM) $@ 103 cat $(POFILES) > $@ 104 105 install: all $(ROOTPROG) $(ROOTXPG4PROG) $(ROOTETCMAGIC) 106 107 clean: 108 $(RM) $(OBJS) $(XPG4OBJS) 109 110 lint: lint_SRCS 111 112 include ../Makefile.targ