+@ifeq@${HOOKS_NEW}@ifeqsep@1@ifeqend@
+HOOK_ENGINE=new
+@else@
+HOOK_ENGINE=old
+@endif@
+
+# if USE_VALGRIND == 1
+@ifeq@${USE_VALGRIND}@ifeqsep@1@ifeqend@
+ CFLAGS+=-DUSE_VALGRIND
+ SSTRING_ENGINE=valgrind
+
+## if SSTRING_NEW == 1
+@ifeq@${SSTRING_NEW}@ifeqsep@1@ifeqend@
+ IMPOSSIBLE="USE_VALGRIND and SSTRING_NEW"
+@endif@ # SSTRING_NEW == 1
+
+## if SSTRING_MMAP == 1
+@ifeq@${SSTRING_MMAP}@ifeqsep@1@ifeqend@
+ IMPOSSIBLE="USE_VALGRIND and SSTRING_MMAP"
+@endif@ ## SSTRING_MMAP == 1
+@else@ # USE_VALGRIND == 1
+
+## if SSTRING_NEW == 1
+@ifeq@${SSTRING_NEW}@ifeqsep@1@ifeqend@
+ SSTRING_ENGINE=new
+@else@ ## SSTRING_NEW == 1
+ SSTRING_ENGINE=old
+
+### if SSTRING_MMAP == 1
+@ifeq@${SSTRING_MMAP}@ifeqsep@1@ifeqend@
+ IMPOSSIBLE="SSTRING_MMAP without SSTRING_NEW"
+@endif@ ### SSTRING_MMAP == 1
+@endif@ ## SSTRING_NEW == 1
+@endif@ # USE_VALGRIND == 1
+
+@ifdef@ IMPOSSIBLE
+@error@ impossible combination of settings: ${IMPOSSIBLE}@errorend@
+@endif@
+