Patches: Browse | Submit New | Admin

[#1486] have_enum_member for mkmf.rb

Date:
2005-02-11 16:47
Priority:
3
Submitted By:
Daniel Berger (djberg96)
Assigned To:
Nobuyoshi Nakada (nobu)
Category:
Build / Config / Packaging
State:
Closed
Summary:
have_enum_member for mkmf.rb

Detailed description
Certain headers, such as signal.h, use enum values instead of preprocessor constants.  However, these values are not
necessarily supported across platforms.  For example, the idtype_t enum in signal.h on Solaris 9 has a P_PROJID member
that is only defined on Solaris 8 or later.

To allow programmers to check for the presence of certain enum members, I propose a "have_enum_member" method
as follows:

--- mkmf.bak    Fri Feb 11 08:30:47 2005
+++ mkmf.rb     Fri Feb 11 09:33:47 2005
@@ -552,6 +552,23 @@
   end
 end
 
+def have_enum_member(type, member, header = nil, &b)
+  checking_for "#{type}.#{member}" do
+    if try_compile(<<"SRC", &b)
+#{COMMON_HEADERS}
+#{cpp_include(header)}
+/*top*/
+static #{type} t;
+int s = #{member};
+SRC
+      $defs.push(format("-DHAVE_ENUM_%s", member.upcase))
+      true
+    else
+      false
+    end
+  end
+end
+
 def have_type(type, header = nil, opt = "", &b)
   checking_for type do
     header = cpp_include(header)

This would then create a HAVE_ENUM_XXX preprocessor constant programmers could use within their extensions.

Regards,

Dan

Add A Comment: Notepad

Please login


Followup

Message
Date: 2007-09-21 21:35
Sender: Nobuyoshi Nakada 

have_const was added instead.

Attached Files:

Name Description Download
No Files Currently Attached

Changes:

Field Old Value Date By
status_idOpen2007-09-21 21:35nobu
close_date2007-09-21 21:352007-09-21 21:35nobu
resolution_idNone2007-09-21 21:35nobu
assigned_tonone2007-06-13 06:27zenspider
category_idCrypto / Digest / Compression2007-05-30 04:54zenspider
category_idMisc / Other Standard Library2007-05-30 04:19zenspider
category_idNone2007-05-30 03:50zenspider