SubDir HAIKU_TOP src build libroot ;

UseHeaders [ FDirName $(HAIKU_TOP) headers build ] : true ;
UseHeaders [ FDirName $(HAIKU_TOP) headers build os ] : true ;
UseHeaders [ FDirName $(HAIKU_TOP) headers build os app ] : true ;
UseHeaders [ FDirName $(HAIKU_TOP) headers build os kernel ] : true ;
UseHeaders [ FDirName $(HAIKU_TOP) headers build os interface ] : true ;
UseHeaders [ FDirName $(HAIKU_TOP) headers build os storage ] : true ;
UseHeaders [ FDirName $(HAIKU_TOP) headers build os support ] : true ;

UseHeaders [ FDirName $(HAIKU_TOP) headers build private kernel ] : true ;

{
	local defines = [ FDefines
		HAIKU_BUILD_ATTRIBUTES_DIR="\\\"$(HAIKU_BUILD_ATTRIBUTES_DIR)\\\""
	] ;
	SubDirCcFlags $(defines) ;
	SubDirC++Flags $(defines) ;
}

# locate the library
MakeLocate libroot_build.so : $(HOST_BUILD_COMPATIBILITY_LIB_DIR) ;

# darwin already has strlcpy and strlcat in libSystem
local strlSources ;
if $(HOST_PLATFORM) != darwin {
	strlSources = strlcpy.c strlcat.c ;
}

if $(HOST_PLATFORM) = cygwin || $(HOST_PLATFORM) = sunos {
	strlSources += stpcpy.c strcasestr.c ;
}

local hostPlatformSources ;
if $(HOST_PLATFORM) = freebsd {
	hostPlatformSources = fs_freebsd.cpp ;
}

local librootSources =
	atomic.cpp
	byteorder.cpp
	errors.cpp
	fs.cpp
	fs_attr.cpp
	fs_descriptors.cpp
	misc.cpp
	sem.cpp
	thread.cpp

	$(hostPlatformSources)

	$(strlSources)
	strnlen.c
;

BuildPlatformSharedLibrary libroot_build.so :
	$(librootSources)
	:
	$(HOST_LIBSUPC++) $(HOST_LIBSTDC++)
;

BuildPlatformStaticLibrary libroot_build.a :
	:
	[ FGristFiles $(librootSources:S=$(SUFOBJ)) ]
;

SEARCH on [ FGristFiles $(strlSources) strnlen.c ]
	= [ FDirName $(HAIKU_TOP) src system libroot posix string ] ;
