widl: Include the version number in the __WIDL__ preprocessor definition.
authorRob Shearman <robertshearman@gmail.com>
Thu, 26 Mar 2009 13:31:25 +0000 (13:31 +0000)
committerAlexandre Julliard <julliard@winehq.org>
Thu, 26 Mar 2009 15:10:41 +0000 (16:10 +0100)
tools/widl/widl.c

index 62b7ff5d20bd89dd0ef5f7c38a4cd66b23375bde..cbc35b751758918dccad314a90462ff89c719a74 100644 (file)
@@ -196,6 +196,36 @@ static char *dup_basename_token(const char *name, const char *ext)
     return ret;
 }
 
+static void add_widl_version_define(void)
+{
+    unsigned int version;
+    const char *p = PACKAGE_VERSION;
+
+    /* major */
+    version = atoi(p) * 0x10000;
+    p = strchr(p, '.');
+
+    /* minor */
+    if (p)
+    {
+        version += atoi(p + 1) * 0x100;
+        p = strchr(p + 1, '.');
+    }
+
+    /* build */
+    if (p)
+        version += atoi(p + 1);
+
+    if (version != 0)
+    {
+        char version_str[11];
+        snprintf(version_str, sizeof(version_str), "0x%x", version);
+        wpp_add_define("__WIDL__", version_str);
+    }
+    else
+        wpp_add_define("__WIDL__", NULL);
+}
+
 /* clean things up when aborting on a signal */
 static void exit_on_signal( int sig )
 {
@@ -596,7 +626,7 @@ int main(int argc,char *argv[])
   if (do_client) client_token = dup_basename_token(client_name,"_c.c");
   if (do_server) server_token = dup_basename_token(server_name,"_s.c");
 
-  wpp_add_cmdline_define("__WIDL__");
+  add_widl_version_define();
 
   atexit(rm_tempfile);
   if (!no_preprocess)