Skip to content

Commit

Permalink
0.2.3: fix nondeterministic C include renaming (#64)
Browse files Browse the repository at this point in the history
  • Loading branch information
mikedh authored Aug 8, 2022
1 parent fafe376 commit 3084f79
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 17 deletions.
29 changes: 15 additions & 14 deletions cmake/terra.cmake
Original file line number Diff line number Diff line change
@@ -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")
Expand All @@ -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 ""
Expand All @@ -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}")
Expand Down Expand Up @@ -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()
15 changes: 13 additions & 2 deletions dist/scripts/core/module.t
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion src/trussapi.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 <cstdint> // Needed for uint64_t etc.
#include <cstddef> // Needed for size_t etc.
Expand Down

0 comments on commit 3084f79

Please sign in to comment.