diff options
-rw-r--r-- | Makefile.in | 97 | ||||
-rw-r--r-- | auto.def | 17 | ||||
-rw-r--r-- | autosetup/local.tcl | 16 |
3 files changed, 29 insertions, 101 deletions
diff --git a/Makefile.in b/Makefile.in index 5f664dc..67d503c 100644 --- a/Makefile.in +++ b/Makefile.in @@ -154,102 +154,7 @@ $(LIBJIM): $(OBJS) $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SH_LDFLAGS) -o $@ $(OBJS) $(LDLIBS) $(LIBS) @endif -# Note that $> $^ is for compatibility with both GNU make and BSD make -readdir.so: jim-readdir.c - $(ECHO) " CC ${@:.so=.o}" - $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-readdir.o $> $^ - $(ECHO) " LDSO $@" - $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-readdir.o $(SH_LIBJIM) - -array.so: jim-array.c - $(ECHO) " CC ${@:.so=.o}" - $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-array.o $> $^ - $(ECHO) " LDSO $@" - $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-array.o $(SH_LIBJIM) - -clock.so: jim-clock.c - $(ECHO) " CC ${@:.so=.o}" - $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-clock.o $> $^ - $(ECHO) " LDSO $@" - $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-clock.o $(SH_LIBJIM) - -file.so: jim-file.c - $(ECHO) " CC ${@:.so=.o}" - $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-file.o $> $^ - $(ECHO) " LDSO $@" - $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-file.o $(SH_LIBJIM) - -interp.so: jim-interp.c - $(ECHO) " CC ${@:.so=.o}" - $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-interp.o jim-interp.c - $(ECHO) " LDSO $@" - $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-interp.o $(SH_LIBJIM) @LDLIBS_interp@ - -posix.so: jim-posix.c - $(ECHO) " CC ${@:.so=.o}" - $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-posix.o $> $^ - $(ECHO) " LDSO $@" - $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-posix.o $(SH_LIBJIM) - -regexp.so: jim-regexp.c - $(ECHO) " CC ${@:.so=.o}" - $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-regexp.o $> $^ - $(ECHO) " LDSO $@" - $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-regexp.o $(SH_LIBJIM) - -syslog.so: jim-syslog.c - $(ECHO) " CC ${@:.so=.o}" - $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-syslog.o $> $^ - $(ECHO) " LDSO $@" - $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-syslog.o $(SH_LIBJIM) - -readline.so: jim-readline.c - $(ECHO) " CC ${@:.so=.o}" - $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-readline.o $> $^ - $(ECHO) " LDSO $@" - $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-readline.o $(SH_LIBJIM) @LDLIBS_readline@ - -pack.so: jim-pack.c - $(ECHO) " CC ${@:.so=.o}" - $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-pack.o $> $^ - $(ECHO) " LDSO $@" - $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-pack.o $(SH_LIBJIM) @LDLIBS_pack@ - -tclprefix.so: jim-tclprefix.c - $(ECHO) " CC ${@:.so=.o}" - $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-tclprefix.o $> $^ - $(ECHO) " LDSO $@" - $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-tclprefix.o $(SH_LIBJIM) @LDLIBS_tclprefix@ - -sqlite3.so: jim-sqlite3.c - $(ECHO) " CC ${@:.so=.o}" - $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-sqlite3.o $> $^ - $(ECHO) " LDSO $@" - $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-sqlite3.o $(SH_LIBJIM) @LDLIBS_sqlite3@ - -win32.so: jim-win32.c - $(ECHO) " CC ${@:.so=.o}" - $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-win32.o $> $^ - $(ECHO) " LDSO $@" - $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-win32.o $(SH_LIBJIM) @LDLIBS_win32@ - -mk.so: jim-mk.cpp - $(ECHO) " CC ${@:.so=.o}" - $(Q)$(CXX) $(CXXFLAGS) $(SHOBJ_CFLAGS) -c -o jim-mk.o $> $^ - $(ECHO) " LDSO $@" - $(Q)$(CXX) $(CXXFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-mk.o $(SH_LIBJIM) @LDLIBS_mk@ - -sdl.so: jim-sdl.c - $(ECHO) " CC ${@:.so=.o}" - $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-sdl.o $> $^ - $(ECHO) " LDSO $@" - $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-sdl.o $(SH_LIBJIM) @LDLIBS_sdl@ - -zlib.so: jim-zlib.c - $(ECHO) " CC ${@:.so=.o}" - $(Q)$(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-zlib.o $> $^ - $(ECHO) " LDSO $@" - $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-zlib.o $(SH_LIBJIM) @LDLIBS_zlib@ +@BUILD_SHOBJS@ docs: Tcl.html @@ -495,6 +495,23 @@ define EXTRA_OBJS $extra_objs # Restore the user-specified LIBS define LIBS $LIBS +# Now generate the Makefile rules to build the external C shared objects +# It is easier to do this here rather than listing them out explicitly in Makefile.in +set lines {} +foreach mod $extinfo(module-c) { + set objs {} + set libs [get-define LDLIBS_$mod] + set src jim-$mod.c + lappend lines "$mod.so: $src" + set obj [file rootname $src].o + lappend lines "\t\$(ECHO)\t\"\tCC\t$obj\"" + lappend lines "\t\$(Q)\$(CC) \$(CFLAGS) \$(SHOBJ_CFLAGS) -c -o $obj $src" + lappend lines "\t\$(ECHO)\t\"\tLDSO\t\$@\"" + lappend lines "\t\$(Q)\$(CC) \$(CFLAGS) \$(LDFLAGS) \$(SHOBJ_LDFLAGS) -o \$@ $obj \$(SH_LIBJIM) $libs" + lappend lines "" +} +define BUILD_SHOBJS [join $lines \n] + make-config-header jim-config.h -auto {HAVE_LONG_LONG* JIM_UTF8} -bare JIM_VERSION -none * make-config-header jimautoconf.h -auto {jim_ext_* TCL_PLATFORM_* TCL_LIBRARY USE_* JIM_* _FILE_OFFSET*} -bare {S_I*} make-template Makefile.in diff --git a/autosetup/local.tcl b/autosetup/local.tcl index 9517b27..ba2bb3d 100644 --- a/autosetup/local.tcl +++ b/autosetup/local.tcl @@ -32,7 +32,7 @@ proc ext-get-status {ext} { return ? } -proc check-extension-status {ext required} { +proc check-extension-status {ext required {asmodule 0}} { global withinfo set status [ext-get-status $ext] @@ -79,7 +79,13 @@ proc check-extension-status {ext required} { } } - if {$ext in $withinfo(mod)} { + # asmodule=1 means that the parent is a module so + # any automatically selected dependencies should also be modules + if {$asmodule == 0 && $ext in $withinfo(mod)} { + set asmodule 1 + } + + if {$asmodule} { # This is a module, so ignore LIBS # LDLIBS_$ext will contain the appropriate libs for this module define LIBS $LIBS @@ -88,7 +94,7 @@ proc check-extension-status {ext required} { if {$depinfo(n) == 0} { # Now extension dependencies foreach i [ext-get $ext dep] { - set status [check-extension-status $i $required] + set status [check-extension-status $i $required $asmodule] #puts "$ext: dep $i $required => $status" incr depinfo($status) if {$depinfo(n)} { @@ -108,8 +114,8 @@ proc check-extension-status {ext required} { return [ext-set-status $ext n] } - # Selected as a module? - if {$ext in $withinfo(mod)} { + # Selected as a module directly or because of a parent dependency? + if {$asmodule} { if {[ext-has $ext tcl]} { # Easy, a Tcl module msg-result "Extension $ext...tcl" |