1## 2# Makefile for lsof 3## 4# Allan Nathanson <ajn@apple.com> 5## 6 7# Project info 8Project = lsof 9UserType = Administrator 10ToolType = Commands 11 12# It's a GNU Source project 13# Well, not really but we can make it work. 14GnuNoChown = YES 15GnuAfterInstall = add_supporting_files 16include $(MAKEFILEPATH)/CoreOS/ReleaseControl/GNUSource.make 17 18Install_Target = install-strip 19 20Configure = $(BuildDirectory)/Configure 21Configure_Flags = -n darwin 22 23UNIQUE := $(shell echo $$$$) 24 25## 26# The "Configure" script wants to create symlinks within the source 27# tree. Since we're not supposed to modify the sources we'll create 28# a 'shadow tree' and use that directory instead. 29## 30lazy_install_source:: install-patched-source 31 32## 33# Change the "Configure" script 34## 35 36LSOF_CONFIGURE = $(OBJROOT)/Configure 37LSOF_MAKEFILE3 = $(OBJROOT)/dialects/darwin/libproc/Makefile 38 39install-patched-source: shadow_source 40 $(_v) echo "*** patching Configure" 41 $(_v) $(CAT) $(LSOF_CONFIGURE) > /tmp/build.lsof.$(UNIQUE) 42 $(_v) echo '/^[ ]*900|1000|1100|1200|1300)/n' > /tmp/build.lsof.$(UNIQUE)-ed 43 $(_v) echo '/^[ ]*;;/i' >> /tmp/build.lsof.$(UNIQUE)-ed 44 $(_v) echo ' if [ -n "$${SDKROOT}" ]; then' >> /tmp/build.lsof.$(UNIQUE)-ed 45 $(_v) echo ' LSOF_AR="`xcrun -sdk $${SDKROOT} -find ar` cr"' >> /tmp/build.lsof.$(UNIQUE)-ed 46 $(_v) echo ' LSOF_CC="`xcrun -sdk $${SDKROOT} -find cc`"' >> /tmp/build.lsof.$(UNIQUE)-ed 47 $(_v) echo ' LSOF_CFGF="$$LSOF_CFGF -isysroot $${SDKROOT}"' >> /tmp/build.lsof.$(UNIQUE)-ed 48 $(_v) echo ' LSOF_INCLUDE="$${SDKROOT}/usr/include"' >> /tmp/build.lsof.$(UNIQUE)-ed 49 $(_v) echo ' LSOF_RANLIB="`xcrun -sdk $${SDKROOT} -find ranlib`"'>> /tmp/build.lsof.$(UNIQUE)-ed 50 $(_v) echo ' else' >> /tmp/build.lsof.$(UNIQUE)-ed 51 $(_v) echo ' LSOF_AR="`xcrun -sdk / -find ar` cr"' >> /tmp/build.lsof.$(UNIQUE)-ed 52 $(_v) echo ' LSOF_CC="`xcrun -sdk / -find cc`"' >> /tmp/build.lsof.$(UNIQUE)-ed 53 $(_v) echo ' LSOF_RANLIB="`xcrun -sdk / -find ranlib`"' >> /tmp/build.lsof.$(UNIQUE)-ed 54 $(_v) echo ' fi' >> /tmp/build.lsof.$(UNIQUE)-ed 55 $(_v) echo '.' >> /tmp/build.lsof.$(UNIQUE)-ed 56 $(_v) echo '/^[ ]*1400)/n' >> /tmp/build.lsof.$(UNIQUE)-ed 57 $(_v) echo '/^[ ]*;;/i' >> /tmp/build.lsof.$(UNIQUE)-ed 58 $(_v) echo ' LSOF_UNSUP=""' >> /tmp/build.lsof.$(UNIQUE)-ed 59 $(_v) echo ' LSOF_TSTBIGF=" "' >> /tmp/build.lsof.$(UNIQUE)-ed 60 $(_v) echo ' if [ -n "$${SDKROOT}" ]; then' >> /tmp/build.lsof.$(UNIQUE)-ed 61 $(_v) echo ' LSOF_AR="`xcrun -sdk $${SDKROOT} -find ar` cr"' >> /tmp/build.lsof.$(UNIQUE)-ed 62 $(_v) echo ' LSOF_CC="`xcrun -sdk $${SDKROOT} -find cc`"' >> /tmp/build.lsof.$(UNIQUE)-ed 63 $(_v) echo ' LSOF_CFGF="$$LSOF_CFGF -isysroot $${SDKROOT}"' >> /tmp/build.lsof.$(UNIQUE)-ed 64 $(_v) echo ' LSOF_INCLUDE="$${SDKROOT}/usr/include"' >> /tmp/build.lsof.$(UNIQUE)-ed 65 $(_v) echo ' LSOF_RANLIB="`xcrun -sdk $${SDKROOT} -find ranlib`"'>> /tmp/build.lsof.$(UNIQUE)-ed 66 $(_v) echo ' else' >> /tmp/build.lsof.$(UNIQUE)-ed 67 $(_v) echo ' LSOF_CC="`xcrun -sdk / -find cc`"' >> /tmp/build.lsof.$(UNIQUE)-ed 68 $(_v) echo ' fi' >> /tmp/build.lsof.$(UNIQUE)-ed 69 $(_v) echo '.' >> /tmp/build.lsof.$(UNIQUE)-ed 70 $(_v) echo '/^.* -mdynamic-no-pic/d' >> /tmp/build.lsof.$(UNIQUE)-ed 71 $(_v) echo '.,$$s/DARWIN_XNU_HEADERS/SDKROOT/' >> /tmp/build.lsof.$(UNIQUE)-ed 72 $(_v) echo '/^#include <time.h>/n' >> /tmp/build.lsof.$(UNIQUE)-ed 73 $(_v) echo '/^main(){/i' >> /tmp/build.lsof.$(UNIQUE)-ed 74 $(_v) echo 'int' >> /tmp/build.lsof.$(UNIQUE)-ed 75 $(_v) echo '.' >> /tmp/build.lsof.$(UNIQUE)-ed 76 $(_v) echo 'w' >> /tmp/build.lsof.$(UNIQUE)-ed 77 $(_v) ed - /tmp/build.lsof.$(UNIQUE) < /tmp/build.lsof.$(UNIQUE)-ed \ 78 > /dev/null 79 $(_v) $(RM) /tmp/build.lsof.$(UNIQUE)-ed 80 $(_v) $(MV) /tmp/build.lsof.$(UNIQUE) $(LSOF_CONFIGURE) 81 $(_v) $(CHMOD) +x $(LSOF_CONFIGURE) 82 83 $(_v) echo "*** patching dialects/darwin/libproc/Makefile" 84 $(_v) $(CAT) $(LSOF_MAKEFILE3) | \ 85 $(SED) -E \ 86 -e 's@(#define[ ]+LSOF_CC[ ]+)"@\1"" // "@' \ 87 -e 's@(#define[ ]+LSOF_CCDATE[ ]+)"@\1"" // "@' \ 88 -e 's@(#define[ ]+LSOF_CCFLAGS[ ]+)"@\1"" // "@' \ 89 -e 's@(#define[ ]+LSOF_CCV[ ]+)"@\1"" // "@' \ 90 -e 's@(#define[ ]+LSOF_HOST[ ]+)"@\1"" // "@' \ 91 -e 's@(#define[ ]+LSOF_LDFLAGS[ ]+)"@\1"" // "@' \ 92 -e 's@(#define[ ]+LSOF_LOGNAME[ ]+)"@\1"" // "@' \ 93 -e 's@(#define[ ]+LSOF_SYSINFO[ ]+)"@\1"" // "@' \ 94 -e 's@(#define[ ]+LSOF_USER[ ]+)"@\1"" // "@' \ 95 > /tmp/build.lsof.$(UNIQUE) 96 $(_v) $(RM) $(LSOF_MAKEFILE3) 97 $(_v) $(MV) /tmp/build.lsof.$(UNIQUE) $(LSOF_MAKEFILE3) 98 99## 100# Change a few of compile time definitions 101## 102 103LSOF_MAKEFILE = $(OBJROOT)/Makefile 104LSOF_MAKEFILE2 = $(OBJROOT)/lib/Makefile 105LSOF_MACHINE_H1 = $(OBJROOT)/dialects/darwin/kmem/machine.h 106LSOF_MACHINE_H2 = $(OBJROOT)/dialects/darwin/libproc/machine.h 107 108ConfigStamp2 = $(ConfigStamp)2 109 110configure:: $(ConfigStamp2) 111 112$(ConfigStamp2): $(ConfigStamp) 113 $(_v) echo "*** patching Makefile" 114 $(_v) $(CAT) $(LSOF_MAKEFILE) | \ 115 $(SED) -e 's@^\(DEBUG= \).*@\1 -Os -g@' \ 116 -e 's@^\(DS= \).*@\1 '`xcrun -sdk $${SDKROOT} -find dsymutil`'@' \ 117 > /tmp/build.lsof.$(UNIQUE) 118 $(_v) $(RM) $(LSOF_MAKEFILE) 119 $(_v) $(MV) /tmp/build.lsof.$(UNIQUE) $(LSOF_MAKEFILE) 120 121 $(_v) echo "*** patching lib/Makefile" 122 $(_v) $(CAT) $(LSOF_MAKEFILE2) | \ 123 $(SED) -e 's@^\(DEBUG= \).*@\1 -Os -g@' \ 124 > /tmp/build.lsof.$(UNIQUE) 125 $(_v) $(RM) $(LSOF_MAKEFILE2) 126 $(_v) $(MV) /tmp/build.lsof.$(UNIQUE) $(LSOF_MAKEFILE2) 127 128 $(_v) echo "*** patching dialects/darwin/kmem/machine.h" 129 $(_v) $(CAT) $(LSOF_MACHINE_H1) | \ 130 $(SED) -e 's@^.*\(#define.*HASSECURITY.*1\).*@\1@' \ 131 -e 's@^.*\(#define.*HASKERNIDCK.*1\).*@/* \1 */@' \ 132 > /tmp/build.lsof.$(UNIQUE) 133 $(_v) $(RM) $(LSOF_MACHINE_H1) 134 $(_v) $(MV) /tmp/build.lsof.$(UNIQUE) $(LSOF_MACHINE_H1) 135 136 $(_v) echo "*** patching dialects/darwin/libproc/machine.h" 137 $(_v) $(CAT) $(LSOF_MACHINE_H2) | \ 138 $(SED) -e 's@^.*\(#define.*HASKERNIDCK.*1\).*@/* \1 */@' \ 139 > /tmp/build.lsof.$(UNIQUE) 140 $(_v) $(RM) $(LSOF_MACHINE_H2) 141 $(_v) $(MV) /tmp/build.lsof.$(UNIQUE) $(LSOF_MACHINE_H2) 142 143 $(_v) $(TOUCH) $(ConfigStamp2) 144 145# Open Source support files 146OSV = ${DSTROOT}/usr/local/OpenSourceVersions 147OSL = ${DSTROOT}/usr/local/OpenSourceLicenses 148 149add_supporting_files: 150 @echo "Adding Open Source support files" 151 $(_v) $(MKDIR) ${OSV} 152 $(_v) $(INSTALL_FILE) $(SRCROOT)/${Project}.plist ${OSV}/${Project}.plist 153 $(_v) $(MKDIR) ${OSL} 154 $(_v) $(CAT) ${SRCROOT}/lsof/00README \ 155 | $(SED) -n -e '/^License/,/\*\//p' \ 156 > ${OSL}/${Project}.txt 157 $(_v) echo "" >> ${OSL}/${Project}.txt 158 $(_v) echo "In addition, the following copyright is included with the files" >> ${OSL}/${Project}.txt 159 $(_v) echo "associated with the \"darwin\" dialect that use the <libproc.h> APIs." >> ${OSL}/${Project}.txt 160 $(_v) echo "" >> ${OSL}/${Project}.txt 161 $(_v) $(CAT) ${SRCROOT}/lsof/dialects/darwin/libproc/dproc.c \ 162 | $(SED) -n -e '6,34p' \ 163 | $(SED) -e 's/^/ /' \ 164 >> ${OSL}/${Project}.txt 165 $(_v) $(CHOWN) $(Install_File_User):$(Install_File_Group) ${OSL}/${Project}.txt 166 $(_v) $(CHMOD) $(Install_File_Mode) ${OSL}/${Project}.txt 167