summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2025-01-27 22:33:08 +0800
committerruki <[email protected]>2025-01-27 22:33:08 +0800
commit65fcd8cbf19e7a0d1330c61831313a1d72e1a327 (patch)
tree2fe5594c2b010a5508ed5dad04928af612445eb9
parent5c15297defaedeb9eca6baee6756b4797d39b6bb (diff)
define export
-rw-r--r--tests/apis/add_configfiles/config.h.in2
-rw-r--r--xmake/actions/config/configfiles.lua17
2 files changed, 17 insertions, 2 deletions
diff --git a/tests/apis/add_configfiles/config.h.in b/tests/apis/add_configfiles/config.h.in
index ff3d1fe20..bb7e6ec81 100644
--- a/tests/apis/add_configfiles/config.h.in
+++ b/tests/apis/add_configfiles/config.h.in
@@ -10,6 +10,6 @@ ${define FOO2_ENABLE}
${define FOO2_ENABLE2}
${define FOO2_STRING}
-//{define_export MYLIB_EXPORT}
+${define_export MYLIB}
#define HAVE_SSE2 ${default HAVE_SSE2 0}
diff --git a/xmake/actions/config/configfiles.lua b/xmake/actions/config/configfiles.lua
index 53754be43..b581ce749 100644
--- a/xmake/actions/config/configfiles.lua
+++ b/xmake/actions/config/configfiles.lua
@@ -207,6 +207,19 @@ function _preprocess_default_value(name, value, opt)
end
function _preprocess_define_export_value(name, value, opt)
+ value = ([[#ifdef %s_STATIC
+# define %s_EXPORT
+#else
+# if defined(_WIN32)
+# define %s_EXPORT __declspec(dllexport)
+# elif defined(__GNUC__) && ((__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3))
+# define %s_EXPORT __attribute__((visibility("default")))
+# else
+# define %s_EXPORT
+# endif
+#endif
+]]):format(name, name, name, name, name)
+ return value
end
-- get variable value
@@ -232,8 +245,10 @@ function _get_variable_value(variables, name, opt)
raise("unknown variable keyword, ${%s %s}", preprocessor_name, name)
end
value = preprocessor(name, value, {argv = preprocessor_argv, extraconf = extraconf})
+ assert(value ~= nil, "cannot get variable(%s %s) in %s.", preprocessor_name, name, configfile)
+ else
+ assert(value ~= nil, "cannot get variable(%s) in %s.", name, configfile)
end
- assert(value ~= nil, "cannot get variable(%s) in %s.", name, configfile)
dprint(" > replace %s -> %s", name, value)
if type(value) == "table" then
dprint("invalid variable value", value)