* 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:
Peter Rosin 2010-07-05 13:02:54 +02:00
parent 0b56641c03
commit b28132eaba
2 changed files with 27 additions and 7 deletions

View File

@ -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>

View File

@ -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)
{