aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.in97
-rw-r--r--auto.def17
-rw-r--r--autosetup/local.tcl16
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
diff --git a/auto.def b/auto.def
index e7afbc6..e80618a 100644
--- a/auto.def
+++ b/auto.def
@@ -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"