summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorruki <[email protected]>2017-12-07 22:46:25 +0800
committerruki <[email protected]>2017-12-08 14:10:23 +0800
commitcb44535305f596bd757ffb58e5ae3cde6d3589fa (patch)
tree343f0ff9287b90204a6a000e0af1a7a1ed6c640b /core
parentabe87994168053e4f420a8b7ab286c65b546eaae (diff)
improve log and add color attrs for curses
Diffstat (limited to 'core')
-rw-r--r--core/makefile2
-rw-r--r--core/plat/linux/prefix.mak132
-rw-r--r--core/plat/macosx/prefix.mak168
-rw-r--r--core/src/lcurses/lcurses.c4
-rw-r--r--core/xmake.lua3
5 files changed, 155 insertions, 154 deletions
diff --git a/core/makefile b/core/makefile
index 478fca71f..236e6a028 100644
--- a/core/makefile
+++ b/core/makefile
@@ -261,7 +261,7 @@ endif
ifeq ($(PLAT),linux)
base_LIBPATH :=
base_LIBNAMES :=
-base_LIBNAMES += $(shell if { cat detect/curses.c | $(CC) -xc - -lcurses -o /dev/null 2>/dev/null; }; then echo curses; fi )
+base_LIBNAMES += $(shell if { cat detect/curses.c | $(CC) -xc - -lcurses -o /dev/null 2>/dev/null; }; then echo curses tinfo; fi )
base_LIBNAMES += $(shell if { cat detect/readline.c | $(CC) -xc - -lreadline -o /dev/null 2>/dev/null; }; then echo readline; fi )
base_LIBNAMES += m dl pthread
endif
diff --git a/core/plat/linux/prefix.mak b/core/plat/linux/prefix.mak
index 0319a8333..1dc7f0a33 100644
--- a/core/plat/linux/prefix.mak
+++ b/core/plat/linux/prefix.mak
@@ -1,129 +1,129 @@
# architecture makefile configure
# prefix & suffix
-BIN_PREFIX =
-BIN_SUFFIX = .b
+BIN_PREFIX =
+BIN_SUFFIX = .b
-OBJ_PREFIX =
-OBJ_SUFFIX = .o
+OBJ_PREFIX =
+OBJ_SUFFIX = .o
-LIB_PREFIX = lib
-LIB_SUFFIX = .a
+LIB_PREFIX = lib
+LIB_SUFFIX = .a
-DLL_PREFIX = lib
-DLL_SUFFIX = .so
+DLL_PREFIX = lib
+DLL_SUFFIX = .so
-ASM_SUFFIX = .s
+ASM_SUFFIX = .s
# prefix
-PRE_ := $(if $(BIN),$(BIN)/$(PRE),)
+PRE_ := $(if $(BIN),$(BIN)/$(PRE),)
# tool
-CC = $(PRE_)gcc
-LD = $(PRE_)gcc
-AR = $(PRE_)ar
-STRIP = $(PRE_)strip
-RANLIB = $(PRE_)ranlib
+CC = $(PRE_)gcc
+LD = $(PRE_)gcc
+AR = $(PRE_)ar
+STRIP = $(PRE_)strip
+RANLIB = $(PRE_)ranlib
AS = $(CC)
-RM = rm -f
-RMDIR = rm -rf
-CP = cp
-CPDIR = cp -r
-MKDIR = mkdir -p
-MAKE = make -r
+RM = rm -f
+RMDIR = rm -rf
+CP = cp
+CPDIR = cp -r
+MKDIR = mkdir -p
+MAKE = make -r
# architecture flags
-AHFLAGS := $(if $(AHFLAGS),$(AHFLAGS),$(if $(findstring x86_64,$(ARCH)),-m64,))
-AHFLAGS := $(if $(AHFLAGS),$(AHFLAGS),$(if $(findstring i386,$(ARCH)),-m32,))
+AHFLAGS := $(if $(AHFLAGS),$(AHFLAGS),$(if $(findstring x86_64,$(ARCH)),-m64,))
+AHFLAGS := $(if $(AHFLAGS),$(AHFLAGS),$(if $(findstring i386,$(ARCH)),-m32,))
# check flags for x64 or x86
ifneq ($(AHFLAGS),)
ifeq ($(CXFLAGS_CHECK),)
-CC_CHECK = ${shell if $(CC) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi }
-CXFLAGS_CHECK :=
+CC_CHECK = ${shell if $(CC) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi }
+CXFLAGS_CHECK :=
export CXFLAGS_CHECK
endif
ifeq ($(LDFLAGS_CHECK),)
-LD_CHECK = ${shell if $(LD) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi }
-LDFLAGS_CHECK := $(call LD_CHECK,-no-pie,)
+LD_CHECK = ${shell if $(LD) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi }
+LDFLAGS_CHECK := $(call LD_CHECK,-no-pie,)
export LDFLAGS_CHECK
endif
endif
# cxflags: .c/.cc/.cpp files
-CXFLAGS_RELEASE =
-CXFLAGS_DEBUG = -g -D__tb_debug__
-CXFLAGS = $(AHFLAGS) $(CXFLAGS_CHECK) -c -Wall
-CXFLAGS-I = -I
-CXFLAGS-o = -o
+CXFLAGS_RELEASE =
+CXFLAGS_DEBUG = -g -D__tb_debug__
+CXFLAGS = $(AHFLAGS) $(CXFLAGS_CHECK) -c -Wall
+CXFLAGS-I = -I
+CXFLAGS-o = -o
# suppress warning for ccache + clang bug
-CXFLAGS += $(if $(findstring clang,$(CC)),-Qunused-arguments,)
+CXFLAGS += $(if $(findstring clang,$(CC)),-Qunused-arguments,)
# optimization
ifeq ($(SMALL),y)
-CXFLAGS_RELEASE += -Os
+CXFLAGS_RELEASE += -Os
else
-CXFLAGS_RELEASE += -O3
+CXFLAGS_RELEASE += -O3
endif
# profile
ifeq ($(PROF),y)
-CXFLAGS += -g -pg -fno-omit-frame-pointer
+CXFLAGS += -g -pg -fno-omit-frame-pointer
else
-CXFLAGS_RELEASE += -fomit-frame-pointer
-CXFLAGS_DEBUG += -fno-omit-frame-pointer
+CXFLAGS_RELEASE += -fomit-frame-pointer
+CXFLAGS_DEBUG += -fno-omit-frame-pointer
endif
# cflags: .c files
-CFLAGS_RELEASE =
-CFLAGS_DEBUG =
-CFLAGS = \
+CFLAGS_RELEASE =
+CFLAGS_DEBUG =
+CFLAGS = \
-std=gnu99 \
-D_GNU_SOURCE=1 -D_REENTRANT \
-fno-math-errno
# ccflags: .cc/.cpp files
-CCFLAGS_RELEASE = -fno-rtti
-CCFLAGS_DEBUG =
-CCFLAGS = -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
+CCFLAGS_RELEASE = -fno-rtti
+CCFLAGS_DEBUG =
+CCFLAGS = -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
# ldflags
-LDFLAGS_RELEASE =
-LDFLAGS_DEBUG = -rdynamic
-LDFLAGS = $(AHFLAGS) $(LDFLAGS_CHECK)
-LDFLAGS-L = -L
-LDFLAGS-l = -l
-LDFLAGS-f =
-LDFLAGS-o = -o
+LDFLAGS_RELEASE =
+LDFLAGS_DEBUG = -rdynamic
+LDFLAGS = $(AHFLAGS) $(LDFLAGS_CHECK)
+LDFLAGS-L = -L
+LDFLAGS-l = -l
+LDFLAGS-f =
+LDFLAGS-o = -o
# prof
ifeq ($(PROF),y)
-LDFLAGS += -pg
+LDFLAGS += -pg
else
-LDFLAGS_RELEASE += -s
-LDFLAGS_DEBUG +=
+LDFLAGS_RELEASE += -s
+LDFLAGS_DEBUG +=
endif
# asflags
-ASFLAGS_RELEASE =
-ASFLAGS_DEBUG =
-ASFLAGS = -c -fPIC $(AHFLAGS)
-ASFLAGS-I = -I
-ASFLAGS-o = -o
+ASFLAGS_RELEASE =
+ASFLAGS_DEBUG =
+ASFLAGS = -c -fPIC $(AHFLAGS)
+ASFLAGS-I = -I
+ASFLAGS-o = -o
# arflags
-ARFLAGS_RELEASE =
-ARFLAGS_DEBUG =
-ARFLAGS = -cr
-ARFLAGS-o =
+ARFLAGS_RELEASE =
+ARFLAGS_DEBUG =
+ARFLAGS = -cr
+ARFLAGS-o =
# shflags
-SHFLAGS_RELEASE = -s
-SHFLAGS = $(AHFLAGS) -shared -Wl,-soname
+SHFLAGS_RELEASE = -s
+SHFLAGS = $(AHFLAGS) -shared -Wl,-soname
# include sub-config
-include $(PLAT_DIR)/config.mak
+include $(PLAT_DIR)/config.mak
diff --git a/core/plat/macosx/prefix.mak b/core/plat/macosx/prefix.mak
index 62e73beae..bb0bf2624 100644
--- a/core/plat/macosx/prefix.mak
+++ b/core/plat/macosx/prefix.mak
@@ -1,171 +1,171 @@
# architecture makefile configure
# prefix & suffix
-BIN_PREFIX =
-BIN_SUFFIX = .b
+BIN_PREFIX =
+BIN_SUFFIX = .b
-OBJ_PREFIX =
-OBJ_SUFFIX = .o
+OBJ_PREFIX =
+OBJ_SUFFIX = .o
-LIB_PREFIX = lib
-LIB_SUFFIX = .a
+LIB_PREFIX = lib
+LIB_SUFFIX = .a
-DLL_PREFIX =
-DLL_SUFFIX = .dylib
+DLL_PREFIX =
+DLL_SUFFIX = .dylib
-ASM_SUFFIX = .s
+ASM_SUFFIX = .s
# cpu bits
-BITS := $(if $(findstring x86_64,$(ARCH)),64,)
-BITS := $(if $(findstring i386,$(ARCH)),32,)
-BITS := $(if $(BITS),$(BITS),$(shell getconf LONG_BIT))
+BITS := $(if $(findstring x86_64,$(ARCH)),64,)
+BITS := $(if $(findstring i386,$(ARCH)),32,)
+BITS := $(if $(BITS),$(BITS),$(shell getconf LONG_BIT))
# prefix
-PRE_ := $(if $(BIN),$(BIN)/$(PRE),xcrun -sdk macosx )
+PRE_ := $(if $(BIN),$(BIN)/$(PRE),xcrun -sdk macosx )
# cc
-CC = $(PRE_)clang
+CC = $(PRE_)clang
ifeq ($(CXFLAGS_CHECK),)
-CC_CHECK = ${shell if $(CC) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi }
-CXFLAGS_CHECK := $(call CC_CHECK,-ftrapv,) $(call CC_CHECK,-fsanitize=address,)
+CC_CHECK = ${shell if $(CC) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi }
+CXFLAGS_CHECK := $(call CC_CHECK,-ftrapv,) $(call CC_CHECK,-fsanitize=address,)
export CXFLAGS_CHECK
endif
# ld
-LD = $(PRE_)clang
+LD = $(PRE_)clang
ifeq ($(LDFLAGS_CHECK),)
-LD_CHECK = ${shell if $(LD) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi }
-LDFLAGS_CHECK := $(call LD_CHECK,-ftrapv,) $(call LD_CHECK,-fsanitize=address,)
+LD_CHECK = ${shell if $(LD) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi }
+LDFLAGS_CHECK := $(call LD_CHECK,-ftrapv,) $(call LD_CHECK,-fsanitize=address,)
export LDFLAGS_CHECK
endif
# tool
-MM = $(PRE_)clang
-AR = $(PRE_)ar
-STRIP = $(PRE_)strip
-RANLIB = $(PRE_)ranlib
+MM = $(PRE_)clang
+AR = $(PRE_)ar
+STRIP = $(PRE_)strip
+RANLIB = $(PRE_)ranlib
AS = $(PRE_)clang
-RM = rm -f
-RMDIR = rm -rf
-CP = cp
-CPDIR = cp -r
-MKDIR = mkdir -p
-MAKE = make -r
+RM = rm -f
+RMDIR = rm -rf
+CP = cp
+CPDIR = cp -r
+MKDIR = mkdir -p
+MAKE = make -r
# cxflags: .c/.cc/.cpp files
-CXFLAGS_RELEASE = -fvisibility=hidden
-CXFLAGS_DEBUG = -g -D__tb_debug__
-CXFLAGS = -m$(BITS) -c -Wall -Werror -Wno-error=deprecated-declarations -Qunused-arguments -mssse3
-CXFLAGS-I = -I
-CXFLAGS-o = -o
+CXFLAGS_RELEASE = -fvisibility=hidden
+CXFLAGS_DEBUG = -g -D__tb_debug__
+CXFLAGS = -m$(BITS) -c -Wall -Werror -Wno-error=deprecated-declarations -Qunused-arguments -mssse3
+CXFLAGS-I = -I
+CXFLAGS-o = -o
# opti
ifeq ($(SMALL),y)
-CXFLAGS_RELEASE += -Os
+CXFLAGS_RELEASE += -Os
else
-CXFLAGS_RELEASE += -O3
+CXFLAGS_RELEASE += -O3
endif
# prof
ifeq ($(PROF),y)
-CXFLAGS += -g -fno-omit-frame-pointer
+CXFLAGS += -g -fno-omit-frame-pointer
else
-CXFLAGS_RELEASE += -fomit-frame-pointer
-CXFLAGS_DEBUG += -fno-omit-frame-pointer $(CXFLAGS_CHECK)
+CXFLAGS_RELEASE += -fomit-frame-pointer
+CXFLAGS_DEBUG += -fno-omit-frame-pointer $(CXFLAGS_CHECK)
endif
# cflags: .c files
-CFLAGS_RELEASE =
-CFLAGS_DEBUG =
-CFLAGS = \
+CFLAGS_RELEASE =
+CFLAGS_DEBUG =
+CFLAGS = \
-std=c99 \
-D_GNU_SOURCE=1 -D_REENTRANT \
-fno-math-errno -fno-tree-vectorize
# ccflags: .cc/.cpp files
-CCFLAGS_RELEASE =
-CCFLAGS_DEBUG =
-CCFLAGS = \
+CCFLAGS_RELEASE =
+CCFLAGS_DEBUG =
+CCFLAGS = \
-D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \
-D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
# mxflags: .m/.mm files
-MXFLAGS_RELEASE = -fvisibility=hidden
-MXFLAGS_DEBUG = -g -D__tb_debug__
-MXFLAGS = \
+MXFLAGS_RELEASE = -fvisibility=hidden
+MXFLAGS_DEBUG = -g -D__tb_debug__
+MXFLAGS = \
-m$(BITS) -c -Wall -Werror -Wno-error=deprecated-declarations -Qunused-arguments \
-mssse3 $(ARCH_CXFLAGS) -fmessage-length=0 -pipe -fpascal-strings \
"-DIBOutlet=__attribute__((iboutlet))" \
"-DIBOutletCollection(ClassName)=__attribute__((iboutletcollection(ClassName)))" \
"-DIBAction=void)__attribute__((ibaction)"
-MXFLAGS-I = -I
-MXFLAGS-o = -o
+MXFLAGS-I = -I
+MXFLAGS-o = -o
# opti
ifeq ($(SMALL),y)
-MXFLAGS_RELEASE += -Os
+MXFLAGS_RELEASE += -Os
else
-MXFLAGS_RELEASE += -O3
+MXFLAGS_RELEASE += -O3
endif
# prof
ifeq ($(PROF),y)
-MXFLAGS += -g -fno-omit-frame-pointer
+MXFLAGS += -g -fno-omit-frame-pointer
else
-MXFLAGS_RELEASE += -fomit-frame-pointer
-MXFLAGS_DEBUG += -fno-omit-frame-pointer $(LDFLAGS_CHECK)
+MXFLAGS_RELEASE += -fomit-frame-pointer
+MXFLAGS_DEBUG += -fno-omit-frame-pointer $(LDFLAGS_CHECK)
endif
# mflags: .m files
-MFLAGS_RELEASE =
-MFLAGS_DEBUG =
-MFLAGS = -std=c99
+MFLAGS_RELEASE =
+MFLAGS_DEBUG =
+MFLAGS = -std=c99
# mmflags: .mm files
-MMFLAGS_RELEASE =
-MMFLAGS_DEBUG =
-MMFLAGS =
+MMFLAGS_RELEASE =
+MMFLAGS_DEBUG =
+MMFLAGS =
# ldflags
-LDFLAGS_RELEASE =
-LDFLAGS_DEBUG =
-LDFLAGS = -m$(BITS) -all_load -pagezero_size 10000 -image_base 100000000 -mmacosx-version-min=10.7
-LDFLAGS-L = -L
-LDFLAGS-l = -l
-LDFLAGS-f =
-LDFLAGS-o = -o
+LDFLAGS_RELEASE =
+LDFLAGS_DEBUG =
+LDFLAGS = -m$(BITS) -all_load -pagezero_size 10000 -image_base 100000000 -mmacosx-version-min=10.7
+LDFLAGS-L = -L
+LDFLAGS-l = -l
+LDFLAGS-f =
+LDFLAGS-o = -o
# prof
ifeq ($(PROF),y)
else
-LDFLAGS_RELEASE += -s
-LDFLAGS_DEBUG += -ftrapv
+LDFLAGS_RELEASE += -s
+LDFLAGS_DEBUG += -ftrapv
endif
# asflags
-ASFLAGS_RELEASE =
-ASFLAGS_DEBUG =
-ASFLAGS = -m$(BITS) -c -Wall
-ASFLAGS-I = -I
-ASFLAGS-o = -o
+ASFLAGS_RELEASE =
+ASFLAGS_DEBUG =
+ASFLAGS = -m$(BITS) -c -Wall
+ASFLAGS-I = -I
+ASFLAGS-o = -o
# arflags
-ARFLAGS_RELEASE =
-ARFLAGS_DEBUG =
-ARFLAGS = -cr
-ARFLAGS-o =
+ARFLAGS_RELEASE =
+ARFLAGS_DEBUG =
+ARFLAGS = -cr
+ARFLAGS-o =
# shflags
-SHFLAGS_RELEASE = -s
-SHFLAGS = $(ARCH_LDFLAGS) -dynamiclib -mmacosx-version-min=10.7
+SHFLAGS_RELEASE = -s
+SHFLAGS = $(ARCH_LDFLAGS) -dynamiclib -mmacosx-version-min=10.7
# include directory
-INC_DIR += /usr/include /usr/local/include
+INC_DIR += /usr/include /usr/local/include
# library directory
-LIB_DIR += /usr/lib /usr/local/lib
+LIB_DIR += /usr/lib /usr/local/lib
# config
-include $(PLAT_DIR)/config.mak
+include $(PLAT_DIR)/config.mak
diff --git a/core/src/lcurses/lcurses.c b/core/src/lcurses/lcurses.c
index f379824a5..704c8fab3 100644
--- a/core/src/lcurses/lcurses.c
+++ b/core/src/lcurses/lcurses.c
@@ -1436,14 +1436,12 @@ static int lc_raw(lua_State *L)
return 1;
}
-#if 0 // disable it because need link libtinfo.so on linux
static int lc_halfdelay(lua_State *L)
{
int tenths = luaL_checkint(L, 1);
lua_pushboolean(L, B(halfdelay(tenths)));
return 1;
}
-#endif
static int lcw_intrflush(lua_State *L)
{
@@ -2265,7 +2263,7 @@ static const luaL_reg curseslib[] =
{ "cbreak", lc_cbreak },
{ "echo", lc_echo },
{ "raw", lc_raw },
-// { "halfdelay", lc_halfdelay },
+ { "halfdelay", lc_halfdelay },
/* util */
{ "unctrl", lc_unctrl },
diff --git a/core/xmake.lua b/core/xmake.lua
index edf65dbe7..f3f69f6ed 100644
--- a/core/xmake.lua
+++ b/core/xmake.lua
@@ -51,6 +51,9 @@ option_end()
-- the curses option
option("curses")
add_links("curses")
+ if is_plat("linux") then
+ add_links("tinfo")
+ end
add_cincludes("curses.h")
add_defines("XM_CONFIG_API_HAVE_CURSES")
option_end()