perf tools: Remove dependency on libnewt

Now that the map browser shares the input routine with the hists
browser, there is no need for using any libnewt routine, so remove all
traces except for honouring NO_NEWT=1 on the makefile command line as an
indication that TUI support is not needed, in fact it just sets
NO_SLANG=1.

Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-wae5o7xca9m52bj1re28jc5j@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
上级 a4032536
...@@ -35,7 +35,9 @@ include config/utilities.mak ...@@ -35,7 +35,9 @@ include config/utilities.mak
# #
# Define WERROR=0 to disable treating any warnings as errors. # Define WERROR=0 to disable treating any warnings as errors.
# #
# Define NO_NEWT if you do not want TUI support. # Define NO_NEWT if you do not want TUI support. (deprecated)
#
# Define NO_SLANG if you do not want TUI support.
# #
# Define NO_GTK2 if you do not want GTK+ GUI support. # Define NO_GTK2 if you do not want GTK+ GUI support.
# #
...@@ -104,6 +106,10 @@ ifdef PARSER_DEBUG ...@@ -104,6 +106,10 @@ ifdef PARSER_DEBUG
PARSER_DEBUG_CFLAGS := -DPARSER_DEBUG PARSER_DEBUG_CFLAGS := -DPARSER_DEBUG
endif endif
ifdef NO_NEWT
NO_SLANG=1
endif
CFLAGS = -fno-omit-frame-pointer -ggdb3 -funwind-tables -Wall -Wextra -std=gnu99 $(CFLAGS_WERROR) $(CFLAGS_OPTIMIZE) $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) $(PARSER_DEBUG_CFLAGS) CFLAGS = -fno-omit-frame-pointer -ggdb3 -funwind-tables -Wall -Wextra -std=gnu99 $(CFLAGS_WERROR) $(CFLAGS_OPTIMIZE) $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) $(PARSER_DEBUG_CFLAGS)
EXTLIBS = -lpthread -lrt -lelf -lm EXTLIBS = -lpthread -lrt -lelf -lm
ALL_CFLAGS = $(CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE ALL_CFLAGS = $(CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
...@@ -680,15 +686,15 @@ ifndef NO_LIBAUDIT ...@@ -680,15 +686,15 @@ ifndef NO_LIBAUDIT
endif endif
endif endif
ifndef NO_NEWT ifndef NO_SLANG
FLAGS_NEWT=$(ALL_CFLAGS) $(ALL_LDFLAGS) $(EXTLIBS) -lnewt FLAGS_SLANG=$(ALL_CFLAGS) $(ALL_LDFLAGS) $(EXTLIBS) -I/usr/include/slang -lslang
ifneq ($(call try-cc,$(SOURCE_NEWT),$(FLAGS_NEWT),libnewt),y) ifneq ($(call try-cc,$(SOURCE_SLANG),$(FLAGS_SLANG),libslang),y)
msg := $(warning newt not found, disables TUI support. Please install newt-devel or libnewt-dev); msg := $(warning slang not found, disables TUI support. Please install slang-devel or libslang-dev);
else else
# Fedora has /usr/include/slang/slang.h, but ubuntu /usr/include/slang.h # Fedora has /usr/include/slang/slang.h, but ubuntu /usr/include/slang.h
BASIC_CFLAGS += -I/usr/include/slang BASIC_CFLAGS += -I/usr/include/slang
BASIC_CFLAGS += -DNEWT_SUPPORT BASIC_CFLAGS += -DSLANG_SUPPORT
EXTLIBS += -lnewt -lslang EXTLIBS += -lslang
LIB_OBJS += $(OUTPUT)ui/browser.o LIB_OBJS += $(OUTPUT)ui/browser.o
LIB_OBJS += $(OUTPUT)ui/browsers/annotate.o LIB_OBJS += $(OUTPUT)ui/browsers/annotate.o
LIB_OBJS += $(OUTPUT)ui/browsers/hists.o LIB_OBJS += $(OUTPUT)ui/browsers/hists.o
......
...@@ -111,7 +111,7 @@ static int perf_report__add_mem_hist_entry(struct perf_tool *tool, ...@@ -111,7 +111,7 @@ static int perf_report__add_mem_hist_entry(struct perf_tool *tool,
return -ENOMEM; return -ENOMEM;
/* /*
* In the newt browser, we are doing integrated annotation, * In the TUI browser, we are doing integrated annotation,
* so we don't allocate the extra space needed because the stdio * so we don't allocate the extra space needed because the stdio
* code will not use it. * code will not use it.
*/ */
...@@ -263,7 +263,7 @@ static int perf_evsel__add_hist_entry(struct perf_evsel *evsel, ...@@ -263,7 +263,7 @@ static int perf_evsel__add_hist_entry(struct perf_evsel *evsel,
return err; return err;
} }
/* /*
* Only in the newt browser we are doing integrated annotation, * Only in the TUI browser we are doing integrated annotation,
* so we don't allocated the extra space needed because the stdio * so we don't allocated the extra space needed because the stdio
* code will not use it. * code will not use it.
*/ */
...@@ -877,7 +877,7 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused) ...@@ -877,7 +877,7 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused)
usage_with_options(report_usage, options); usage_with_options(report_usage, options);
/* /*
* Only in the newt browser we are doing integrated annotation, * Only in the TUI browser we are doing integrated annotation,
* so don't allocate extra space that won't be used in the stdio * so don't allocate extra space that won't be used in the stdio
* implementation. * implementation.
*/ */
......
...@@ -61,15 +61,13 @@ int main(void) ...@@ -61,15 +61,13 @@ int main(void)
} }
endef endef
ifndef NO_NEWT ifndef NO_SLANG
define SOURCE_NEWT define SOURCE_SLANG
#include <newt.h> #include <slang.h>
int main(void) int main(void)
{ {
newtInit(); return SLsmg_init_smg();
newtCls();
return newtFinished();
} }
endef endef
endif endif
...@@ -235,4 +233,4 @@ int main(void) ...@@ -235,4 +233,4 @@ int main(void)
numa_available(); numa_available();
return 0; return 0;
} }
endef endef
\ No newline at end of file
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
#include "../cache.h" #include "../cache.h"
#include "../../perf.h" #include "../../perf.h"
#include "libslang.h" #include "libslang.h"
#include <newt.h>
#include "ui.h" #include "ui.h"
#include "util.h" #include "util.h"
#include <linux/compiler.h> #include <linux/compiler.h>
...@@ -234,7 +233,7 @@ void ui_browser__reset_index(struct ui_browser *browser) ...@@ -234,7 +233,7 @@ void ui_browser__reset_index(struct ui_browser *browser)
void __ui_browser__show_title(struct ui_browser *browser, const char *title) void __ui_browser__show_title(struct ui_browser *browser, const char *title)
{ {
SLsmg_gotorc(0, 0); SLsmg_gotorc(0, 0);
ui_browser__set_color(browser, NEWT_COLORSET_ROOT); ui_browser__set_color(browser, HE_COLORSET_ROOT);
slsmg_write_nstring(title, browser->width + 1); slsmg_write_nstring(title, browser->width + 1);
} }
...@@ -513,6 +512,12 @@ static struct ui_browser_colorset { ...@@ -513,6 +512,12 @@ static struct ui_browser_colorset {
.fg = "magenta", .fg = "magenta",
.bg = "default", .bg = "default",
}, },
{
.colorset = HE_COLORSET_ROOT,
.name = "root",
.fg = "white",
.bg = "blue",
},
{ {
.name = NULL, .name = NULL,
} }
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#define HE_COLORSET_SELECTED 53 #define HE_COLORSET_SELECTED 53
#define HE_COLORSET_CODE 54 #define HE_COLORSET_CODE 54
#define HE_COLORSET_ADDR 55 #define HE_COLORSET_ADDR 55
#define HE_COLORSET_ROOT 56
struct ui_browser { struct ui_browser {
u64 index, top_idx; u64 index, top_idx;
......
...@@ -10,7 +10,6 @@ ...@@ -10,7 +10,6 @@
#include "../../util/symbol.h" #include "../../util/symbol.h"
#include "../../util/evsel.h" #include "../../util/evsel.h"
#include <pthread.h> #include <pthread.h>
#include <newt.h>
struct browser_disasm_line { struct browser_disasm_line {
struct rb_node rb_node; struct rb_node rb_node;
......
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
#include "../libslang.h" #include "../libslang.h"
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <newt.h>
#include <linux/rbtree.h> #include <linux/rbtree.h>
#include "../../util/evsel.h" #include "../../util/evsel.h"
......
#include <elf.h> #include <elf.h>
#include <newt.h>
#include <inttypes.h> #include <inttypes.h>
#include <sys/ttydefaults.h> #include <sys/ttydefaults.h>
#include <string.h> #include <string.h>
......
#include <newt.h>
#include <signal.h> #include <signal.h>
#include <stdbool.h> #include <stdbool.h>
...@@ -88,13 +87,6 @@ int ui__getch(int delay_secs) ...@@ -88,13 +87,6 @@ int ui__getch(int delay_secs)
return SLkp_getkey(); return SLkp_getkey();
} }
static void newt_suspend(void *d __maybe_unused)
{
newtSuspend();
raise(SIGTSTP);
newtResume();
}
static void ui__signal(int sig) static void ui__signal(int sig)
{ {
ui__exit(false); ui__exit(false);
...@@ -106,7 +98,17 @@ int ui__init(void) ...@@ -106,7 +98,17 @@ int ui__init(void)
{ {
int err; int err;
newtInit(); SLutf8_enable(-1);
SLtt_get_terminfo();
SLtt_get_screen_size();
err = SLsmg_init_smg();
if (err < 0)
goto out;
err = SLang_init_tty(0, 0, 0);
if (err < 0)
goto out;
err = SLkp_init(); err = SLkp_init();
if (err < 0) { if (err < 0) {
pr_err("TUI initialization failed.\n"); pr_err("TUI initialization failed.\n");
...@@ -115,7 +117,6 @@ int ui__init(void) ...@@ -115,7 +117,6 @@ int ui__init(void)
SLkp_define_keysym((char *)"^(kB)", SL_KEY_UNTAB); SLkp_define_keysym((char *)"^(kB)", SL_KEY_UNTAB);
newtSetSuspendCallback(newt_suspend, NULL);
ui_helpline__init(); ui_helpline__init();
ui_browser__init(); ui_browser__init();
ui_progress__init(); ui_progress__init();
......
...@@ -12,7 +12,7 @@ extern int use_browser; ...@@ -12,7 +12,7 @@ extern int use_browser;
void setup_browser(bool fallback_to_pager); void setup_browser(bool fallback_to_pager);
void exit_browser(bool wait_for_ok); void exit_browser(bool wait_for_ok);
#ifdef NEWT_SUPPORT #ifdef SLANG_SUPPORT
int ui__init(void); int ui__init(void);
void ui__exit(bool wait_for_ok); void ui__exit(bool wait_for_ok);
#else #else
......
...@@ -150,7 +150,7 @@ int symbol__tty_annotate(struct symbol *sym, struct map *map, ...@@ -150,7 +150,7 @@ int symbol__tty_annotate(struct symbol *sym, struct map *map,
struct perf_evsel *evsel, bool print_lines, struct perf_evsel *evsel, bool print_lines,
bool full_paths, int min_pcnt, int max_lines); bool full_paths, int min_pcnt, int max_lines);
#ifdef NEWT_SUPPORT #ifdef SLANG_SUPPORT
int symbol__tui_annotate(struct symbol *sym, struct map *map, int symbol__tui_annotate(struct symbol *sym, struct map *map,
struct perf_evsel *evsel, struct perf_evsel *evsel,
struct hist_browser_timer *hbt); struct hist_browser_timer *hbt);
......
...@@ -192,7 +192,7 @@ struct hist_browser_timer { ...@@ -192,7 +192,7 @@ struct hist_browser_timer {
int refresh; int refresh;
}; };
#ifdef NEWT_SUPPORT #ifdef SLANG_SUPPORT
#include "../ui/keysyms.h" #include "../ui/keysyms.h"
int hist_entry__tui_annotate(struct hist_entry *he, struct perf_evsel *evsel, int hist_entry__tui_annotate(struct hist_entry *he, struct perf_evsel *evsel,
struct hist_browser_timer *hbt); struct hist_browser_timer *hbt);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册