diff options
| author | ruki <[email protected]> | 2025-01-27 22:33:08 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2025-01-27 22:33:08 +0800 |
| commit | 65fcd8cbf19e7a0d1330c61831313a1d72e1a327 (patch) | |
| tree | 2fe5594c2b010a5508ed5dad04928af612445eb9 | |
| parent | 5c15297defaedeb9eca6baee6756b4797d39b6bb (diff) | |
define export
| -rw-r--r-- | tests/apis/add_configfiles/config.h.in | 2 | ||||
| -rw-r--r-- | xmake/actions/config/configfiles.lua | 17 |
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) |
