+FILE(GLOB _sources RELATIVE "${_src_dir}" "${_src_dir}/*.cxx")
+FILE(GLOB _sources_cfg RELATIVE "${_src_dir}" "${_src_dir}/*.cxx.in")
+FILE(GLOB _headers_cfg RELATIVE "${_src_dir}" "${_src_dir}/*.h.in")
+
+## =======================
+## == Configure sources ==
+## =======================
+
+FOREACH(_cfg ${_headers_cfg})
+ GET_FILENAME_COMPONENT(_ext ${_cfg} EXT)
+ STRING(LENGTH ${_ext} _ext_len)
+ STRING(SUBSTRING ${_ext} 1 ${_ext_len} _ext_name)
+ GET_FILENAME_COMPONENT(_real_ext ${_ext_name} NAME_WE)
+ GET_FILENAME_COMPONENT(_name ${_cfg} NAME_WE)
+ CONFIGURE_FILE(
+ ${_src_dir}/${_cfg}
+ ${_bin_dir}/${_name}.${_real_ext} @ONLY
+ )
+ENDFOREACH(_cfg)
+
+FOREACH(_cfg ${_sources_cfg})
+ GET_FILENAME_COMPONENT(_ext ${_cfg} EXT)
+ STRING(LENGTH ${_ext} _ext_len)
+ STRING(SUBSTRING ${_ext} 1 ${_ext_len} _ext_name)
+ GET_FILENAME_COMPONENT(_real_ext ${_ext_name} NAME_WE)
+ GET_FILENAME_COMPONENT(_name ${_cfg} NAME_WE)
+ CONFIGURE_FILE(
+ ${_src_dir}/${_cfg}
+ ${_bin_dir}/${_name}.${_real_ext} @ONLY
+ )
+ LIST(APPEND _sources ${_bin_dir}/${_name}.${_real_ext})
+ENDFOREACH(_cfg)
+
+## ==========================
+## == Compile source files ==
+## ==========================
+
+FOREACH(_src ${_sources})
+ GET_FILENAME_COMPONENT(_name ${_src} NAME_WE)
+ SET(_prog ${_pfx}${_name})
+ ADD_EXECUTABLE(${_prog} ${_src})