aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.in58
-rw-r--r--auto.def34
2 files changed, 73 insertions, 19 deletions
diff --git a/Makefile.in b/Makefile.in
index 208e7ea..ebfb3e5 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -12,7 +12,7 @@ SHOBJ_CFLAGS ?= @SHOBJ_CFLAGS@
SHOBJ_LDFLAGS ?= @SHOBJ_LDFLAGS@
CFLAGS = @CFLAGS@
LDFLAGS = @LDFLAGS@
-LDLIBS += @LIBS@
+LDLIBS += @LDLIBS@
exec_prefix ?= @exec_prefix@
prefix ?= @prefix@
@@ -101,13 +101,57 @@ $(LIBJIM): $(OBJS)
$(CC) $(CFLAGS) $(LDFLAGS) $(SH_LDFLAGS) -o $@ $(OBJS) $(LDLIBS)
@endif
-# XXX: This won't work for BSD make
-%.so: jim-%.c
- $(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o $*.o jim-$*.c
- $(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ $*.o $(SH_LIBJIM) $(LDLIBS)
+# Note that $> $^ is for compatibility with both GNU make and BSD make
+readdir.so: jim-readdir.c
+ $(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-readdir.o $> $^
+ $(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-readdir.o $(SH_LIBJIM)
+
+array.so: jim-array.c
+ $(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-array.o $> $^
+ $(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-array.o $(SH_LIBJIM)
+
+clock.so: jim-clock.c
+ $(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-clock.o $> $^
+ $(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-clock.o $(SH_LIBJIM)
+
+file.so: jim-file.c
+ $(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-file.o $> $^
+ $(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-file.o $(SH_LIBJIM)
+
+posix.so: jim-posix.c
+ $(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-posix.o $> $^
+ $(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-posix.o $(SH_LIBJIM)
+
+regexp.so: jim-regexp.c
+ $(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-regexp.o $> $^
+ $(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-regexp.o $(SH_LIBJIM)
+
+syslog.so: jim-syslog.c
+ $(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-syslog.o $> $^
+ $(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-syslog.o $(SH_LIBJIM)
+
+readline.so: jim-readline.c
+ $(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-readline.o $> $^
+ $(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-readline.o $(SH_LIBJIM) @LDLIBS_readline@
+
+pack.so: jim-pack.c
+ $(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-pack.o $> $^
+ $(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-pack.o $(SH_LIBJIM) @LDLIBS_pack@
+
+sqlite.so: jim-sqlite.c
+ $(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-sqlite.o $> $^
+ $(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-sqlite.o $(SH_LIBJIM) @LDLIBS_sqlite@
+
+sqlite3.so: jim-sqlite3.c
+ $(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-sqlite3.o $> $^
+ $(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-sqlite3.o $(SH_LIBJIM) @LDLIBS_sqlite3@
+
+win32.so: jim-win32.c
+ $(CC) $(CFLAGS) $(SHOBJ_CFLAGS) -c -o jim-win32.o $> $^
+ $(CC) $(CFLAGS) $(LDFLAGS) $(SHOBJ_LDFLAGS) -o $@ jim-win32.o $(SH_LIBJIM) @LDLIBS_win32@
Tcl.html: jim_tcl.txt
- @tclsh@ @srcdir@/make-index jim_tcl.txt | asciidoc -o $@ -d manpage - || cp @srcdir@/Tcl_shipped.html Tcl.html
+ @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 _*.c
@@ -116,7 +160,7 @@ distclean: clean
rm -f jimautoconf.h jim-config.h Makefile config.log autosetup/jimsh0@EXEEXT@
ship: Tcl.html
- cp Tcl.html Tcl_shipped.html
+ cp $< Tcl_shipped.html
# automake compatibility. do nothing for all these targets
EMPTY_AUTOMAKE_TARGETS := dvi pdf ps info html tags ctags mostlyclean maintainer-clean check installcheck installdirs \
diff --git a/auto.def b/auto.def
index 7103b84..b066442 100644
--- a/auto.def
+++ b/auto.def
@@ -64,17 +64,17 @@ cc-check-types "long long"
cc-check-includes sys/socket.h netinet/in.h arpa/inet.h netdb.h
cc-check-includes sys/un.h dlfcn.h unistd.h crt_externs.h
+define LDLIBS ""
+
# Haiku needs -lnetwork, Solaris needs -lnsl
if {[cc-check-function-in-lib inet_ntop {nsl network}]} {
# This does nothing if no libs are needed
cc-with [list -libs [get-define lib_inet_ntop]]
+ define-append LDLIBS [get-define lib_inet_ntop]
}
# Solaris needs -lsocket, Windows needs -lwsock32
-if {![cc-check-function-in-lib socket socket]} {
- # Last resort, may be Windows
- if {[string match *mingw* [get-define host]]} {
- define-append LIBS -lwsock32
- }
+if {[cc-check-function-in-lib socket socket]} {
+ define-append LDLIBS [get-define lib_socket]
}
cc-check-functions ualarm lstat fork vfork system select
@@ -151,6 +151,7 @@ if {[opt-bool math full]} {
msg-result "Enabling math functions"
define JIM_MATH_FUNCTIONS
cc-check-function-in-lib sin m
+ define-append LDLIBS [get-define lib_sin]
}
if {[opt-bool ipv6 full]} {
msg-result "Enabling IPv6"
@@ -222,12 +223,16 @@ set dep(binary) pack
set needs(exec) {expr {([have-feature vfork] && [have-feature waitpid]) || [have-feature system]}}
set needs(load) {expr {[cc-check-function-in-lib dlopen dl] || [have-feature dlopen-compat]}}
+set libdep(load) lib_dlopen
set needs(posix) {have-feature waitpid}
set needs(readdir) {have-feature opendir}
set needs(readline) {cc-check-function-in-lib readline readline}
+set libdep(readline) lib_readline
set needs(signal) {expr {[have-feature sigaction] && [have-feature vfork]}}
set needs(sqlite) {cc-check-function-in-lib sqlite_open sqlite}
+set libdep(sqlite) lib_sqlite_open
set needs(sqlite3) {cc-check-function-in-lib sqlite3_open sqlite3}
+set libdep(sqlite3) lib_sqlite3_open
set needs(syslog) {have-feature syslog}
set needs(win32) {have-feature windows}
@@ -283,6 +288,8 @@ foreach i [lsort $ext_all] {
set met [eval $needs($i)]
}
+ define LDLIBS_$i ""
+
msg-checking "Extension $i..."
# Selected as a module?
@@ -301,6 +308,9 @@ foreach i [lsort $ext_all] {
}
msg-result "module"
lappend extmod $i
+ if {[info exists libdep($i)]} {
+ define-append LDLIBS_$i [get-define $libdep($i) ""]
+ }
continue
}
@@ -310,20 +320,20 @@ foreach i [lsort $ext_all] {
user-error "dependencies not met"
}
msg-result "enabled"
- lappend ext $i
- continue
- }
-
- # Enabled by default?
- if {$i in $ext_default} {
+ } elseif {$i in $ext_default} {
if {!$met} {
msg-result "disabled (dependencies)"
continue
}
msg-result "enabled (default)"
- lappend ext $i
+ } else {
continue
}
+
+ lappend ext $i
+ if {[info exists libdep($i)]} {
+ define-append LDLIBS [get-define $libdep($i) ""]
+ }
}
if {[have-feature windows]} {