Fix shared library not exporting symbols on Windows (#1684)

* Fix shared library not exporting symbols on Windows

* Function name style
This commit is contained in:
Cheng 2024-12-11 06:59:14 +09:00 committed by GitHub
parent 0070e360a1
commit 92ab6bdeb8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 13 additions and 5 deletions

View File

@ -23,6 +23,11 @@ if(MSVC)
target_compile_options(mlx PUBLIC /wd4068 /wd4244 /wd4267 /wd4804)
endif()
if(WIN32)
# Export symbols by default to behave like macOS/linux.
set_target_properties(mlx PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
endif()
if(MLX_BUILD_CPU)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/backend/common)
else()

View File

@ -56,7 +56,10 @@ inline void PrintFormatter::print(std::ostream& os, complex64_t val) {
os << val;
}
PrintFormatter global_formatter;
PrintFormatter& get_global_formatter() {
static PrintFormatter formatter;
return formatter;
}
Dtype result_type(const std::vector<array>& arrays) {
Dtype t = bool_;
@ -171,7 +174,7 @@ void print_subarray(std::ostream& os, const array& a, size_t index, int dim) {
i = n - num_print - 1;
index += s * (n - 2 * num_print - 1);
} else if (is_last) {
global_formatter.print(os, a.data<T>()[index]);
get_global_formatter().print(os, a.data<T>()[index]);
} else {
print_subarray<T>(os, a, index, dim + 1);
}
@ -187,7 +190,7 @@ void print_array(std::ostream& os, const array& a) {
os << "array(";
if (a.ndim() == 0) {
auto data = a.data<T>();
global_formatter.print(os, data[0]);
get_global_formatter().print(os, data[0]);
} else {
print_subarray<T>(os, a, 0, 0);
}

View File

@ -51,7 +51,7 @@ struct PrintFormatter {
bool capitalize_bool{false};
};
extern PrintFormatter global_formatter;
PrintFormatter& get_global_formatter();
/** The type from promoting the arrays' types with one another. */
inline Dtype result_type(const array& a, const array& b) {

View File

@ -85,7 +85,7 @@ class ArrayPythonIterator {
void init_array(nb::module_& m) {
// Set Python print formatting options
mlx::core::global_formatter.capitalize_bool = true;
get_global_formatter().capitalize_bool = true;
// Types
nb::class_<Dtype>(