SRCROOT = $(abspath $(CURDIR)/../../..) OBJROOT = $(SRCROOT)/obj/i386/modules/$(DIR) SYMROOT = $(SRCROOT)/sym/i386 DSTROOT = $(SRCROOT)/dst/i386 DOCROOT = $(SRCROOT)/doc IMGROOT = $(SRCROOT)/sym/cache IMGSKELROOT = $(SRCROOT)/imgskel CDBOOT = ${IMGROOT}/usr/standalone/i386/cdboot ifeq ($(BUILT_IN),yes) override OBJROOT = $(SRCROOT)/obj/i386/boot2_modules/$(DIR) override SYMROOT = $(SRCROOT)/obj/i386/ endif include ${SRCROOT}/Make.rules ifeq ($(BUILT_IN),yes) CFLAGS := $(RC_CFLAGS) $(OPTIM) $(MORECPP) -arch i386 -g -Wmost -Werror \ -fno-builtin -DSAIO_INTERNAL_USER -static $(OMIT_FRAME_POINTER_CFLAG) -fno-stack-protector \ -march=pentium4 -msse2 -msoft-float -nostdinc -include $(SRCROOT)/autoconf.h CPPFLAGS := $(CPPFLAGS) -arch i386 -static -nostdinc -Wmost -Werror \ -fno-builtin -fno-stack-protector \ -march=pentium4 -msse2 -msoft-float \ -arch i386 -include $(SRCROOT)/autoconf.h else CFLAGS := $(CLFAGS) -nostdinc -Wmost -Werror \ -fno-builtin -fno-stack-protector \ -march=pentium4 -msse2 -msoft-float \ -arch i386 -include $(SRCROOT)/autoconf.h CPPFLAGS := $(CPPFLAGS) -nostdinc -Wmost -Werror \ -fno-builtin -fno-stack-protector \ -march=pentium4 -msse2 -msoft-float \ -arch i386 -include $(SRCROOT)/autoconf.h endif UTILDIR = ../../util LIBSADIR = ../../libsa LIBSAIODIR = ../../libsaio BOOT2DIR = ../../boot2 MODULE_INCLUDES := $(foreach x,$(MODULE_DEPENDENCIES),-I$(SRCROOT)/i386/modules/$(x)/include/) INC = -I$(SRCROOT)/i386/modules/include/ -Iinclude/ -I$(SRCROOT)/i386/libsaio/ -I$(SRCROOT)/i386/libsa/ -I$(SRCROOT)/i386/include/ -I$(SRCROOT)/i386/boot2/ $(MODULE_INCLUDES) DEFINES := -D__KLIBC__ $(DEFINES) MODULE_DEPENDENCIES := $(wildcard $(foreach x,$(MODULE_DEPENDENCIES),$(SYMROOT)/modules/$(x).dylib)) \ $(wildcard $(foreach x,$(MODULE_DEPENDENCIES),$(OBJROOT)/../$(x).dylib)) MODULE_DEPENDENCIES_CMD := $(foreach x,$(MODULE_DEPENDENCIES), -weak_library $(x)) INSTALLDIR = $(DSTROOT)/System/Library/Frameworks/System.framework/Versions/B/PrivateHeaders/standalone MODULE_DEFINITION := $(CONFIG_$(shell echo $(MODULE_NAME) | tr '[:lower:]' '[:upper:]')_MODULE) ifeq ($(MODULE_DEFINITION),m) ifneq ($(BUILT_IN),yes) # Make this as a *MODULE* all: $(CONFIG_HEADERS) $(HEADER_VERSION) dylib all-recursive else # Module not selected to be compiled as a module all: $(CONFIG_HEADERS) $(HEADER_VERSION) all-recursive endif else ifeq ($(MODULE_DEFINITION),y) ifeq ($(BUILT_IN),yes) # Make this *BUILT IN* all: $(CONFIG_HEADERS) $(HEADER_VERSION) dylib_LINKER all-recursive else # Module not selected to be built in all: $(CONFIG_HEADERS) $(HEADER_VERSION) all-recursive endif else # Don't compile this module all: endif endif dylib_LINKER: $(SRCROOT)/sym/i386/boot_modules.c $(SRCROOT)/sym/i386/boot_modules.h dylib dylib: ${SYMROOT}/modules/ ${OBJROOT} $(SYMROOT)/modules/$(MODULE_NAME).dylib MODULE_OBJS := $(addprefix $(OBJROOT)/, ${MODULE_OBJS}) ifeq ($(BUILT_IN),yes) $(SYMROOT)/modules/$(MODULE_NAME).dylib: $(MODULE_OBJS) $(MODULE_DEPENDENCIES) $(OBJROOT)/$(MODULE_NAME).desc $(OBJROOT)/$(MODULE_NAME).author Makefile @echo "\t[LD] $(MODULE_NAME).dylib" @ld -arch i386 -undefined dynamic_lookup \ -dylib -read_only_relocs suppress \ -S -x -Z -dead_strip_dylibs \ -no_uuid \ -current_version $(MODULE_VERSION) -compatibility_version $(MODULE_COMPAT_VERSION) \ -final_output $(MODULE_NAME) \ $(filter %.o,$^) \ -macosx_version_min 10.6 \ -sectcreate __INFO __author $(OBJROOT)/$(MODULE_NAME).author \ -sectcreate __INFO __description $(OBJROOT)/$(MODULE_NAME).desc \ -o $(SYMROOT)/modules/$(MODULE_NAME).dylib else $(SYMROOT)/modules/$(MODULE_NAME).dylib: $(MODULE_OBJS) $(MODULE_DEPENDENCIES) $(OBJROOT)/$(MODULE_NAME).desc $(OBJROOT)/$(MODULE_NAME).author $(SRCROOT)/obj/i386/boot2/Symbols_LINKER_ONLY.dylib Makefile @echo "\t[LD] $(MODULE_NAME).dylib" @ld -arch i386 \ -alias _$(MODULE_START) start \ -dylib -read_only_relocs suppress \ -S -x -Z -dead_strip_dylibs \ -no_uuid \ -current_version $(MODULE_VERSION) -compatibility_version $(MODULE_COMPAT_VERSION) \ -final_output $(MODULE_NAME) \ $(filter %.o,$^) \ -weak_library $(SRCROOT)/obj/i386/boot2/Symbols_LINKER_ONLY.dylib \ $(MODULE_DEPENDENCIES_CMD) \ -sectcreate __INFO __author $(OBJROOT)/$(MODULE_NAME).author \ -sectcreate __INFO __description $(OBJROOT)/$(MODULE_NAME).desc \ -macosx_version_min 10.6 \ -o $@ endif clean-local: @if [ -f "$(SYMROOT)/modules/$(MODULE_NAME).dylib" ];then \ echo "\t[RM] $(SYMROOT)/modules/$(MODULE_NAME).dylib";\ fi @for o in $(MODULE_OBJS); do if [ -f "$${o}" ];then echo "\t[RM] $${o}"; fi; done @rm -f $(SYMROOT)/modules/$(MODULE_NAME).dylib @rm -rf $(OBJROOT) ${SYMROOT}/modules/: @echo "\t[MKDIR] $@" @$(MKDIRS) $@ .PHONY: $(SRCROOT)/sym/i386/boot_modules.h .PHONY: $(SRCROOT)/sym/i386/boot_modules.c $(SRCROOT)/sym/i386/boot_modules.c: @echo "\tstart_built_in_module(\"$(MODULE_NAME)\", \"$(MODULE_AUTHOR)\", \"$(MODULE_DESCRIPTION)\", 0, 0, &$(MODULE_START));" >> $@ $(SRCROOT)/sym/i386/boot_modules.h: @echo "void $(MODULE_START)(); // $(MODULE_NAME)" >> $@ $(OBJROOT)/$(MODULE_NAME).author: Makefile @echo "$(MODULE_AUTHOR)" > $@ $(OBJROOT)/$(MODULE_NAME).desc: Makefile @echo "$(MODULE_DESCRIPTION)" > $@ #dependencies -include $(OBJROOT)/Makedep