perf-$(CONFIG_SLANG) += browser.o
 perf-$(CONFIG_SLANG) += browsers/
 perf-$(CONFIG_SLANG) += tui/
-
-CFLAGS_browser.o += -DENABLE_SLFUTURE_CONST
 
 void ui_browser__write_nstring(struct ui_browser *browser __maybe_unused, const char *msg,
                               unsigned int width)
 {
-       slsmg_write_nstring(msg, width);
+       SLsmg_write_nstring(msg, width);
 }
 
 void ui_browser__vprintf(struct ui_browser *browser __maybe_unused, const char *fmt, va_list args)
 {
-       slsmg_vprintf(fmt, args);
+       SLsmg_vprintf(fmt, args);
 }
 
 void ui_browser__printf(struct ui_browser *browser __maybe_unused, const char *fmt, ...)
 
        while (ui_browser__colorsets[i].name) {
                struct ui_browser_colorset *c = &ui_browser__colorsets[i++];
-               sltt_set_color(c->colorset, c->name, c->fg, c->bg);
+               SLtt_set_color(c->colorset, c->name, c->fg, c->bg);
        }
 }
 
 perf-y += scripts.o
 perf-y += header.o
 perf-y += res_sample.o
-
-CFLAGS_annotate.o += -DENABLE_SLFUTURE_CONST
-CFLAGS_hists.o    += -DENABLE_SLFUTURE_CONST
-CFLAGS_map.o      += -DENABLE_SLFUTURE_CONST
-CFLAGS_scripts.o  += -DENABLE_SLFUTURE_CONST
 
 #define HAVE_LONG_LONG __GLIBC_HAVE_LONG_LONG
 #endif
 
+/* Enable future slang's corrected function prototypes. */
+#define ENABLE_SLFUTURE_CONST 1
+#define ENABLE_SLFUTURE_VOID 1
+
 #ifdef HAVE_SLANG_INCLUDE_SUBDIR
 #include <slang/slang.h>
 #else
 #include <slang.h>
 #endif
 
-#if SLANG_VERSION < 20104
-#define slsmg_printf(msg, args...) \
-       SLsmg_printf((char *)(msg), ##args)
-#define slsmg_vprintf(msg, vargs) \
-       SLsmg_vprintf((char *)(msg), vargs)
-#define slsmg_write_nstring(msg, len) \
-       SLsmg_write_nstring((char *)(msg), len)
-#define sltt_set_color(obj, name, fg, bg) \
-       SLtt_set_color(obj,(char *)(name), (char *)(fg), (char *)(bg))
-#else
-#define slsmg_printf SLsmg_printf
-#define slsmg_vprintf SLsmg_vprintf
-#define slsmg_write_nstring SLsmg_write_nstring
-#define sltt_set_color SLtt_set_color
-#endif
-
 #define SL_KEY_UNTAB 0x1000
 
 #endif /* _PERF_UI_SLANG_H_ */
 
 
        SLsmg_gotorc(SLtt_Screen_Rows - 1, 0);
        SLsmg_set_color(0);
-       SLsmg_write_nstring((char *)msg, SLtt_Screen_Cols);
+       SLsmg_write_nstring(msg, SLtt_Screen_Cols);
        SLsmg_refresh();
        strlcpy(ui_helpline__current, msg, sz);
 }
 
                goto out;
        }
 
-       SLkp_define_keysym((char *)"^(kB)", SL_KEY_UNTAB);
+       SLkp_define_keysym("^(kB)", SL_KEY_UNTAB);
 
        signal(SIGSEGV, ui__signal_backtrace);
        signal(SIGFPE, ui__signal_backtrace);
 
        SLsmg_draw_box(y, x++, nr_lines, max_len);
        if (title) {
                SLsmg_gotorc(y, x + 1);
-               SLsmg_write_string((char *)title);
+               SLsmg_write_string(title);
        }
        SLsmg_gotorc(++y, x);
        nr_lines -= 7;
        len = 5;
        while (len--) {
                SLsmg_gotorc(y + len - 1, x);
-               SLsmg_write_nstring((char *)" ", max_len);
+               SLsmg_write_nstring(" ", max_len);
        }
        SLsmg_draw_box(y++, x + 1, 3, max_len - 2);
 
        SLsmg_gotorc(y + 3, x);
-       SLsmg_write_nstring((char *)exit_msg, max_len);
+       SLsmg_write_nstring(exit_msg, max_len);
        SLsmg_refresh();
 
        mutex_unlock(&ui__lock);
        SLsmg_draw_box(y, x++, nr_lines, max_len);
        if (title) {
                SLsmg_gotorc(y, x + 1);
-               SLsmg_write_string((char *)title);
+               SLsmg_write_string(title);
        }
        SLsmg_gotorc(++y, x);
        if (exit_msg)
                                   nr_lines, max_len, 1);
        if (exit_msg) {
                SLsmg_gotorc(y + nr_lines - 2, x);
-               SLsmg_write_nstring((char *)" ", max_len);
+               SLsmg_write_nstring(" ", max_len);
                SLsmg_gotorc(y + nr_lines - 1, x);
-               SLsmg_write_nstring((char *)exit_msg, max_len);
+               SLsmg_write_nstring(exit_msg, max_len);
        }
 }