From 3ad2031b80c957011160de5f8c1eb4f8346df97b Mon Sep 17 00:00:00 2001 From: Steve Bennett Date: Tue, 12 Jul 2011 14:24:09 +1000 Subject: [PATCH] Simplify approach for generated code All generated sources are now prefixed with an underscore Signed-off-by: Steve Bennett --- .gitignore | 5 +---- Makefile.in | 39 ++++++++++++++++++++------------------- auto.def | 20 ++++++++++++++------ utf8.c | 2 +- 4 files changed, 36 insertions(+), 30 deletions(-) diff --git a/.gitignore b/.gitignore index 393f66b..828755f 100644 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,7 @@ Tcl.html jimautoconf.h jimautoconfext.h jim-config.h -jim-glob.c +_*.c jim-stdlib.c jim-tclcompat.c jim-tree.c @@ -18,8 +18,5 @@ jimsh libjim.a libjim.so *.o -unicode_mapping.c configure.gnu -load-static-exts.c -initjimsh.c jimsh0 diff --git a/Makefile.in b/Makefile.in index 0f0d1d2..73c9cc8 100644 --- a/Makefile.in +++ b/Makefile.in @@ -34,34 +34,35 @@ endif .EXPORT_ALL_VARIABLES: -OBJS := load-static-exts.o jim-subcmd.o jim-interactive.o jim-format.o jim.o utf8.o jimregexp.o @EXTRA_OBJS@ +OBJS := _load-static-exts.o jim-subcmd.o jim-interactive.o jim-format.o jim.o utf8.o jimregexp.o @EXTRA_OBJS@ JIMSH := jimsh@EXEEXT@ -EXTENSION_OBJS := $(patsubst %,jim-%.o,@JIM_EXTENSIONS@) -EXTENSION_MODS := $(patsubst %,%.so,@JIM_MOD_EXTENSIONS@) +JIM_EXTENSIONS := @JIM_STATIC_C_EXTS@ @JIM_STATIC_TCL_EXTS@ +C_EXT_OBJS := $(patsubst %,jim-%.o,@JIM_STATIC_C_EXTS@) $(patsubst %,_jim-%.o,@JIM_STATIC_TCL_EXTS@) +C_EXT_SHOBJS := $(patsubst %,%.so,@JIM_MOD_EXTENSIONS@) EXTENSION_TCL := $(patsubst %,%.tcl,@JIM_TCL_EXTENSIONS@) .PRECIOUS: jim-%.c -all: $(JIMSH) $(EXTENSION_MODS) +all: $(JIMSH) $(C_EXT_SHOBJS) # Create C extensions from pure Tcl extensions -jim-%.c: %.tcl +_jim-%.c: %.tcl @tclsh@ @srcdir@/make-c-ext.tcl $< >$@ || ( rm $@; exit 1) -initjimsh.c: initjimsh.tcl +_initjimsh.c: initjimsh.tcl @tclsh@ @srcdir@/make-c-ext.tcl $< >$@ || ( rm $@; exit 1) docs: Tcl.html -$(JIMSH): $(LIBJIM) jimsh.o initjimsh.o - $(CC) $(CFLAGS) @SH_LINKFLAGS@ $(LDFLAGS) -o $@ jimsh.o initjimsh.o $(LIBJIM) $(LDLIBS) +$(JIMSH): $(LIBJIM) jimsh.o _initjimsh.o + $(CC) $(CFLAGS) @SH_LINKFLAGS@ $(LDFLAGS) -o $@ jimsh.o _initjimsh.o $(LIBJIM) $(LDLIBS) install: all docs $(EXTENSION_TCL) install-exec mkdir -p $(DESTDIR)$(prefix)/lib/jim cp $(LIBJIM) $(DESTDIR)$(prefix)/lib - cp @srcdir@/README.extensions $(EXTENSION_MODS) $(EXTENSION_TCL) $(DESTDIR)$(prefix)/lib/jim + cp @srcdir@/README.extensions $(C_EXT_SHOBJS) $(EXTENSION_TCL) $(DESTDIR)$(prefix)/lib/jim mkdir -p $(DESTDIR)$(prefix)/include cp @srcdir@/jim.h @srcdir@/jim-eventloop.h @srcdir@/jim-nvp.h @srcdir@/jim-signal.h \ @srcdir@/jim-subcmd.h @srcdir@/jim-win32compat.h $(DESTDIR)$(prefix)/include @@ -76,32 +77,32 @@ install-exec: all uninstall: rm -f $(DESTDIR)$(prefix)/bin/$(JIMSH) rm -f $(DESTDIR)$(prefix)/lib/$(LIBJIM) - for i in README.extensions $(EXTENSION_MODS) $(EXTENSION_TCL); do rm -f $(DESTDIR)$(prefix)/lib/jim/$$i; done + for i in README.extensions $(C_EXT_SHOBJS) $(EXTENSION_TCL); do rm -f $(DESTDIR)$(prefix)/lib/jim/$$i; done rm -f $(DESTDIR)$(prefix)/include/jim*.h rm -f $(DESTDIR)$(prefix)/doc/jim/Tcl.html test: $(JIMSH) $(DEF_LD_PATH) $(MAKE) jimsh=`pwd`/jimsh -C @srcdir@/tests -$(OBJS) $(EXTENSION_OBJS): Makefile +$(OBJS) $(C_EXT_OBJS): Makefile -ifneq (@JIM_UTF8@,) +ifeq (@JIM_UTF8@,1) # Generate the unicode case mapping -utf8.o: unicode_mapping.c +utf8.o: _unicode_mapping.c -unicode_mapping.c: @srcdir@/UnicodeData.txt @srcdir@/parse-unidata.tcl +_unicode_mapping.c: @srcdir@/UnicodeData.txt @srcdir@/parse-unidata.tcl @tclsh@ @srcdir@/parse-unidata.tcl @srcdir@/UnicodeData.txt >$@ || ( rm $@; exit 1) endif -load-static-exts.c: @srcdir@/make-load-static-exts.tcl Makefile - @tclsh@ @srcdir@/make-load-static-exts.tcl @JIM_EXTENSIONS@ >$@ || ( rm $@; exit 1) +_load-static-exts.c: @srcdir@/make-load-static-exts.tcl Makefile + @tclsh@ @srcdir@/make-load-static-exts.tcl $(JIM_EXTENSIONS) >$@ || ( rm $@; exit 1) ifeq ($(jim_libtype),static) -$(LIBJIM): $(OBJS) $(EXTENSION_OBJS) +$(LIBJIM): $(OBJS) $(C_EXT_OBJS) $(AR) cr $@ $^ $(RANLIB) $@ else -$(LIBJIM): $(OBJS) $(EXTENSION_OBJS) +$(LIBJIM): $(OBJS) $(C_EXT_OBJS) $(CC) $(CFLAGS) $(LDFLAGS) $(SH_LDFLAGS) -o $@ $^ $(LDLIBS) endif @@ -113,7 +114,7 @@ Tcl.html: jim_tcl.txt @tclsh@ @srcdir@/make-index $^ | asciidoc -o $@ -d manpage - || cp @srcdir@/Tcl_shipped.html Tcl.html clean: - rm -f *.o *.so lib*.a $(JIMSH) Tcl.html unicode_mapping.c load-static-exts.c initjimsh.c @GENERATED_SRCS@ + rm -f *.o *.so lib*.a $(JIMSH) Tcl.html _*.c distclean: clean rm -f jimautoconf.h jim-config.h Makefile config.log autosetup/jimsh0@EXEEXT@ diff --git a/auto.def b/auto.def index bd3119a..0ac4dde 100644 --- a/auto.def +++ b/auto.def @@ -120,6 +120,8 @@ if {[opt-bool utf8 full]} { msg-result "Enabling UTF-8" define JIM_UTF8 incr jimregexp +} else { + define JIM_UTF8 0 } if {[opt-bool maintainer]} { msg-result "Enabling maintainer settings" @@ -343,18 +345,24 @@ if {$extmod ne ""} { msg-result "Jim dynamic extensions: [lsort $extmod]" } -define JIM_EXTENSIONS $ext -define JIM_TCL_EXTENSIONS $extmodtcl -define JIM_MOD_EXTENSIONS $extmod -define EXTRA_OBJS $extra_objs - +# Separate out the static extensions into C and Tcl +set ext_static_c {} +set ext_static_tcl {} foreach e $ext { define jim_ext_$e if {$e in $ext_tcl} { - define-append GENERATED_SRCS jim-$e.c + lappend ext_static_tcl $e + } else { + lappend ext_static_c $e } } +define JIM_STATIC_C_EXTS $ext_static_c +define JIM_STATIC_TCL_EXTS $ext_static_tcl +define JIM_TCL_EXTENSIONS $extmodtcl +define JIM_MOD_EXTENSIONS $extmod +define EXTRA_OBJS $extra_objs + make-config-header jim-config.h -auto {HAVE_LONG_LONG* JIM_UTF8} -none * make-config-header jimautoconf.h -auto {jim_ext_* TCL_PLATFORM_* TCL_LIBRARY USE_* JIM_*} make-template Makefile.in diff --git a/utf8.c b/utf8.c index f980987..90efef8 100644 --- a/utf8.c +++ b/utf8.c @@ -148,7 +148,7 @@ struct caseextmap { }; /* Generated mapping tables */ -#include "unicode_mapping.c" +#include "_unicode_mapping.c" #define NUMCASEMAP sizeof(unicode_case_mapping) / sizeof(*unicode_case_mapping) -- 2.11.4.GIT