# this is a very simple makefile for modules TOP_DIR=../.. #lua stuff LUA_SRC=lua CORE_O= $(LUA_SRC)/lapi.o $(LUA_SRC)/lcode.o $(LUA_SRC)/lctype.o $(LUA_SRC)/ldebug.o $(LUA_SRC)/ldo.o $(LUA_SRC)/ldump.o $(LUA_SRC)/lfunc.o $(LUA_SRC)/lgc.o $(LUA_SRC)/llex.o $(LUA_SRC)/lmem.o $(LUA_SRC)/lobject.o $(LUA_SRC)/lopcodes.o $(LUA_SRC)/lparser.o $(LUA_SRC)/lstate.o $(LUA_SRC)/lstring.o $(LUA_SRC)/ltable.o $(LUA_SRC)/ltm.o $(LUA_SRC)/lundump.o $(LUA_SRC)/lvm.o $(LUA_SRC)/lzio.o LIB_O= $(LUA_SRC)/lauxlib.o $(LUA_SRC)/lbaselib.o $(LUA_SRC)/lbitlib.o $(LUA_SRC)/lcorolib.o $(LUA_SRC)/ldblib.o $(LUA_SRC)/liolib.o $(LUA_SRC)/lmathlib.o $(LUA_SRC)/lstrlib.o $(LUA_SRC)/ltablib.o $(LUA_SRC)/lutf8lib.o $(LUA_SRC)/loadlib.o $(LUA_SRC)/linit.o LUA_LIB_O= lua_globals.o lua_console.o lua_camera.o lua_lv.o lua_lens.o lua_movie.o lua_display.o lua_key.o lua_menu.o lua_dryos.o lua_interval.o lua_battery.o lua_task.o lua_property.o lua_constants.o # define the module name - make sure name is max 8 characters MODULE_NAME=lua MODULE_OBJS=$(LUA_SRC)/ml-lua-shim.o $(CORE_O) $(LIB_O) $(LUA_LIB_O) lua.o dietlibc.a MODULE_CFLAGS += -DLUA_32BITS -DLUA_COMPAT_FLOATSTRING -Idietlibc/include/ # include modules environment include $(TOP_DIR)/modules/Makefile.modules # strip all Lua symbols, so we don't export internal Lua routines to other modules # (we have nothing interesting to export yet) # fixme: how to implement this in a cleaner way? lua.sym: lua.mo $(call build,STRIP,$(READELF) -sW $< | grep GLOBAL | grep -v UND | grep -v COM | grep -v "__module_.*$(MODULE_NAME)" | $(AWK) "{print \$$8;}" | sort > localsyms) $(call build,STRIP,$(OBJCOPY) lua.mo lua.mo --localize-symbols localsyms) $(call rm_files, localsyms) $(call build,EXPORTS,$(READELF) -sW $< | grep GLOBAL | grep -v UND | grep -v COM | grep -v "__module_.*$(MODULE_NAME)" | $(AWK) "{print \$$2 \" \" \$$8;}" | sort > $@ && cat $@) # Extract the stdio files that we need DIET_OBJ = \ fopen.o \ freopen.o \ fclose.o \ fread.o \ fwrite.o \ fseek.o \ ftell.o \ fprintf.o \ fflush.o \ feof.o \ fputs.o \ fgets.o \ fgetc_unlocked.o \ fputc_unlocked.o \ ungetc.o \ fdglue.o \ fdglue2.o \ setvbuf.o \ vfprintf.o \ __v_printf.o \ __ltostr.o \ printf.o \ vprintf.o \ stdin.o \ stdout.o \ stderr.o \ errno.o \ errno_location.o \ strerror.o \ ferror.o \ clearerr.o \ errlist.o \ errlistu.o \ strtol.o \ strtof.o \ strstr.o \ strspn.o \ strpbrk.o \ memchr.o \ localeconv.o \ $(DIET_OBJ): $(DIETLIBC_A) $(call build,AR,$(AR) x $? $(DIET_OBJ)) dietlibc.a: $(DIET_OBJ) $(call build,AR,$(AR) cr $@ $^) # also copy the scripts when running "make install" from the module directory install_user_data:: $(INSTALL_ALL_SCRIPTS) # run "make install extra=1" to copy scripts from the extra dir # into the main scripts dir on the card, so they autostart ifeq ($(extra),1) install_user_data:: $(CP) $(SCRIPT_DIR)/extra/*.lua $(INSTALL_SCRIPTS_DIR) endif # run a syntax check after compiling all:: syntax_check.log syntax_check.log: $(shell find $(SCRIPT_DIR) -type f -name *.lua) $(call build,LUAC,(for f in $^; do luac -p $$f || true; done) 2> syntax_check.log && cat syntax_check.log)