mirror of
https://https.git.savannah.gnu.org/git/libtool.git
synced 2026-01-26 15:39:10 +00:00
* tests/export.at [MSVC]: dllimport all imported variables.
Signed-off-by: Ralf Wildenhues <Ralf.Wildenhues@gmx.de> Signed-off-by: Peter Rosin <peda@lysator.liu.se>
This commit is contained in:
parent
0b56641c03
commit
b28132eaba
@ -1,3 +1,7 @@
|
||||
2010-07-05 Peter Rosin <peda@lysator.liu.se>
|
||||
|
||||
* tests/export.at [MSVC]: dllimport all imported variables.
|
||||
|
||||
2010-07-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||
Peter Rosin <peda@lysator.liu.se>
|
||||
|
||||
|
||||
@ -93,32 +93,48 @@ v15
|
||||
|
||||
AT_DATA(main.c,
|
||||
[[
|
||||
/* w32 fun. With GCC, you can have auto-import, which will work for
|
||||
* functions and non-const variables. With MSVC, you have to explicitly
|
||||
* import all variables. Depending on the amount of portability, you
|
||||
* need these annotations: LIBA_SCOPE for GCC, and also LIBA_SCOPE_VAR
|
||||
* for MSVC. Of course you can merge both to one, this test only avoids
|
||||
* that in order to expose the auto-import feature on Cygwin.
|
||||
*
|
||||
* For users, it's best to realize that they should not provide any
|
||||
* non-function API at all.
|
||||
*/
|
||||
#if defined(LIBA_DLL_IMPORT)
|
||||
# if defined(_WIN32) || defined(WIN32) || defined(__CYGWIN__)
|
||||
# define LIBA_SCOPE extern __declspec(dllimport)
|
||||
# if defined(_MSC_VER)
|
||||
# define LIBA_SCOPE_VAR LIBA_SCOPE
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(LIBA_SCOPE)
|
||||
# define LIBA_SCOPE extern
|
||||
#endif
|
||||
#if !defined(LIBA_SCOPE_VAR)
|
||||
# define LIBA_SCOPE_VAR extern
|
||||
#endif
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
extern int v1;
|
||||
extern int v3, v4;
|
||||
LIBA_SCOPE_VAR int v1;
|
||||
LIBA_SCOPE_VAR int v3, v4;
|
||||
LIBA_SCOPE const int v5, v6;
|
||||
extern const char* v7;
|
||||
extern const char v8[];
|
||||
LIBA_SCOPE_VAR const char* v7;
|
||||
LIBA_SCOPE_VAR const char v8[];
|
||||
extern int v9(void);
|
||||
extern int (*v10) (void);
|
||||
extern int (*v11) (void);
|
||||
LIBA_SCOPE_VAR int (*v10) (void);
|
||||
LIBA_SCOPE_VAR int (*v11) (void);
|
||||
LIBA_SCOPE int (*const v12) (void);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
typedef struct { int arr[1000]; } large;
|
||||
extern large v13, v14, v15;
|
||||
LIBA_SCOPE_VAR large v13, v14, v15;
|
||||
|
||||
int main (void)
|
||||
{
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user