diff --git a/CMakeLists.txt b/CMakeLists.txt
index fe057e2575550202d88300c04026986418646b31..b5a36e31afd26016eeffb819b539c0ec0a6b8997 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -121,6 +121,9 @@
 # and leads to wrong toolchain detection
 cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
 
+set(PX4_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
+set(PX4_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
+
 # Use clang
 #SET (CMAKE_C_COMPILER /usr/bin/clang-3.6)
 #SET (CMAKE_CXX_COMPILER /usr/bin/clang++-3.6)
@@ -163,12 +166,8 @@ if(NOT CMAKE_INSTALL_PREFIX)
 endif()
 message(STATUS "CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}")
 
-# switch to ros CMake file if building ros
-if (${OS} STREQUAL "ros")
-	include("cmake/ros-CMakeLists.txt")
-else()  # otherwise use the rest of this file
-
-list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
+list(APPEND CMAKE_MODULE_PATH "${PX4_SOURCE_DIR}/cmake")
+message(STATUS "cmake module path: ${CMAKE_MODULE_PATH}")
 set(config_module "configs/${CONFIG}")
 include(${config_module})
 
@@ -262,7 +261,7 @@ px4_add_git_submodule(TARGET git_matrix PATH "src/lib/matrix")
 px4_add_git_submodule(TARGET git_cmake_hexagon PATH "cmake/cmake_hexagon")
 
 add_custom_target(submodule_clean
-	WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+	WORKING_DIRECTORY ${PX4_SOURCE_DIR}
 	COMMAND git submodule deinit -f .
 	COMMAND rm -rf .git/modules/*
 	)
@@ -272,12 +271,12 @@ add_custom_target(submodule_clean
 #
 add_custom_target(check_format
 	COMMAND Tools/check_code_style.sh
-	WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+	WORKING_DIRECTORY ${PX4_SOURCE_DIR}
 	)
 
 add_custom_target(config
 	COMMAND cmake-gui .
-	WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+	WORKING_DIRECTORY ${PX4_BINARY_DIR}
 	)
 
 #=============================================================================
@@ -326,7 +325,7 @@ add_custom_target(xml_gen
 # external projects
 #
 
-set(ep_base ${CMAKE_BINARY_DIR}/external)
+set(ep_base ${PX4_BINARY_DIR}/external)
 set_property(DIRECTORY PROPERTY EP_BASE ${ep_base})
 
 # add external project install folders to build
@@ -355,7 +354,7 @@ foreach(module ${config_module_list})
 	if(external_module)
 		STRING(REGEX REPLACE "//" "/" EXT_MODULE ${module})
 		STRING(REGEX REPLACE "/" "__" EXT_MODULE_PREFIX ${EXT_MODULE})
-		add_subdirectory(${module} ${CMAKE_BINARY_DIR}/${EXT_MODULE_PREFIX})
+		add_subdirectory(${module} ${PX4_BINARY_DIR}/${EXT_MODULE_PREFIX})
 	else()
 		add_subdirectory(src/${module})
 	endif()
@@ -380,7 +379,7 @@ endif()
 #=============================================================================
 # generate git version
 #
-px4_create_git_hash_header(HEADER ${CMAKE_BINARY_DIR}/build_git_version.h)
+px4_create_git_hash_header(HEADER ${PX4_BINARY_DIR}/build_git_version.h)
 
 #=============================================================================
 # packaging
@@ -410,6 +409,4 @@ if (${OS} STREQUAL "posix")
 endif()
 include(CPack)
 
-endif() # ros alternative endif
-
 # vim: set noet fenc=utf-8 ff=unix ft=cmake :
diff --git a/cmake/common/px4_base.cmake b/cmake/common/px4_base.cmake
index ef05520375fa78f5ac71747c03ea75ae1742111d..88f1e57f98fa4921fac515f5e4ff0f89db5be8f1 100644
--- a/cmake/common/px4_base.cmake
+++ b/cmake/common/px4_base.cmake
@@ -136,14 +136,14 @@ function(px4_add_git_submodule)
 		REQUIRED TARGET PATH
 		ARGN ${ARGN})
 	string(REPLACE "/" "_" NAME ${PATH})
-	add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/git_init_${NAME}.stamp
-		WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
-		COMMAND touch ${CMAKE_BINARY_DIR}/git_init_${NAME}.stamp
-		DEPENDS ${CMAKE_SOURCE_DIR}/.gitmodules
+	add_custom_command(OUTPUT ${PX4_BINARY_DIR}/git_init_${NAME}.stamp
+		WORKING_DIRECTORY ${PX4_SOURCE_DIR}
+		COMMAND touch ${PX4_BINARY_DIR}/git_init_${NAME}.stamp
+		DEPENDS ${PX4_SOURCE_DIR}/.gitmodules
 		)
 	add_custom_target(${TARGET}
-		WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
-		DEPENDS ${CMAKE_BINARY_DIR}/git_init_${NAME}.stamp
+		WORKING_DIRECTORY ${PX4_SOURCE_DIR}
+		DEPENDS ${PX4_BINARY_DIR}/git_init_${NAME}.stamp
 		)
 endfunction()
 
@@ -371,7 +371,7 @@ function(px4_generate_messages)
 	endif()
 
 	# headers
-	set(msg_out_path ${CMAKE_BINARY_DIR}/src/modules/uORB/topics)
+	set(msg_out_path ${PX4_BINARY_DIR}/src/modules/uORB/topics)
 	set(msg_list)
 	foreach(msg_file ${MSG_FILES})
 		get_filename_component(msg ${msg_file} NAME_WE)
@@ -389,15 +389,15 @@ function(px4_generate_messages)
 			-d msg
 			-o ${msg_out_path}
 			-e msg/templates/uorb
-			-t ${CMAKE_BINARY_DIR}/topics_temporary_header
+			-t ${PX4_BINARY_DIR}/topics_temporary_header
 		DEPENDS ${DEPENDS} ${MSG_FILES}
-		WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+		WORKING_DIRECTORY ${PX4_SOURCE_DIR}
 		COMMENT "Generating uORB topic headers"
 		VERBATIM
 		)
 
 	# !sources
-	set(msg_source_out_path	${CMAKE_BINARY_DIR}/topics_sources)
+	set(msg_source_out_path	${PX4_BINARY_DIR}/topics_sources)
 	set(msg_source_files_out ${msg_source_out_path}/uORBTopics.cpp)
 	foreach(msg ${msg_list})
 		list(APPEND msg_source_files_out ${msg_source_out_path}/${msg}.cpp)
@@ -410,9 +410,9 @@ function(px4_generate_messages)
 			-d msg
 			-o ${msg_source_out_path}
 			-e msg/templates/uorb
-			-t ${CMAKE_BINARY_DIR}/topics_temporary_sources
+			-t ${PX4_BINARY_DIR}/topics_temporary_sources
 		DEPENDS ${DEPENDS} ${MSG_FILES}
-		WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+		WORKING_DIRECTORY ${PX4_SOURCE_DIR}
 		COMMENT "Generating uORB topic sources"
 		VERBATIM
 		)
@@ -427,7 +427,7 @@ function(px4_generate_messages)
 
 	# multi messages for target OS
 	set(msg_multi_out_path
-		${CMAKE_BINARY_DIR}/src/platforms/${OS}/px4_messages)
+		${PX4_BINARY_DIR}/src/platforms/${OS}/px4_messages)
 	set(msg_multi_files_out)
 	foreach(msg ${msg_list})
 		list(APPEND msg_multi_files_out ${msg_multi_out_path}/px4_${msg}.h)
@@ -440,10 +440,10 @@ function(px4_generate_messages)
 			-d msg
 			-o ${msg_multi_out_path}
 			-e msg/templates/px4/uorb
-			-t ${CMAKE_BINARY_DIR}/multi_topics_temporary/${OS}
+			-t ${PX4_BINARY_DIR}/multi_topics_temporary/${OS}
 			-p "px4_"
 		DEPENDS ${DEPENDS} ${MSG_FILES}
-		WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+		WORKING_DIRECTORY ${PX4_SOURCE_DIR}
 		COMMENT "Generating uORB topic multi headers for ${OS}"
 		VERBATIM
 		)
@@ -504,9 +504,9 @@ function(px4_add_upload)
 	px4_join(OUT serial_ports LIST "${serial_ports}" GLUE ",")
 	add_custom_target(${OUT}
 		COMMAND ${PYTHON_EXECUTABLE}
-			${CMAKE_SOURCE_DIR}/Tools/px_uploader.py --port ${serial_ports} ${BUNDLE}
+			${PX4_SOURCE_DIR}/Tools/px_uploader.py --port ${serial_ports} ${BUNDLE}
 		DEPENDS ${BUNDLE}
-		WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+		WORKING_DIRECTORY ${PX4_BINARY_DIR}
 		COMMENT "uploading ${BUNDLE}"
 		VERBATIM
 		USES_TERMINAL
@@ -523,9 +523,9 @@ function(px4_add_adb_push)
 		ARGN ${ARGN})
 
 	add_custom_target(${OUT}
-		COMMAND ${CMAKE_SOURCE_DIR}/Tools/adb_upload.sh ${FILES} ${DEST}
+		COMMAND ${PX4_SOURCE_DIR}/Tools/adb_upload.sh ${FILES} ${DEST}
 		DEPENDS ${DEPENDS}
-		WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+		WORKING_DIRECTORY ${PX4_BINARY_DIR}
 		COMMENT "uploading ${BUNDLE}"
 		VERBATIM
 		USES_TERMINAL
@@ -541,9 +541,9 @@ function(px4_add_adb_push_to_bebop)
 		ARGN ${ARGN})
 
 	add_custom_target(${OUT}
-		COMMAND ${CMAKE_SOURCE_DIR}/Tools/adb_upload_to_bebop.sh ${FILES} ${DEST}
+		COMMAND ${PX4_SOURCE_DIR}/Tools/adb_upload_to_bebop.sh ${FILES} ${DEST}
 		DEPENDS ${DEPENDS}
-		WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+		WORKING_DIRECTORY ${PX4_BINARY_DIR}
 		COMMENT "uploading ${BUNDLE}"
 		VERBATIM
 		USES_TERMINAL
@@ -559,9 +559,9 @@ function(px4_add_scp_push)
 		ARGN ${ARGN})
 
 	add_custom_target(${OUT}
-		COMMAND ${CMAKE_SOURCE_DIR}/Tools/scp_upload.sh ${FILES} ${DEST}
+		COMMAND ${PX4_SOURCE_DIR}/Tools/scp_upload.sh ${FILES} ${DEST}
 		DEPENDS ${DEPENDS}
-		WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+		WORKING_DIRECTORY ${PX4_BINARY_DIR}
 		COMMENT "uploading ${BUNDLE}"
 		VERBATIM
 		USES_TERMINAL
@@ -761,21 +761,21 @@ function(px4_add_common_flags)
 		)
 
 	set(added_include_dirs
-		${CMAKE_SOURCE_DIR}/src
-		${CMAKE_BINARY_DIR}
-		${CMAKE_BINARY_DIR}/src
-		${CMAKE_SOURCE_DIR}/src/modules
-		${CMAKE_SOURCE_DIR}/src/include
-		${CMAKE_SOURCE_DIR}/src/lib
-		${CMAKE_SOURCE_DIR}/src/platforms
+		${PX4_SOURCE_DIR}/src
+		${PX4_BINARY_DIR}
+		${PX4_BINARY_DIR}/src
+		${PX4_SOURCE_DIR}/src/modules
+		${PX4_SOURCE_DIR}/src/include
+		${PX4_SOURCE_DIR}/src/lib
+		${PX4_SOURCE_DIR}/src/platforms
 		# TODO Build/versioning was in Makefile,
 		# do we need this, how does it work with cmake
-		${CMAKE_SOURCE_DIR}/src/drivers/boards/${BOARD}
-		${CMAKE_BINARY_DIR}
-		${CMAKE_BINARY_DIR}/src/modules/px4_messages
-		${CMAKE_BINARY_DIR}/src/modules
-		${CMAKE_SOURCE_DIR}/mavlink/include/mavlink
-		${CMAKE_SOURCE_DIR}/src/lib/DriverFramework/framework/include
+		${PX4_SOURCE_DIR}/src/drivers/boards/${BOARD}
+		${PX4_BINARY_DIR}
+		${PX4_BINARY_DIR}/src/modules/px4_messages
+		${PX4_BINARY_DIR}/src/modules
+		${PX4_SOURCE_DIR}/mavlink/include/mavlink
+		${PX4_SOURCE_DIR}/src/lib/DriverFramework/framework/include
 		)
 
 	list(APPEND added_include_dirs
@@ -858,19 +858,19 @@ function(px4_create_git_hash_header)
 		COMMAND git describe --always --tags
 		OUTPUT_VARIABLE git_tag
 		OUTPUT_STRIP_TRAILING_WHITESPACE
-		WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+		WORKING_DIRECTORY ${PX4_SOURCE_DIR}
 		)
 	message(STATUS "GIT_TAG = ${git_tag}")
 	execute_process(
 		COMMAND git rev-parse --verify HEAD
 		OUTPUT_VARIABLE git_version
 		OUTPUT_STRIP_TRAILING_WHITESPACE
-		WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+		WORKING_DIRECTORY ${PX4_SOURCE_DIR}
 		)
 	#message(STATUS "GIT_VERSION = ${git_version}")
 	set(git_version_short)
 	string(SUBSTRING ${git_version} 1 16 git_version_short)
-	configure_file(${CMAKE_SOURCE_DIR}/cmake/templates/build_git_version.h.in ${HEADER} @ONLY)
+	configure_file(${PX4_SOURCE_DIR}/cmake/templates/build_git_version.h.in ${HEADER} @ONLY)
 endfunction()
 
 #=============================================================================
@@ -897,12 +897,12 @@ function(px4_generate_parameters_xml)
 		ONE_VALUE OUT BOARD
 		REQUIRED OUT BOARD
 		ARGN ${ARGN})
-	set(path ${CMAKE_SOURCE_DIR}/src)
+	set(path ${PX4_SOURCE_DIR}/src)
 	file(GLOB_RECURSE param_src_files
-		${CMAKE_SOURCE_DIR}/src/*params.c
+		${PX4_SOURCE_DIR}/src/*params.c
 		)
 	add_custom_command(OUTPUT ${OUT}
-		COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/Tools/px_process_params.py
+		COMMAND ${PYTHON_EXECUTABLE} ${PX4_SOURCE_DIR}/Tools/px_process_params.py
 			-s ${path} --board CONFIG_ARCH_${BOARD} --xml --inject-xml
 		DEPENDS ${param_src_files}
 		)
@@ -944,7 +944,7 @@ function(px4_generate_parameters_source)
 		set(SCOPE "")
 	endif()
 	add_custom_command(OUTPUT ${generated_files}
-		COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/Tools/px_generate_params.py ${XML} ${SCOPE}
+		COMMAND ${PYTHON_EXECUTABLE} ${PX4_SOURCE_DIR}/Tools/px_generate_params.py ${XML} ${SCOPE}
 		DEPENDS ${XML} ${DEPS} ${SCOPE}
 		)
 	set(${OUT} ${generated_files} PARENT_SCOPE)
@@ -975,10 +975,10 @@ function(px4_generate_airframes_xml)
 		ONE_VALUE OUT BOARD
 		REQUIRED OUT BOARD
 		ARGN ${ARGN})
-	set(process_airframes ${CMAKE_SOURCE_DIR}/Tools/px_process_airframes.py)
+	set(process_airframes ${PX4_SOURCE_DIR}/Tools/px_process_airframes.py)
 	add_custom_command(OUTPUT ${OUT}
 		COMMAND ${PYTHON_EXECUTABLE} ${process_airframes}
-			-a ${CMAKE_SOURCE_DIR}/ROMFS/px4fmu_common/init.d
+			-a ${PX4_SOURCE_DIR}/ROMFS/px4fmu_common/init.d
 			--board CONFIG_ARCH_BOARD_${BOARD} --xml
 		)
 	set(${OUT} ${${OUT}} PARENT_SCOPE)
diff --git a/cmake/configs/nuttx_asc-v1_default.cmake b/cmake/configs/nuttx_asc-v1_default.cmake
index ecab2200bd3328cb612abf8afbcae028497573c8..8e938b41e436eede52129ae7d9de32327fda1cef 100644
--- a/cmake/configs/nuttx_asc-v1_default.cmake
+++ b/cmake/configs/nuttx_asc-v1_default.cmake
@@ -1,6 +1,6 @@
 include(nuttx/px4_impl_nuttx)
 
-set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake)
+set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake)
 
 set(config_module_list
 	#
diff --git a/cmake/configs/nuttx_mindpx-v2_default.cmake b/cmake/configs/nuttx_mindpx-v2_default.cmake
index d269cb39b333738d4d60ec40b58f0fbf79333e11..ab29762ccfb4739520fa6332070a77facc46a79c 100644
--- a/cmake/configs/nuttx_mindpx-v2_default.cmake
+++ b/cmake/configs/nuttx_mindpx-v2_default.cmake
@@ -1,6 +1,6 @@
 include(nuttx/px4_impl_nuttx)
 
-set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake)
+set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake)
 
 set(config_uavcan_num_ifaces 2)
 
diff --git a/cmake/configs/nuttx_px4-stm32f4discovery_default.cmake b/cmake/configs/nuttx_px4-stm32f4discovery_default.cmake
index c71db2fc31847137a6daa55d00774f569ac275b7..377a90f335137c726309c99d9bf05b95e61b2ee2 100644
--- a/cmake/configs/nuttx_px4-stm32f4discovery_default.cmake
+++ b/cmake/configs/nuttx_px4-stm32f4discovery_default.cmake
@@ -1,6 +1,6 @@
 include(nuttx/px4_impl_nuttx)
 
-set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake)
+set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake)
 
 set(config_module_list
 	#
diff --git a/cmake/configs/nuttx_px4fmu-v1_default.cmake b/cmake/configs/nuttx_px4fmu-v1_default.cmake
index c53b199fdd763217eac6470e4db2eb4a73e1a585..140df32fd8409976315fb005676b191be94d8907 100644
--- a/cmake/configs/nuttx_px4fmu-v1_default.cmake
+++ b/cmake/configs/nuttx_px4fmu-v1_default.cmake
@@ -1,6 +1,6 @@
 include(nuttx/px4_impl_nuttx)
 
-set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake)
+set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake)
 
 set(config_module_list
 	#
diff --git a/cmake/configs/nuttx_px4fmu-v2_default.cmake b/cmake/configs/nuttx_px4fmu-v2_default.cmake
index 337d377370a58d4eb54092ea5f635b30c267fda2..a5cee0ba138ca1e37d478054a35485d0c37a0ade 100644
--- a/cmake/configs/nuttx_px4fmu-v2_default.cmake
+++ b/cmake/configs/nuttx_px4fmu-v2_default.cmake
@@ -1,6 +1,6 @@
 include(nuttx/px4_impl_nuttx)
 
-set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake)
+set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake)
 
 set(config_uavcan_num_ifaces 2)
 
diff --git a/cmake/configs/nuttx_px4fmu-v2_test.cmake b/cmake/configs/nuttx_px4fmu-v2_test.cmake
index 7e5d1c5c26f2d7dfc23ac9609015005532b9c2e4..3f34faf8826d191cd7eb92e451b4f4ba2f72d78a 100644
--- a/cmake/configs/nuttx_px4fmu-v2_test.cmake
+++ b/cmake/configs/nuttx_px4fmu-v2_test.cmake
@@ -1,6 +1,6 @@
 include(nuttx/px4_impl_nuttx)
 
-set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake)
+set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake)
 
 set(config_uavcan_num_ifaces 2)
 
diff --git a/cmake/configs/nuttx_px4fmu-v4_default.cmake b/cmake/configs/nuttx_px4fmu-v4_default.cmake
index dcc91439457b65c26a209aafb25b084a8b49b794..452929a7ce0b809e85a5052b52e4ec2248b5bd35 100644
--- a/cmake/configs/nuttx_px4fmu-v4_default.cmake
+++ b/cmake/configs/nuttx_px4fmu-v4_default.cmake
@@ -1,6 +1,6 @@
 include(nuttx/px4_impl_nuttx)
 
-set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake)
+set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake)
 
 set(config_uavcan_num_ifaces 1)
 
diff --git a/cmake/configs/nuttx_tap-v1_default.cmake b/cmake/configs/nuttx_tap-v1_default.cmake
index bc53563a2656e69c028b59822525f6443c930474..28fe2d0c1525e34f5886f80a6b993d1a7624dd1c 100644
--- a/cmake/configs/nuttx_tap-v1_default.cmake
+++ b/cmake/configs/nuttx_tap-v1_default.cmake
@@ -1,6 +1,6 @@
 include(nuttx/px4_impl_nuttx)
 
-set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake)
+set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake)
 
 set(config_module_list
 	#
diff --git a/cmake/configs/posix_bebop_default.cmake b/cmake/configs/posix_bebop_default.cmake
index d7d4058ab1bc021b7a644dc43348cf4ee5874c73..814976ee69225bb92298585b0305302dd7ccb332 100644
--- a/cmake/configs/posix_bebop_default.cmake
+++ b/cmake/configs/posix_bebop_default.cmake
@@ -1,6 +1,6 @@
 include(posix/px4_impl_posix)
 
-set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-linux-gnueabihf-raspbian.cmake)
+set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-linux-gnueabihf-raspbian.cmake)
 
 add_definitions(
   -D__PX4_POSIX_BEBOP
diff --git a/cmake/configs/posix_eagle_default.cmake b/cmake/configs/posix_eagle_default.cmake
index 3a6dd22755b9ff298387725deaca6647a7d52022..be819614250c581cbd105083921eca64e0f0718b 100644
--- a/cmake/configs/posix_eagle_default.cmake
+++ b/cmake/configs/posix_eagle_default.cmake
@@ -4,9 +4,9 @@
 # on the Linux side of the Snapdragon.
 include(configs/posix_sdflight_default)
 
-set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-arm-linux-gnueabihf.cmake)
+set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-arm-linux-gnueabihf.cmake)
 
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon")
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon")
 
 set(CONFIG_SHMEM "1")
 
diff --git a/cmake/configs/posix_eagle_hil.cmake b/cmake/configs/posix_eagle_hil.cmake
index 909bdeecb1ed695450d3ecf3ac9fa513261eb5c6..d38da131bdd4e9c42f159c42a6d524935d197184 100644
--- a/cmake/configs/posix_eagle_hil.cmake
+++ b/cmake/configs/posix_eagle_hil.cmake
@@ -1,13 +1,13 @@
 include(posix/px4_impl_posix)
 
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon")
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon")
 
 # Use build stubs unless explicitly set not to
 if("${DSPAL_STUBS_ENABLE}" STREQUAL "")
 	set(DSPAL_STUBS_ENABLE "1")
 endif()
 
-set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-linux-gnueabihf.cmake)
+set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-linux-gnueabihf.cmake)
 
 set(config_generate_parameters_scope ALL)
 
diff --git a/cmake/configs/posix_eagle_legacy_driver_default.cmake b/cmake/configs/posix_eagle_legacy_driver_default.cmake
index dc9b3049c94621808190056813471a28a11f8901..c1e39e9489f8cdd33f64892ac98be488b1b0b7e6 100644
--- a/cmake/configs/posix_eagle_legacy_driver_default.cmake
+++ b/cmake/configs/posix_eagle_legacy_driver_default.cmake
@@ -1,8 +1,8 @@
 include(posix/px4_impl_posix)
 
-set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-arm-linux-gnueabihf.cmake)
+set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-arm-linux-gnueabihf.cmake)
 
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon")
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon")
 
 set(config_generate_parameters_scope ALL)
 
diff --git a/cmake/configs/posix_eagle_muorb.cmake b/cmake/configs/posix_eagle_muorb.cmake
index 95a5c59bebe4c6432cbb409e852a4e980cedb874..f47c421dce624529d107fc90d08045e4907be73a 100644
--- a/cmake/configs/posix_eagle_muorb.cmake
+++ b/cmake/configs/posix_eagle_muorb.cmake
@@ -1,8 +1,8 @@
 include(posix/px4_impl_posix)
 
-set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-linux-gnueabihf.cmake)
+set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-linux-gnueabihf.cmake)
 
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon")
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon")
 
 set(config_generate_parameters_scope ALL)
 
diff --git a/cmake/configs/posix_rpi_cross.cmake b/cmake/configs/posix_rpi_cross.cmake
index 9e48eca465b231ce222e7b5ea0545b07cdf7329c..e665f01dadab50a6e52f1559b3263418b9c5c021 100644
--- a/cmake/configs/posix_rpi_cross.cmake
+++ b/cmake/configs/posix_rpi_cross.cmake
@@ -1,9 +1,9 @@
 include(configs/posix_rpi_common)
 
 if("$ENV{RPI_USE_CLANG}" STREQUAL "1")
-	set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-linux-gnueabihf-raspbian-clang.cmake)
+	set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-linux-gnueabihf-raspbian-clang.cmake)
 else()
-	set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-linux-gnueabihf-raspbian.cmake)
+	set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-linux-gnueabihf-raspbian.cmake)
 endif()
 
 
diff --git a/cmake/configs/posix_rpi_native.cmake b/cmake/configs/posix_rpi_native.cmake
index e58f37028227b2855640e368e2a79467705f58f7..b2a54c4f6532d075c72e6244a9dd063f0cb6f906 100644
--- a/cmake/configs/posix_rpi_native.cmake
+++ b/cmake/configs/posix_rpi_native.cmake
@@ -1,3 +1,3 @@
 include(configs/posix_rpi_common)
 
-set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-native.cmake)
+set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-native.cmake)
diff --git a/cmake/configs/posix_sdflight_default.cmake b/cmake/configs/posix_sdflight_default.cmake
index 733e6c584a8a213a247c57680669a4228b38bca7..a1e5c802466a09ff6836473cddeab07659dc24c3 100644
--- a/cmake/configs/posix_sdflight_default.cmake
+++ b/cmake/configs/posix_sdflight_default.cmake
@@ -1,8 +1,8 @@
 include(posix/px4_impl_posix)
 
-set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-linux-gnueabihf.cmake)
+set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-linux-gnueabihf.cmake)
 
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon")
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon")
 
 set(config_generate_parameters_scope ALL)
 
diff --git a/cmake/configs/posix_sitl_broadcast.cmake b/cmake/configs/posix_sitl_broadcast.cmake
index 7060744447d9a528384a8d4e810a7e31d977e631..1f94b67603b99eb5b8ef94c5eeb824eb63394db8 100644
--- a/cmake/configs/posix_sitl_broadcast.cmake
+++ b/cmake/configs/posix_sitl_broadcast.cmake
@@ -1,6 +1,6 @@
 include(posix/px4_impl_posix)
 
-set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-native.cmake)
+set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-native.cmake)
 
 set(config_module_list
 	drivers/device
diff --git a/cmake/configs/posix_sitl_default.cmake b/cmake/configs/posix_sitl_default.cmake
index 78765aeead4b84b572e843b491d4113ba3a2107a..d4934ce2d3145443a4b33e27ccd8755d7d0744fd 100644
--- a/cmake/configs/posix_sitl_default.cmake
+++ b/cmake/configs/posix_sitl_default.cmake
@@ -1,6 +1,6 @@
 include(posix/px4_impl_posix)
 
-set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-native.cmake)
+set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-native.cmake)
 
 set(config_module_list
 	drivers/boards/sitl
diff --git a/cmake/configs/posix_sitl_replay.cmake b/cmake/configs/posix_sitl_replay.cmake
index 3c99cba7a77505394c270bab213a08ac784d3a8e..a20a2d8cfe076c08c1cf7e8cd6a4881bcc6be8f0 100644
--- a/cmake/configs/posix_sitl_replay.cmake
+++ b/cmake/configs/posix_sitl_replay.cmake
@@ -1,6 +1,6 @@
 include(posix/px4_impl_posix)
 
-set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-native.cmake)
+set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-native.cmake)
 
 set(config_module_list
 	drivers/device
diff --git a/cmake/configs/qurt_eagle_hello.cmake b/cmake/configs/qurt_eagle_hello.cmake
index e1a66ea82702f37009f3d03983a5faf19b54700f..db16c17d2a5439a7fc987c1931bed6cc50cb1b3f 100644
--- a/cmake/configs/qurt_eagle_hello.cmake
+++ b/cmake/configs/qurt_eagle_hello.cmake
@@ -6,9 +6,9 @@ else()
 	set(HEXAGON_SDK_ROOT $ENV{HEXAGON_SDK_ROOT})
 endif()
 
-set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-qurt.cmake)
+set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-qurt.cmake)
 
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon")
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon")
 
 set(config_generate_parameters_scope ALL)
 
diff --git a/cmake/configs/qurt_eagle_hil.cmake b/cmake/configs/qurt_eagle_hil.cmake
index bf08993de0fb7b6acd6a0ebb1ff83dd111ca619e..16bf30226cf5a85fa1ed683bcae8743f234230ce 100644
--- a/cmake/configs/qurt_eagle_hil.cmake
+++ b/cmake/configs/qurt_eagle_hil.cmake
@@ -6,9 +6,9 @@ else()
 	set(HEXAGON_SDK_ROOT $ENV{HEXAGON_SDK_ROOT})
 endif()
 
-set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-qurt.cmake)
+set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-qurt.cmake)
 
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon")
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon")
 
 set(config_generate_parameters_scope ALL)
 
diff --git a/cmake/configs/qurt_eagle_legacy_driver_default.cmake b/cmake/configs/qurt_eagle_legacy_driver_default.cmake
index fcba1a3e13ca8129f14a19d95b143112fe122450..d3ced8d1dd69d2d32f1465de9a6fe76bd409effd 100644
--- a/cmake/configs/qurt_eagle_legacy_driver_default.cmake
+++ b/cmake/configs/qurt_eagle_legacy_driver_default.cmake
@@ -10,9 +10,9 @@ set(CONFIG_SHMEM "1")
 
 set(config_generate_parameters_scope ALL)
 
-set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-qurt.cmake)
+set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-qurt.cmake)
 
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon")
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon")
 
 add_definitions(
    -D__USING_SNAPDRAGON_LEGACY_DRIVER
diff --git a/cmake/configs/qurt_eagle_muorb.cmake b/cmake/configs/qurt_eagle_muorb.cmake
index 505ffd00cd13033896c9aa62ee7fe8ff7f14d7e3..2af8ebdfb2e5e410f16b0474013cac5ae4d32215 100644
--- a/cmake/configs/qurt_eagle_muorb.cmake
+++ b/cmake/configs/qurt_eagle_muorb.cmake
@@ -6,9 +6,9 @@ else()
 	set(HEXAGON_SDK_ROOT $ENV{HEXAGON_SDK_ROOT})
 endif()
 
-set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-qurt.cmake)
+set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-qurt.cmake)
 
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon")
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon")
 
 set(config_generate_parameters_scope ALL)
 
diff --git a/cmake/configs/qurt_eagle_test.cmake b/cmake/configs/qurt_eagle_test.cmake
index 9170b3da47a503f7881b1bd3b3bda548af130a43..91314785770ca1cc0b2d63d3f1e351a82a7b2cb2 100644
--- a/cmake/configs/qurt_eagle_test.cmake
+++ b/cmake/configs/qurt_eagle_test.cmake
@@ -6,8 +6,8 @@ else()
 	set(HEXAGON_SDK_ROOT $ENV{HEXAGON_SDK_ROOT})
 endif()
 
-set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-qurt.cmake)
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon")
+set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-qurt.cmake)
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon")
 
 set(config_generate_parameters_scope ALL)
 
diff --git a/cmake/configs/qurt_eagle_travis.cmake b/cmake/configs/qurt_eagle_travis.cmake
index b6be755df32515e202a39f73e95c6acf739dd801..283a5591efbb3ba244c356d909a7d994e8b3f4d0 100644
--- a/cmake/configs/qurt_eagle_travis.cmake
+++ b/cmake/configs/qurt_eagle_travis.cmake
@@ -5,9 +5,9 @@ set(CONFIG_SHMEM "1")
 # Run a full link with build stubs to make sure qurt target isn't broken
 set(QURT_ENABLE_STUBS "1")
 
-set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-qurt.cmake)
+set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-qurt.cmake)
 
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon")
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon")
 include(hexagon_sdk)
 
 if ("$ENV{HEXAGON_SDK_ROOT}" STREQUAL "")
diff --git a/cmake/configs/qurt_sdflight_default.cmake b/cmake/configs/qurt_sdflight_default.cmake
index 890658e0dce48ea22e244c3b52e58b9b6f0bc951..c772aead9749bcc25827b19fc150003043db3027 100644
--- a/cmake/configs/qurt_sdflight_default.cmake
+++ b/cmake/configs/qurt_sdflight_default.cmake
@@ -10,9 +10,9 @@ set(CONFIG_SHMEM "1")
 
 set(config_generate_parameters_scope ALL)
 
-set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-qurt.cmake)
+set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-qurt.cmake)
 
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon")
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon")
 
 set(config_module_list
 	#
diff --git a/cmake/nuttx/px4_impl_nuttx.cmake b/cmake/nuttx/px4_impl_nuttx.cmake
index c969263be10de4d1315fe50eb746de799355a2df..9a54b6277ec2b966b8acdd9df8a557acdf5a4157 100644
--- a/cmake/nuttx/px4_impl_nuttx.cmake
+++ b/cmake/nuttx/px4_impl_nuttx.cmake
@@ -95,9 +95,9 @@ function(px4_nuttx_add_firmware)
 
 	add_custom_command(OUTPUT ${OUT}
 		COMMAND ${OBJCOPY} -O binary ${EXE} ${EXE}.bin
-		COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/Tools/px_mkfw.py
-			--prototype ${CMAKE_SOURCE_DIR}/Images/${BOARD}.prototype
-			--git_identity ${CMAKE_SOURCE_DIR}
+		COMMAND ${PYTHON_EXECUTABLE} ${PX4_SOURCE_DIR}/Tools/px_mkfw.py
+			--prototype ${PX4_SOURCE_DIR}/Images/${BOARD}.prototype
+			--git_identity ${PX4_SOURCE_DIR}
 			${extra_args}
 			--image ${EXE}.bin > ${OUT}
 		DEPENDS ${EXE}
@@ -148,7 +148,7 @@ function(px4_nuttx_generate_builtin_commands)
 			math(EXPR command_count "${command_count}+1")
 		endif()
 	endforeach()
-	configure_file(${CMAKE_SOURCE_DIR}/cmake/nuttx/builtin_commands.c.in
+	configure_file(${PX4_SOURCE_DIR}/cmake/nuttx/builtin_commands.c.in
 		${OUT})
 endfunction()
 
@@ -183,17 +183,17 @@ function(px4_nuttx_add_export)
 		REQUIRED OUT CONFIG THREADS
 		ARGN ${ARGN})
 
-	set(nuttx_src ${CMAKE_BINARY_DIR}/${CONFIG}/NuttX)
+	set(nuttx_src ${PX4_BINARY_DIR}/${CONFIG}/NuttX)
 
 	# patch
 	add_custom_target(__nuttx_patch_${CONFIG})
-	file(GLOB nuttx_patches RELATIVE ${CMAKE_SOURCE_DIR}
-	    ${CMAKE_SOURCE_DIR}/nuttx-patches/*.patch)
+	file(GLOB nuttx_patches RELATIVE ${PX4_SOURCE_DIR}
+	    ${PX4_SOURCE_DIR}/nuttx-patches/*.patch)
 	foreach(patch ${nuttx_patches})
 		string(REPLACE "/" "_" patch_name "${patch}-${CONFIG}")
 	    message(STATUS "nuttx-patch: ${patch}")
 		add_custom_command(OUTPUT nuttx_patch_${patch_name}.stamp
-			COMMAND ${PATCH} -p0 -N  < ${CMAKE_SOURCE_DIR}/${patch}
+			COMMAND ${PATCH} -p0 -N  < ${PX4_SOURCE_DIR}/${patch}
 			COMMAND ${TOUCH} nuttx_patch_${patch_name}.stamp
 			DEPENDS ${DEPENDS}
 			)
@@ -204,7 +204,7 @@ function(px4_nuttx_add_export)
 
 	# Read defconfig to see if CONFIG_ARMV7M_STACKCHECK is yes 
 	# note: CONFIG will be BOARD in the future evaluation of ${hw_stack_check_${CONFIG}
-	file(STRINGS "${CMAKE_SOURCE_DIR}/nuttx-configs/${CONFIG}/nsh/defconfig"
+	file(STRINGS "${PX4_SOURCE_DIR}/nuttx-configs/${CONFIG}/nsh/defconfig"
 		hw_stack_check_${CONFIG}
 		REGEX "CONFIG_ARMV7M_STACKCHECK=y"
 		)
@@ -213,29 +213,29 @@ function(px4_nuttx_add_export)
 	endif()
 
 	# copy and export
-	file(RELATIVE_PATH nuttx_cp_src ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/NuttX)
-	file(GLOB_RECURSE config_files ${CMAKE_SOURCE_DIR}/nuttx-configs/${CONFIG}/*)
-	add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/${CONFIG}.export
+	file(RELATIVE_PATH nuttx_cp_src ${PX4_BINARY_DIR} ${PX4_SOURCE_DIR}/NuttX)
+	file(GLOB_RECURSE config_files ${PX4_SOURCE_DIR}/nuttx-configs/${CONFIG}/*)
+	add_custom_command(OUTPUT ${PX4_BINARY_DIR}/${CONFIG}.export
 		COMMAND ${MKDIR} -p ${nuttx_src}
 		COMMAND rsync -a --delete --exclude=.git ${nuttx_cp_src}/ ${CONFIG}/NuttX/
 		#COMMAND ${ECHO} Configuring NuttX for ${CONFIG}
 		COMMAND ${MAKE} --no-print-directory -C${nuttx_src}/nuttx -r --quiet distclean
-		COMMAND ${CP} -r ${CMAKE_SOURCE_DIR}/nuttx-configs/PX4_Warnings.mk ${nuttx_src}/nuttx/
-		COMMAND ${CP} -r ${CMAKE_SOURCE_DIR}/nuttx-configs/${CONFIG} ${nuttx_src}/nuttx/configs
+		COMMAND ${CP} -r ${PX4_SOURCE_DIR}/nuttx-configs/PX4_Warnings.mk ${nuttx_src}/nuttx/
+		COMMAND ${CP} -r ${PX4_SOURCE_DIR}/nuttx-configs/${CONFIG} ${nuttx_src}/nuttx/configs
 		COMMAND cd ${nuttx_src}/nuttx/tools && ./configure.sh ${CONFIG}/nsh && cd ..
 		#COMMAND ${ECHO} Exporting NuttX for ${CONFIG}
 		COMMAND ${MAKE} --no-print-directory --quiet -C ${nuttx_src}/nuttx -j${THREADS} -r CONFIG_ARCH_BOARD=${CONFIG} export > nuttx_build.log
-		COMMAND ${CP} -r ${nuttx_src}/nuttx/nuttx-export.zip ${CMAKE_BINARY_DIR}/${CONFIG}.export
+		COMMAND ${CP} -r ${nuttx_src}/nuttx/nuttx-export.zip ${PX4_BINARY_DIR}/${CONFIG}.export
 		DEPENDS ${config_files} ${DEPENDS}
-		WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+		WORKING_DIRECTORY ${PX4_BINARY_DIR}
 		COMMENT "Building NuttX for ${CONFIG}")
 
 	# extract
 	add_custom_command(OUTPUT nuttx_export_${CONFIG}.stamp
 		COMMAND ${RM} -rf ${nuttx_src}/nuttx-export
-		COMMAND ${UNZIP} -q ${CMAKE_BINARY_DIR}/${CONFIG}.export -d ${nuttx_src}
+		COMMAND ${UNZIP} -q ${PX4_BINARY_DIR}/${CONFIG}.export -d ${nuttx_src}
 		COMMAND ${TOUCH} nuttx_export_${CONFIG}.stamp
-		DEPENDS ${DEPENDS} ${CMAKE_BINARY_DIR}/${CONFIG}.export)
+		DEPENDS ${DEPENDS} ${PX4_BINARY_DIR}/${CONFIG}.export)
 
 	add_custom_target(${OUT}
 		DEPENDS nuttx_export_${CONFIG}.stamp)
@@ -308,16 +308,16 @@ function(px4_nuttx_add_romfs)
 		REQUIRED OUT ROOT
 		ARGN ${ARGN})
 
-	set(romfs_temp_dir ${CMAKE_BINARY_DIR}/tmp/${ROOT})
-	set(romfs_src_dir ${CMAKE_SOURCE_DIR}/${ROOT})
-	set(romfs_autostart ${CMAKE_SOURCE_DIR}/Tools/px_process_airframes.py)
-	set(romfs_pruner ${CMAKE_SOURCE_DIR}/Tools/px_romfs_pruner.py)
-	set(bin_to_obj ${CMAKE_SOURCE_DIR}/cmake/nuttx/bin_to_obj.py)
+	set(romfs_temp_dir ${PX4_BINARY_DIR}/tmp/${ROOT})
+	set(romfs_src_dir ${PX4_SOURCE_DIR}/${ROOT})
+	set(romfs_autostart ${PX4_SOURCE_DIR}/Tools/px_process_airframes.py)
+	set(romfs_pruner ${PX4_SOURCE_DIR}/Tools/px_romfs_pruner.py)
+	set(bin_to_obj ${PX4_SOURCE_DIR}/cmake/nuttx/bin_to_obj.py)
 	set(extras_dir ${CMAKE_CURRENT_BINARY_DIR}/extras)
 
 	file(GLOB_RECURSE romfs_src_files ${romfs_src_dir} ${romfs_src_dir}/*)
 
-	set(cmake_test ${CMAKE_SOURCE_DIR}/cmake/test/cmake_tester.py)
+	set(cmake_test ${PX4_SOURCE_DIR}/cmake/test/cmake_tester.py)
 
 	
 	set(extras)
@@ -346,7 +346,7 @@ function(px4_nuttx_add_romfs)
 		#COMMAND cmake -E remove_directory ${romfs_temp_dir}
 		COMMAND ${PYTHON_EXECUTABLE} ${bin_to_obj}
 			--ld ${LD} --c_flags ${CMAKE_C_FLAGS}
-			--include_path "${CMAKE_SOURCE_DIR}/src/include"
+			--include_path "${PX4_SOURCE_DIR}/src/include"
 			--c_compiler ${CMAKE_C_COMPILER}
 			--nm ${NM} --objcopy ${OBJCOPY}
 			--obj romfs.o
@@ -414,7 +414,7 @@ function(px4_os_add_flags)
 		LINK_DIRS ${LINK_DIRS}
 		DEFINITIONS ${DEFINITIONS})
 
-	set(nuttx_export_dir ${CMAKE_BINARY_DIR}/${BOARD}/NuttX/nuttx-export)
+	set(nuttx_export_dir ${PX4_BINARY_DIR}/${BOARD}/NuttX/nuttx-export)
 	set(added_include_dirs
 		${nuttx_export_dir}/include
 		${nuttx_export_dir}/include/cxx
diff --git a/cmake/posix/px4_impl_posix.cmake b/cmake/posix/px4_impl_posix.cmake
index 47ed391e211e47bc717405c7c6bdd61b3884eca5..4893f884fb89ca730219f82236ce957f6ed843c0 100644
--- a/cmake/posix/px4_impl_posix.cmake
+++ b/cmake/posix/px4_impl_posix.cmake
@@ -49,7 +49,7 @@
 #
 
 include(common/px4_base)
-list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/posix)
+list(APPEND CMAKE_MODULE_PATH ${PX4_SOURCE_DIR}/cmake/posix)
 
 #=============================================================================
 #
@@ -101,7 +101,7 @@ function(px4_posix_generate_builtin_commands)
 			math(EXPR command_count "${command_count}+1")
 		endif()
 	endforeach()
-	configure_file(${CMAKE_SOURCE_DIR}/cmake/posix/apps.h_in
+	configure_file(${PX4_SOURCE_DIR}/cmake/posix/apps.h_in
 		${OUT})
 endfunction()
 
diff --git a/cmake/qurt/px4_impl_qurt.cmake b/cmake/qurt/px4_impl_qurt.cmake
index efb1135d7be4bb094c54090447a4b455a75517a1..f5387c515e6e2bb8d50e9dc4ccff9cbf7b97a617 100644
--- a/cmake/qurt/px4_impl_qurt.cmake
+++ b/cmake/qurt/px4_impl_qurt.cmake
@@ -50,7 +50,7 @@
 #
 
 include(common/px4_base)
-list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/qurt)
+list(APPEND CMAKE_MODULE_PATH ${PX4_SOURCE_DIR}/cmake/qurt)
 
 #=============================================================================
 #
@@ -95,7 +95,7 @@ function(px4_qurt_generate_builtin_commands)
 			math(EXPR command_count "${command_count}+1")
 		endif()
 	endforeach()
-	configure_file(${CMAKE_SOURCE_DIR}/cmake/qurt/apps.h_in ${OUT})
+	configure_file(${PX4_SOURCE_DIR}/cmake/qurt/apps.h_in ${OUT})
 endfunction()
 
 #=============================================================================
diff --git a/cmake/ros-CMakeLists.txt b/cmake/ros-CMakeLists.txt
deleted file mode 100644
index 67870b1e2cb9896765ce98427f687772a56b47f4..0000000000000000000000000000000000000000
--- a/cmake/ros-CMakeLists.txt
+++ /dev/null
@@ -1,334 +0,0 @@
-cmake_minimum_required(VERSION 2.8.3)
-project(px4)
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
-add_definitions(-D__PX4_ROS)
-add_definitions(-D__EXPORT=)
-add_definitions(-DMAVLINK_DIALECT=common)
-
-## Find catkin macros and libraries
-## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
-## is used, also find other catkin packages
-find_package(catkin REQUIRED COMPONENTS
-  roscpp
-  rospy
-  std_msgs
-  geometry_msgs
-  message_generation
-  cmake_modules
-  gazebo_msgs
-  sensor_msgs
-  mav_msgs
-  libmavconn
-  tf
-)
-find_package(Eigen REQUIRED)
-
-## System dependencies are found with CMake's conventions
-# find_package(Boost REQUIRED COMPONENTS system)
-
-
-## Uncomment this if the package has a setup.py. This macro ensures
-## modules and global scripts declared therein get installed
-## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html
-# catkin_python_setup()
-
-################################################
-## Declare ROS messages, services and actions ##
-################################################
-
-## To declare and build messages, services or actions from within this
-## package, follow these steps:
-## * Let MSG_DEP_SET be the set of packages whose message types you use in
-##   your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...).
-## * In the file package.xml:
-##   * add a build_depend and a run_depend tag for each package in MSG_DEP_SET
-##   * If MSG_DEP_SET isn't empty the following dependencies might have been
-##     pulled in transitively but can be declared for certainty nonetheless:
-##     * add a build_depend tag for "message_generation"
-##     * add a run_depend tag for "message_runtime"
-## * In this file (CMakeLists.txt):
-##   * add "message_generation" and every package in MSG_DEP_SET to
-##     find_package(catkin REQUIRED COMPONENTS ...)
-##   * add "message_runtime" and every package in MSG_DEP_SET to
-##     catkin_package(CATKIN_DEPENDS ...)
-##   * uncomment the add_*_files sections below as needed
-##     and list every .msg/.srv/.action file to be processed
-##   * uncomment the generate_messages entry below
-##   * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...)
-
-## Generate messages in the 'msg' folder
-add_message_files(
-  FILES
-  actuator_armed.msg
-  actuator_controls.msg
-  commander_state.msg
-  control_state.msg
-  distance_sensor.msg
-  manual_control_setpoint.msg
-  mc_virtual_rates_setpoint.msg
-  offboard_control_mode.msg
-  parameter_update.msg
-  position_setpoint.msg
-  position_setpoint_triplet.msg
-  rc_channels.msg
-  ros/actuator_controls_0.msg
-  ros/actuator_controls_virtual_mc.msg
-  vehicle_attitude.msg
-  vehicle_attitude_setpoint.msg
-  vehicle_control_mode.msg
-  vehicle_force_setpoint.msg
-  vehicle_global_velocity_setpoint.msg
-  vehicle_local_position.msg
-  vehicle_local_position_setpoint.msg
-  vehicle_rates_setpoint.msg
-  vehicle_status.msg
-)
-
-## Generate services in the 'srv' folder
-# add_service_files(
-#   FILES
-#   Service1.srv
-#   Service2.srv
-# )
-
-## Generate actions in the 'action' folder
-# add_action_files(
-#   FILES
-#   Action1.action
-#   Action2.action
-# )
-
-## Generate added messages and services with any dependencies listed here
-generate_messages(
-  DEPENDENCIES
-  std_msgs
-  gazebo_msgs
-)
-
-###################################
-## catkin specific configuration ##
-###################################
-## The catkin_package macro generates cmake config files for your package
-## Declare things to be passed to dependent projects
-## INCLUDE_DIRS: uncomment this if you package contains header files
-## LIBRARIES: libraries you create in this project that dependent projects also need
-## CATKIN_DEPENDS: catkin_packages dependent projects also need
-## DEPENDS: system dependencies of this project that dependent projects also need
-catkin_package(
-  INCLUDE_DIRS src/include
-  LIBRARIES px4
-  CATKIN_DEPENDS message_runtime roscpp rospy std_msgs libmavconn
-  DEPENDS system_lib
-)
-
-###########
-## Build ##
-###########
-
-## Specify additional locations of header files
-## Your package locations should be listed before other locations
-include_directories(
-  ${catkin_INCLUDE_DIRS}
-  src/platforms
-  src/platforms/ros/px4_messages
-  src/include
-  src/modules
-  ${CMAKE_BINARY_DIR}/src/modules
-  src/
-  src/lib
-  src/lib/matrix
-  ${EIGEN_INCLUDE_DIRS}
-  integrationtests
-)
-
-## generate multiplatform wrapper headers
-## note that the message header files are generated as in any ROS project with generate_messages()
-set(MULTIPLATFORM_HEADER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src/platforms/ros/px4_messages)
-set(MULTIPLATFORM_TEMPLATE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/msg/templates/px4/ros)
-set(TOPICHEADER_TEMP_DIR ${CMAKE_BINARY_DIR}/topics_temporary)
-set(MULTIPLATFORM_PREFIX px4_)
-add_custom_target(multiplatform_message_headers ALL ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/Tools/px_generate_uorb_topic_files.py
-	--headers -d ${CMAKE_CURRENT_SOURCE_DIR}/msg -o ${MULTIPLATFORM_HEADER_DIR} -e ${MULTIPLATFORM_TEMPLATE_DIR}
-	-t ${TOPICHEADER_TEMP_DIR} -p ${MULTIPLATFORM_PREFIX})
-
-## Declare a cpp library
-add_library(px4
-  src/platforms/ros/px4_ros_impl.cpp
-  src/platforms/ros/perf_counter.cpp
-  src/platforms/ros/geo.cpp
-  src/lib/mathlib/math/Limits.cpp
-  src/modules/systemlib/circuit_breaker.cpp
-)
-add_dependencies(px4 ${PROJECT_NAME}_generate_messages_cpp multiplatform_message_headers)
-
-target_link_libraries(px4
-  ${catkin_LIBRARIES}
-)
-
-## Declare a test publisher
-add_executable(publisher
-	src/examples/publisher/publisher_main.cpp
-	src/examples/publisher/publisher_example.cpp)
-add_dependencies(publisher ${PROJECT_NAME}_generate_messages_cpp multiplatform_message_headers)
-target_link_libraries(publisher
-  ${catkin_LIBRARIES}
-  px4
-)
-
-## Declare a test subscriber
-add_executable(subscriber
-	src/examples/subscriber/subscriber_main.cpp
-	src/examples/subscriber/subscriber_example.cpp)
-add_dependencies(subscriber ${PROJECT_NAME}_generate_messages_cpp multiplatform_message_headers)
-target_link_libraries(subscriber
-  ${catkin_LIBRARIES}
-  px4
-)
-
-## MC Attitude Control
-add_executable(mc_att_control
-	src/modules/mc_att_control_multiplatform/mc_att_control_main.cpp
-	src/modules/mc_att_control_multiplatform/mc_att_control.cpp
-	src/modules/mc_att_control_multiplatform/mc_att_control_base.cpp)
-add_dependencies(mc_att_control ${PROJECT_NAME}_generate_messages_cpp_cpp)
-target_link_libraries(mc_att_control
-  ${catkin_LIBRARIES}
-  px4
-)
-
-## MC Position Control
-add_executable(mc_pos_control
-	src/modules/mc_pos_control_multiplatform/mc_pos_control_main.cpp
-	src/modules/mc_pos_control_multiplatform/mc_pos_control.cpp)
-add_dependencies(mc_pos_control ${PROJECT_NAME}_generate_messages_cpp_cpp)
-target_link_libraries(mc_pos_control
-  ${catkin_LIBRARIES}
-  px4
-)
-
-## Attitude Estimator dummy
-add_executable(attitude_estimator
-	src/platforms/ros/nodes/attitude_estimator/attitude_estimator.cpp)
-add_dependencies(attitude_estimator ${PROJECT_NAME}_generate_messages_cpp_cpp)
-target_link_libraries(attitude_estimator
-  ${catkin_LIBRARIES}
-  px4
-)
-
-## Position Estimator dummy
-add_executable(position_estimator
-	src/platforms/ros/nodes/position_estimator/position_estimator.cpp)
-add_dependencies(position_estimator ${PROJECT_NAME}_generate_messages_cpp_cpp)
-target_link_libraries(position_estimator
-  ${catkin_LIBRARIES}
-  px4
-)
-
-## Manual input
-add_executable(manual_input
-	src/platforms/ros/nodes/manual_input/manual_input.cpp)
-add_dependencies(manual_input ${PROJECT_NAME}_generate_messages_cpp_cpp)
-target_link_libraries(manual_input
-  ${catkin_LIBRARIES}
-  px4
-)
-
-## Multicopter Mixer dummy
-add_executable(mc_mixer
-  src/platforms/ros/nodes/mc_mixer/mc_mixer.cpp)
-add_dependencies(mc_mixer ${PROJECT_NAME}_generate_messages_cpp_cpp)
-target_link_libraries(mc_mixer
-  ${catkin_LIBRARIES}
-  px4
-)
-
-## Commander dummy
-add_executable(commander
-	src/platforms/ros/nodes/commander/commander.cpp)
-add_dependencies(commander ${PROJECT_NAME}_generate_messages_cpp_cpp)
-target_link_libraries(commander
-  ${catkin_LIBRARIES}
-  px4
-)
-
-## Mavlink dummy
-add_executable(mavlink
-	src/platforms/ros/nodes/mavlink/mavlink.cpp)
-add_dependencies(mavlink ${PROJECT_NAME}_generate_messages_cpp_cpp)
-target_link_libraries(mavlink
-  ${catkin_LIBRARIES}
-  px4
-)
-
-## Offboard Position Setpoint Demo
-add_executable(demo_offboard_position_setpoints
-	src/platforms/ros/nodes/demo_offboard_position_setpoints/demo_offboard_position_setpoints.cpp)
-add_dependencies(demo_offboard_position_setpoints ${PROJECT_NAME}_generate_messages_cpp_cpp)
-target_link_libraries(demo_offboard_position_setpoints
-  ${catkin_LIBRARIES}
-  px4
-)
-
-## Offboard Attitude Setpoint Demo
-add_executable(demo_offboard_attitude_setpoints
-	src/platforms/ros/nodes/demo_offboard_attitude_setpoints/demo_offboard_attitude_setpoints.cpp)
-add_dependencies(demo_offboard_attitude_setpoints ${PROJECT_NAME}_generate_messages_cpp_cpp)
-target_link_libraries(demo_offboard_attitude_setpoints
-  ${catkin_LIBRARIES}
-  px4
-)
-
-#############
-## Install ##
-#############
-
-# all install targets should use catkin DESTINATION variables
-# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html
-
-## Mark executable scripts (Python etc.) for installation
-## in contrast to setup.py, you can choose the destination
-# install(PROGRAMS
-#   scripts/my_python_script
-#   DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
-# )
-
-## Mark executables and/or libraries for installation
-install(TARGETS ${PROJECT_NAME}
-  ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
-  LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
-  RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
-)
-
-## Mark cpp header files for installation
-# install(DIRECTORY include/${PROJECT_NAME}/
-#   DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
-#   FILES_MATCHING PATTERN "*.h"
-#   PATTERN ".svn" EXCLUDE
-# )
-
-## Mark other files for installation (e.g. launch and bag files, etc.)
-# install(FILES
-#   # myfile1
-#   # myfile2
-#   DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
-# )
-
-#############
-## Testing ##
-#############
-
-## Add gtest based cpp test target and link libraries
-# catkin_add_gtest(${PROJECT_NAME}-test test/test_px4test.cpp)
-# if(TARGET ${PROJECT_NAME}-test)
-#   target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME})
-# endif()
-
-## Add folders to be run by python nosetests
-# catkin_add_nosetests(test)
-
-## Tests on multiplatform SITL (deprecated) have been moved to POSIX SITL
-#if(CATKIN_ENABLE_TESTING)
-#  find_package(rostest REQUIRED)
-#  add_rostest(integrationtests/demo_tests/direct_tests.launch)
-#  add_rostest(integrationtests/demo_tests/mavros_tests.launch)
-#endif()
diff --git a/posix-configs/SITL/init/rcS_lpe_gazebo_standard_vtol b/posix-configs/SITL/init/rcS_lpe_gazebo_standard_vtol
new file mode 100644
index 0000000000000000000000000000000000000000..7687376accb83103380f81f26a5b2ef6b003870c
--- /dev/null
+++ b/posix-configs/SITL/init/rcS_lpe_gazebo_standard_vtol
@@ -0,0 +1,84 @@
+uorb start
+param load
+param set MAV_TYPE 20
+param set VT_TYPE 2
+param set SYS_AUTOSTART 4010
+param set SYS_RESTART_TYPE 2
+dataman start
+param set BAT_N_CELLS 3
+param set CAL_GYRO0_ID 2293768
+param set CAL_ACC0_ID 1376264
+param set CAL_ACC1_ID 1310728
+param set CAL_MAG0_ID 196616
+param set CAL_GYRO0_XOFF 0.01
+param set CAL_ACC0_XOFF 0.01
+param set CAL_ACC0_YOFF -0.01
+param set CAL_ACC0_ZOFF 0.01
+param set CAL_ACC0_XSCALE 1.01
+param set CAL_ACC0_YSCALE 1.01
+param set CAL_ACC0_ZSCALE 1.01
+param set CAL_ACC1_XOFF 0.01
+param set CAL_MAG0_XOFF 0.01
+param set MC_ROLLRATE_P 0.2
+param set MC_PITCHRATE_P 0.2
+param set MC_PITCH_P 6
+param set MC_ROLL_P 6
+param set MPC_XY_P 0.15
+param set MPC_XY_VEL_P 0.05
+param set MPC_XY_VEL_D 0.005
+param set MPC_XY_FF 0.1
+param set MPC_Z_VEL_MAX 1.5
+param set MPC_Z_VEL_P 0.6
+param set MPC_Z_VEL_I 0.15
+param set SENS_BOARD_ROT 8
+param set SENS_DPRES_OFF 0.001
+param set SENS_BOARD_X_OFF 0.000001
+param set COM_RC_IN_MODE 1
+param set NAV_DLL_ACT 2
+param set NAV_ACC_RAD 3.0
+param set MPC_TKO_SPEED 1.0
+param set MIS_YAW_TMT 10
+param set RTL_RETURN_ALT 30.0
+param set RTL_DESCEND_ALT 10.0
+param set RTL_LAND_DELAY 0
+param set COM_DISARM_LAND 5
+param set COM_DL_LOSS_EN 1
+param set MPC_ACC_HOR_MAX 2
+replay tryapplyparams
+simulator start -s 
+rgbledsim start
+tone_alarm start
+gyrosim start
+accelsim start
+barosim start
+adcsim start
+gpssim start
+measairspeedsim start
+pwm_out_sim mode_pwm
+sleep 1
+sensors start
+commander start
+land_detector start multicopter
+navigator start
+attitude_estimator_q start
+local_position_estimator start
+vtol_att_control start
+mc_pos_control start
+mc_att_control start
+fw_pos_control_l1 start
+fw_att_control start
+mixer load /dev/pwm_output0 ROMFS/sitl/mixers/standard_vtol_sitl.main.mix
+mavlink start -u 14556 -r 2000000
+mavlink start -u 14557 -r 2000000 -m onboard -o 14540
+mavlink stream -r 80 -s POSITION_TARGET_LOCAL_NED -u 14556
+mavlink stream -r 80 -s LOCAL_POSITION_NED -u 14556
+mavlink stream -r 80 -s GLOBAL_POSITION_INT -u 14556
+mavlink stream -r 80 -s ATTITUDE -u 14556
+mavlink stream -r 80 -s ATTITUDE_QUATERNION -u 14556
+mavlink stream -r 80 -s ATTITUDE_TARGET -u 14556
+mavlink stream -r 20 -s RC_CHANNELS -u 14556
+mavlink stream -r 250 -s HIGHRES_IMU -u 14556
+mavlink stream -r 10 -s OPTICAL_FLOW_RAD -u 14556
+sdlog2 start -r 200 -e -t -a
+mavlink boot_complete
+replay trystart
diff --git a/src/firmware/nuttx/CMakeLists.txt b/src/firmware/nuttx/CMakeLists.txt
index 53988b43cf5bc26d550825bae7cb4a62e6b4b186..4d27d2758b76f10ae6ce970bd3bc9cc5b576d6dc 100644
--- a/src/firmware/nuttx/CMakeLists.txt
+++ b/src/firmware/nuttx/CMakeLists.txt
@@ -10,7 +10,7 @@ add_executable(firmware_nuttx
 	builtin_commands.c)
 
 
-set(nuttx_export_dir ${CMAKE_BINARY_DIR}/${BOARD}/NuttX/nuttx-export)
+set(nuttx_export_dir ${PX4_BINARY_DIR}/${BOARD}/NuttX/nuttx-export)
 
 set(link_libs
 	romfs apps nuttx m gcc
@@ -20,7 +20,7 @@ if(NOT ${BOARD} STREQUAL "sim")
 	list(APPEND link_libs nosys)
 	set(main_link_flags
 		"-T${nuttx_export_dir}/build/ld.script"
-		"-Wl,-Map=${CMAKE_BINARY_DIR}/${BOARD}/main.map"
+		"-Wl,-Map=${PX4_BINARY_DIR}/${BOARD}/main.map"
 		)
 	px4_join(OUT main_link_flags LIST ${main_link_flags} GLUE " ")
 	set_target_properties(firmware_nuttx PROPERTIES LINK_FLAGS ${main_link_flags})
@@ -43,12 +43,12 @@ add_custom_target(check_weak
 if(NOT ${BOARD} STREQUAL "sim")
 
 	if (config_io_board)
-		set(extras "${CMAKE_BINARY_DIR}/src/modules/px4iofirmware/${config_io_board}.bin")
+		set(extras "${PX4_BINARY_DIR}/src/modules/px4iofirmware/${config_io_board}.bin")
 	endif()
 	
 	set(romfs_dir "ROMFS/px4fmu_common")
 	if (${BOARD} STREQUAL "tap-v1")
-	set(romfs_dir "ROMFS/tap_common")
+		set(romfs_dir "ROMFS/tap_common")
 	endif()
 	if (${BOARD} STREQUAL "px4fmu-v2" AND ${LABEL} STREQUAL "test")
 	    set(romfs_dir "ROMFS/px4fmu_test")
@@ -68,8 +68,8 @@ if(NOT ${BOARD} STREQUAL "sim")
 	px4_nuttx_add_firmware(OUT ${fw_file}
 		BOARD ${BOARD}
 		EXE ${CMAKE_CURRENT_BINARY_DIR}/firmware_nuttx
-		PARAM_XML ${CMAKE_BINARY_DIR}/parameters.xml
-		AIRFRAMES_XML ${CMAKE_BINARY_DIR}/airframes.xml
+		PARAM_XML ${PX4_BINARY_DIR}/parameters.xml
+		AIRFRAMES_XML ${PX4_BINARY_DIR}/airframes.xml
 		)
 
 	configure_file(gdbinit.in .gdbinit)
@@ -94,21 +94,21 @@ if(NOT ${BOARD} STREQUAL "sim")
 
 	add_custom_target(debug_io
 		COMMAND ${GDB}
-			${CMAKE_BINARY_DIR}/src/modules/px4iofirmware/${config_io_board}
+			${PX4_BINARY_DIR}/src/modules/px4iofirmware/${config_io_board}
 		DEPENDS firmware_nuttx
 			${CMAKE_CURRENT_BINARY_DIR}/.gdbinit
 		)
 
 	add_custom_target(debug_io_tui
 		COMMAND ${GDBTUI}
-			${CMAKE_BINARY_DIR}/src/modules/px4iofirmware/${config_io_board}
+			${PX4_BINARY_DIR}/src/modules/px4iofirmware/${config_io_board}
 		DEPENDS firmware_nuttx
 			${CMAKE_CURRENT_BINARY_DIR}/.gdbinit
 		)
 
 	add_custom_target(debug_io_ddd
 		COMMAND ${DDD} --debugger ${GDB}
-			${CMAKE_BINARY_DIR}/src/modules/px4iofirmware/${config_io_board}
+			${PX4_BINARY_DIR}/src/modules/px4iofirmware/${config_io_board}
 		DEPENDS firmware_nuttx
 			${CMAKE_CURRENT_BINARY_DIR}/.gdbinit
 		)
diff --git a/src/firmware/nuttx/gdbinit.in b/src/firmware/nuttx/gdbinit.in
index e820673b216ac39775583c44ec7c885e05039508..fd1b1c451effef5f0416c20e8da9fdab7cccb5b3 100644
--- a/src/firmware/nuttx/gdbinit.in
+++ b/src/firmware/nuttx/gdbinit.in
@@ -4,4 +4,4 @@ attach 1
 monitor vector_catch disable hard
 set mem inaccessible-by-default off
 set print pretty
-source ${CMAKE_SOURCE_DIR}/Debug/PX4
+source ${PX4_SOURCE_DIR}/Debug/PX4
diff --git a/src/firmware/posix/CMakeLists.txt b/src/firmware/posix/CMakeLists.txt
index 3e8e8b52270c8065b682958f76176174488ab6b2..64cbbf786d0e026bad76d8f48b7a4a1cfa47cfe6 100644
--- a/src/firmware/posix/CMakeLists.txt
+++ b/src/firmware/posix/CMakeLists.txt
@@ -18,7 +18,7 @@ if ("${BOARD}" STREQUAL "eagle" OR ("${BOARD}" STREQUAL "excelsior"))
 		APPS_DEST "/home/linaro"
 		SOURCES
 			px4muorb_stub.c
-			${CMAKE_SOURCE_DIR}/src/platforms/posix/main.cpp
+			${PX4_SOURCE_DIR}/src/platforms/posix/main.cpp
 			apps.h
 		LINK_LIBS
 			-Wl,--start-group
@@ -33,14 +33,14 @@ if ("${BOARD}" STREQUAL "eagle" OR ("${BOARD}" STREQUAL "excelsior"))
 			 OS ${OS}
 			 BOARD ${BOARD}
 			 FILES ${CMAKE_CURRENT_BINARY_DIR}/px4
-				 ${CMAKE_SOURCE_DIR}/posix-configs/eagle/flight/mainapp.config
+				 ${PX4_SOURCE_DIR}/posix-configs/eagle/flight/mainapp.config
 			 DEPENDS px4
 			 DEST /home/linaro)
 
 elseif ("${BOARD}" STREQUAL "rpi")
 
 	add_executable(px4
-		${CMAKE_SOURCE_DIR}/src/platforms/posix/main.cpp
+		${PX4_SOURCE_DIR}/src/platforms/posix/main.cpp
 		apps.h
 		)
 
@@ -57,7 +57,7 @@ elseif ("${BOARD}" STREQUAL "rpi")
 			 OS ${OS}
 			 BOARD ${BOARD}
 			 FILES ${CMAKE_CURRENT_BINARY_DIR}/px4
-				 ${CMAKE_SOURCE_DIR}/posix-configs/rpi/px4.config
+				 ${PX4_SOURCE_DIR}/posix-configs/rpi/px4.config
 			 DEPENDS px4
 			 DEST /home/pi)
 
@@ -67,7 +67,7 @@ elseif ("${BOARD}" STREQUAL "bebop")
 	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static")
 
 	add_executable(px4
-		${CMAKE_SOURCE_DIR}/src/platforms/posix/main.cpp
+		${PX4_SOURCE_DIR}/src/platforms/posix/main.cpp
 		apps.h
 		)
 
@@ -91,14 +91,14 @@ elseif ("${BOARD}" STREQUAL "bebop")
 			 OS ${OS}
 			 BOARD ${BOARD}
 			 FILES ${CMAKE_CURRENT_BINARY_DIR}/px4
-						 ${CMAKE_SOURCE_DIR}/posix-configs/bebop/px4.config
+						 ${PX4_SOURCE_DIR}/posix-configs/bebop/px4.config
 			 DEPENDS px4
 			 DEST /usr/bin)
 
 else()
 
 	add_executable(px4
-		${CMAKE_SOURCE_DIR}/src/platforms/posix/main.cpp
+		${PX4_SOURCE_DIR}/src/platforms/posix/main.cpp
 		apps.h
 		)
 	if (NOT APPLE)
@@ -120,8 +120,8 @@ endif()
 
 add_custom_target(run_config
 	COMMAND Tools/sitl_run.sh "${config_sitl_rcS}" "${config_sitl_debugger}"
-	"${config_sitl_viewer}" "${config_sitl_model}" "${CMAKE_BINARY_DIR}"
-	WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+	"${config_sitl_viewer}" "${config_sitl_model}" "${PX4_BINARY_DIR}"
+	WORKING_DIRECTORY ${PX4_SOURCE_DIR}
 	USES_TERMINAL
 	)
 add_dependencies(run_config px4)
@@ -145,8 +145,8 @@ foreach(viewer none jmavsim gazebo replay)
 			add_custom_target(${_targ_name}
 				COMMAND Tools/sitl_run.sh "${config_sitl_rcS}"
 				"${debugger}"
-				"${viewer}" "${model}" "${CMAKE_BINARY_DIR}"
-				WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+				"${viewer}" "${model}" "${PX4_BINARY_DIR}"
+				WORKING_DIRECTORY ${PX4_SOURCE_DIR}
 				USES_TERMINAL
 				)
 			add_dependencies(${_targ_name} px4)
diff --git a/src/firmware/qurt/CMakeLists.txt b/src/firmware/qurt/CMakeLists.txt
index 81be14afc5af50a8affc65b6b2afbf24acf59ba6..2e30c6aa8d1f426bad8efd8b3fd15d6bd5bece09 100644
--- a/src/firmware/qurt/CMakeLists.txt
+++ b/src/firmware/qurt/CMakeLists.txt
@@ -1,4 +1,4 @@
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon")
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon")
 include(fastrpc)
 include(qurt_lib)
 
@@ -7,7 +7,7 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR})
 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-missing-prototypes")
 
 px4_qurt_generate_builtin_commands(
-	OUT ${CMAKE_BINARY_DIR}/apps.h
+	OUT ${PX4_BINARY_DIR}/apps.h
 	MODULE_LIST ${module_libraries})
 
 FASTRPC_STUB_GEN(px4muorb.idl)
@@ -20,8 +20,8 @@ if ("${QURT_ENABLE_STUBS}" STREQUAL "1")
                 ${FASTRPC_DSP_INCLUDES}
                 )
 	add_executable(px4
-		${CMAKE_BINARY_DIR}/src/firmware/qurt/px4muorb_skel.c
-		${CMAKE_BINARY_DIR}/apps.h)
+		${PX4_BINARY_DIR}/src/firmware/qurt/px4muorb_skel.c
+		${PX4_BINARY_DIR}/apps.h)
 
 	target_link_libraries(px4
 		-Wl,--start-group
@@ -40,7 +40,7 @@ else()
 	QURT_LIB(LIB_NAME px4
 		IDL_NAME px4muorb
 		SOURCES
-			${CMAKE_BINARY_DIR}/apps.h
+			${PX4_BINARY_DIR}/apps.h
 		LINK_LIBS
 			${module_libraries}
 			${target_libraries}
@@ -54,7 +54,7 @@ else()
 			 BOARD ${BOARD}
 			 FILES ${CMAKE_CURRENT_BINARY_DIR}/libpx4.so
 				 ${CMAKE_CURRENT_BINARY_DIR}/libpx4muorb_skel.so
-				 ${CMAKE_SOURCE_DIR}/posix-configs/eagle/flight/px4.config
+				 ${PX4_SOURCE_DIR}/posix-configs/eagle/flight/px4.config
 			 DEPENDS px4 px4muorb_skel
 			 DEST /usr/share/data/adsp)
 endif()
diff --git a/src/lib/rc/rc_tests/CMakeLists.txt b/src/lib/rc/rc_tests/CMakeLists.txt
index 42a5a1b1bafe40e3a7d2aa0f26c4c88f14b3d971..8a5be79ec2cbc18b4810f2e0e9a91c52c13b1c5a 100644
--- a/src/lib/rc/rc_tests/CMakeLists.txt
+++ b/src/lib/rc/rc_tests/CMakeLists.txt
@@ -40,4 +40,5 @@ px4_add_module(
 	DEPENDS
 		platforms__common
 	)
+
 # vim: set noet ft=cmake fenc=utf-8 ff=unix : 
diff --git a/src/lib/rc/rc_tests/RCTest.cpp b/src/lib/rc/rc_tests/RCTest.cpp
index d7a834d5c815fb95a255ffae04bf4895d9e37b57..6b0c33cafcd74e996f70d1dafcf3f78e313561c5 100644
--- a/src/lib/rc/rc_tests/RCTest.cpp
+++ b/src/lib/rc/rc_tests/RCTest.cpp
@@ -16,7 +16,7 @@
 #if !defined(CONFIG_ARCH_BOARD_SITL)
 #define TEST_DATA_PATH "/fs/microsd"
 #else
-#define TEST_DATA_PATH "../../../../src/lib/rc/rc_tests/test_data/"
+#define TEST_DATA_PATH "../../../../test_data/"
 #endif
 
 extern "C" __EXPORT int rc_tests_main(int argc, char *argv[]);
diff --git a/src/modules/muorb/krait/CMakeLists.txt b/src/modules/muorb/krait/CMakeLists.txt
index b9e054e3e78d5de6f693c2625d29ffdd91948b67..ad0549202659d1e3214a8f67405e2aaf0fdeb3bc 100644
--- a/src/modules/muorb/krait/CMakeLists.txt
+++ b/src/modules/muorb/krait/CMakeLists.txt
@@ -30,10 +30,10 @@
 # POSSIBILITY OF SUCH DAMAGE.
 #
 ############################################################################
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon")
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon")
 include(hexagon_sdk)
 
-include_directories(${CMAKE_BINARY_DIR}/src/firmware/posix)
+include_directories(${PX4_BINARY_DIR}/src/firmware/posix)
 include_directories(${HEXAGON_SDK_INCLUDES})
 
 px4_add_module(
diff --git a/src/modules/param/CMakeLists.txt b/src/modules/param/CMakeLists.txt
index b3148baab1d369868c99d7876c0b7660c610a18e..3f64a9826c9a5f9c2bfccc23f37f09ba13fcd741 100644
--- a/src/modules/param/CMakeLists.txt
+++ b/src/modules/param/CMakeLists.txt
@@ -34,8 +34,8 @@
 include_directories(${CMAKE_CURRENT_BINARY_DIR})
 
 px4_generate_parameters_source(OUT param_files
-	XML ${CMAKE_BINARY_DIR}/parameters.xml
-	SCOPE ${CMAKE_SOURCE_DIR}/cmake/configs/${OS}_${BOARD}_${LABEL}.cmake
+	XML ${PX4_BINARY_DIR}/parameters.xml
+	SCOPE ${PX4_SOURCE_DIR}/cmake/configs/${OS}_${BOARD}_${LABEL}.cmake
 	DEPS xml_gen
 	)
 
diff --git a/src/modules/px4iofirmware/CMakeLists.txt b/src/modules/px4iofirmware/CMakeLists.txt
index ab2778711cc19780dc1d67b139f3494353d45f29..67183999eb5130d8640ca434091bbef2e9ccd83c 100644
--- a/src/modules/px4iofirmware/CMakeLists.txt
+++ b/src/modules/px4iofirmware/CMakeLists.txt
@@ -63,7 +63,7 @@ px4_join(OUT CMAKE_CXX_FLAGS LIST "${cxx_flags}" GLUE " ")
 
 include_directories(
 	${include_dirs}
-	${CMAKE_BINARY_DIR}/src/modules/systemlib/mixer
+	${PX4_BINARY_DIR}/src/modules/systemlib/mixer
 	.
 	)
 link_directories(${link_dirs})
@@ -117,10 +117,10 @@ add_dependencies(${fw_io_name}
 	mixer_gen
 	)
 
-set(nuttx_export_dir ${CMAKE_BINARY_DIR}/${config_io_board}/NuttX/nuttx-export)
+set(nuttx_export_dir ${PX4_BINARY_DIR}/${config_io_board}/NuttX/nuttx-export)
 set(main_link_flags
 	"-T${nuttx_export_dir}/build/ld.script"
-	"-Wl,-Map=${CMAKE_BINARY_DIR}/${config_io_board}/main.map"
+	"-Wl,-Map=${PX4_BINARY_DIR}/${config_io_board}/main.map"
 	)
 px4_join(OUT main_link_flags LIST ${main_link_flags} GLUE " ")
 set_target_properties(${fw_io_name} PROPERTIES LINK_FLAGS ${main_link_flags})
diff --git a/src/modules/systemlib/CMakeLists.txt b/src/modules/systemlib/CMakeLists.txt
index 7277ee3ca1c43f01760f71b30e1f414b53ae1ad9..91f405d605d6f6755a432dfff31b167a38a7bf0b 100644
--- a/src/modules/systemlib/CMakeLists.txt
+++ b/src/modules/systemlib/CMakeLists.txt
@@ -32,7 +32,7 @@
 ############################################################################
 
 # for generated files
-include_directories(${CMAKE_BINARY_DIR}/src/modules/param)
+include_directories(${PX4_BINARY_DIR}/src/modules/param)
 
 set(SRCS
 	perf_counter.c
diff --git a/src/modules/uavcan/uavcan_servers.hpp b/src/modules/uavcan/uavcan_servers.hpp
index b3e37b3861205300b06ea058aa88a3701d079a37..868ffacc62631bf54ef07bda57e83632c53e12f4 100644
--- a/src/modules/uavcan/uavcan_servers.hpp
+++ b/src/modules/uavcan/uavcan_servers.hpp
@@ -70,7 +70,7 @@
 /**
  * A UAVCAN Server Sub node.
  */
-class UavcanServers
+class __EXPORT UavcanServers
 {
 	static constexpr unsigned NumIfaces = 1;  // UAVCAN_STM32_NUM_IFACES
 
diff --git a/src/platforms/posix/main.cpp b/src/platforms/posix/main.cpp
index 646b94610fc159e9ec1915f7f3f468e316e3155c..fe2cf8f88c03bf686c649bead0c121d70d59faf4 100644
--- a/src/platforms/posix/main.cpp
+++ b/src/platforms/posix/main.cpp
@@ -419,3 +419,5 @@ int main(int argc, char **argv)
 
 	return OK;
 }
+
+/* vim: set noet fenc=utf-8 ff=unix sts=0 sw=4 ts=4 : */
diff --git a/src/platforms/posix/px4_layer/CMakeLists.txt b/src/platforms/posix/px4_layer/CMakeLists.txt
index 344621c694d0f8eafeb6cf1f3f6241aa4f1e6b1d..fa1eed4ffccdd026f2961db3324aa26fb3d4d603 100644
--- a/src/platforms/posix/px4_layer/CMakeLists.txt
+++ b/src/platforms/posix/px4_layer/CMakeLists.txt
@@ -32,10 +32,10 @@
 ############################################################################
 
 if("${CONFIG_SHMEM}" STREQUAL "1")
-	set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon")
+	set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon")
 	include(hexagon_sdk)
 
-	include_directories(${CMAKE_BINARY_DIR}/src/firmware/posix)
+	include_directories(${PX4_BINARY_DIR}/src/firmware/posix)
 	include_directories(${HEXAGON_SDK_INCLUDES})
 	list(APPEND SHMEM_SRCS
 		shmem_posix.c
diff --git a/src/platforms/qurt/px4_layer/CMakeLists.txt b/src/platforms/qurt/px4_layer/CMakeLists.txt
index 38dbd8a46f93436e73b9d2abdae815b9972b18a2..ed6e56790aeec99294cd673038fa9e87876f5db6 100644
--- a/src/platforms/qurt/px4_layer/CMakeLists.txt
+++ b/src/platforms/qurt/px4_layer/CMakeLists.txt
@@ -30,7 +30,7 @@
 # POSSIBILITY OF SUCH DAMAGE.
 #
 ############################################################################
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon")
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon")
 include(hexagon_sdk)
 
 include_directories(${HEXAGON_8074_INCLUDES})
diff --git a/src/systemcmds/tests/test_matrix.cpp b/src/systemcmds/tests/test_matrix.cpp
index 2ef48e0c4f4cb91944a19fd4b944f10204d82929..44c71655a2aeb957e2f133e457133670b6405fde 100644
--- a/src/systemcmds/tests/test_matrix.cpp
+++ b/src/systemcmds/tests/test_matrix.cpp
@@ -405,22 +405,22 @@ bool MatrixTest::matrixAssignmentTests(void)
 	Matrix3f m3(data_times_2);
 
 	ut_test(isEqual(m, m2));
-	ut_test(!(m == m3));
+	ut_test(!isEqual(m, m3));
 
 	m2 *= 2;
-	ut_test(m2 == m3);
+	ut_test(isEqual(m2, m3));
 
 	m2 /= 2;
 	m2 -= 1;
 	float data_minus_1[9] = {0, 1, 2, 3, 4, 5, 6, 7, 8};
-	ut_test(Matrix3f(data_minus_1) == m2);
+	ut_test(isEqual(Matrix3f(data_minus_1), m2));
 
 	m2 += 1;
-	ut_test(Matrix3f(data) == m2);
+	ut_test(isEqual(Matrix3f(data), m2));
 
 	m3 -= m2;
 
-	ut_test(m3 == m2);
+	ut_test(isEqual(m3, m2));
 
 	float data_row_02_swap[9] = {
 		7, 8, 9,
@@ -436,13 +436,13 @@ bool MatrixTest::matrixAssignmentTests(void)
 
 	Matrix3f m4(data);
 
-	ut_test(-m4 == m4 * (-1));
+	ut_test(isEqual(-m4, m4 * (-1)));
 
 	m4.swapCols(0, 2);
-	ut_test(m4 == Matrix3f(data_col_02_swap));
+	ut_test(isEqual(m4, Matrix3f(data_col_02_swap)));
 	m4.swapCols(0, 2);
 	m4.swapRows(0, 2);
-	ut_test(m4 == Matrix3f(data_row_02_swap));
+	ut_test(isEqual(m4, Matrix3f(data_row_02_swap)));
 	ut_test(fabs(m4.min() - 1) < 1e-5);
 
 	Scalar<float> s;
@@ -601,10 +601,10 @@ bool MatrixTest::vectorTests(void)
 	ut_test(fabs(v1.dot(v2) - 130.0f) < 1e-5);
 	v2.normalize();
 	Vector<float, 5> v3(v2);
-	ut_test(v2 == v3);
+	ut_test(isEqual(v2, v3));
 	float data1_sq[] = {1, 4, 9, 16, 25};
 	Vector<float, 5> v4(data1_sq);
-	ut_test(v1 == v4.pow(0.5));
+	ut_test(isEqual(v1, v4.pow(0.5)));
 
 	return true;
 }
@@ -639,15 +639,15 @@ bool MatrixTest::vector3Tests(void)
 	Vector3f a(1, 0, 0);
 	Vector3f b(0, 1, 0);
 	Vector3f c = a.cross(b);
-	ut_test(c == Vector3f(0, 0, 1));
+	ut_test(isEqual(c, Vector3f(0, 0, 1)));
 	c = a % b;
-	ut_test(c == Vector3f(0, 0, 1));
+	ut_test(isEqual(c, Vector3f(0, 0, 1)));
 	Matrix<float, 3, 1> d(c);
 	Vector3f e(d);
-	ut_test(e == d);
+	ut_test(isEqual(e, d));
 	float data[] = {4, 5, 6};
 	Vector3f f(data);
-	ut_test(f == Vector3f(4, 5, 6));
+	ut_test(isEqual(f, Vector3f(4, 5, 6)));
 	return true;
 }
 
diff --git a/src/systemcmds/topic_listener/CMakeLists.txt b/src/systemcmds/topic_listener/CMakeLists.txt
index 0984e546e3b7dab29fd08d667463a531795e59b5..bb955490bc78cb64013b71b86cc14a50c0f397d4 100644
--- a/src/systemcmds/topic_listener/CMakeLists.txt
+++ b/src/systemcmds/topic_listener/CMakeLists.txt
@@ -32,14 +32,14 @@
 ############################################################################
 
 add_custom_command(OUTPUT topic_listener.cpp
-                COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/Tools/generate_listener.py ${CMAKE_SOURCE_DIR} > topic_listener.cpp
+                COMMAND ${PYTHON_EXECUTABLE} ${PX4_SOURCE_DIR}/Tools/generate_listener.py ${PX4_SOURCE_DIR} > topic_listener.cpp
                 DEPENDS msg_gen
                 )
 
 add_custom_target(generate_topic_listener
 	DEPENDS
 		topic_listener.cpp
-		${CMAKE_SOURCE_DIR}/Tools/generate_listener.py)
+		${PX4_SOURCE_DIR}/Tools/generate_listener.py)
 
 px4_add_module(
 	MODULE systemcmds__topic_listener
diff --git a/src/lib/rc/rc_tests/test_data/dsm_x_data.txt b/test_data/dsm_x_data.txt
similarity index 100%
rename from src/lib/rc/rc_tests/test_data/dsm_x_data.txt
rename to test_data/dsm_x_data.txt
diff --git a/src/lib/rc/rc_tests/test_data/sbus2_r7008SB.txt b/test_data/sbus2_r7008SB.txt
similarity index 100%
rename from src/lib/rc/rc_tests/test_data/sbus2_r7008SB.txt
rename to test_data/sbus2_r7008SB.txt
diff --git a/src/lib/rc/rc_tests/test_data/st24_data.txt b/test_data/st24_data.txt
similarity index 100%
rename from src/lib/rc/rc_tests/test_data/st24_data.txt
rename to test_data/st24_data.txt
diff --git a/src/lib/rc/rc_tests/test_data/sumd_data.txt b/test_data/sumd_data.txt
similarity index 100%
rename from src/lib/rc/rc_tests/test_data/sumd_data.txt
rename to test_data/sumd_data.txt
diff --git a/unittests/CMakeLists.txt b/unittests/CMakeLists.txt
index 07f6089eec308f211d95a052d14b28830ac84797..795902bf18bdb9ccd5969cae23433211d634dc58 100644
--- a/unittests/CMakeLists.txt
+++ b/unittests/CMakeLists.txt
@@ -13,15 +13,19 @@ enable_testing()
 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror -std=gnu99 -g")
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror -std=gnu++0x -g -fno-exceptions -fno-rtti -fno-threadsafe-statics -DCONFIG_WCHAR_BUILTIN -D__CUSTOM_FILE_IO__")
 
+if (NOT PX4_SOURCE_DIR)
+	set(PX4_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/..")
+endif()
+
 
-set(GTEST_DIR ${CMAKE_SOURCE_DIR}/googletest)
+set(GTEST_DIR ${PX4_SOURCE_DIR}/unittests/googletest)
 add_subdirectory(${GTEST_DIR})
 include_directories(${GTEST_DIR}/include)
 
-set(PX4_SRC ${CMAKE_SOURCE_DIR}/../src)
+set(PX4_SRC ${PX4_SOURCE_DIR}/src)
 set(PX4_SITL_BUILD ${PX4_SRC}/../build_posix_sitl_default)
 
-include_directories(${CMAKE_SOURCE_DIR})
+include_directories(${PX4_SOURCE_DIR})
 include_directories(${PX4_SITL_BUILD}/src)
 include_directories(${PX4_SITL_BUILD}/src/modules)
 include_directories(${PX4_SITL_BUILD}/src/modules/param)
@@ -69,7 +73,7 @@ set(PX4_PLATFORM
 # check
 add_custom_target(check
 		COMMAND ${CMAKE_CTEST_COMMAND} -j2 --output-on-failure
-		WORKING_DIR ${CMAKE_BINARY_DIR}
+		WORKING_DIR ${PX4_BINARY_DIR}
 		USES_TERMINAL)
 
 # add_gtest
@@ -80,7 +84,7 @@ function(add_gtest)
 		else()
 			target_link_libraries(${test_name} gtest_main pthread rt ${PX4_PLATFORM})
 		endif()
-		add_test(NAME ${test_name} COMMAND ${test_name} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
+		add_test(NAME ${test_name} COMMAND ${test_name} WORKING_DIRECTORY ${PX4_SOURCE_DIR})
 		add_dependencies(check ${test_name})
 	endforeach()
 endfunction()