summaryrefslogtreecommitdiff
path: root/ext/tcltklib/extconf.rb
blob: 26e7fe7b092e721eb63224d8ac153286af48f61f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# extconf.rb for tcltklib

have_library("socket", "socket")
have_library("nsl", "gethostbyname")

def search_file(var, include, *path)
  pwd = Dir.getwd
  begin
    for i in path.reverse!
      dir = Dir[i]
      for path in dir
	Dir.chdir path
	files = Dir[include]
	if files.size > 0
	  var << path
	  return files.pop
	end
      end
    end
  ensure
    Dir.chdir pwd
  end
end

$includes = []
search_file($includes, 
	    "tcl.h",
	    "/usr/include/tcl*",
	    "/usr/include",
	    "/usr/local/include/tcl*",
	    "/usr/local/include")
search_file($includes, 
	    "tk.h",
	    "/usr/include/tk*",
	    "/usr/include",
	    "/usr/local/include/tk*",
	    "/usr/local/include")
search_file($includes, 
	    "X11/Xlib.h",
	    "/usr/include",
	    "/usr/X11*/include",
	    "/usr/include",
	    "/usr/X11*/include")

$CFLAGS = "-Wall " + $includes.collect{|path| "-I" + path}.join(" ")

$libraries = []
tcllibfile = search_file($libraries,
			 "libtcl{,7*,8*}.{a,so}",
			 "/usr/lib",
			 "/usr/local/lib")
if tcllibfile
  tcllibfile.sub!(/^lib/, '')
  tcllibfile.sub!(/\.(a|so)$/, '')
end
tklibfile =  search_file($libraries,
			 "libtk{,4*,8*}.{a,so}",
			 "/usr/lib",
			 "/usr/local/lib")
if tklibfile
  tklibfile.sub!(/^lib/, '')
  tklibfile.sub!(/\.(a|so)$/, '')
end
search_file($libraries,
	    "libX11.{a,so}",
	    "/usr/lib",
	    "/usr/X11*/lib")

$LDFLAGS = $libraries.collect{|path| "-L" + path}.join(" ")

have_library("dl", "dlopen")
if have_header("tcl.h") &&
    have_header("tk.h") &&
    have_library("X11", "XOpenDisplay") &&
    have_library("m", "log") &&
    have_library(tcllibfile, "Tcl_FindExecutable") &&
    have_library(tklibfile, "Tk_Init")
  create_makefile("tcltklib")
end