diff --git a/cmake/terra.cmake b/cmake/terra.cmake index a801c6cc..54713381 100644 --- a/cmake/terra.cmake +++ b/cmake/terra.cmake @@ -1,8 +1,9 @@ include(ExternalProject) -# Use this version of terra. -set(terra_RELEASE_DATE "1.0.0-beta4") -set(terra_RELEASE_HASH "868748e") +# Use this version of xreterra. +set(terra_URL_BASE "https://github.com/terralang/terra/releases/download/release") +set(terra_RELEASE_VERSION "1.0.4") +set(terra_RELEASE_HASH "ab21125") if("${CMAKE_SYSTEM_NAME}" MATCHES "Windows") set(terra_SYSTEM_NAME "Windows") @@ -26,7 +27,7 @@ endif() # Download `terra` and unzip its binaries. ExternalProject_Add(terra_EXTERNAL - URL "https://github.com/zdevito/terra/releases/download/release-${terra_RELEASE_DATE}/terra-${terra_SYSTEM_NAME}-x86_64-${terra_RELEASE_HASH}${terra_RELEASE_EXT}" + URL "${terra_URL_BASE}-${terra_RELEASE_VERSION}/terra-${terra_SYSTEM_NAME}-x86_64-${terra_RELEASE_HASH}${terra_RELEASE_EXT}" URL_MD5 "${terra_MD5}" CONFIGURE_COMMAND "" BUILD_COMMAND "" @@ -37,16 +38,6 @@ ExternalProject_Add(terra_EXTERNAL # Recover project paths for additional settings. ExternalProject_Get_Property(terra_EXTERNAL SOURCE_DIR) -# On Linux systems, fix terra's naming convention. -if("${CMAKE_SYSTEM_NAME}" MATCHES "Linux") - add_custom_command(TARGET terra_EXTERNAL - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy - "${SOURCE_DIR}/${terra_SHARED_LIBS_DIR}/terra.so" - "${SOURCE_DIR}/${terra_SHARED_LIBS_DIR}/${terra_LIBRARY_NAME}" - ) -endif() - set(terra_INCLUDE_DIR "${SOURCE_DIR}/include") set(terra_LIBRARY "${SOURCE_DIR}/${terra_SHARED_LIBS_DIR}/${terra_LIBRARY_NAME}") set(terra_IMPLIB "${SOURCE_DIR}/lib/${terra_IMPLIB_NAME}") @@ -77,3 +68,13 @@ if("${CMAKE_SYSTEM_NAME}" MATCHES "Windows") INTERFACE_LINK_LIBRARIES "${lua51_IMPLIB}") truss_copy_libraries(terra_EXTERNAL "${lua51_LIBRARY}") endif() + +# On Linux systems, fix terra's naming convention. +if("${CMAKE_SYSTEM_NAME}" MATCHES "Linux") + add_custom_command(TARGET terra_EXTERNAL + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy + "${SOURCE_DIR}/${terra_SHARED_LIBS_DIR}/libterra.so" + "${SOURCE_DIR}/${terra_SHARED_LIBS_DIR}/${terra_LIBRARY_NAME}" + ) +endif() diff --git a/dist/scripts/core/module.t b/dist/scripts/core/module.t index 189fd00a..fe2fd47d 100644 --- a/dist/scripts/core/module.t +++ b/dist/scripts/core/module.t @@ -50,13 +50,24 @@ function m.reexport_without_prefix(srctable, prefix, desttable) return desttable end +local function length_sorted_keys(t) + local ret = {} + for k, _ in pairs(t) do + table.insert(ret, k) + end + table.sort(ret, function(x, y) return #x > #y end) + return ret +end + function m.reexport_renamed(srctable, prefixes, export_unmatched, desttable) desttable = desttable or {} for k,v in pairs(srctable) do local found_prefix = false - for prefix, replacement in pairs(prefixes) do + for _, prefix in ipairs(length_sorted_keys(prefixes)) do + local replacement = prefixes[prefix] if k:sub(1, prefix:len()) == prefix then - desttable[replacement .. k:sub(prefix:len() + 1)] = v + local newname = replacement .. k:sub(prefix:len() + 1) + desttable[newname] = v found_prefix = true break end diff --git a/src/trussapi.h b/src/trussapi.h index bc6f4b7d..8eb95693 100644 --- a/src/trussapi.h +++ b/src/trussapi.h @@ -6,7 +6,7 @@ #ifndef TRUSSAPI_H_HEADER_GUARD #define TRUSSAPI_H_HEADER_GUARD -#define TRUSS_VERSION_STRING "0.2.2" +#define TRUSS_VERSION_STRING "0.2.3" #include // Needed for uint64_t etc. #include // Needed for size_t etc.