SubDir HAIKU_TOP src system libroot ; UsePrivateHeaders libroot runtime_loader ; local architectureObject ; for architectureObject in [ MultiArchSubDirSetup ] { on $(architectureObject) { local architecture = $(TARGET_PACKAGING_ARCH) ; UsePrivateSystemHeaders ; local libgccAsSingleObject ; if $(architecture) = x86_gcc2 { libgccAsSingleObject = <$(architecture)>libroot_libgcc_$(TARGET_ARCH).o ; # One object to link them all... TARGET_LDFLAGS_$(TARGET_PACKAGING_ARCH) on <$(architecture)>libroot_libgcc_$(TARGET_ARCH).o = [ on <$(architecture)>libroot_libgcc_$(TARGET_ARCH).o return $(TARGET_LDFLAGS_$(TARGET_PACKAGING_ARCH)) ] --whole-archive ; MergeObject $(libgccAsSingleObject) : : [ TargetLibgcc ] ; } local librootObjects = $(libgccAsSingleObject) os_main.o os_arch_$(TARGET_ARCH).o posix_arch_$(TARGET_ARCH).o posix_crypt.o posix_locale.o posix_main.o posix_pthread.o posix_signal.o posix_stdio.o posix_musl.o posix_gnu_arch_$(TARGET_ARCH).o posix_gnu_ctype.o posix_gnu_ext.o posix_gnu_iconv.o posix_gnu_libio.o posix_gnu_locale.o posix_gnu_math.o posix_gnu_misc.o posix_gnu_regex.o posix_gnu_stdio.o posix_gnu_stdlib.o posix_gnu_wcsmbs.o posix_stdlib.o posix_string.o posix_string_arch_$(TARGET_ARCH).o posix_sys.o posix_time.o posix_unistd.o posix_wchar.o ; librootObjects = $(librootObjects:G=$(architecture)) ; local librootDebugObjects = posix_malloc_debug.o ; librootDebugObjects = $(librootDebugObjects:G=$(architecture)) ; local librootNoDebugObjects = posix_malloc.o ; librootNoDebugObjects = $(librootNoDebugObjects:G=$(architecture)) ; local libroot = [ MultiArchDefaultGristFiles libroot.so ] ; local librootDebug = $(libroot:B=libroot_debug) ; DONT_LINK_AGAINST_LIBROOT on $(libroot) = true ; DONT_LINK_AGAINST_LIBROOT on $(librootDebug) = true ; SetVersionScript $(libroot) : libroot_versions ; SetVersionScript $(librootDebug) : libroot_versions ; SharedLibrary $(libroot) : libroot_init.c : $(librootObjects) $(librootNoDebugObjects) [ TargetStaticLibsupc++ ] [ TargetLibgcc ] ; # Use the standard libroot.so soname, so when the debug version is # pre-loaded it prevents the standard version to be loaded as well. HAIKU_SONAME on $(librootDebug) = libroot.so ; SharedLibrary $(librootDebug) : libroot_init.c : $(librootObjects) $(librootDebugObjects) [ TargetStaticLibsupc++ ] [ TargetLibgcc ] ; # These are defined in POSIX for c99 support, so fake'em StaticLibrary [ MultiArchDefaultGristFiles libc.a ] : empty.c ; StaticLibrary [ MultiArchDefaultGristFiles libm.a ] : empty.c ; StaticLibrary [ MultiArchDefaultGristFiles libpthread.a ] : empty.c ; # Copy libroot.so and update the copy's revision section. We link # everything against the original, but the copy will end up on the disk # image (this way we avoid unnecessary dependencies). The copy will be # located in a subdirectory. if $(TARGET_PLATFORM) = haiku { local targetDir = [ FDirName $(TARGET_DEBUG_$(DEBUG)_LOCATE_TARGET) revisioned ] ; local revisionedLibroot = [ MultiArchDefaultGristFiles libroot.so : revisioned ] ; local revisionedLibrootDebug = $(librootDebug:G=$(revisionedLibroot:G)) ; MakeLocate $(revisionedLibroot) : $(targetDir) ; CopySetHaikuRevision $(revisionedLibroot) : $(libroot) ; MakeLocate $(revisionedLibrootDebug) : $(targetDir) ; CopySetHaikuRevision $(revisionedLibrootDebug) : $(librootDebug) ; } } } SubInclude HAIKU_TOP src system libroot add-ons ; SubInclude HAIKU_TOP src system libroot os ; SubInclude HAIKU_TOP src system libroot posix ; SubInclude HAIKU_TOP src system libroot stubbed ;