export USE_APPLE_PB_SUPPORT = all
RC_OS = macos
MIG = $(NEXT_ROOT)/usr/bin/mig
ifneq "mwccppc" "$(notdir $(CC))"
MIG_FLAGS = $(PGFLAGS)
endif
USE_DEPENDENCY_FILE := $(shell if [ "$(notdir $(CC))" != "mwccppc" ]; then \
echo YES ; else echo NO ; \
fi; )
OFLAG = -O
MACOSX_10_1_SEG1ADDR = 41100000
MACOSX_10_2_SEG1ADDR = 8fe00000
ifeq "macos" "$(RC_OS)"
SEG1ADDR := $(shell if [ "$(RC_RELEASE)" = "Beaker" ] || \
[ "$(RC_RELEASE)" = "Bunsen" ] || \
[ "$(RC_RELEASE)" = "Gonzo" ] || \
[ "$(RC_RELEASE)" = "Kodiak" ] || \
[ "$(RC_RELEASE)" = "Cheetah" ] || \
[ "$(RC_RELEASE)" = "Puma" ]; then \
echo $(MACOSX_10_1_SEG1ADDR) ; \
else \
echo $(MACOSX_10_2_SEG1ADDR) ; fi; )
else
SEG1ADDR = $(MACOSX_10_1_SEG1ADDR)
endif
PRIVATEHEADERS = /System/Library/Frameworks/System.framework/PrivateHeaders
ifeq "macos" "$(RC_OS)"
X_CFLAGS := $(shell if [ "$(RC_RELEASE)" != "Beaker" ] && \
[ "$(RC_RELEASE)" != "Bunsen" ] && \
[ "$(RC_RELEASE)" != "Gonzo" ] && \
[ "$(RC_RELEASE)" != "Kodiak" ]; then \
echo -Wno-long-double -no-cpp-precomp ; \
fi; )
endif
ifeq "mwccppc" "$(notdir $(CC))"
CFLAGS = $(DEBUG) $(OFLAG) -dynamic -g -DDYLD_BUILD \
-I$(SRCROOT)/../include -I$(SRCROOT) -I$(OBJROOT) \
-I$(NEXT_ROOT)$(PRIVATEHEADERS)
else
CFLAGS = $(DEBUG) $(OFLAG) -dynamic -g -Wall -DDYLD_BUILD \
-I$(SRCROOT)/../include -I$(SRCROOT) -I$(OBJROOT) $(X_CFLAGS) \
-I$(NEXT_ROOT)$(PRIVATEHEADERS)
ASFLAGS = -force_cpusubtype_ALL
endif
LIBSTUFF = -L$(SYMROOT)/../libstuff -lstuff
ifeq "macos" "$(RC_OS)"
SYSTEMDIR := $(shell if [ "$(RC_RELEASE)" = "Beaker" ] || \
[ "$(RC_RELEASE)" = "Bunsen" ] || \
[ "$(RC_RELEASE)" = "Gonzo" ]; then \
echo /Local/Developer/System; else echo /usr/local/lib/system; fi; )
else
SYSTEMDIR = /Local/Developer/System
endif
ifeq "gcc3" "$(notdir $(CC))"
LIBGCC = -lgcc
else
LIBGCC = -lcc_dynamic
endif
ifeq "macos" "$(RC_OS)"
LIBC = $(NEXT_ROOT)$(SYSTEMDIR)/libc.a $(LIBGCC)
else
LIBC = -lc_dynamic $(LIBGCC)
endif
ifneq "" "$(wildcard /bin/mkdirs)"
MKDIRS = /bin/mkdirs
else
MKDIRS = /bin/mkdir -p
endif
SRCROOT = .
SYMROOT = .
OBJROOT = .
OFILE_DIR = $(OBJROOT)
VPATH = $(OFILE_DIR)
ifeq "macos" "$(RC_OS)"
USRLIBDIR := $(shell if [ "$(RC_RELEASE)" = "Tachyon" ]; then \
echo /System/Library/PrivateFrameworks/ZeroLink.framework/Versions/A/Resources ; \
else echo /usr/lib; \
fi; )
else
USRLIBDIR = /usr/lib
endif
DSTDIRS = $(DSTROOT)$(USRLIBDIR)
CFILES1 = dyld_init.c images.c errors.c allocate.c symbols.c reloc.c \
generic_reloc.c hppa_reloc.c entry_point.c dyld_libfuncs.c \
lock.c debug.c sparc_reloc.c mod_init_funcs.c register_funcs.c \
malloc.c getsecbyname.c mig_support.c ppc_reloc.c trace.c
CFILES2 = dyld_reloc.c
SFILES1 = section_order.s stub_binding_helper.s machdep_lock.s cache_flush.s \
fp_save_restore.s halt.s
SFILES2 = dyld_start.s
HFILES = dyld_init.h images.h errors.h allocate.h symbols.h reloc.h \
entry_point.h lock.h debug.h mod_init_funcs.h register_funcs.h \
zoneprotect.h cthread_internals.h fp_save_restore.h inline_bsearch.h \
inline_strcmp.h trace.h
MIGFILES = dyld_debug.defs dyld_debug_defs.h dyld_event.defs dyld_event_defs.h \
dyld_event_MsgError.h dyld_prebind.defs dyld_prebind_defs.h
OBJS1 = $(SFILES1:.s=.o) $(CFILES1:.c=.o) profile_client.o vers.o
OBJS2 = $(CFILES2:.c=.o) $(SFILES2:.s=.o)
INSTALL_FILES = $(CFILES1) $(CFILES2) $(SFILES1) $(SFILES2) $(HFILES) \
$(MIGFILES) Makefile notes dyld_api gmon.c
PRODUCT = dyld
all: $(OFILE_DIR) $(SYMROOT) $(PRODUCT).NEW
$(PRODUCT).NEW: $(OFILE_DIR) $(SYMROOT) $(OBJS1) $(OBJS2) _dyld_debugServer.o \
_dyld_eventUser.o _dyld_prebindUser.o $(GMON)
$(CC) $(CFLAGS) $(RC_CFLAGS) $(OBJS1) $(OBJS2) _dyld_debugServer.o \
_dyld_eventUser.o _dyld_prebindUser.o $(GMON) $(LIBSTUFF) \
$(LIBC) -segprot __TEXT rwx rwx -seg1addr $(SEG1ADDR) \
-o $(SYMROOT)/$@ -Wl,-e,__dyld_start -nostdlib \
-Wl,-dylinker -Wl,-dylinker_install_name,$(USRLIBDIR)/$(PRODUCT)
#dyld.o: $(OFILE_DIR) $(OBJS1)
_dyld_debugServer.c: dyld_debug.defs
@if [ $(SRCROOT) = . ]; \
then \
echo "$(MIG) $(MIG_FLAGS) $(SRCROOT)/dyld_debug.defs"; \
$(MIG) $(MIG_FLAGS) $(SRCROOT)/dyld_debug.defs; \
rm -f _dyld_debugUser.c _dyld_debug.h; \
else \
echo -n "cd $(OBJROOT); " \
echo "$(MIG) $(MIG_FLAGS) $(SRCROOT)/dyld_debug.defs"; \
cd $(OBJROOT); $(MIG) $(MIG_FLAGS) $(SRCROOT)/dyld_debug.defs; \
cd $(OBJROOT); rm -f _dyld_debugUser.c _dyld_debug.h; \
fi
_dyld_debugServer.o: _dyld_debugServer.c
cd $(OBJROOT); \
$(CC) $(PGFLAGS) $(CFLAGS) $(RC_CFLAGS) -c _dyld_debugServer.c
debug.c: _dyld_event.h
_dyld_event.h: _dyld_eventUser.c
_dyld_eventUser.c: dyld_event.defs dyld_event_MsgError.h
@if [ $(SRCROOT) = . ]; \
then \
echo "$(MIG) $(MIG_FLAGS) $(SRCROOT)/dyld_event.defs"; \
$(MIG) $(MIG_FLAGS) $(SRCROOT)/dyld_event.defs; \
rm -f _dyld_eventServer.c; \
else \
echo -n "cd $(OBJROOT); " \
echo "$(MIG) $(MIG_FLAGS) $(SRCROOT)/dyld_event.defs"; \
cd $(OBJROOT); $(MIG) $(MIG_FLAGS) $(SRCROOT)/dyld_event.defs; \
cd $(OBJROOT); rm -f _dyld_eventServer.c; \
fi
_dyld_eventUser.o: _dyld_eventUser.c
cd $(OBJROOT); \
$(CC) $(PGFLAGS) $(CFLAGS) $(RC_CFLAGS) -c _dyld_eventUser.c
images.c: _dyld_prebind.h
_dyld_prebind.h: _dyld_prebindUser.c
_dyld_prebindUser.c: dyld_prebind.defs
@if [ $(SRCROOT) = . ]; \
then \
echo "$(MIG) $(MIG_FLAGS) $(SRCROOT)/dyld_prebind.defs"; \
$(MIG) $(MIG_FLAGS) $(SRCROOT)/dyld_prebind.defs; \
rm -f _dyld_prebindServer.c; \
else \
echo -n "cd $(OBJROOT); " \
echo "$(MIG) $(MIG_FLAGS) $(SRCROOT)/dyld_prebind.defs"; \
cd $(OBJROOT); $(MIG) $(MIG_FLAGS) $(SRCROOT)/dyld_prebind.defs; \
cd $(OBJROOT); rm -f _dyld_prebindServer.c; \
fi
_dyld_prebindUser.o: _dyld_prebindUser.c
cd $(OBJROOT); \
$(CC) $(PGFLAGS) $(CFLAGS) $(RC_CFLAGS) -c _dyld_prebindUser.c
vers.c:
vers_string -c $(VERS_STRING_FLAGS) $(PRODUCT) > $(OFILE_DIR)/$@
ifeq "NO" "$(USE_DEPENDENCY_FILE)"
.c.o:
$(CC) $(PGFLAGS) $(CFLAGS) $(RC_CFLAGS) -c -o $(OFILE_DIR)/$*.o $<
md -d -u $(OFILE_DIR)/Makedep $(OFILE_DIR)/$*.d
else
.c.o:
$(CC) $(PGFLAGS) $(CFLAGS) $(RC_CFLAGS) -c -MD -dependency-file \
$(OFILE_DIR)/$*.d -o $(OFILE_DIR)/$*.o $<
md -d -u $(OFILE_DIR)/Makedep $(OFILE_DIR)/$*.d
endif
profile_client.o: $(SRCROOT)/../profileServer/profile_client.c
ifeq "NO" "$(USE_DEPENDENCY_FILE)"
$(CC) $(PGFLAGS) $(CFLAGS) $(RC_CFLAGS) -c -o $(OFILE_DIR)/$*.o \
$(SRCROOT)/../profileServer/profile_client.c
else
$(CC) $(PGFLAGS) $(CFLAGS) $(RC_CFLAGS) -c -MD -dependency-file \
$(OFILE_DIR)/$*.d -o $(OFILE_DIR)/$*.o \
$(SRCROOT)/../profileServer/profile_client.c
md -d -u $(OFILE_DIR)/Makedep $(OFILE_DIR)/$*.d
endif
dyld_reloc.o: dyld_reloc.c
ifeq "NO" "$(USE_DEPENDENCY_FILE)"
$(CC) $(CFLAGS) $(RC_CFLAGS) -c -o $(OFILE_DIR)/$*.o $<
else
$(CC) $(CFLAGS) $(RC_CFLAGS) -c -MD -dependency-file \
$(OFILE_DIR)/$*.d -o $(OFILE_DIR)/$*.o $<
md -d -u $(OFILE_DIR)/Makedep $(OFILE_DIR)/$*.d
endif
gmon.o: gmon.c
ifeq "NO" "$(USE_DEPENDENCY_FILE)"
$(CC) -DDYLD_PROFILING $(CFLAGS) $(RC_CFLAGS) -c -o $(OFILE_DIR)/$*.o $<
else
$(CC) -DDYLD_PROFILING $(CFLAGS) $(RC_CFLAGS) -c -MD -dependency-file \
$(OFILE_DIR)/$*.d -o $(OFILE_DIR)/$*.o $<
md -d -u $(OFILE_DIR)/Makedep $(OFILE_DIR)/$*.d
endif
.s.o:
ifeq "mwccppc" "$(notdir $(CC))"
cc -c -o $(OFILE_DIR)/$*.o $<
else
$(CC) $(RC_CFLAGS) $(ASFLAGS) -c -o $(OFILE_DIR)/$*.o $<
endif
clean: shlib_clean
-rm -f $(SYMROOT)/$(PRODUCT).NEW $(OFILE_DIR)/vers.c
shlib_clean:
-cd $(OFILE_DIR); rm -f $(OBJS1) $(OBJS2) $(GMON)
-cd $(OFILE_DIR); rm -r -f _dyld_debugUser.c _dyld_debugServer.c
-cd $(OFILE_DIR); rm -r -f _dyld_debugUser.o _dyld_debugServer.o
-cd $(OFILE_DIR); rm -r -f _dyld_eventUser.c _dyld_eventServer.c
-cd $(OFILE_DIR); rm -r -f _dyld_eventUser.o _dyld_eventServer.o
-cd $(OFILE_DIR); rm -r -f _dyld_prebindUser.c _dyld_prebindServer.c
-cd $(OFILE_DIR); rm -r -f _dyld_prebindUser.o _dyld_prebindServer.o
-cd $(OFILE_DIR); rm -r -f _dyld_debug.h _dyld_event.h _dyld_prebind.h
-rm -f $(OFILE_DIR)/dyld.o
-rm -f $(OFILE_DIR)/Makedep make.out
install: all $(DSTDIRS)
strip -S $(SYMROOT)/$(PRODUCT).NEW -o $(SYMROOT)/$(PRODUCT).NEW.strip
install -c -m 555 $(SYMROOT)/$(PRODUCT).NEW.strip \
$(DSTROOT)$(USRLIBDIR)/$(PRODUCT)
installsrc:
$(MKDIRS) $(SRCROOT)
chmod 755 $(SRCROOT)
gnutar cf - $(INSTALL_FILES) | (cd $(SRCROOT); gnutar xf -)
chmod 444 $(SRCROOT)/*
nextstep_LOCINCDIR = /LocalDeveloper/Headers
teflon_LOCINCDIR = /System/Library/Frameworks/System.framework/Versions/B/PrivateHeaders
ifeq "macos" "$(RC_OS)"
macos_LOCINCDIR := $(shell if [ "$(RC_RELEASE)" = "Beaker" ] || \
[ "$(RC_RELEASE)" = "Bunsen" ] || \
[ "$(RC_RELEASE)" = "Gonzo" ] || \
[ "$(RC_RELEASE)" = "Kodiak" ]; then \
echo /System/Library/Frameworks/System.framework/Versions/B/PrivateHeaders; \
else echo /usr/local/include; \
fi; )
else
macos_LOCINCDIR = /System/Library/Frameworks/System.framework/Versions/B/PrivateHeaders
endif
installhdrs:
$(MKDIRS) ${DSTROOT}${$(RC_OS)_LOCINCDIR}/dyld
install -c -m 444 images.h ${DSTROOT}${$(RC_OS)_LOCINCDIR}/dyld
$(OFILE_DIR) $(SYMROOT) $(DSTDIRS):
$(MKDIRS) $@
-include $(OFILE_DIR)/Makedep