# Fail to build extension libraries that includes some ruby header files

**URL:** <https://www.ruby-forum.com/t/fail-to-build-extension-libraries-that-includes-some-ruby-header-files/145477>\
**Category:** Development\
**Created:** [August 10, 2008, 2:37pm UTC](https://www.ruby-forum.com/t/fail-to-build-extension-libraries-that-includes-some-ruby-header-files/145477 "2008-08-10T14:37:55Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [August 10, 2008, 2:37pm UTC](https://www.ruby-forum.com/t/fail-to-build-extension-libraries-that-includes-some-ruby-header-files/145477/1 "2008-08-10T14:37:55Z")

</div>

e$B1sF#$G$9!#e(B

1.9 e$B$G$Oe(B st.h e$B$de(B util.h e$B$J$I$,e(B ruby/st.h  
e$B$J$I$K0\F0$7$F$$$k$?$a$K!"e(B  
#include “st.h” e$B$H$7$F$$$k3HD%%i%$%V%i%j$,8.JB$\_%S%k%I$G$-$^$;$s!#e(B

e$B0\F0$7$?M}M3$rCN$i$J$$$N$G$9$,!"$3$l$O3HD%%i%$%V%i%jB&$GBP=h$9$Y$-e(B  
e$BLdBj$G$7$g$&$+!#$b$7$=$&$@$H$7$?$i!"e(B1.8 e$B$G$be(B 1.9  
e$B$G$b%S%k%I$G$-$ke(B  
e$B3HD%%i%$%V%i%j$O$I$&$d$C$?$i=q$1$k$G$7$g$&$+!#e(B

---

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [August 10, 2008, 3:37pm UTC](https://www.ruby-forum.com/t/fail-to-build-extension-libraries-that-includes-some-ruby-header-files/145477/2 "2008-08-10T15:37:37Z")

</div>

e$B:XF#$H?=$7$^$9!#e(B

On Sun, 10 Aug 2008 21:34:54 +0900  
“Yusuke ENDOH” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> e$B0\F0$7$?M}M3$rCN$i$J$$$N$G$9$,!"$3$l$O3HD%%i%$%V%i%jB&$GBP=h$9$Y$-e(B  
> e$BLdBj$G$7$g$&$+!#$b$7$=$&$@$H$7$?$i!"e(B1.8 e$B$G$be(B 1.9 e$B$G$b%S%k%I$G$-$ke(B  
> e$B3HD%%i%$%V%i%j$O$I$&$d$C$?$i=q$1$k$G$7$g$&$+!#e(B

e$B\<+J,$b3HD%%i%$%V%i%j$r=q$$$F$\*$j!"0l;~4|G:$s$G$?$N$G$9$,!“e(B  
e$B!&e(Bextconf.rbe$B$NCf!“e(B\<ruby/ruby.h\>e$B$,$”$k$+$I$&$+$Ge(B1.9e$B$+H]$+$r%A%‘%C%/$7$Fe(B  
e$B!&%=!\<%9Cf$Ge(B#ifdef HAVE\_RUBY\_RUBY\_H  
e$B$9$l$P$$$$$N$G$O$J$$$G$7$g$&$+!#e(B  
(HAVE\_RUBY\_UTIL\_He$B$J$I$r8D!9$K%A%’%C%/$9$kI,MW$^$G$O$J$$$N$G$O!”$H$$$&H=CG$G$9e(B)

extconf.rb:  
have\_header(“ruby/ruby.h”)

Ce$B%=!\<%9e(B:  
#ifdef HAVE\_RUBY\_RUBY\_H

# include \<ruby/util.h\>

# include \<ruby/st.h\>

#else

# include \<util.h\>

# include \<st.h\>

#endif

e$B$^$?JL2r$H$7$F$O!"e(Bext/dbme$B$,$d$C$F$$$k$h$&$K!“e(Bextconf.rbe$B$Ge(B$defse$B$KDj?t$rDI2C$9$ke(B  
e$B;v$G%X%C%@L\>$rEO$9$d$jJ}$b$”$k$H;W$$$^$9!#e(B

extconf.rb:  
if have\_header(“ruby/ruby.h”)  
util\_hdr, st\_hdr = “\<ruby/util.h\>”, “\<ruby/st.h\>”  
else  
util\_hdr, st\_hdr = “\<util.h\>”, “\<st.h\>”  
end  
$defs \<\< %(-DRUBY\_UTIL\_HDR=‘#{util\_hdr}’) \<\<  
%(-DRUBY\_ST\_HDR=‘#{st\_hdr}’)

Ce$B%=!\<%9e(B:  
#include RUBY\_UTIL\_HDR  
#include RUBY\_ST\_HDR

e$B$H$$$&46$8$G!#e(B

e$B\<+J,$OA0\<T$,9%$\_$G$9$,!“B\>$K?d\>)$5$l$kJ}K!$,$”$l$P!"\<+J,$b65$($F$$$?$@$-$?$$$G$9!#e(B

---

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [August 10, 2008, 4:02pm UTC](https://www.ruby-forum.com/t/fail-to-build-extension-libraries-that-includes-some-ruby-header-files/145477/3 "2008-08-10T16:02:46Z")

</div>

e$B$J$+$@$G$9!#e(B

At Sun, 10 Aug 2008 21:34:54 +0900,  
Yusuke ENDOH wrote in [ruby-dev:35811]:

> 1.9 e$B$G$Oe(B st.h e$B$de(B util.h e$B$J$I$,e(B ruby/st.h e$B$J$I$K0\F0$7$F$$$k$?$a$K!"e(B  
> #include “st.h” e$B$H$7$F$$$k3HD%%i%$%V%i%j$,8.JB$\_%S%k%I$G$-$^$;$s!#e(B
> 
> e$B0\F0$7$?M}M3$rCN$i$J$$$N$G$9$,!"$3$l$O3HD%%i%$%V%i%jB&$GBP=h$9$Y$-e(B  
> e$BLdBj$G$7$g$&$+!#$b$7$=$&$@$H$7$?$i!"e(B1.8 e$B$G$be(B 1.9 e$B$G$b%S%k%I$G$-$ke(B  
> e$B3HD%%i%$%V%i%j$O$I$&$d$C$?$i=q$1$k$G$7$g$&$+!#e(B

util.he$B$de(Bconfig.he$B$J$I!"$$$+$K$bB\>$H$+$V$j$=$&$J$b$N$rJ,N%$9$k$?$ae(B  
e$B$G$9!#e(B

At Sun, 10 Aug 2008 22:32:49 +0900,  
Tadashi S. wrote in [ruby-dev:35812]:

> e$B\<+J,$b3HD%%i%$%V%i%j$r=q$$$F$\*$j!"0l;~4|G:$s$G$?$N$G$9$,!"e(B  
> e$B!&e(Bextconf.rbe$B$NCf!“e(B\<ruby/ruby.h\>e$B$,$”$k$+$I$&$+$Ge(B1.9e$B$+H]$+$r%A%’%C%/$7$Fe(B

1.9e$B$Ne(Bruby.he$B$G$O!"e(BHAVE\_RUBY\_RUBY\_He$B$J$I$,Dj5A:Q$\_$G$9!#e(B

e$B$3$s$J$H$3$m$G$I$&$G$7$g$&$+!#e(Binclude/ruby/backwarde$B$Oe(B2.0e$B$^$G$K$Oe(B  
e$B:o=|$9$k$H$$$&$3$H$G!#e(B

# Index: lib/mkmf.rb

— lib/mkmf.rb (revision 18470)  
+++ lib/mkmf.rb (working copy)  
@@ -1758,5 +1758,7 @@ def init\_mkmf(config = CONFIG)  
$CPPFLAGS = with\_config(“cppflags”, arg\_config(“CPPFLAGS”,  
config[“CPPFLAGS”])).dup  
$LDFLAGS = with\_config(“ldflags”, arg\_config(“LDFLAGS”,  
config[“LDFLAGS”])).dup

- $INCFLAGS = “-I$(arch\_hdrdir) -I$(hdrdir) -I$(srcdir)”

- $INCFLAGS = “-I$(arch\_hdrdir)”
- $INCFLAGS \<\< " -I$(hdrdir)/ruby/backward" unless $extmk
- $INCFLAGS \<\< " -I$(hdrdir) -I$(srcdir)"  
$DLDFLAGS = with\_config(“dldflags”, arg\_config(“DLDFLAGS”,  
config[“DLDFLAGS”])).dup  
$LIBEXT = config[‘LIBEXT’].dup  
Index: include/ruby/backward/util.h  
===================================================================  
— include/ruby/backward/util.h (revision 0)  
+++ include/ruby/backward/util.h (revision 0)  
@@ -0,0 +1,6 @@  
+#if defined **GNUC**  
+#warning use “ruby/util.h” instead bare “util.h”  
+#elif defined \_MSC\_VER  
+#pragma message(“warning: use “ruby/util.h” instead bare “util.h””)  
+#endif  
+#include “…/…/ruby/util.h”

Property changes on: include/ruby/backward/util.h

* * *

Name: svn:keywords

- Author Id Revision  
Name: svn:eol-style
- LF

# Index: include/ruby/backward/st.h

— include/ruby/backward/st.h (revision 0)  
+++ include/ruby/backward/st.h (revision 0)  
@@ -0,0 +1,6 @@  
+#if defined **GNUC**  
+#warning use “ruby/st.h” instead bare “st.h”  
+#elif defined \_MSC\_VER  
+#pragma message(“warning: use “ruby/st.h” instead bare “st.h””)  
+#endif  
+#include “ruby/st.h”

Property changes on: include/ruby/backward/st.h

---

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [August 10, 2008, 7:40pm UTC](https://www.ruby-forum.com/t/fail-to-build-extension-libraries-that-includes-some-ruby-header-files/145477/4 "2008-08-10T19:40:37Z")

</div>

e$B1sF#$G$9!#e(B

2008/08/10 22:59 Nobuyoshi N. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> util.he$B$de(Bconfig.he$B$J$I!"$$$+$K$bB\>$H$+$V$j$=$&$J$b$N$rJ,N%$9$k$?$ae(B  
> e$B$G$9!#e(B

e$B$&!\<$s!"$J$k$[$I!#e(B

> At Sun, 10 Aug 2008 22:32:49 +0900,  
> Tadashi S. wrote in [ruby-dev:35812]:
> 
> > e$B\<+J,$b3HD%%i%$%V%i%j$r=q$$$F$\*$j!"0l;~4|G:$s$G$?$N$G$9$,!"e(B  
> > e$B!&e(Bextconf.rbe$B$NCf!“e(B\<ruby/ruby.h\>e$B$,$”$k$+$I$&$+$Ge(B1.9e$B$+H]$+$r%A%'%C%/$7$Fe(B

e$B$U!\<$`!"$J$k$[$I!#e(B

> e$B$3$s$J$H$3$m$G$I$&$G$7$g$&$+!#e(Binclude/ruby/backwarde$B$Oe(B2.0e$B$^$G$K$Oe(B  
> e$B:o=|$9$k$H$$$&$3$H$G!#e(B

e$B$I$&$;=\>Mh$N3HD%%i%$%V%i%j$r=$@5$J$7$Ge(B 1.9  
e$B$G;H$($k2DG=@-$ODc$$$N$G!“e(B  
e$B0l;~E\*$J8\_49AX$O$”$C$F$b$J$/$F$b$$$$$+$J$!!"$H$$$&5$;}$A$G$9!#e(B

# e$B$9$4$/QkFaE\*$K9M$($k$H!“$3$N%Q%C%A$r$”$F$k$HL$NA0$Ne(B rcairo

e$B$,e(B

# e$B%S%k%I$G$-$k$h$&$K$J$k$N$G!"8D?ME\*$K$O4r$7$$e(B

---

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [August 10, 2008, 10:43pm UTC](https://www.ruby-forum.com/t/fail-to-build-extension-libraries-that-includes-some-ruby-header-files/145477/5 "2008-08-10T22:43:15Z")

</div>

e$B?\F#$G$9!#e(B

2008/08/11 2:37 Yusuke ENDOH [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> # e$B$9$4$/QkFaE\*$K9M$($k$H!“$3$N%Q%C%A$r$”$F$k$HL$NA0$Ne(B rcairo e$B$,e(B
> 
> # e$B%S%k%I$G$-$k$h$&$K$J$k$N$G!"8D?ME\*$K$O4r$7$$e(B

e$B0l1~!"e(BHEADe$B$G$Oe(B1.9e$B$G$b%S%k%I$G$-$k$h$&$K$J$C$F$$$F!"6a$$$&$A$Ke(B  
e$B%j%j!\<%9$9$kM=Dj$G$9!#e(Bextconf.rbe$B$Ge(Bruby/st.he$B$r%A%'%C%/$7$F$$$^$9!#e(B

---

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [August 11, 2008, 2:58am UTC](https://www.ruby-forum.com/t/fail-to-build-extension-libraries-that-includes-some-ruby-header-files/145477/6 "2008-08-11T02:58:16Z")

</div>

e$B:XF#$H?=$7$^$9!#e(B

On Sun, 10 Aug 2008 22:59:51 +0900  
Nobuyoshi N. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> At Sun, 10 Aug 2008 22:32:49 +0900,  
> Tadashi S. wrote in [ruby-dev:35812]:
> 
> > e$B\<+J,$b3HD%%i%$%V%i%j$r=q$$$F$\*$j!"0l;~4|G:$s$G$?$N$G$9$,!"e(B  
> > e$B!&e(Bextconf.rbe$B$NCf!“e(B\<ruby/ruby.h\>e$B$,$”$k$+$I$&$+$Ge(B1.9e$B$+H]$+$r%A%'%C%/$7$Fe(B
> 
> 1.9e$B$Ne(Bruby.he$B$G$O!"e(BHAVE\_RUBY\_RUBY\_He$B$J$I$,Dj5A:Q$\_$G$9!#e(B

e$B$J$k$[$I!"$=$&$G$9$+!#\<+J,$Oe(B1.9e$B0J9\_!"e(B\<ruby/ruby.h\>e$B$re(Bincludee$B$9$k$N$,?d\>)$J$N$+$He(B  
(e$B%5%$%:$r$\_$F\>!\<j$Ke(B)e$B;W$$9~$s$G$$$^$7$?!#e(B

e$B$G$O\<+J,$NNc$G$O!“e(B1.8e$B$G$be(B1.9e$B$G$b%S%k%I$G$-$k%=!\<%9$K$O!”$3$s$J46$8$NJ\*$,e(B  
e$BA[Dj$5$l$k$N$G$7$g$&$+!#e(B

extconf.rb: e$BDI5-$J$7e(B

Ce$B%=!\<%9e(B:  
#include \<ruby.h\> /\* e$B$I$C$A$K$b$"$ke(B _/  
 #ifdef HAVE\_RUBY\_RUBY\_H /_ for 1.9 \*/

# include \<ruby/util.h\>

# include \<ruby/st.h\>

#else /\* for 1.8 \*/

# include \<util.h\>

# include \<st.h\>

#endif

e$B$=$l$H$b!“B\>$Ne(BHAVE\_RUBY\_UTIL\_He$B$J$I$r8DJL$Ke(B#ifdefe$B$9$kI,MW@-e(B  
and/or e$B%a%j%C%H$,e(B  
e$B$”$k$N$G$7$g$&$+!#e(B
