なかだです。

1.8 mswinで、openglのコンパイルに失敗するという話が来ています。
どうもConfig::MAKEFILE_CONFIGを展開しているのが一因のようですが、
必要性が分かりません。また、ソースを見るとGL/gl.hなどを直接
#includeしているようなので、cygwinとmswin32だけheaderを分けてい
ること、さらにいえばmy_have_libraryでヘッダを指定している理由も
よく分かりません。


Index: opengl/extconf.rb =================================================================== RCS file: /cvs/ruby/src/lib/opengl/extconf.rb,v retrieving revision 1.12 diff -u -2 -p -r1.12 extconf.rb --- opengl/extconf.rb 4 Aug 2003 16:04:29 -0000 1.12 +++ opengl/extconf.rb 6 Aug 2003 11:19:42 -0000 @@ -4,6 +4,4 @@ # -require "rbconfig" -Config::CONFIG.each do |k,v| Config::MAKEFILE_CONFIG[k] = v.dup end require "mkmf" @@ -37,59 +35,45 @@ File.unlink("Makefile.glut") if (FileTes header = nil -if (/cygwin/ =~ PLATFORM) - $CFLAGS="-DWIN32" - gl_libname = "opengl32" - glu_libname = "glu32" - glut_libname = "glut32" - header=["GL/gl.h", "GL/glu.h", "GL/glut.h"] -elsif (/mswin32/ =~ PLATFORM) - $CFLAGS="-DWIN32" +if macro_defined?("_WIN32", "") + $defs << "-DWIN32" gl_libname = "opengl32" glu_libname = "glu32" glut_libname = "glut32" else - $CFLAGS += " -I." + $CPPFLAGS += " -I." - dir_config("x11", "/usr/X11R6") + idir, ldir = dir_config("x11", "/usr/X11R6") - $libs = append_library($libs, "Xmu") - $libs = append_library($libs, "X11") + have_library("Xi", "XAllowDeviceEvents") + have_library("Xext", "XMITMiscGetBugMode") + have_library("Xmu", "XmuAddCloseDisplayHook") + have_library("X11", "XOpenDisplay") gl_libname = "GL" glu_libname = "GLU" glut_libname = "glut" end +dir_config("opengl", idir, ldir) +dir_config("glut", idir, ldir) + +def have_ogl_library(lib, func) + have_library(lib, func) || have_library("Mesa"+lib, func) +end $objs = ["glu.o", "ogl.o", "rbogl.o"] #have_library("pthread", "pthread_create") -(my_have_library(gl_libname, 'glEnd', header) || my_have_library("Mesa"+gl_libname, 'glEnd', header)) && - (my_have_library(glu_libname, 'gluNewNurbsRenderer', header) || my_have_library("Mesa"+glu_libname, 'gluNewNurbsRenderer', header)) && - create_makefile("opengl") -if (FileTest.exist? "Makefile") - open("Makefile") {|f| - open("Makefile.ogl", "w") {|wfile| - wfile.write(f.read) - } - } - File.unlink("Makefile") +if have_ogl_library(gl_libname, 'glEnd') && have_ogl_library(glu_libname, 'gluNewNurbsRenderer') + create_makefile("opengl") + File.rename("Makefile", "Makefile.ogl") modules = modules + "opengl.#{CONFIG['DLEXT']}" ogl_flg = true else - p "can't create OpenGL module!" + puts "can't create OpenGL module!" exit 1 end $objs = ["glut.o"] -my_have_library("Xi", "XAllowDeviceEvents") && - my_have_library("Xext", "XMITMiscGetBugMode") && - my_have_library("Xmu", "XmuAddCloseDisplayHook") -my_have_library(glut_libname, 'glutMainLoop', header) && - create_makefile("glut") -if (FileTest.exist? "Makefile") - open("Makefile") {|f| - open("Makefile.glut", "w") {|wfile| - wfile.write(f.read) - } - } - File.unlink("Makefile") +if have_library(glut_libname, 'glutMainLoop') + create_makefile("glut") + File.rename("Makefile", "Makefile.glut") modules = "glut.#{CONFIG['DLEXT']} " + modules glut_flg = true @@ -97,22 +81,27 @@ end open("Makefile", "w") {|f| + v = $nmake ? '{$(srcdir)}' : '' f.write <<"MAKEFILE" SHELL = /bin/sh +srcdir = #{$srcdir} +VPATH = $(srcdir) + all: #{modules} -opengl.#{CONFIG['DLEXT']}: rbogl.c ogl.c glu.c rbogl.h +opengl.#{CONFIG['DLEXT']}: #{v}rbogl.c #{v}ogl.c #{v}glu.c #{v}rbogl.h @echo Now Making opengl extend module @$(MAKE) -f Makefile.ogl -glut.#{CONFIG['DLEXT']}: glut.c +glut.#{CONFIG['DLEXT']}: #{v}glut.c @echo Now Making glut extend module @$(MAKE) -f Makefile.glut clean: - @rm -f *.o *.so *.sl *.a - @rm -f $(TARGET).lib $(TARGET).exp - @rm -f core ruby$(EXEEXT) *~ - @rm -f Makefile.ogl Makefile.glut - @rm -f Makefile extconf.h conftest.* +#{"\t@$(MAKE) -f Makefile.ogl clean" if (ogl_flg)} +#{"\t@$(MAKE) -f Makefile.glut clean" if (glut_flg)} + +distclean: +#{"\t@$(MAKE) -f Makefile.ogl distclean" if (ogl_flg)} +#{"\t@$(MAKE) -f Makefile.glut distclean" if (glut_flg)} install: #{modules}
-- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦