diff --git a/cmake/BuildLibYAML.cmake b/cmake/BuildLibYAML.cmake index 50e66a35863cafc7274f16016e17ba5a7d1cdc52..01eb6116d74420ef98463cf494eb362fbb6a9e33 100644 --- a/cmake/BuildLibYAML.cmake +++ b/cmake/BuildLibYAML.cmake @@ -1,7 +1,7 @@ # # A macro to build the bundled liblua-yaml macro(libyaml_build) - set(yaml_src ${PROJECT_SOURCE_DIR}/third_party/lua-yaml/lyaml.c + set(yaml_src ${PROJECT_SOURCE_DIR}/third_party/lua-yaml/lyaml.cc ${PROJECT_SOURCE_DIR}/third_party/lua-yaml/api.c ${PROJECT_SOURCE_DIR}/third_party/lua-yaml/dumper.c ${PROJECT_SOURCE_DIR}/third_party/lua-yaml/emitter.c @@ -14,6 +14,10 @@ macro(libyaml_build) set_source_files_properties(${yaml_src} PROPERTIES COMPILE_FLAGS "-std=c99") + set_source_files_properties( + ${PROJECT_SOURCE_DIR}/third_party/lua-yaml/lyaml.cc + PROPERTIES COMPILE_FLAGS + "-std=gnu++0x -D__STDC_FORMAT_MACROS=1 -D__STDC_LIMIT_MACROS=1") add_library(yaml STATIC ${yaml_src}) diff --git a/third_party/lua-yaml/lyaml.c b/third_party/lua-yaml/lyaml.cc similarity index 99% rename from third_party/lua-yaml/lyaml.c rename to third_party/lua-yaml/lyaml.cc index 17fc71b61df860180acafddcef840af0f72c2f34..c462b3a64499827a8cd54fbc898a405a128583bc 100644 --- a/third_party/lua-yaml/lyaml.c +++ b/third_party/lua-yaml/lyaml.cc @@ -31,6 +31,7 @@ #include <stdbool.h> #include <inttypes.h> +extern "C" { #include <lauxlib.h> #include <lua.h> #include <lualib.h> @@ -42,6 +43,7 @@ #include "yaml.h" #include "b64.h" +} /* extern "C" */ #include "lua/utils.h" /* configurable flags */ @@ -845,7 +847,7 @@ static int l_null(lua_State *L) { return 1; } -LUALIB_API int luaopen_yaml(lua_State *L) { +extern "C" int luaopen_yaml(lua_State *L) { const luaL_reg yamllib[] = { { "decode", l_load }, { "encode", l_dump }, @@ -858,6 +860,6 @@ LUALIB_API int luaopen_yaml(lua_State *L) { return 1; } -LUALIB_API int yamlL_encode(lua_State *L) { +extern "C" int yamlL_encode(lua_State *L) { return l_dump(L); }