summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJukka Ojanen <jukka.ojanen@linkotec.net>2015-11-30 17:16:01 +0200
committerJukka Ojanen <jukka.ojanen@linkotec.net>2015-11-30 17:18:31 +0200
commitae1b59ddd07cb66b0807bc2c7c981ce96c69acea (patch)
tree0b17e0271543e1fb897aba27c242b656378df858 /include
parentc3e325911ae15524c814db75fe701df91d6f7c2a (diff)
downloadffts-ae1b59ddd07cb66b0807bc2c7c981ce96c69acea.zip
ffts-ae1b59ddd07cb66b0807bc2c7c981ce96c69acea.tar.gz
Enable building shared library and start version numbering from 0.9.0. On Windows when using FFTS as a DLL, define FFTS_SHARED. This is not mandatory, but it offers a little performance increase. Hide symbols when possible to improve compiler optimization and sizeof binary. Use CMake target alias "ffts" to choose between static and shared library, preferring static
Diffstat (limited to 'include')
-rw-r--r--include/ffts.h43
1 files changed, 35 insertions, 8 deletions
diff --git a/include/ffts.h b/include/ffts.h
index 8e25cb4..d187e36 100644
--- a/include/ffts.h
+++ b/include/ffts.h
@@ -42,27 +42,54 @@
extern "C" {
#endif
+#if (defined(_WIN32) || defined(WIN32)) && defined(FFTS_SHARED)
+# ifdef FFTS_BUILD
+# define FFTS_API __declspec(dllexport)
+# else
+# define FFTS_API __declspec(dllimport)
+# endif
+#else
+# if (__GNUC__ >= 4) || defined(HAVE_GCC_VISIBILITY)
+# define FFTS_API __attribute__ ((visibility("default")))
+# else
+# define FFTS_API
+# endif
+#endif
+
#define POSITIVE_SIGN 1
#define NEGATIVE_SIGN -1
struct _ffts_plan_t;
typedef struct _ffts_plan_t ffts_plan_t;
-ffts_plan_t *ffts_init_1d(size_t N, int sign);
-ffts_plan_t *ffts_init_2d(size_t N1, size_t N2, int sign);
-ffts_plan_t *ffts_init_nd(int rank, size_t *Ns, int sign);
+FFTS_API ffts_plan_t*
+ffts_init_1d(size_t N, int sign);
+
+FFTS_API ffts_plan_t*
+ffts_init_2d(size_t N1, size_t N2, int sign);
+
+FFTS_API ffts_plan_t*
+ffts_init_nd(int rank, size_t *Ns, int sign);
/* For real transforms, sign == -1 implies a real-to-complex forwards tranform,
and sign == 1 implies a complex-to-real backwards transform.
The output of a real-to-complex transform is N/2+1 complex numbers,
where the redundant outputs have been omitted.
*/
-ffts_plan_t *ffts_init_1d_real(size_t N, int sign);
-ffts_plan_t *ffts_init_2d_real(size_t N1, size_t N2, int sign);
-ffts_plan_t *ffts_init_nd_real(int rank, size_t *Ns, int sign);
+FFTS_API ffts_plan_t*
+ffts_init_1d_real(size_t N, int sign);
+
+FFTS_API ffts_plan_t*
+ffts_init_2d_real(size_t N1, size_t N2, int sign);
+
+FFTS_API ffts_plan_t*
+ffts_init_nd_real(int rank, size_t *Ns, int sign);
+
+FFTS_API void
+ffts_execute(ffts_plan_t *p, const void *input, void *output);
-void ffts_execute(ffts_plan_t *p, const void *input, void *output);
-void ffts_free(ffts_plan_t *p);
+FFTS_API void
+ffts_free(ffts_plan_t *p);
#ifdef __cplusplus
}
OpenPOWER on IntegriCloud