function(pre_project_config)

# Basic input sanitization
if(DEFINED TGT_BSP)
	if(${TGT_BSP} MATCHES "arm/raspberrypi" AND NOT ${OS_FSFW} MATCHES linux)
		message(STATUS "FSFW OSAL invalid for specified target BSP ${TGT_BSP}!")
		message(STATUS "Setting valid OS_FSFW: linux") 
		set(OS_FSFW "linux")
	endif()
endif()

# Disable compiler checks for cross-compiling.
if(${OS_FSFW} STREQUAL linux AND TGT_BSP)

	if(${TGT_BSP} MATCHES "arm/q7s")
		set(CMAKE_TOOLCHAIN_FILE 
			"${CMAKE_SCRIPT_PATH}/Q7SCrossCompileConfig.cmake"
			PARENT_SCOPE
		)
	elseif (${TGT_BSP} MATCHES "arm/raspberrypi")
		if(NOT DEFINED ENV{RASPBIAN_ROOTFS})
			if(NOT DEFINED RASPBIAN_ROOTFS)
			    message(WARNING "No RASPBIAN_ROOTFS environmental or CMake variable set!")
				set(ENV{RASPBIAN_ROOTFS} "$ENV{HOME}/raspberrypi/rootfs")
			else()
				set(ENV{RASPBIAN_ROOTFS} "${RASPBIAN_ROOTFS}")
			endif()
		else()	
			message(STATUS 
			    "RASPBIAN_ROOTFS from environmental variables used: $ENV{RASPBIAN_ROOTFS}"
			)
		endif()
	
		if(NOT DEFINED ENV{RASPBERRY_VERSION})
			if(NOT RASPBERRY_VERSION)
				message(STATUS "No RASPBERRY_VERSION specified, setting to 4")
				set(RASPBERRY_VERSION "4" CACHE STRING "Raspberry Pi version")
			else()
				message(STATUS "Setting RASPBERRY_VERSION to ${RASPBERRY_VERSION}")
				set(RASPBERRY_VERSION ${RASPBERRY_VERSION} CACHE STRING "Raspberry Pi version")
			set(ENV{RASPBERRY_VERSION} ${RASPBERRY_VERSION})
			endif()
		else()
			message(STATUS 
				"RASPBERRY_VERSION from environmental variables used: "
				"$ENV{RASPBERRY_VERSION}"
			)
		endif()

		set(CMAKE_TOOLCHAIN_FILE 
			"${CMAKE_SCRIPT_PATH}/RPiCrossCompileConfig.cmake"
			PARENT_SCOPE
		)
	else()
		message(WARNING "Target BSP (TGT_BSP) ${TGT_BSP} unknown!")
	endif()
endif()

endfunction()