ffi: generate-shim no longer produces -const.bin.
authorMatt Birkholz <matt@birkholz.chandler.az.us>
Mon, 9 Sep 2013 19:57:16 +0000 (12:57 -0700)
committerMatt Birkholz <matt@birkholz.chandler.az.us>
Mon, 9 Sep 2013 19:57:16 +0000 (12:57 -0700)
Some -const.c files require library-specific cc and ld flags, so
generate-shim cannot work the whole process.  Re-introduced the "4
tedious little rules" that compile, link and execute the -const
program, and fasdump the resulting -const.scm.

src/blowfish/Makefile.in
src/ffi/build.scm.in
src/gdbm/Makefile
src/md5/Makefile.in
src/mhash/Makefile.in
src/mhash/README
src/runtime/ffi.scm
src/runtime/runtime.pkg

index 5e98b8cbced73e8294cdc45500a16057d8cdb0ef..63629147ca23d1cfbd80e93b58c4ed06e6e5bec7 100644 (file)
@@ -24,25 +24,24 @@ MIT_SCHEME_EXE = mit-scheme
 EXE = '$(MIT_SCHEME_EXE)' --batch-mode
 
 CFLAGS = @CFLAGS@
-CPPFLAGS = @CPPFLAGS@ -I. -I$(srcdir)
+CPPFLAGS = @CPPFLAGS@
 LDFLAGS = @LDFLAGS@
 LIBS = @LIBS@
 
-all: blowfish-shim.so
+all: blowfish-shim.so blowfish-types.bin blowfish-const.bin
        echo '(load "compile")' | $(EXE)
 
-check: all
+check:
        echo '(load "check")' | $(EXE)
 
-install: all
+install:
        echo '(install-shim "blowfish")' | $(EXE) -- *.com *.bci *.pkd make.scm
 
 clean:
        rm -f blowfish-const.scm blowfish-const blowfish-const.c
        rm -f blowfish-shim.c
        rm -f blowfish-*.crf blowfish-*.fre blowfish-*.pkd
-       rm -f *.o *.so *.bin *.ext *.com *.bci
-       rm -f *.moc *.fni *-init.c *-init.h *-init.o
+       rm -f *.o *.so *.bin *.ext *.com *.bci *.moc *.fni
        rm -f test
 
 distclean: clean
@@ -61,8 +60,21 @@ blowfish-adapter.o: blowfish-adapter.c blowfish-shim.h
 blowfish-shim.o: blowfish-shim.c blowfish-shim.h
        echo '(compile-shim)' | $(EXE) -- $(CPPFLAGS) $(CFLAGS) -c $<
 
-blowfish-shim.c: blowfish.cdecl blowfish-shim.h
+blowfish-shim.c blowfish-const.c blowfish-types.bin: \
+  blowfish.cdecl blowfish-shim.h
        echo '(generate-shim "blowfish" "#include \"blowfish-shim.h\"")' \
        | $(EXE)
 
+blowfish-const.bin: blowfish-const.scm
+       echo '(sf "blowfish-const")' | $(EXE)
+
+blowfish-const.scm: blowfish-const
+       ./blowfish-const
+
+blowfish-const: blowfish-const.o
+       $(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
+
+blowfish-const.o: blowfish-const.c blowfish-shim.h
+       $(CC) $(CPPFLAGS) $(CFLAGS) -c $<
+
 .PHONY: all check install clean distclean maintainer-clean
index 4229edeeb163ec72b48c12908db6cb03a5c041a8..36f36d623af8cc0adee32e60050133afd4c8218e 100644 (file)
@@ -53,17 +53,6 @@ USA.
                         library-dir
                         (except-last-pair
                          (pathname-directory library-dir))))))))
-
-(define (generate-shim library #!optional prefix)
-  (let ((-const (string-append library"-const"))
-       (-const.c (string-append library"-const.c"))
-       (-const.o (string-append library"-const.o")))
-    (c-generate library prefix)
-    (run-command (append CC CFLAGS (list "-c" -const.c)))
-    (run-command (append CC LDFLAGS (list "-o" -const -const.o)))
-    (run-command (list (->namestring
-                       (merge-pathnames -const (working-directory-pathname)))))
-    (sf -const)))
 \f
 (define (parse-words string)
   (burst-string string char-set:whitespace #t))
index f5fe3d3aab1848d6f7303bf4c63a58cb27b43b41..874937749a7a78dfc5c6ad9801da1957dcbea22c 100644 (file)
 MIT_SCHEME_EXE = mit-scheme
 EXE = '$(MIT_SCHEME_EXE)' --batch-mode
 
-all: gdbm-shim.so
+all: gdbm-shim.so gdbm-types.bin gdbm-const.bin
        echo '(load "compile")' | $(EXE)
 
-check: all
+check:
        echo '(load "check")' | $(EXE)
 
-install: all
+install:
        echo '(install-shim "gdbm")' | $(EXE) -- *.com *.bci *.pkd make.scm
 
 clean distclean maintainer-clean:
        rm -f gdbm-const.scm gdbm-const gdbm-const.c gdbm-shim.c
        rm -f gdbm-*.crf gdbm-*.fre gdbm-*.pkd
-       rm -f *.o *.so *.bin *.ext *.com *.bci
-       rm -f *.moc *.fni *-init.c *-init.h *-init.o
+       rm -f *.o *.so *.bin *.ext *.com *.bci *.moc *.fni
        rm -f gdbm-check.db
 
 gdbm-shim.so: gdbm-shim.o gdbm-adapter.o
@@ -48,7 +47,19 @@ gdbm-adapter.o: gdbm-adapter.c gdbm-shim.h
 gdbm-shim.o: gdbm-shim.c gdbm-shim.h
        echo '(compile-shim)' | $(EXE) -- -c $<
 
-gdbm-shim.c: gdbm.cdecl gdbm-shim.h
+gdbm-shim.c gdbm-const.c gdbm-types.bin: gdbm.cdecl gdbm-shim.h
        echo '(generate-shim "gdbm" "#include \"gdbm-shim.h\"")' | $(EXE)
 
+gdbm-const.bin: gdbm-const.scm
+       echo '(sf "gdbm-const")' | $(EXE)
+
+gdbm-const.scm: gdbm-const
+       ./gdbm-const
+
+gdbm-const: gdbm-const.o
+       $(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
+
+gdbm-const.o: gdbm-const.c gdbm-shim.h
+       $(CC) $(CPPFLAGS) $(CFLAGS) -c $<
+
 .PHONY: all check install clean distclean maintainer-clean
index 30009f989fba718f420168be9e82b392c13a0a3e..dd0f845dcb15ce8b28660c40225891309337d0cc 100644 (file)
@@ -24,24 +24,23 @@ MIT_SCHEME_EXE = mit-scheme
 EXE = '$(MIT_SCHEME_EXE)' --batch-mode
 
 CFLAGS = @CFLAGS@
-CPPFLAGS = @CPPFLAGS@ -I. -I$(srcdir)
+CPPFLAGS = @CPPFLAGS@
 LDFLAGS = @LDFLAGS@
 LIBS = @LIBS@
 
-all: md5-shim.so
+all: md5-shim.so md5-types.bin md5-const.bin
        echo '(load "compile")' | $(EXE)
 
-check: all
+check:
        echo '(load "check")' | $(EXE)
 
-install: all
+install:
        echo '(install-shim "md5")' | $(EXE) -- *.com *.bci *.pkd make.scm
 
 clean:
        rm -f md5-const.scm md5-const md5-const.c md5-shim.c
        rm -f md5-*.crf md5-*.fre md5-*.pkd
-       rm -f *.o *.so *.bin *.ext *.com *.bci
-       rm -f *.moc *.fni *-init.c *-init.h *-init.o
+       rm -f *.o *.so *.bin *.ext *.com *.bci *.moc *.fni
        rm -f sample
 
 distclean: clean
@@ -60,8 +59,19 @@ md5-adapter.o: md5-adapter.c md5-shim.h
 md5-shim.o: md5-shim.c md5-shim.h
        echo '(compile-shim)' | $(EXE) -- $(CPPFLAGS) $(CFLAGS) -c $<
 
-md5-shim.c: md5.cdecl md5-shim.h
-       echo '(generate-shim "md5" "#include \"md5-shim.h\"")' \
-       | $(EXE)
+md5-shim.c md5-const.c md5-types.bin: md5.cdecl md5-shim.h
+       echo '(generate-shim "md5" "#include \"md5-shim.h\"")' | $(EXE)
+
+md5-const.bin: md5-const.scm
+       echo '(sf "md5-const")' | $(EXE)
+
+md5-const.scm: md5-const
+       ./md5-const
+
+md5-const: md5-const.o
+       $(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
+
+md5-const.o: md5-const.c md5-shim.h
+       $(CC) $(CPPFLAGS) $(CFLAGS) -c $<
 
 .PHONY: all check install clean distclean maintainer-clean
index 9f8171239b0c16e18495dea085a56ce8b8d973e6..0a82d9acfadead9af63b9e9d75d304aa7c415d57 100644 (file)
@@ -24,24 +24,23 @@ MIT_SCHEME_EXE = mit-scheme
 EXE = '$(MIT_SCHEME_EXE)' --batch-mode
 
 CFLAGS = @CFLAGS@
-CPPFLAGS = @CPPFLAGS@ -I. -I$(srcdir)
+CPPFLAGS = @CPPFLAGS@
 LDFLAGS = @LDFLAGS@
 LIBS = @LIBS@
 
-all: mhash-shim.so
+all: mhash-shim.so mhash-types.bin mhash-const.bin
        echo '(load "compile")' | $(EXE)
 
-check: all
+check:
        echo '(load "check")' | $(EXE)
 
-install: all
+install:
        echo '(install-shim "mhash")' | $(EXE) -- *.com *.bci *.pkd make.scm
 
 clean:
        rm -f mhash-const.scm mhash-const mhash-const.c mhash-shim.c
        rm -f mhash-*.crf mhash-*.fre mhash-*.pkd
-       rm -f *.o *.so *.bin *.ext *.com *.bci
-       rm -f *.moc *.fni *-init.c *-init.h *-init.o
+       rm -f *.o *.so *.bin *.ext *.com *.bci *.moc *.fni
        rm -f sample
 
 distclean: clean
@@ -60,8 +59,19 @@ mhash-adapter.o: mhash-adapter.c mhash-shim.h
 mhash-shim.o: mhash-shim.c mhash-shim.h
        echo '(compile-shim)' | $(EXE) -- $(CPPFLAGS) $(CFLAGS) -c $<
 
-mhash-shim.c: mhash.cdecl mhash-shim.h
-       echo '(generate-shim "mhash" "#include \"mhash-shim.h\"")' \
-       | $(EXE)
+mhash-shim.c mhash-const.c mhash-types.bin: mhash.cdecl mhash-shim.h
+       echo '(generate-shim "mhash" "#include \"mhash-shim.h\"")' | $(EXE)
+
+mhash-const.bin: mhash-const.scm
+       echo '(sf "mhash-const")' | $(EXE)
+
+mhash-const.scm: mhash-const
+       ./mhash-const
+
+mhash-const: mhash-const.o
+       $(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
+
+mhash-const.o: mhash-const.c mhash-shim.h
+       $(CC) $(CPPFLAGS) $(CFLAGS) -c $<
 
 .PHONY: all check install clean distclean maintainer-clean
index 72d4a4db03ab041b7ec771f7bad7dbacc33e62bc..528bd107aab0ee016e9fb3946f42d80a8049a8d5 100644 (file)
@@ -1,18 +1,23 @@
-mhash/ (prmhash.c):
-mhash 4
-mhash_count 0
-mhash_end 1
-mhash_get_block_size 1
-mhash_get_hash_name 1
-mhash_get_hash_pblock 1
-mhash_get_keygen_max_key_size 1
-mhash_get_keygen_name 1
-mhash_get_keygen_salt_size 1
-mhash_hmac_end 1
-mhash_hmac_init 3
-mhash_init 1
-mhash_keygen 4
-mhash_keygen_count 0
-mhash_keygen_uses_count 1
-mhash_keygen_uses_hash_algorithm 1
-mhash_keygen_uses_salt 1
+The mhash wrapper.
+
+This is a drop-in replacement for the mhash microcode module and the
+mhash-* procedures in runtime/crypto.scm.  It is not part of the core
+build and can be built outside the core build tree in the customary
+way:
+
+    ./configure [--with-mhash=directory]...
+    make all check install
+
+The install target copies a shared library shim and compiled Scheme
+files into the system library path.  You can override the default
+command name "mit-scheme" (and thus the system library path) by
+setting MIT_SCHEME_EXE.
+
+To load via load-option, install the following in your optiondb.scm:
+
+    (define-load-option 'MHASH
+      (guarded-system-loader '(mhash) "mhash"))
+
+You will need to import the bindings you want to use.  They are not
+exported to the global environment because they would conflict with
+the exports from (runtime crypto).
index 056ef55a4753d3ae140114b01f5f0d2e8fc94a25..87f2d4e0f6c061cb72a5c92f2cadf159f222343f 100644 (file)
@@ -527,7 +527,7 @@ USA.
 
 (define (generate-shim library #!optional prefix)
   (load-ffi-quietly)
-  ((environment-lookup (->environment '(ffi)) 'generate-shim) library prefix))
+  ((environment-lookup (->environment '(ffi)) 'c-generate) library prefix))
 
 (define (compile-shim)
   (load-ffi-quietly)
index b2052c63b7c5db1843805e07ee9e8cccec185921..cf4d0d24315dac1a4d001c51b1e9e566d1dc0a26 100644 (file)
@@ -3336,9 +3336,7 @@ USA.
          generate-shim
          compile-shim
          link-shim
-         install-shim
-         compile-bundle
-         install-bundle)
+         install-shim)
   (initialization (initialize-package!)))
 
 (define-package (runtime program-copier)