aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/tool_setup.h25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/tool_setup.h b/src/tool_setup.h
index 648b0f226..677f6e5c9 100644
--- a/src/tool_setup.h
+++ b/src/tool_setup.h
@@ -24,10 +24,33 @@
#define CURL_NO_OLDIES
-#include <curl/curl.h> /* external interface */
+/*
+ * setup.h may define preprocessor macros such as _FILE_OFFSET_BITS and
+ * _LARGE_FILES in order to support files larger than 2 GB. On platforms
+ * where this happens it is mandatory that these macros are defined before
+ * any system header file is included, otherwise file handling function
+ * prototypes will be misdeclared and curl tool may not build properly;
+ * therefore we must include setup.h before curl.h when building curl.
+ */
#include "setup.h" /* from the lib directory */
+/*
+ * Undefine macros intended for libcurl internal use only.
+ */
+
+#undef CURL_HIDDEN_SYMBOLS
+
+/*
+ * curl tool certainly uses libcurl's external interface.
+ */
+
+#include <curl/curl.h> /* external interface */
+
+/*
+ * Platform specific stuff.
+ */
+
#if defined(macintosh) && defined(__MRC__)
# define main(x,y) curl_main(x,y)
#endif