1export USE_APPLE_PB_SUPPORT = all 2 3ifeq "$(EFITOOLS)" "efitools" 4 EFI_SUPPORT = -DEFI_SUPPORT 5endif 6 7ifneq "" "$(SDKROOT)" 8 SDK = -isysroot $(SDKROOT) 9 CC = $(shell xcrun -find -sdk $(SDKROOT) cc) 10 CXX = $(shell xcrun -find -sdk $(SDKROOT) c++) 11 DSYMUTIL = $(shell xcrun -find -sdk ${SDKROOT} dsymutil) 12else 13 DSYMUTIL = dsymutil 14endif 15 16OFLAG = -Os 17LTO = -DLTO_SUPPORT 18LEGACY = -D_MACH_I386_THREAD_STATUS_FPSTATE_LEGACY_FIELD_NAMES_ \ 19 -D_ARCHITECTURE_I386_FPU_FPSTATE_LEGACY_FIELD_NAMES_ 20CFLAGS = $(OFLAG) $(LTO) -g -Wall -I$(SRCROOT)/../include \ 21 -I$(SRCROOT) $(LEGACY) $(EFI_SUPPORT) $(SDK) 22 23LIBSTUFF = -L$(SYMROOT)/../libstuff -lstuff 24CXXLIB = -stdlib=libc++ 25 26MKDIRS = /bin/mkdir -p 27SRCROOT = . 28SYMROOT = . 29OBJROOT = . 30OFILE_DIR = $(OBJROOT) 31VPATH = $(OFILE_DIR) 32 33BINDIR = /bin 34USRBINDIR = /usr/bin 35 36CFILES = main.c ofile_print.c m68k_disasm.c i860_disasm.c \ 37 m88k_disasm.c i386_disasm.c ppc_disasm.c hppa_disasm.c \ 38 sparc_disasm.c print_objc.c notify.c arm_disasm.c \ 39 print_objc2_64bit.c print_objc2_32bit.c 40ifeq "$(EFITOOLS)" "efitools" 41 CFILES += coff_print.c 42endif 43HFILES = otool.h ofile_print.h m68k_disasm.h i860_disasm.h \ 44 sparc_disasm.h m88k_disasm.h i386_disasm.h ppc_disasm.h hppa_disasm.h \ 45 notify.h arm_disasm.h 46OBJS = $(CFILES:.c=.o) ofile.o 47INSTALL_FILES = $(CFILES) $(HFILES) Makefile notes 48 49PRODUCT = otool 50all: $(OFILE_DIR) $(SYMROOT) $(PRODUCT).NEW 51 52$(PRODUCT).NEW: $(OFILE_DIR) $(SYMROOT) $(OBJS) 53 $(CC) $(RC_CFLAGS) -nostdlib -r -o $(OBJROOT)/private.o \ 54 $(OBJS) $(LIBSTUFF) 55 $(CXX) $(RC_CFLAGS) $(SDK) -o $(SYMROOT)/$@ $(OBJROOT)/private.o \ 56 $(LIBSTUFF) $(CXXLIB) 57 $(DSYMUTIL) $(SYMROOT)/$@ 58 59.c.o: 60 $(CC) $(CFLAGS) $(RC_CFLAGS) -c -o $(OFILE_DIR)/$*.o $< 61 62ofile.o: $(SRCROOT)/../libstuff/ofile.c 63 $(CC) $(CFLAGS) $(RC_CFLAGS) -c -o $(OFILE_DIR)/$*.o \ 64 $(SRCROOT)/../libstuff/ofile.c -DOTOOL 65 66clean: shlib_clean 67 -rm -f $(SYMROOT)/$(PRODUCT).NEW 68 -rm -r -f *dSYM 69 70shlib_clean: 71 -cd $(OFILE_DIR); rm -f $(OBJS) private.o 72 -rm -f make.out 73 74install: all 75 $(MKDIRS) $(DSTROOT)$(USRBINDIR) 76 install -c -s -m 555 $(SYMROOT)/$(PRODUCT).NEW \ 77 $(DSTROOT)$(USRBINDIR)/$(PRODUCT) 78 79installsrc: 80 $(MKDIRS) $(SRCROOT) 81 chmod 755 $(SRCROOT) 82 gnutar cf - $(INSTALL_FILES) | (cd $(SRCROOT); gnutar xf -) 83 chmod 444 $(SRCROOT)/* 84 85$(OFILE_DIR) $(SYMROOT): 86 $(MKDIRS) $@ 87