Move bootsim-specific assert behavior behind mcuboot_config.h

Continue removing platform-specific conditional compilation from
bootutil by adding a new MCUBOOT_HAVE_ASSERT_H configuration option
and associated header file. Right now, that's only used by the
simulator.

That leaves just bootutil_log.h with platform-specific contents, but
since it's meant to be an abstraction layer for logging, we'll let it
stand for now.

Signed-off-by: Marti Bolivar <marti@opensourcefoundries.com>
diff --git a/boot/bootutil/src/bootutil_priv.h b/boot/bootutil/src/bootutil_priv.h
index b0dab08..d2ee6fc 100644
--- a/boot/bootutil/src/bootutil_priv.h
+++ b/boot/bootutil/src/bootutil_priv.h
@@ -29,8 +29,8 @@
 extern "C" {
 #endif
 
-#ifdef __BOOTSIM__
-#include "bootsim.h"
+#ifdef MCUBOOT_HAVE_ASSERT_H
+#include "mcuboot_config/mcuboot_assert.h"
 #else
 #define ASSERT assert
 #endif
diff --git a/samples/mcuboot_config/mcuboot_config.template.h b/samples/mcuboot_config/mcuboot_config.template.h
index 75ec500..b9997b0 100644
--- a/samples/mcuboot_config/mcuboot_config.template.h
+++ b/samples/mcuboot_config/mcuboot_config.template.h
@@ -82,4 +82,13 @@
  * as desirable. */
 #define MCUBOOT_MAX_IMG_SECTORS 128
 
+/*
+ * Assertions
+ */
+
+/* Uncomment if your platform has its own mcuboot_config/mcuboot_assert.h.
+ * If so, it must provide an ASSERT macro for use by bootutil. Otherwise,
+ * "assert" is used. */
+/* #define MCUBOOT_HAVE_ASSERT_H */
+
 #endif /* __MCUBOOT_CONFIG_H__ */
diff --git a/sim/mcuboot-sys/build.rs b/sim/mcuboot-sys/build.rs
index 516741b..81e21d1 100644
--- a/sim/mcuboot-sys/build.rs
+++ b/sim/mcuboot-sys/build.rs
@@ -17,6 +17,7 @@
     let mut conf = gcc::Build::new();
     conf.define("__BOOTSIM__", None);
     conf.define("MCUBOOT_USE_FLASH_AREA_GET_SECTORS", None);
+    conf.define("MCUBOOT_HAVE_ASSERT_H", None);
     conf.define("MCUBOOT_MAX_IMG_SECTORS", Some("128"));
 
     if validate_slot0 {
diff --git a/sim/mcuboot-sys/csupport/bootsim.h b/sim/mcuboot-sys/csupport/bootsim.h
index f3fc5e4..3245ec3 100644
--- a/sim/mcuboot-sys/csupport/bootsim.h
+++ b/sim/mcuboot-sys/csupport/bootsim.h
@@ -1,7 +1,6 @@
 #ifndef H_BOOTSIM_
 #define H_BOOTSIM_
 
-void sim_assert(int, const char *test, const char *, unsigned int, const char *);
-#define ASSERT(x) sim_assert((x), #x, __FILE__, __LINE__, __func__)
+#include "mcuboot_config/mcuboot_assert.h"
 
 #endif
diff --git a/sim/mcuboot-sys/csupport/mcuboot_config/mcuboot_assert.h b/sim/mcuboot-sys/csupport/mcuboot_config/mcuboot_assert.h
new file mode 100644
index 0000000..3f1ce90
--- /dev/null
+++ b/sim/mcuboot-sys/csupport/mcuboot_config/mcuboot_assert.h
@@ -0,0 +1,7 @@
+#ifndef __MCUBOOT_ASSERT_H__
+#define __MCUBOOT_ASSERT_H__
+
+void sim_assert(int, const char *test, const char *, unsigned int, const char *);
+#define ASSERT(x) sim_assert((x), #x, __FILE__, __LINE__, __func__)
+
+#endif  /* __MCUBOOT_ASSERT_H__ */