1 /* simgrid_config.h - Results of the configure made visible to user code */
3 /* Copyright (c) 2009-2012. Da SimGrid team. All rights reserved. */
5 /* This program is free software; you can redistribute it and/or modify it
6 * under the terms of the license (GNU LGPL) which comes with this package. */
8 #include "xbt/misc.h" /* XBT_PUBLIC */
9 #include "xbt/dynar.h" /* sg_commandline */
11 #ifndef SIMGRID_PUBLIC_CONFIG_H
12 #define SIMGRID_PUBLIC_CONFIG_H
16 /** Define the version numbers of the used header files.
17 sg_version() can be used to retrieve the version of the dynamic library.
18 But actually, if these numbers don't match, SimGrid refuses to start (so you shouldn't have to care about sg_version() yourself) */
20 #define SIMGRID_VERSION_MAJOR @SIMGRID_VERSION_MAJOR@
21 #define SIMGRID_VERSION_MINOR @SIMGRID_VERSION_MINOR@
22 #define SIMGRID_VERSION_PATCH @SIMGRID_VERSION_PATCH@
24 /* Version X.Y.Z will get version number XYZ: all digits concatenated without dots
25 * (with Y and Z must be on two positions)*/
27 #define MAKE_SIMGRID_VERSION(major, minor, patch) \
28 (100UL * (100UL * (major) + (minor)) + (patch))
29 #define SIMGRID_VERSION MAKE_SIMGRID_VERSION(SIMGRID_VERSION_MAJOR, \
30 SIMGRID_VERSION_MINOR, \
31 SIMGRID_VERSION_PATCH)
33 /** Retrieves the version numbers of the used dynamic library (so, DLL or dynlib) , while
34 SIMGRID_VERSION_MAJOR and friends give the version numbers of the used header files */
35 XBT_PUBLIC(void) sg_version(int *major,int *minor,int *patch);
37 /** Contains all the parameters we got from the command line */
38 XBT_PUBLIC_DATA(xbt_dynar_t) sg_cmdline;
40 /* take care of DLL usage madness */
42 #ifdef _XBT_DLL_EXPORT
47 #ifdef _XBT_DLL_STATIC
58 #cmakedefine _XBT_WIN32 @_XBT_WIN32@ /*this variable is set if it is a windows platform*/
59 #cmakedefine _WIN32 @_WIN32@ /*this variable is set if it is a 32 bits windows platform*/
60 #cmakedefine _WIN64 @_WIN64@ /*this variable is set if it is a 64 bits windows platform*/
61 #cmakedefine __VISUALC__ @__VISUALC__@
62 #cmakedefine __BORLANDC__ @__BORLANDC__@
65 #cmakedefine __GNUC__ @__GNUC__@
70 /* Define to 1 if you have the `mmap' function. */
71 #cmakedefine HAVE_MMAP @HAVE_MMAP@
74 #undef SIMGRID_NEED_GETLINE
75 #undef SIMGRID_NEED_ASPRINTF
76 #undef SIMGRID_NEED_VASPRINTF
78 @simgrid_need_asprintf@
79 @simgrid_need_vasprintf@
81 #include <stdio.h> /* FILE, getline if it exists */
83 /* Use that config to declare missing elements */
84 #ifdef SIMGRID_NEED_GETLINE
85 #include <stdlib.h> /* size_t */
86 XBT_PUBLIC(long) getline(char **lineptr, size_t * n, FILE * stream);
91 /* snprintf related functions */
92 /** @addtogroup XBT_str
94 /** @brief print to allocated string (reimplemented when not provided by the system)
96 * The functions asprintf() and vasprintf() are analogues of
97 * sprintf() and vsprintf(), except that they allocate a string large
98 * enough to hold the output including the terminating null byte, and
99 * return a pointer to it via the first parameter. This pointer
100 * should be passed to free(3) to release the allocated storage when
101 * it is no longer needed.
103 #if defined(SIMGRID_NEED_ASPRINTF)||defined(DOXYGEN)
104 XBT_PUBLIC(int) asprintf(char **ptr, const char *fmt, /*args */
105 ...) _XBT_GNUC_PRINTF(2, 3);
107 /** @brief print to allocated string (reimplemented when not provided by the system)
111 #if defined(SIMGRID_NEED_VASPRINTF)||defined(DOXYGEN)
112 XBT_PUBLIC(int) vasprintf(char **ptr, const char *fmt, va_list ap);
114 /** @brief print to allocated string
116 * Works just like vasprintf(), but returns a pointer to the newly
117 * created string, or aborts on error.
119 XBT_PUBLIC(char *) bvprintf(const char *fmt, va_list ap);
120 /** @brief print to allocated string
122 * Works just like asprintf(), but returns a pointer to the newly
123 * created string, or aborts on error.
125 XBT_PUBLIC(char *) bprintf(const char *fmt, ...) _XBT_GNUC_PRINTF(1, 2);
128 /* Whether mallocators were enabled in ccmake or not. */
129 #define MALLOCATOR_COMPILED_IN @MALLOCATOR_IS_WANTED@
131 /* Define if xbt contexts are based on our threads implementation or not */
132 #cmakedefine CONTEXT_THREADS @CONTEXT_THREADS@
134 /* Tracing SimGrid */
135 #cmakedefine HAVE_TRACING @HAVE_TRACING@
138 #cmakedefine HAVE_JEDULE @HAVE_JEDULE@
140 /* Tracking of latency bound */
141 #cmakedefine HAVE_LATENCY_BOUND_TRACKING @HAVE_LATENCY_BOUND_TRACKING@
143 /* If __thread is available */
144 #cmakedefine HAVE_THREAD_LOCAL_STORAGE @HAVE_THREAD_LOCAL_STORAGE@
146 /* If Model-Checking support was requested */
147 #cmakedefine HAVE_MC @HAVE_MC@
150 #endif /* SIMGRID_PUBLIC_CONFIG_H */