summaryrefslogtreecommitdiff
path: root/ext/extmk.rb.in
diff options
context:
space:
mode:
authorYukihiro Matsumoto <matz@ruby-lang.org>1995-05-19 15:33:23 +0900
committerTakashi Kokubun <takashikkbn@gmail.com>2019-08-17 22:09:32 +0900
commit8bf1c909dc31fd4bcdc1488cda9fe89a62bc2830 (patch)
tree6899d116a280ba8f99f65e21fe9259706474c0aa /ext/extmk.rb.in
parentb2420d8ffa4d347a75efbbdc376f4ce65c0eb172 (diff)
version 0.76v0_76
https://cache.ruby-lang.org/pub/ruby/1.0/ruby-0.76.tar.gz Fri May 19 15:33:23 1995 Yukihiro Matsumoto <matz@ix-02> * version 0.76 Fri May 19 00:48:08 1995 Yukihiro Matsumoto (matz@dyna) * string.c (Fstr_each): イテレータブロック中で文字列の変更が行われ たかどうかをチェック.ポインタの値が変わっていれば例外を発生する. * ruby-mode.el: ruby-electric-braceの新設. Thu May 18 12:27:23 1995 Yukihiro Matsumoto <matz@ix-02> * string.c (Fstr_tr): trの置換対象に`\0'を含む時に正しく置換を行わ ないバグがあった.更に置換文字列をASCII順に指定しないと動作しな い問題もあった.結果としてtrを書き換えたので,copyrightの問題は 無くなった(と思う). * gc.c (gc): the_scopeをマークしていなかったので,ローカル変数が間 違って開放される場合があった. * gc.c (mark_locations_array): 若干の高速化. Mon May 15 11:43:49 1995 Yukihiro Matsumoto <matz@ix-02> * ext/extmk.rb.in: Dynamic Loadモジュールのコンパイル用チェックを 行うruby script.autoconfに近い感覚で使える.新しいモジュールを 提供したい人はextの下にディレクトリを作るだけで良い.必須のファ イルはファイル名の一覧を記録した`MANIFEST'というファイルのみ.必 要に応じて`depend'(ファイルの依存関係を記述するファイル gcc -MM の出力),`extconf.rb'(コンパイル用にライブラリと関数の存在チェッ クするファイル)を用意できる. * eval.c (rb_call): rubyメソッドの引数チェック時に未初期化の jmp_bufを使用していた. * parse.y: `or'と`and'の優先順位を同じにした. Wed May 3 18:21:36 1995 Yukihiro Matsumoto (matz@dyna) * dln.c: Linuxでは`__.SYMDEF/'であった. * dln.c: system callのエラーチェックを忘れていた. Wed Apr 26 09:50:56 1995 Yukihiro Matsumoto (matz@ix-02) * parse.y: イテレータブロックの変数宣言を`|'で括るようにした.これ でイテレータ変数がない時は宣言そのものを省略できる.文法の変更は 久しぶりだ. Tue Apr 25 12:04:17 1995 Yukihiro Matsumoto (matz@ix-02) * eval.c(require): loadからダイナミックロードの機能を移してきた. さらに拡張子の補完機能を追加してユーザがdln/dlopenの差を意識する 必要のないようにした. * string.c(sub,sub): イテレータとしても動作するように. * object.c: init_object -> initialize. Mon Apr 24 14:22:39 1995 Yukihiro Matsumoto (matz@ix-02) * NEWS-OS 3.4対応 * io.c: Solarisのstdioの動作が違うようだ.signalでEOFを返してしま う….perlでも同様の問題がある. Fri Apr 21 20:04:39 1995 Yukihiro Matsumoto (matz@ix-02) * version 0.75 * signal.c: trapがなくなっていた.うーむ. * configure: Solaris 2.3対応. * io.c: #elifのないcppもある. * dir.c: autoconf 2.xへの対応が不十分 Thu Apr 20 12:31:24 1995 Yukihiro Matsumoto (matz@ix-02) * version 0.74 * env.h, gc.c, regex.c: IRIXへの移植対応 * configure: picを生成するoptionの検出のため,システムタイプをチェッ クするように. Tue Apr 18 19:08:17 1995 Yukihiro Matsumoto (matz@ix-02) * gc.c(xrealloc): ptr=nilの時,malloc()と同じ働きを * array.c(astore): 空の配列の0番目の要素に代入するとsize=0で realloc()を呼んでいた. * configure, glob.c: Solaris 2.xでコンパイルできるように
Diffstat (limited to 'ext/extmk.rb.in')
-rw-r--r--ext/extmk.rb.in177
1 files changed, 177 insertions, 0 deletions
diff --git a/ext/extmk.rb.in b/ext/extmk.rb.in
new file mode 100644
index 0000000000..25bf6b9027
--- /dev/null
+++ b/ext/extmk.rb.in
@@ -0,0 +1,177 @@
+#! /usr/local/bin/ruby
+
+def older(file1, file2)
+ if !File.exists(file1) then
+ return TRUE
+ end
+ if !File.exists(file2) then
+ return FALSE
+ end
+ if File.mtime(file1) < File.mtime(file2)
+ return TRUE
+ end
+ return FALSE
+end
+
+if !File.exists("./Makefile") ||
+ older("./Makefile", "../extmk.rb") ||
+ older("./Makefile", "./extconf.rb") then
+
+ LINK = "@CC@ -o conftest @CFLAGS@ @LDFLAGS@ conftest.c %s > /dev/null 2>&1"
+ $defs = []
+
+ def have_library(func, lib)
+ cfile = open("conftest.c", "w")
+ printf cfile, "\
+int main() { return 0; }
+int t() { %s(); return 0; }
+", func
+ cfile.close
+
+ begin
+ if system(format(LINK, "-l" + lib)) != 0
+ return FALSE
+ end
+ ensure
+ system "/bin/rm -f conftest*"
+ end
+
+ if $libs
+ $libs = $libs + " -l" + lib
+ else
+ $libs = "-l" + lib
+ end
+ $defs.push(format("-DHAVE_LIB%s", lib.toupper))
+ return TRUE
+ end
+
+ def have_func(func)
+
+ cfile = open("conftest.c", "w")
+ printf cfile, "\
+char %s();
+int main() { return 0; }
+int t() { %s(); return 0; }
+", func, func
+ cfile.close
+
+ libs = $libs
+ libs = "" if libs == nil
+
+ begin
+ if system(format(LINK, libs)) != 0
+ return FALSE
+ end
+ ensure
+ system "/bin/rm -f conftest*"
+ end
+ $defs.push(format("-DHAVE_%s", func.toupper))
+ return TRUE
+
+ end
+
+ def create_header()
+ if $defs.length > 0
+ hfile = open("extconf.h", "w")
+ for line in $defs
+ line =~ /^-D(.*)/
+ printf hfile, "#define %s 1\n", $1
+ end
+ hfile.close
+ end
+ end
+
+ def create_makefile(target)
+ mfile = open("Makefile", "w")
+ printf mfile, "\
+SHELL = /bin/sh
+
+#### Start of system configuration section. ####
+
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+CC = @CC@
+
+CFLAGS = -I../.. @CCDLFLAGS@ @CFLAGS@ %s
+LDDLFLAGS = @LDDLFLAGS@
+", $defs.join(" ")
+
+ printf mfile, "\
+
+prefix = @prefix@
+binprefix =
+exec_prefix = @exec_prefix@
+bindir = $(exec_prefix)/bin
+@SET_MAKE@
+
+#### End of system configuration section. ####
+"
+ printf mfile, "OBJS = "
+ if !$objs then
+ $objs = Dir["*.c"]
+ for f in $objs
+ f.sub(/\.c$/, ".o")
+ end
+ end
+ printf mfile, $objs.join(" ")
+ printf mfile, "\n"
+
+ printf mfile, "\
+TARGET = %s.@DLEXT@
+
+all: $(TARGET)
+
+clean:; @rm -f *.o *.so
+ @rm -f Makefile extconf.h conftest.*
+ @rm -f core ruby *~
+
+realclean: clean
+", target
+
+ if "@DLEXT@" == "so"
+ printf mfile, "\
+.SUFFIXES: .so $(SUFFIXES)
+
+$(TARGET).so: $(OBJS)
+ ld $(LDDLFLAGS) -o $*.so $(OBJS)
+"
+ elsif !File.exists(target + ".c")
+ printf mfile, "\
+$(TARGET).o: $(OBJS)
+ ld $(LDDLFLAGS) -r $*.o $(OBJS)
+"
+ end
+
+ if File.exists("depend")
+ dfile = open("depend", "r")
+ printf mfile, "###\n"
+ while line = dfile.gets()
+ printf mfile, "%s", line
+ end
+ dfile.close
+ end
+ mfile.close
+ end
+
+ if File.exists("configure") &&
+ (!File.exists("config.status") ||
+ File.mtime("config.status") < File.mtime("configure")) then
+
+ system "./configure"
+
+ end
+
+ if File.exists("extconf.rb")
+ load "extconf.rb"
+ else
+ Dir.pwd =~ /[^\/]+$/
+ create_makefile($&);
+ end
+
+end
+system "make all" if File.exists("./Makefile")
+
+#Local variables:
+# mode: ruby
+#end: