Explorar o código

add macro to control built-in lib for lua, add libm.a

funshine %!s(int64=9) %!d(string=hai) anos
pai
achega
13b08cdacf
Modificáronse 7 ficheiros con 96 adicións e 35 borrados
  1. 2 1
      app/Makefile
  2. 9 0
      app/include/user_modules.h
  3. 19 19
      app/lua/lmathlib.c
  4. 6 6
      app/lua/lualib.h
  5. 59 8
      app/modules/linit.c
  6. 1 1
      ld/eagle.app.v6.ld
  7. BIN=BIN
      lib/libm.a

+ 2 - 1
app/Makefile

@@ -106,7 +106,8 @@ LINKFLAGS_eagle.app.v6 = \
 	-lsmartconfig	\
 	-lssl	\
 	$(DEP_LIBS_eagle.app.v6)					\
-	-Wl,--end-group
+	-Wl,--end-group			\
+	-lm
 
 DEPENDS_eagle.app.v6 = \
                 $(LD_FILE) \

+ 9 - 0
app/include/user_modules.h

@@ -1,6 +1,15 @@
 #ifndef __USER_MODULES_H__
 #define __USER_MODULES_H__
 
+#define LUA_USE_BUILTIN_STRING		// for string.xxx()
+#define LUA_USE_BUILTIN_TABLE		// for table.xxx()
+#define LUA_USE_BUILTIN_COROUTINE	// for coroutine.xxx()
+// #define LUA_USE_BUILTIN_MATH		// for math.xxx(), partially work
+// #define LUA_USE_BUILTIN_IO 			// for io.xxx(), partially work
+
+// #define LUA_USE_BUILTIN_OS			// for os.xxx(), not work
+// #define LUA_USE_BUILTIN_DEBUG		// for debug.xxx(), not work
+
 #define LUA_USE_MODULES
 
 #ifdef LUA_USE_MODULES

+ 19 - 19
app/lua/lmathlib.c

@@ -324,36 +324,36 @@ const LUA_REG_TYPE math_map[] = {
 #endif
 #else
   {LSTRKEY("abs"),   LFUNCVAL(math_abs)},
-  {LSTRKEY("acos"),  LFUNCVAL(math_acos)},
-  {LSTRKEY("asin"),  LFUNCVAL(math_asin)},
-  {LSTRKEY("atan2"), LFUNCVAL(math_atan2)},
-  {LSTRKEY("atan"),  LFUNCVAL(math_atan)},
+  // {LSTRKEY("acos"),  LFUNCVAL(math_acos)},
+  // {LSTRKEY("asin"),  LFUNCVAL(math_asin)},
+  // {LSTRKEY("atan2"), LFUNCVAL(math_atan2)},
+  // {LSTRKEY("atan"),  LFUNCVAL(math_atan)},
   {LSTRKEY("ceil"),  LFUNCVAL(math_ceil)},
-  {LSTRKEY("cosh"),  LFUNCVAL(math_cosh)},
-  {LSTRKEY("cos"),   LFUNCVAL(math_cos)},
-  {LSTRKEY("deg"),   LFUNCVAL(math_deg)},
-  {LSTRKEY("exp"),   LFUNCVAL(math_exp)},
+  // {LSTRKEY("cosh"),  LFUNCVAL(math_cosh)},
+  // {LSTRKEY("cos"),   LFUNCVAL(math_cos)},
+  // {LSTRKEY("deg"),   LFUNCVAL(math_deg)},
+  // {LSTRKEY("exp"),   LFUNCVAL(math_exp)},
   {LSTRKEY("floor"), LFUNCVAL(math_floor)},
-  {LSTRKEY("fmod"),  LFUNCVAL(math_fmod)},
+  // {LSTRKEY("fmod"),  LFUNCVAL(math_fmod)},
 #if LUA_OPTIMIZE_MEMORY > 0 && defined(LUA_COMPAT_MOD)
   {LSTRKEY("mod"),   LFUNCVAL(math_fmod)}, 
 #endif
-  {LSTRKEY("frexp"), LFUNCVAL(math_frexp)},
-  {LSTRKEY("ldexp"), LFUNCVAL(math_ldexp)},
-  {LSTRKEY("log10"), LFUNCVAL(math_log10)},
-  {LSTRKEY("log"),   LFUNCVAL(math_log)},
+  // {LSTRKEY("frexp"), LFUNCVAL(math_frexp)},
+  // {LSTRKEY("ldexp"), LFUNCVAL(math_ldexp)},
+  // {LSTRKEY("log10"), LFUNCVAL(math_log10)},
+  // {LSTRKEY("log"),   LFUNCVAL(math_log)},
   {LSTRKEY("max"),   LFUNCVAL(math_max)},
   {LSTRKEY("min"),   LFUNCVAL(math_min)},
-  {LSTRKEY("modf"),   LFUNCVAL(math_modf)},
+  // {LSTRKEY("modf"),   LFUNCVAL(math_modf)},
   {LSTRKEY("pow"),   LFUNCVAL(math_pow)},
-  {LSTRKEY("rad"),   LFUNCVAL(math_rad)},
+  // {LSTRKEY("rad"),   LFUNCVAL(math_rad)},
   {LSTRKEY("random"),     LFUNCVAL(math_random)},
   {LSTRKEY("randomseed"), LFUNCVAL(math_randomseed)},
-  {LSTRKEY("sinh"),   LFUNCVAL(math_sinh)},
-  {LSTRKEY("sin"),   LFUNCVAL(math_sin)},
+  // {LSTRKEY("sinh"),   LFUNCVAL(math_sinh)},
+  // {LSTRKEY("sin"),   LFUNCVAL(math_sin)},
   {LSTRKEY("sqrt"),  LFUNCVAL(math_sqrt)},
-  {LSTRKEY("tanh"),   LFUNCVAL(math_tanh)},
-  {LSTRKEY("tan"),   LFUNCVAL(math_tan)},
+  // {LSTRKEY("tanh"),   LFUNCVAL(math_tanh)},
+  // {LSTRKEY("tan"),   LFUNCVAL(math_tan)},
 #if LUA_OPTIMIZE_MEMORY > 0
   {LSTRKEY("pi"),    LNUMVAL(PI)},
   {LSTRKEY("huge"),  LNUMVAL(HUGE_VAL)},

+ 6 - 6
app/lua/lualib.h

@@ -24,17 +24,17 @@ LUALIB_API int (luaopen_table) (lua_State *L);
 #define LUA_IOLIBNAME	"io"
 LUALIB_API int (luaopen_io) (lua_State *L);
 
-// #define LUA_OSLIBNAME	"os"
-// LUALIB_API int (luaopen_os) (lua_State *L);
+#define LUA_OSLIBNAME	"os"
+LUALIB_API int (luaopen_os) (lua_State *L);
 
 #define LUA_STRLIBNAME	"string"
 LUALIB_API int (luaopen_string) (lua_State *L);
 
-// #define LUA_MATHLIBNAME	"math"
-// LUALIB_API int (luaopen_math) (lua_State *L);
+#define LUA_MATHLIBNAME	"math"
+LUALIB_API int (luaopen_math) (lua_State *L);
 
-// #define LUA_DBLIBNAME	"debug"
-// LUALIB_API int (luaopen_debug) (lua_State *L);
+#define LUA_DBLIBNAME	"debug"
+LUALIB_API int (luaopen_debug) (lua_State *L);
 
 #define LUA_LOADLIBNAME	"package"
 LUALIB_API int (luaopen_package) (lua_State *L);

+ 59 - 8
app/modules/linit.c

@@ -30,12 +30,26 @@ LUA_MODULES_ROM
 static const luaL_Reg lualibs[] = {
   {"", luaopen_base},
   {LUA_LOADLIBNAME, luaopen_package},
-  // {LUA_IOLIBNAME, luaopen_io},
-  {LUA_STRLIBNAME, luaopen_string},    
+#if defined(LUA_USE_BUILTIN_IO)
+  {LUA_IOLIBNAME, luaopen_io},
+#endif
+
+#if defined(LUA_USE_BUILTIN_STRING)
+  {LUA_STRLIBNAME, luaopen_string},
+#endif
+
 #if LUA_OPTIMIZE_MEMORY == 0
-  // {LUA_MATHLIBNAME, luaopen_math},
+  #if defined(LUA_USE_BUILTIN_MATH)
+  {LUA_MATHLIBNAME, luaopen_math},
+  #endif
+
+  #if defined(LUA_USE_BUILTIN_TABLE)
   {LUA_TABLIBNAME, luaopen_table},  
-  // {LUA_DBLIBNAME, luaopen_debug},  
+  #endif
+
+  #if defined(LUA_USE_BUILTIN_DEBUG)
+  {LUA_DBLIBNAME, luaopen_debug},
+  #endif 
 #endif
 #if defined(LUA_MODULES_ROM)
 #undef _ROM
@@ -45,12 +59,30 @@ static const luaL_Reg lualibs[] = {
   {NULL, NULL}
 };
 
+#if defined(LUA_USE_BUILTIN_STRING)
 extern const luaR_entry strlib[];
+#endif
+
+#if defined(LUA_USE_BUILTIN_OS)
 extern const luaR_entry syslib[];
+#endif
+
+#if defined(LUA_USE_BUILTIN_TABLE)
 extern const luaR_entry tab_funcs[];
-// extern const luaR_entry dblib[];
+#endif
+
+#if defined(LUA_USE_BUILTIN_DEBUG)
+extern const luaR_entry dblib[];
+#endif
+
+#if defined(LUA_USE_BUILTIN_COROUTINE)
 extern const luaR_entry co_funcs[];
-// extern const luaR_entry math_map[];
+#endif
+
+#if defined(LUA_USE_BUILTIN_MATH)
+extern const luaR_entry math_map[];
+#endif
+
 #if defined(LUA_MODULES_ROM) && LUA_OPTIMIZE_MEMORY == 2
 #undef _ROM
 #define _ROM( name, openf, table ) extern const luaR_entry table[];
@@ -59,11 +91,30 @@ LUA_MODULES_ROM
 const luaR_table lua_rotable[] = 
 {
 #if LUA_OPTIMIZE_MEMORY > 0
+  #if defined(LUA_USE_BUILTIN_STRING)
   {LUA_STRLIBNAME, strlib},
+  #endif
+
+  #if defined(LUA_USE_BUILTIN_TABLE)
   {LUA_TABLIBNAME, tab_funcs},
-  // {LUA_DBLIBNAME, dblib},
+  #endif
+
+  #if defined(LUA_USE_BUILTIN_DEBUG)
+  {LUA_DBLIBNAME, dblib},
+  #endif
+
+  #if defined(LUA_USE_BUILTIN_COROUTINE)
   {LUA_COLIBNAME, co_funcs},
-  // {LUA_MATHLIBNAME, math_map},
+  #endif
+
+  #if defined(LUA_USE_BUILTIN_MATH)
+  {LUA_MATHLIBNAME, math_map},
+  #endif
+
+  #if defined(LUA_USE_BUILTIN_OS)
+  {LUA_OSLIBNAME, syslib},
+  #endif
+
 #if defined(LUA_MODULES_ROM) && LUA_OPTIMIZE_MEMORY == 2
 #undef _ROM
 #define _ROM( name, openf, table ) { name, table },

+ 1 - 1
ld/eagle.app.v6.ld

@@ -5,7 +5,7 @@ MEMORY
   dport0_0_seg :                      	org = 0x3FF00000, len = 0x10
   dram0_0_seg :                       	org = 0x3FFE8000, len = 0x14000
   iram1_0_seg :                       	org = 0x40100000, len = 0x8000
-  irom0_0_seg :                       	org = 0x40210000, len = 0x55000
+  irom0_0_seg :                       	org = 0x40210000, len = 0x56000
 }
 
 PHDRS

BIN=BIN
lib/libm.a