override DSTROOT := $(DSTROOT)/$(INSTALL_LOCATION)
endif
-PRODUCT_TYPE ?= DYLIB
+PRODUCT_TYPE ?= ALL
HDRDST=$(DSTROOT)/usr/local/include
DYLIBDST=$(DSTROOT)/usr/lib/system
TESTSRC=$(SRCROOT)/tests
TESTDST=./BUILD/tests
+# Build both the dylib and archive
+LIBKXLDDST_ALL=$(LIBKXLDDST_DYLIB) $(LIBKXLDDST_ARCHIVE)
+
# Flags
ifdef SDKROOT
SDK_DIR := $(shell xcodebuild -version -sdk $(SDKROOT) Path)
SDK_DIR := /
endif
+
DEFINES = -DPRIVATE
CFLAGS=-std=c99 -Wall -Wextra -Werror -pedantic -Wformat=2 -Wcast-align \
-Wwrite-strings -Wshorten-64-to-32 -Wshadow -Winit-self -Wpointer-arith \
# Tools
CC = xcrun -sdk $(SDK_DIR) clang
-CLANG_ANALYZER = clang --analyze
LIBTOOL = xcrun -sdk $(SDK_DIR) libtool
STRIP = xcrun -sdk $(SDK_DIR) strip
DSYMUTIL = xcrun -sdk $(SDK_DIR) dsymutil
# Files
-HDR_NAMES=kxld.h kxld_types.h
+HDR_NAMES=kxld.h kxld_types.h prelink.h
OBJ_NAMES=kxld.o kxld_array.o kxld_copyright.o kxld_demangle.o kxld_dict.o \
kxld_kext.o kxld_object.o kxld_reloc.o kxld_sect.o kxld_seg.o \
- kxld_srcversion.o kxld_sym.o kxld_symtab.o kxld_util.o kxld_uuid.o \
+ kxld_srcversion.o kxld_splitinfolc.o kxld_sym.o kxld_symtab.o kxld_util.o kxld_uuid.o \
kxld_vtable.o kxld_versionmin.o
HDRS=$(addprefix $(HDRSRC)/, $(HDR_NAMES))
@mkdir -p $(SYMROOT)
install -c -m 644 $< $@
+
$(LIBKXLDOBJ_DYLIB): $(OBJS)
$(CC) $(LDFLAGS) -o $@ $^
@mkdir -p $(ARCHIVEDST)
install -o 0 -g 0 -c -m 555 $< $@
-
-KEXTCOPYOBJS=$(OBJROOT)/kextcopyright.o $(OBJROOT)/kxld_copyright.o $(OBJROOT)/kxld_util.o
+KEXTCOPYOBJS=$(OBJROOT)/kextcopyright.o $(OBJROOT)/kxld_copyright.o $(OBJROOT)/kxld_util.o
kextcopyright: $(TESTDST)/kextcopyright
$(TESTDST)/kextcopyright: $(KEXTCOPYOBJS)
@mkdir -p $(TESTDST)
$(CC) $(ARCHS) $(COPYTESTOBJS) -framework CoreFoundation -framework IOKit -o $(OBJROOT)/copyrighttest
install -c -m 755 $(OBJROOT)/copyrighttest $@
-analyze:
- @$(CLANG_ANALYZER) $(CFLAGS) $(INCLUDES) $(filter-out WKdm%.c,$(wildcard *.c))
- @$(CLANG_ANALYZER) $(CFLAGS) $(INCLUDES) -I$(SRCROOT) tests/*.c
- @rm -f *.plist
-
-clean:
+clean:
@rm -rf $(OBJROOT)/*
fullclean:
# Automatically build dependency information when .c or .h files change based
# on implicit rule for .d:.c
-include $(OBJS:.o=.d)
-