function(post_source_hw_os_config)

if(LINKER_SCRIPT)
	add_link_options(
		-T${LINKER_SCRIPT}
	)
endif()
	
set(C_FLAGS "" CACHE INTERNAL "C flags")

set(C_DEFS ""
	CACHE INTERNAL
	"C Defines"
)

set(CXX_FLAGS ${C_FLAGS})
set(CXX_DEFS ${C_DEFS})

if(CMAKE_VERBOSE)
	message(STATUS "C Flags: ${C_FLAGS}")
	message(STATUS "CXX Flags: ${CXX_FLAGS}")
	message(STATUS "C Defs: ${C_DEFS}")
	message(STATUS "CXX Defs: ${CXX_DEFS}")
endif()

# Generator expression. Can be used to set different C, CXX and ASM flags.
add_compile_options(
	$<$<COMPILE_LANGUAGE:C>:${C_DEFS} ${C_FLAGS}>
	$<$<COMPILE_LANGUAGE:CXX>:${CXX_DEFS} ${CXX_FLAGS}>
	$<$<COMPILE_LANGUAGE:ASM>:${ASM_FLAGS}>
)

set(STRIPPED_OBSW_NAME ${OBSW_BIN_NAME}-stripped)
set(STRIPPED_WATCHDOG_NAME eive-watchdog-stripped)

if(EIVE_CREATE_UNIQUE_OBSW_BIN)
    set(UNIQUE_OBSW_BIN_NAME ${OBSW_BIN_NAME}-$ENV{USERNAME})
endif()

add_custom_command(
	TARGET ${OBSW_NAME}
	POST_BUILD
	COMMAND ${CMAKE_STRIP} --strip-all ${OBSW_BIN_NAME} -o ${STRIPPED_OBSW_NAME}
	BYPRODUCTS ${STRIPPED_OBSW_NAME}
	COMMENT "Generating stripped executable ${STRIPPED_OBSW_NAME}.."
)

if(UNIQUE_OBSW_BIN_NAME)
	add_custom_command(
		TARGET ${OBSW_NAME}
		POST_BUILD
		COMMAND ${CMAKE_COMMAND} -E copy
			${CMAKE_CURRENT_BINARY_DIR}/${OBSW_BIN_NAME}
			${CMAKE_CURRENT_BINARY_DIR}/${UNIQUE_OBSW_BIN_NAME}
		COMMENT "Generating unique EIVE OBSW binary ${UNIQUE_OBSW_BIN_NAME}")
endif()

add_custom_command(
    TARGET ${WATCHDOG_NAME}
    POST_BUILD
    COMMAND ${CMAKE_STRIP} --strip-all eive-watchdog -o ${STRIPPED_WATCHDOG_NAME}
    BYPRODUCTS ${STRIPPED_WATCHDOG_NAME}
    COMMENT "Generating stripped executable ${STRIPPED_WATCHDOG_NAME}.."
)

endfunction()