Skip to content

Commit cffb98e

Browse files
committed
Fix standalone return types and add Geode binary cache
1 parent 472d6ba commit cffb98e

File tree

3 files changed

+38
-22
lines changed

3 files changed

+38
-22
lines changed

bindings/2.2074/Cocos2d.bro

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4319,8 +4319,8 @@ void kmGLPopMatrix() = m1 0x1abad0, imac 0x1f5fe0, ios 0x16bc94;
43194319
void kmGLMatrixMode(unsigned int) = m1 0x1aba44, imac 0x1f5f60, ios 0x16bc08;
43204320
[[link(win, android)]]
43214321
void kmGLLoadIdentity() = m1 0x1abafc, imac 0x1f6010, ios 0x16bcc0;
4322-
// [[link(win, android)]] // TODO: Figure this out
4323-
// kmMat4* const kmMat4OrthographicProjection(kmMat4*, float, float, float, float, float, float) = m1 0x1abafc, imac 0x3c1240, ios 0x3ab750;
4322+
[[link(win, android)]]
4323+
kmMat4* const kmMat4OrthographicProjection(kmMat4*, float, float, float, float, float, float) = m1 0x1abafc, imac 0x3c1240, ios 0x3ab750;
43244324
[[link(win, android)]]
43254325
void kmGLMultMatrix(const kmMat4*) = m1 0x1abb60, imac 0x1f6070, ios 0x16bd24;
43264326

codegen/src/SourceGen.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ auto {class_name}::{function_name}({parameters}){const} -> decltype({function_na
150150
)GEN";
151151

152152
constexpr char const* declare_standalone = R"GEN(
153-
auto {function_name}({parameters}) -> decltype({function_name}({arguments})) {{
153+
{return} {function_name}({parameters}) {{
154154
using FunctionType = decltype({function_name}({arguments}))(*)({parameter_types});
155155
static auto func = wrapFunction({address_inline}, tulip::hook::WrapperMetadata{{
156156
.m_convention = geode::hook::createConvention(tulip::hook::TulipConvention::{convention}),
@@ -182,6 +182,7 @@ std::string generateBindingSource(Root const& root, bool skipPugixml) {
182182
}
183183

184184
output += fmt::format(format_strings::declare_standalone,
185+
fmt::arg("return", f.prototype.ret.name),
185186
fmt::arg("convention", codegen::getModifyConventionName(f)),
186187
fmt::arg("function_name", f.prototype.name),
187188
fmt::arg("address_inline", codegen::getAddressString(f)),

test/members/CMakeLists.txt

Lines changed: 34 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -112,32 +112,47 @@ elseif (GEODE_TARGET_PLATFORM STREQUAL "Android32")
112112
)
113113
endif()
114114

115+
message(STATUS "Fetching Geode nightly Git hash")
116+
115117
execute_process(
116118
COMMAND git ls-remote https://github.com/geode-sdk/geode -t nightly
117119
WORKING_DIRECTORY $ENV{GEODE_SDK}
118120
OUTPUT_VARIABLE GEODE_MEMBER_TEST_GIT_OUTPUT
121+
ERROR_VARIABLE GEODE_MEMBER_TEST_GIT_ERROR
119122
OUTPUT_STRIP_TRAILING_WHITESPACE
120123
)
121-
string(REGEX MATCH "^[0-9a-f]+" GEODE_MEMBER_TEST_GIT_HASH ${GEODE_MEMBER_TEST_GIT_OUTPUT})
122-
string(SUBSTRING ${GEODE_MEMBER_TEST_GIT_HASH} 0 7 GEODE_MEMBER_TEST_GIT_HASH)
123-
124-
message(STATUS "Downloading Geode binaries from ${GEODE_MEMBER_TEST_GIT_HASH}")
125-
file(DOWNLOAD
126-
https://github.com/geode-sdk/geode/releases/download/nightly/geode-${GEODE_MEMBER_TEST_GIT_HASH}-${GEODE_MEMBER_TEST_PLATFORM}.zip
127-
${CMAKE_CURRENT_BINARY_DIR}/geode.zip
128-
STATUS GEODE_MEMBER_TEST_DOWNLOAD_STATUS
129-
)
130-
list(GET GEODE_MEMBER_TEST_DOWNLOAD_STATUS 0 GEODE_MEMBER_TEST_DOWNLOAD_STATUS_CODE)
131-
if (GEODE_MEMBER_TEST_DOWNLOAD_STATUS_CODE EQUAL 0)
132-
message(STATUS "Downloaded Geode binaries")
124+
if (GEODE_MEMBER_TEST_GIT_ERROR)
125+
message(STATUS "Failed to fetch Geode nightly Git hash, using existing binaries")
133126
else()
134-
list(GET GEODE_MEMBER_TEST_DOWNLOAD_STATUS 1 GEODE_MEMBER_TEST_DOWNLOAD_STATUS_MESSAGE)
135-
message(FATAL_ERROR "Downloading Geode binaries failed: ${GEODE_MEMBER_TEST_DOWNLOAD_STATUS_MESSAGE}")
127+
string(REGEX MATCH "^[0-9a-f]+" GEODE_MEMBER_TEST_GIT_HASH ${GEODE_MEMBER_TEST_GIT_OUTPUT})
128+
string(SUBSTRING ${GEODE_MEMBER_TEST_GIT_HASH} 0 7 GEODE_MEMBER_TEST_GIT_HASH)
129+
130+
if ("$CACHE{GEODE_MEMBER_TEST_GIT_HASH}" STREQUAL "${GEODE_MEMBER_TEST_GIT_HASH}")
131+
message(STATUS "Using cached Geode binaries from ${GEODE_MEMBER_TEST_GIT_HASH}")
132+
else()
133+
message(STATUS "Downloading Geode binaries from ${GEODE_MEMBER_TEST_GIT_HASH}")
134+
135+
file(DOWNLOAD
136+
https://github.com/geode-sdk/geode/releases/download/nightly/geode-${GEODE_MEMBER_TEST_GIT_HASH}-${GEODE_MEMBER_TEST_PLATFORM}.zip
137+
${CMAKE_CURRENT_BINARY_DIR}/geode.zip
138+
STATUS GEODE_MEMBER_TEST_DOWNLOAD_STATUS
139+
)
140+
list(GET GEODE_MEMBER_TEST_DOWNLOAD_STATUS 0 GEODE_MEMBER_TEST_DOWNLOAD_STATUS_CODE)
141+
if (GEODE_MEMBER_TEST_DOWNLOAD_STATUS_CODE EQUAL 0)
142+
message(STATUS "Downloaded Geode binaries")
143+
else()
144+
list(GET GEODE_MEMBER_TEST_DOWNLOAD_STATUS 1 GEODE_MEMBER_TEST_DOWNLOAD_STATUS_MESSAGE)
145+
message(FATAL_ERROR "Downloading Geode binaries failed: ${GEODE_MEMBER_TEST_DOWNLOAD_STATUS_MESSAGE}")
146+
endif()
147+
148+
set(GEODE_MEMBER_TEST_GIT_HASH ${GEODE_MEMBER_TEST_GIT_HASH} CACHE STRING "Git hash of the Geode binaries")
149+
150+
file(ARCHIVE_EXTRACT
151+
INPUT ${CMAKE_CURRENT_BINARY_DIR}/geode.zip
152+
DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/geode
153+
PATTERNS ${GEODE_MEMBER_TEST_BINARY}
154+
)
155+
endif()
136156
endif()
137157

138-
file(ARCHIVE_EXTRACT
139-
INPUT ${CMAKE_CURRENT_BINARY_DIR}/geode.zip
140-
DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/geode
141-
PATTERNS ${GEODE_MEMBER_TEST_BINARY}
142-
)
143158
target_link_libraries(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/geode/${GEODE_MEMBER_TEST_BINARY})

0 commit comments

Comments
 (0)