Skip to content

Commit d549e43

Browse files
committed
Built-in support for Mac OS X dylib
Import the newest oconfigure (1.0.0) for more Mac OS X support. Now, on Mac OS X, compile using "-dynamiclib" to create dylib files instead of using the standard Unix "-shared" and so files.
1 parent 575b200 commit d549e43

File tree

2 files changed

+84
-24
lines changed

2 files changed

+84
-24
lines changed

Makefile

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -292,11 +292,11 @@ LIBS = libkcgi.a \
292292
libkcgijson.a \
293293
libkcgixml.a \
294294
libkcgiregress.a
295-
SOLIBS = libkcgi.so.$(LIBVER) \
296-
libkcgihtml.so.$(LIBVER) \
297-
libkcgijson.so.$(LIBVER) \
298-
libkcgixml.so.$(LIBVER) \
299-
libkcgiregress.so.$(LIBVER)
295+
SOLIBS = libkcgi.$(LINKER_SOSUFFIX).$(LIBVER) \
296+
libkcgihtml.$(LINKER_SOSUFFIX).$(LIBVER) \
297+
libkcgijson.$(LINKER_SOSUFFIX).$(LIBVER) \
298+
libkcgixml.$(LINKER_SOSUFFIX).$(LIBVER) \
299+
libkcgiregress.$(LINKER_SOSUFFIX).$(LIBVER)
300300
CURL_LIBS_PKG != curl-config --libs 2>/dev/null || echo "-lcurl"
301301
CURL_CFLAGS_PKG != curl-config --cflags 2>/dev/null || echo ""
302302
LIBS_PKG != pkg-config --libs zlib 2>/dev/null || echo "-lz"
@@ -401,7 +401,7 @@ clean:
401401
rm -f sample samplepp samplepp.o sample-fcgi sample.o sample-fcgi.o kfcgi kfcgi.o
402402
rm -f $(SBLGS) $(THTMLS) extending01.html atom.xml
403403
rm -f $(LIBOBJS) compats.o
404-
rm -f $(LIBS) *.so *.so.$(LIBVER)
404+
rm -f $(LIBS) *.$(LINKER_SOSUFFIX) *.$(LINKER_SOSUFFIX).$(LIBVER)
405405
rm -f kcgihtml.o kcgijson.o kcgixml.o kcgiregress.o regress/regress.o
406406
rm -f *.core
407407
rm -f $(REGRESS) $(AFL) regress/*.o
@@ -461,8 +461,8 @@ $(BIN): $(BIN).o libkcgi.a
461461
libkcgi.a: $(LIBOBJS) compats.o
462462
$(AR) rs $@ $(LIBOBJS) compats.o
463463

464-
libkcgi.so.$(LIBVER): $(LIBOBJS) compats.o
465-
$(CC) -shared -o $@ $(LIBOBJS) compats.o $(LDFLAGS) $(LDADD_MD5) \
464+
libkcgi.$(LINKER_SOSUFFIX).$(LIBVER): $(LIBOBJS) compats.o
465+
$(CC) $(LINKER_SOFLAG) -o $@ $(LIBOBJS) compats.o $(LDFLAGS) $(LDADD_MD5) \
466466
-Wl,${LINKER_SONAME},$@ $(LDLIBS) $(LIBS_PKG)
467467
ln -sf $@ `basename $@ .$(LIBVER)`
468468

@@ -491,24 +491,24 @@ libkcgixml.a: kcgixml.o
491491
libkcgiregress.a: kcgiregress.o
492492
$(AR) rs $@ kcgiregress.o
493493

494-
libkcgihtml.so.$(LIBVER): kcgihtml.o libkcgi.so.$(LIBVER)
495-
$(CC) -shared -o $@ kcgihtml.o $(LDFLAGS) \
496-
-Wl,${LINKER_SONAME},$@ $(LDLIBS) libkcgi.so.$(LIBVER)
494+
libkcgihtml.$(LINKER_SOSUFFIX).$(LIBVER): kcgihtml.o libkcgi.$(LINKER_SOSUFFIX).$(LIBVER)
495+
$(CC) $(LINKER_SOFLAG) -o $@ kcgihtml.o $(LDFLAGS) \
496+
-Wl,${LINKER_SONAME},$@ $(LDLIBS) libkcgi.$(LINKER_SOSUFFIX).$(LIBVER)
497497
ln -sf $@ `basename $@ .$(LIBVER)`
498498

499-
libkcgijson.so.$(LIBVER): kcgijson.o libkcgi.so.$(LIBVER)
500-
$(CC) -shared -o $@ kcgijson.o $(LDFLAGS) \
501-
-Wl,${LINKER_SONAME},$@ $(LDLIBS) libkcgi.so.$(LIBVER)
499+
libkcgijson.$(LINKER_SOSUFFIX).$(LIBVER): kcgijson.o libkcgi.$(LINKER_SOSUFFIX).$(LIBVER)
500+
$(CC) $(LINKER_SOFLAG) -o $@ kcgijson.o $(LDFLAGS) \
501+
-Wl,${LINKER_SONAME},$@ $(LDLIBS) libkcgi.$(LINKER_SOSUFFIX).$(LIBVER)
502502
ln -sf $@ `basename $@ .$(LIBVER)`
503503

504-
libkcgixml.so.$(LIBVER): kcgixml.o libkcgi.so.$(LIBVER)
505-
$(CC) -shared -o $@ kcgixml.o $(LDFLAGS) \
506-
-Wl,${LINKER_SONAME},$@ $(LDLIBS) libkcgi.so.$(LIBVER)
504+
libkcgixml.$(LINKER_SOSUFFIX).$(LIBVER): kcgixml.o libkcgi.$(LINKER_SOSUFFIX).$(LIBVER)
505+
$(CC) $(LINKER_SOFLAG) -o $@ kcgixml.o $(LDFLAGS) \
506+
-Wl,${LINKER_SONAME},$@ $(LDLIBS) libkcgi.$(LINKER_SOSUFFIX).$(LIBVER)
507507
ln -sf $@ `basename $@ .$(LIBVER)`
508508

509-
libkcgiregress.so.$(LIBVER): kcgiregress.o libkcgi.so.$(LIBVER)
510-
$(CC) -shared -o $@ kcgiregress.o $(LDFLAGS) \
511-
-Wl,${LINKER_SONAME},$@ $(LDLIBS) libkcgi.so.$(LIBVER)
509+
libkcgiregress.$(LINKER_SOSUFFIX).$(LIBVER): kcgiregress.o libkcgi.$(LINKER_SOSUFFIX).$(LIBVER)
510+
$(CC) $(LINKER_SOFLAG) -o $@ kcgiregress.o $(LDFLAGS) \
511+
-Wl,${LINKER_SONAME},$@ $(LDLIBS) libkcgi.$(LINKER_SOSUFFIX).$(LIBVER)
512512
ln -sf $@ `basename $@ .$(LIBVER)`
513513

514514
# Sample programs.

configure

Lines changed: 64 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1616
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1717

18-
OCONFIGURE_VERSION="0.5.1"
18+
OCONFIGURE_VERSION="1.0.0"
1919

2020
#
2121
# This script outputs two files: config.h and Makefile.configure.
@@ -131,7 +131,9 @@ LDADD_SCAN_SCALED=
131131
LDADD_STATIC=
132132
CPPFLAGS=
133133
LDFLAGS=
134+
LINKER_SOFLAG=
134135
LINKER_SONAME=
136+
LINKER_SOSUFFIX=
135137
DESTDIR=
136138
PREFIX="/usr/local"
137139
BINDIR=
@@ -192,8 +194,12 @@ do
192194
LDLIBS="$val" ;;
193195
LDFLAGS)
194196
LDFLAGS="$val" ;;
197+
LINKER_SOFLAG)
198+
LINKER_SOFLAG="$val" ;;
195199
LINKER_SONAME)
196200
LINKER_SONAME="$val" ;;
201+
LINKER_SOSUFFIX)
202+
LINKER_SOSUFFIX="$val" ;;
197203
CPPFLAGS)
198204
CPPFLAGS="$val" ;;
199205
DESTDIR)
@@ -217,6 +223,57 @@ do
217223
esac
218224
done
219225

226+
#----------------------------------------------------------------------
227+
# If the user doesn't specify how to link shared libraries, try
228+
# "-shared" or "-dynamiclib", the latter of which is Mac OS X only at
229+
# the moment. Also set the proper shared library suffix.
230+
#
231+
# This is for link-time shared library generation only: the "-shared"
232+
# should be used for creating dynamically-loaded libraries on all
233+
# Unix-like systems.
234+
235+
if [ -z "$LINKER_SOFLAG" ]
236+
then
237+
test_soname="`mktemp`" || {
238+
echo "mktemp: failed" 1>&2
239+
echo "mktemp: failed" 1>&3
240+
exit 1
241+
}
242+
echo "int foo(void) { return 1; }" > "${test_soname}.c"
243+
${CC} -fPIC -o ${test_soname}.o -c ${test_soname}.c || {
244+
echo "${CC} -fPIC -o ${test_soname}.o -c ${test_soname}.c: failed" 1>&2
245+
echo "${CC} -fPIC -o ${test_soname}.o -c ${test_soname}.c: failed" 1>&3
246+
}
247+
LINKER_SOFLAG="-dynamiclib"
248+
LINKER_SOSUFFIX="dylib"
249+
echo "LINKER_SOSUFFIX: testing ${LINKER_SOFLAG}" 1>&3
250+
${CC} ${LINKER_SOFLAG} -o ${test_soname}.${LINKER_SOSUFFIX}.0 \
251+
${test_soname}.o 2>/dev/null || {
252+
LINKER_SOFLAG="-shared"
253+
LINKER_SOSUFFIX="so"
254+
echo "LINKER_SOFLAG: testing ${LINKER_SOFLAG}" 1>&3
255+
${CC} ${LINKER_SOFLAG} -o ${test_soname}.${LINKER_SOSUFFIX}.0 \
256+
${test_soname}.o || {
257+
echo "LINKER_SOFLAG: cannot determine: default to -shared" 1>&2
258+
echo "LINKER_SOFLAG: cannot determine: default to -shared" 1>&3
259+
}
260+
}
261+
echo "LINKER_SOFLAG: $LINKER_SOFLAG" 1>&3
262+
echo "LINKER_SOSUFFIX: $LINKER_SOSUFFIX" 1>&3
263+
rm -f "$test_soname" "${test_soname}.*"
264+
fi
265+
266+
if [ -z "$LINKER_SOSUFFIX" ]
267+
then
268+
if [ "$LINKER_SOFLAG" = "-shared" ]
269+
then
270+
LINKER_SOSUFFIX="so"
271+
else
272+
LINKER_SOSUFFIX="dylib"
273+
fi
274+
echo "LINKER_SOSUFFIX: $LINKER_SOSUFFIX" 1>&3
275+
fi
276+
220277
#----------------------------------------------------------------------
221278
# If the user doesn't specify whether we want "-soname" or
222279
# "-install_name" for the linker option to generate shared libraries,
@@ -237,10 +294,12 @@ then
237294
}
238295
LINKER_SONAME="-soname"
239296
echo "LINKER_SONAME: testing -soname" 1>&3
240-
${CC} -shared -o ${test_soname}.so.0 ${test_soname}.o -Wl,${LINKER_SONAME},${test_soname}.so.0 || {
297+
${CC} -shared -o ${test_soname}.so.0 ${test_soname}.o \
298+
-Wl,${LINKER_SONAME},${test_soname}.so.0 2>/dev/null || {
241299
LINKER_SONAME="-install_name"
242300
echo "LINKER_SONAME: testing -install_name" 1>&3
243-
${CC} -shared -o ${test_soname}.so.0 ${test_soname}.o -Wl,-install_name,${test_soname}.so.0 || {
301+
${CC} -shared -o ${test_soname}.so.0 ${test_soname}.o \
302+
-Wl,-install_name,${test_soname}.so.0 || {
244303
echo "LINKER_SONAME: cannot determine: default to -soname" 1>&2
245304
echo "LINKER_SONAME: cannot determine: default to -soname" 1>&3
246305
LINKER_SONAME="-soname"
@@ -2559,8 +2618,9 @@ LDADD_SHA2 = ${LDADD_SHA2}
25592618
LDADD_SCAN_SCALED= ${LDADD_SCAN_SCALED}
25602619
LDADD_STATIC = ${LDADD_STATIC}
25612620
LDFLAGS = ${LDFLAGS}
2621+
LINKER_SOFLAG = ${LINKER_SOFLAG}
25622622
LINKER_SONAME = ${LINKER_SONAME}
2563-
STATIC = ${STATIC}
2623+
LINKER_SOSUFFIX = ${LINKER_SOSUFFIX}
25642624
PREFIX = ${PREFIX}
25652625
BINDIR = ${BINDIR}
25662626
SHAREDIR = ${SHAREDIR}

0 commit comments

Comments
 (0)