# # File lists. # # Internal headers. LIBXAR_IINCS := asprintf.h LIBXAR_IINCS := $(patsubst %, @srcroot@include/%, $(LIBXAR_IINCS)) LIBXAR_IINCS += @objroot@include/config.h # Headers. LIBXAR_INCS := LIBXAR_INCS := $(patsubst %, @srcroot@include/%, $(LIBXAR_INCS)) LIBXAR_INCS += @objroot@include/xar.h # Sources. LIBXAR_SRCS := archive.c arcmod.c b64.c bzxar.c darwinattr.c data.c err.c LIBXAR_SRCS += ext2.c fbsdattr.c filetree.c io.c linuxattr.c md5.c stat.c LIBXAR_SRCS += subdoc.c util.c zxar.c script.c macho.c LIBXAR_SRCS := $(patsubst %, @srcroot@lib/%, $(LIBXAR_SRCS)) # Libraries. librxar is created such that it's possible to run xar without # first installing libxar. ifeq (elf, @abi@) LIBRXAR_SNAME := librxar.so.@LIB_REV@ LIBRXAR_LNAME := librxar.so LIBRXAR_L := @objroot@lib/$(LIBRXAR_LNAME) LIBXAR_SNAME := libxar.so.@LIB_REV@ LIBXAR_LNAME := libxar.so LIBXAR_L := @objroot@lib/$(LIBXAR_LNAME) endif ifeq (macho, @abi@) LIBRXAR_SNAME := librxar.@LIB_REV@.dylib LIBRXAR_LNAME := librxar.dylib LIBRXAR_L := @objroot@lib/$(LIBRXAR_LNAME) LIBXAR_SNAME := libxar.@LIB_REV@.dylib LIBXAR_LNAME := libxar.dylib LIBXAR_L := @objroot@lib/$(LIBXAR_LNAME) endif ifeq (aout, @abi@) LIBRXAR_SNAME := librxar.so.@LIB_REV@.0 LIBRXAR_LNAME := LIBRXAR_L := LIBXAR_SNAME := libxar.so.@LIB_REV@.0 LIBXAR_LNAME := LIBXAR_L := endif LIBRXAR_S := @objroot@lib/$(LIBRXAR_SNAME) LIBXAR_S := @objroot@lib/$(LIBXAR_SNAME) # # Include generated dependency files. # -include $(LIBXAR_SRCS:@srcroot@%.c=@objroot@%.d) LDFLAGS := -L@objroot@lib $(LDFLAGS) # # User make'ables. # lib_all : $(LIBRXAR_S) $(LIBXAR_S) lib_install : $(LIBXAR_S) @INSTALL@ -d $(DESTDIR)$(INCLUDEDIR)/xar @INSTALL@ -m 0644 $(LIBXAR_INCS) $(DESTDIR)$(INCLUDEDIR)/xar @INSTALL@ -d $(DESTDIR)$(LIBDIR) @INSTALL@ -m 0444 $(LIBXAR_S) $(DESTDIR)$(LIBDIR) ifneq ($(words "" $(LIBXAR_LNAME)), 1) rm -f $(DESTDIR)$(LIBDIR)/$(LIBXAR_LNAME) ln -s $(LIBXAR_SNAME) $(DESTDIR)$(LIBDIR)/$(LIBXAR_LNAME) endif lib_uninstall : rm -rf $(DESTDIR)$(INCLUDEDIR)/xar rm -f $(DESTDIR)$(LIBDIR)/$(LIBXAR_SNAME) ifneq ($(words "" $(LIBXAR_LNAME)), 1) rm -f $(DESTDIR)$(LIBDIR)/$(LIBXAR_LNAME) endif lib_clean : rm -f $(LIBRXAR_S) $(LIBRXAR_L) rm -f $(LIBXAR_S) $(LIBXAR_L) rm -f $(LIBXAR_SRCS:@srcroot@%.c=@objroot@%.o) rm -f $(LIBXAR_SRCS:@srcroot@%.c=@objroot@%.d) lib_distclean : # # Various flags. # CPPFLAGS := -I@objroot@include $(CPPFLAGS) CPPFLAGS := -I@srcroot@include $(CPPFLAGS) # # Build rules. # # librxar is a version of the xar library that is usable without first # installing libxar. $(LIBRXAR_S) : $(LIBXAR_SRCS:@srcroot@%.c=@objroot@%.o) @mkdir -p $(@D) ifeq (elf, @abi@) $(CC) -shared -Wl,-soname,$(LIBXAR_SNAME) -o $@ $+ @LIBS@ endif ifeq (macho, @abi@) $(CC) -dynamiclib -compatibility_version @LIB_REV@ -current_version @LIB_REV@ -install_name @abs_objroot@$(LIBRXAR_S) -o $@ $+ $(LDFLAGS) @LIBS@ endif ifeq (aout, @abi@) $(CC) -shared -o $@ $+ endif ifneq ($(words "" $(LIBRXAR_L)), 1) rm -f $(LIBRXAR_L) ln -s $(LIBRXAR_SNAME) $(LIBRXAR_L) endif $(LIBXAR_S) : $(LIBXAR_SRCS:@srcroot@%.c=@objroot@%.o) @mkdir -p $(@D) ifeq (elf, @abi@) $(CC) -shared -Wl,-soname,$(LIBXAR_SNAME) -o $@ $+ @LIBS@ endif ifeq (macho, @abi@) $(CC) -dynamiclib -compatibility_version @LIB_REV@ -current_version @LIB_REV@ -install_name $(LIBDIR)/$(LIBXAR_SNAME) -o $@ $+ $(LDFLAGS) @LIBS@ endif ifeq (aout, @abi@) $(CC) -shared -o $@ $+ endif ifneq ($(words "" $(LIBXAR_L)), 1) rm -f $(LIBXAR_L) ln -s $(LIBXAR_SNAME) $(LIBXAR_L) endif @objroot@lib/%.o : @srcroot@lib/%.c @mkdir -p $(@D) $(CC) $(S_CFLAGS) $(CPPFLAGS) -c $< -o $@ @$(SHELL) -ec "$(CC) -MM $(CPPFLAGS) $< | sed \"s/\($(subst /,\/,$(notdir $(basename $@)))\)\.o\([ :]*\)/$(subst /,\/,$(strip $(dir $@)))\1.o \2/g\" > $(@:%.o=%.d)"