Index: branches/meklort/i386/modules/ACPIPatcher/Makefile =================================================================== --- branches/meklort/i386/modules/ACPIPatcher/Makefile (revision 657) +++ branches/meklort/i386/modules/ACPIPatcher/Makefile (revision 658) @@ -35,7 +35,7 @@ DIRS_NEEDED = $(OBJROOT) $(SYMROOT) -all embedtheme optionrom: $(DIRS_NEEDED) dylib +all embedtheme optionrom: dylib include ../MakeInc.dir \ No newline at end of file Index: branches/meklort/i386/modules/MakeInc.dir =================================================================== --- branches/meklort/i386/modules/MakeInc.dir (revision 657) +++ branches/meklort/i386/modules/MakeInc.dir (revision 658) @@ -13,11 +13,19 @@ INSTALLDIR = $(DSTROOT)/System/Library/Frameworks/System.framework/Versions/B/PrivateHeaders/standalone +dylib: ${MODULE_OBJS} dylib_final HAVE_MODULES := $(wildcard $(SYMROOT)/*.dylib) +##IS_CPP_MODULE = $(shell nm $(OBJROOT)/*.o | grep " __Z") + ifneq ($(strip $(HAVE_MODULES)),) -dylib: ${MODULE_OBJS} +#### Other modules Exist #### +dylib_final: + @rm -rf $(SYMROOT)/$(MODULE_NAME).dylib #ensure module doesn't link with old version of self + @### Ugly hack, remove the c++ module if this module shouldn't link with it. Needed due to LD behavoir @echo "\t[LD] $(MODULE_NAME).dylib" + @if [ -f "$(SYMROOT)/uClibc++.dylib" ]; then if [ x"$(shell nm $(OBJROOT)/*.o 2>/dev/null | grep " __Z")" == x"" ]; then mv $(SYMROOT)/uClibc++.dylib $(SYMROOT)/../uClibc++.dylib; fi; fi; + @ld -arch i386 \ -undefined dynamic_lookup \ -alias $(MODULE_START) start \ @@ -26,11 +34,22 @@ -no_uuid \ -current_version $(MODULE_VERSION) -compatibility_version $(MODULE_COMPAT_VERSION) \ -final_output $(MODULE_NAME) \ + -L$(OBJROOT)/ \ + -L$(OBJROOT)/../ \ + -L$(OBJROOT)/../*/ \ + -L$(SYMROOT)/ \ $(OBJROOT)/*.o \ -weak_library $(SYMROOT)/*.dylib \ -o $(SYMROOT)/$(MODULE_NAME).dylib + + @if [ -f "$(SYMROOT)/../uClibc++.dylib" ]; then if [ x"$(shell nm $(OBJROOT)/*.o 2>/dev/null | grep " __Z")" == x"" ]; then mv $(SYMROOT)/../uClibc++.dylib $(SYMROOT)/uClibc++.dylib; fi; fi; + else -dylib: ${MODULE_OBJS} + +#### This is the first module #### +dylib_final: + @rm -rf $(SYMROOT)/$(MODULE_NAME).dylib #ensure module doesn't link with old version of self + @echo "\t[LD] $(MODULE_NAME).dylib" @ld -arch i386 \ -undefined dynamic_lookup \ -alias $(MODULE_START) start \ @@ -38,12 +57,14 @@ -S -x -Z -dead_strip_dylibs \ -no_uuid \ -current_version $(MODULE_VERSION) -compatibility_version $(MODULE_COMPAT_VERSION) \ - -final_output $(MODULE_NAME) \ + -L$(OBJROOT)/ \ + -L$(OBJROOT)/../ \ + -L$(OBJROOT)/../*/ \ + -L$(SYMROOT)/ \ $(OBJROOT)/*.o \ -o $(SYMROOT)/$(MODULE_NAME).dylib endif - %.o: %.c @echo "\t[CC] $<" @$(CC) $(CPPFLAGS) $(CFLAGS) $(DEFINES) -c "$<" $(INC) -o "$(OBJROOT)/$@" Index: branches/meklort/i386/modules/lazydylib1.c =================================================================== --- branches/meklort/i386/modules/lazydylib1.c (revision 0) +++ branches/meklort/i386/modules/lazydylib1.c (revision 658) @@ -0,0 +1,15 @@ +/* +000003b3 S _dyld_lazy_dylib_proxy +00000071 T _lazy_load_dylib +00000000 T dyld_lazy_dylib_stub_binding_helper +*/ +#if 0 +int dyld_lazy_dylib_proxy() +{ + return 0; +} + +void* lazy_load_dylib(void* lazyPointer) +{ +} +#endif \ No newline at end of file Index: branches/meklort/i386/modules/Makefile =================================================================== --- branches/meklort/i386/modules/Makefile (revision 657) +++ branches/meklort/i386/modules/Makefile (revision 658) @@ -29,9 +29,7 @@ SUBDIRS = klibc uClibc++ Resolution KernelPatcher GUI KextPatcher GraphicsEnabler HPET USBFix Memory Networking NetbookInstaller ACPIPatcher HelloWorld #SUBDIRS = HelloWorld -all embedtheme optionrom tags debug install installhdrs: - @rm -rf $(OBJROOT) - @mkdir $(OBJROOT) +all embedtheme optionrom tags debug install installhdrs: objroot_dirs lazydylib1.o @for i in ${SUBDIRS}; \ do \ echo ================= make $@ for $$i =================; \ @@ -47,5 +45,17 @@ ) || exit $$?; \ done +objroot_dirs: + @rm -rf $(OBJROOT) + @mkdir $(OBJROOT) &> /dev/null + +%.o: %.c + @echo "\t[CC] $<" + @$(CC) $(CPPFLAGS) $(CFLAGS) $(DEFINES) -c "$<" $(INC) -o "$(OBJROOT)/$@" + +%.o: %.cpp + @echo "\t[CPP] $<" + @$(CPP) $(CPPFLAGS) $(CFLAGS) $(DEFINES) -c "$<" $(INC) -o "$(OBJROOT)/$@" + installsrc: tar cf - . | (cd ${SRCROOT}; tar xfBp -)