From 7969a701c3ba0495bc2a9e6870a7ce4d62002f4e Mon Sep 17 00:00:00 2001 From: Warmist Date: Sat, 16 Jul 2011 18:34:24 +0300 Subject: [PATCH] Lua integrated. Signed-off-by: Warmist --- plugins/Dfusion/CMakeLists.txt | 108 +++------------------------------ plugins/Dfusion/dfusion.cpp | 12 +++- 2 files changed, 20 insertions(+), 100 deletions(-) diff --git a/plugins/Dfusion/CMakeLists.txt b/plugins/Dfusion/CMakeLists.txt index b38a2e221..ba4d356d9 100644 --- a/plugins/Dfusion/CMakeLists.txt +++ b/plugins/Dfusion/CMakeLists.txt @@ -1,100 +1,10 @@ #FIXME: inherit all macros and stuff from the dfhack SDK -IF(UNIX) - add_definitions(-DLINUX_BUILD) - SET(CMAKE_CXX_FLAGS_DEBUG "-g -Wall") - SET(CMAKE_CXX_FLAGS "-fvisibility=hidden -m32") - SET(CMAKE_C_FLAGS "-fvisibility=hidden -m32") -ENDIF() - -include_directories("${dfhack_SOURCE_DIR}/library/include") -MACRO(CAR var) - SET(${var} ${ARGV1}) -ENDMACRO(CAR) - -MACRO(CDR var junk) - SET(${var} ${ARGN}) -ENDMACRO(CDR) - -MACRO(LIST_CONTAINS var value) - SET(${var}) - FOREACH (value2 ${ARGN}) - IF (${value} STREQUAL ${value2}) - SET(${var} TRUE) - ENDIF (${value} STREQUAL ${value2}) - ENDFOREACH (value2) -ENDMACRO(LIST_CONTAINS) - -MACRO(PARSE_ARGUMENTS prefix arg_names option_names) - SET(DEFAULT_ARGS) - FOREACH(arg_name ${arg_names}) - SET(${prefix}_${arg_name}) - ENDFOREACH(arg_name) - FOREACH(option ${option_names}) - SET(${prefix}_${option} FALSE) - ENDFOREACH(option) - - SET(current_arg_name DEFAULT_ARGS) - SET(current_arg_list) - FOREACH(arg ${ARGN}) - LIST_CONTAINS(is_arg_name ${arg} ${arg_names}) - IF (is_arg_name) - SET(${prefix}_${current_arg_name} ${current_arg_list}) - SET(current_arg_name ${arg}) - SET(current_arg_list) - ELSE (is_arg_name) - LIST_CONTAINS(is_option ${arg} ${option_names}) - IF (is_option) - SET(${prefix}_${arg} TRUE) - ELSE (is_option) - SET(current_arg_list ${current_arg_list} ${arg}) - ENDIF (is_option) - ENDIF (is_arg_name) - ENDFOREACH(arg) - SET(${prefix}_${current_arg_name} ${current_arg_list}) -ENDMACRO(PARSE_ARGUMENTS) - -MACRO(DFHACK_PLUGIN) - PARSE_ARGUMENTS(PLUGIN - "LINK_LIBRARIES;DEPENDS" - "SOME_OPT" - ${ARGN} - ) - CAR(PLUGIN_NAME ${PLUGIN_DEFAULT_ARGS}) - CDR(PLUGIN_SOURCES ${PLUGIN_DEFAULT_ARGS}) - - ADD_LIBRARY(${PLUGIN_NAME} MODULE ${PLUGIN_SOURCES}) - TARGET_LINK_LIBRARIES(${PLUGIN_NAME} dfhack ${PLUGIN_LINK_LIBRARIES}) - IF(UNIX) - SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES SUFFIX .plug.so PREFIX "") - ELSE() - SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES SUFFIX .plug.dll) - ENDIF() - SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY_RELEASE ${DFHACK_PLUGIN_OUTPUT_DIR}) - SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY_MINSIZEREL ${DFHACK_PLUGIN_OUTPUT_DIR}) - SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO ${DFHACK_PLUGIN_OUTPUT_DIR}) - install(TARGETS ${PLUGIN_NAME} - LIBRARY DESTINATION ${DFHACK_PLUGIN_DESTINATION} - RUNTIME DESTINATION ${DFHACK_PLUGIN_DESTINATION}) - #MESSAGE("Depends: ${PLUGIN_DEPENDS}") - #IF (PLUGIN_AUTO_INSTALL) - # MESSAGE("Auto install") - #ENDIF (PLUGIN_AUTO_INSTALL) - #IF (PLUGIN_NO_MODULE) - # MESSAGE("No module") - #ENDIF (PLUGIN_NO_MODULE) -ENDMACRO(DFHACK_PLUGIN) - -# add all subdirectories. can be used in those subdirectories, etc... -# needs a re-run of cmake to pick up the changes -#macro(RECURSE_DIRS) -# file(GLOB sub-dir RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *) -# foreach(dir ${sub-dir}) -# if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${dir}) -# add_subdirectory (${dir}) -# endif() -# endforeach() -#endmacro() - -#RECURSE_DIRS() -DFHACK_PLUGIN(dfusion dfusion.cpp) - +find_package(Lua51 QUIET) +if(LUA51_FOUND) + include_directories(${LUA_INCLUDE_DIR}) + + DFHACK_PLUGIN(dfusion dfusion.cpp) + target_link_libraries(dfusion ${LUA_LIBRARIES}) +else(LUA51_FOUND) + MESSAGE(STATUS "Required libraries (lua51) not found - dfusion plugin can't be built.") +endif(LUA51_FOUND) diff --git a/plugins/Dfusion/dfusion.cpp b/plugins/Dfusion/dfusion.cpp index 38d25b88d..8f5f66edd 100644 --- a/plugins/Dfusion/dfusion.cpp +++ b/plugins/Dfusion/dfusion.cpp @@ -5,12 +5,13 @@ #include #include +#include using std::vector; using std::string; using namespace DFHack; - +lua_State *st; DFhackCExport command_result dfusion (Core * c, vector & parameters); @@ -23,6 +24,7 @@ DFhackCExport command_result plugin_init ( Core * c, std::vector { commands.clear(); commands.push_back(PluginCommand("DFusion","Init dfusion system.",dfusion)); + st=luaL_newstate(); return CR_OK; } @@ -45,8 +47,16 @@ DFhackCExport command_result plugin_onupdate ( Core * c ) return CR_OK; } + DFhackCExport command_result dfusion (Core * c, vector & parameters) { // do stuff + + Console &con=c->con; + + con.print("Hello world!"); + luaL_dostring(st,parameters[0].c_str()); + const char* p=luaL_checkstring(st,1); + con.print("ret=%s",p); return CR_OK; }