Skip to content

Commit dfdb082

Browse files
committed
Rename library based on zlib-compat setting
If zlib-compat is enabled, keep libz name. If zlib-compat is disabled, use libz-ng name. Add new .map file for -ng mode, with prefixed function names. This commit only containes preparatory changes to the central parts of the build system.
1 parent 0ba89b1 commit dfdb082

File tree

6 files changed

+220
-68
lines changed

6 files changed

+220
-68
lines changed

CMakeLists.txt

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,13 @@ option (ZLIB_COMPAT "Compile with zlib compatible API" OFF)
5252
if (ZLIB_COMPAT)
5353
add_definitions(-DZLIB_COMPAT)
5454
set (WITH_GZFILEOP ON)
55+
set (LIBNAME1 libz)
56+
set (LIBNAME2 zlib)
57+
set (SUFFIX "")
58+
else(ZLIB_COMPAT)
59+
set (LIBNAME1 libz-ng)
60+
set (LIBNAME2 zlib-ng)
61+
set (SUFFIX -ng)
5562
endif (ZLIB_COMPAT)
5663

5764
option (WITH_GZFILEOP "Compile with support for gzFile related functions" OFF)
@@ -485,7 +492,7 @@ if(NOT CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR)
485492
endif()
486493
endif()
487494

488-
set(ZLIB_PC ${CMAKE_CURRENT_BINARY_DIR}/zlib.pc)
495+
set(ZLIB_PC ${CMAKE_CURRENT_BINARY_DIR}/${LIBNAME2}.pc)
489496
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/zlib.pc.cmakein
490497
${ZLIB_PC} @ONLY)
491498
configure_file( ${CMAKE_CURRENT_BINARY_DIR}/zconf.h.cmakein
@@ -588,12 +595,13 @@ if(NOT CYGWIN)
588595
set_target_properties(zlib PROPERTIES VERSION ${ZLIB_FULL_VERSION})
589596
endif()
590597

598+
591599
if(UNIX)
592600
# On unix-like platforms the library is almost always called libz
593-
set_target_properties(zlib zlibstatic PROPERTIES OUTPUT_NAME z)
594-
if(NOT APPLE)
595-
set_target_properties(zlib PROPERTIES LINK_FLAGS "-Wl,--version-script,\"${CMAKE_CURRENT_SOURCE_DIR}/zlib.map\"")
596-
endif()
601+
set_target_properties(zlib zlibstatic PROPERTIES OUTPUT_NAME z${SUFFIX})
602+
if(NOT APPLE)
603+
set_target_properties(zlib PROPERTIES LINK_FLAGS "-Wl,--version-script,\"${CMAKE_CURRENT_SOURCE_DIR}/${LIBNAME2}.map\"")
604+
endif()
597605
elseif(MSYS)
598606
# Suppress version number from shared library name
599607
set(CMAKE_SHARED_LIBRARY_NAME_WITH_VERSION 0)
@@ -609,10 +617,11 @@ if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL )
609617
LIBRARY DESTINATION "${INSTALL_LIB_DIR}" )
610618
endif()
611619
if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL )
612-
install(FILES ${ZLIB_PUBLIC_HDRS} DESTINATION "${INSTALL_INC_DIR}")
620+
install(FILES zlib.h DESTINATION "${INSTALL_INC_DIR}" RENAME zlib${SUFFIX}.h)
621+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/zconf.h DESTINATION "${INSTALL_INC_DIR}" RENAME zconf${SUFFIX}.h)
613622
endif()
614623
if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL )
615-
install(FILES zlib.3 DESTINATION "${INSTALL_MAN_DIR}/man3")
624+
install(FILES zlib.3 DESTINATION "${INSTALL_MAN_DIR}/man3" RENAME zlib${SUFFIX}.3)
616625
endif()
617626
if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL )
618627
install(FILES ${ZLIB_PC} DESTINATION "${INSTALL_PKGCONFIG_DIR}")

Makefile.in

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,20 @@ CFLAGS=-O
2222

2323
SFLAGS=-O
2424
LDFLAGS=-L.
25-
TEST_LIBS=libz.a
25+
LIBNAME1=libz-ng
26+
LIBNAME2=zlib-ng
27+
SUFFIX=-ng
28+
TEST_LIBS=$(LIBNAME1).a
2629
LDSHARED=$(CC)
2730
LDSHAREDFLAGS=-shared
2831

29-
STATICLIB=libz.a
30-
SHAREDLIB=libz.so
31-
SHAREDLIBV=libz.so.1.2.11
32-
SHAREDLIBM=libz.so.1
32+
STATICLIB=$(LIBNAME1).a
33+
SHAREDLIB=$(LIBNAME1).so
34+
SHAREDLIBV=$(LIBNAME1).so.1.2.11
35+
SHAREDLIBM=$(LIBNAME1).so.1
3336
IMPORTLIB=
34-
SHAREDTARGET=libz.so.1.2.11
37+
SHAREDTARGET=$(LIBNAME1).so.1.2.11
38+
PKGFILE=$(LIBNAME2).pc
3539

3640
LIBS=$(STATICLIB) $(SHAREDTARGET)
3741

@@ -225,18 +229,19 @@ install-static: $(STATICLIB)
225229
install-libs: install-shared install-static
226230
-@if [ ! -d $(DESTDIR)$(man3dir) ]; then mkdir -p $(DESTDIR)$(man3dir); fi
227231
-@if [ ! -d $(DESTDIR)$(pkgconfigdir) ]; then mkdir -p $(DESTDIR)$(pkgconfigdir); fi
228-
rm -f $(DESTDIR)$(man3dir)/zlib.3
229-
cp $(SRCDIR)/zlib.3 $(DESTDIR)$(man3dir)
230-
chmod 644 $(DESTDIR)$(man3dir)/zlib.3
231-
rm -f $(DESTDIR)$(pkgconfigdir)/zlib.pc
232-
cp zlib.pc $(DESTDIR)$(pkgconfigdir)
233-
chmod 644 $(DESTDIR)$(pkgconfigdir)/zlib.pc
232+
rm -f $(DESTDIR)$(man3dir)/zlib$(SUFFIX).3
233+
cp $(SRCDIR)/zlib.3 $(DESTDIR)$(man3dir)/zlib$(SUFFIX).3
234+
chmod 644 $(DESTDIR)$(man3dir)/zlib$(SUFFIX).3
235+
rm -f $(DESTDIR)$(pkgconfigdir)/$(PKGFILE)
236+
cp $(PKGFILE) $(DESTDIR)$(pkgconfigdir)
237+
chmod 644 $(DESTDIR)$(pkgconfigdir)/$(PKGFILE)
234238

235239
install: install-libs
236240
-@if [ ! -d $(DESTDIR)$(includedir) ]; then mkdir -p $(DESTDIR)$(includedir); fi
237-
rm -f $(DESTDIR)$(includedir)/zlib.h $(DESTDIR)$(includedir)/zconf.h
238-
cp $(SRCDIR)/zlib.h zconf.h $(DESTDIR)$(includedir)
239-
chmod 644 $(DESTDIR)$(includedir)/zlib.h $(DESTDIR)$(includedir)/zconf.h
241+
rm -f $(DESTDIR)$(includedir)/zlib$(SUFFIX).h $(DESTDIR)$(includedir)/zconf$(SUFFIX).h
242+
cp $(SRCDIR)/zlib.h $(DESTDIR)$(includedir)/zlib$(SUFFIX).h
243+
cp zconf.h $(DESTDIR)$(includedir)/zconf$(SUFFIX).h
244+
chmod 644 $(DESTDIR)$(includedir)/zlib$(SUFFIX).h $(DESTDIR)$(includedir)/zconf$(SUFFIX).h
240245

241246
uninstall-static:
242247
cd $(DESTDIR)$(libdir) && rm -f $(STATICLIB)
@@ -250,9 +255,9 @@ ifneq ($(IMPORTLIB),)
250255
endif
251256

252257
uninstall: uninstall-static uninstall-shared
253-
cd $(DESTDIR)$(includedir) && rm -f zlib.h zconf.h
254-
cd $(DESTDIR)$(man3dir) && rm -f zlib.3
255-
cd $(DESTDIR)$(pkgconfigdir) && rm -f zlib.pc
258+
cd $(DESTDIR)$(includedir) && rm -f zlib$(SUFFIX).h zconf$(SUFFIX).h
259+
cd $(DESTDIR)$(man3dir) && rm -f zlib$(SUFFIX).3
260+
cd $(DESTDIR)$(pkgconfigdir) && rm -f $(PKGFILE)
256261

257262
docs: zlib.3.pdf
258263

@@ -273,12 +278,13 @@ clean:
273278
rm -rf objs
274279
rm -f *.gcda *.gcno *.gcov
275280
rm -f a.out a.exe
281+
rm -f *.pc
276282

277283
maintainer-clean: distclean
278284
distclean: clean
279285
@if [ -f $(ARCHDIR)/Makefile ]; then $(MAKE) -C $(ARCHDIR) distclean; fi
280286
@if [ -f test/Makefile ]; then $(MAKE) -C test distclean; fi
281-
rm -f zlib.pc configure.log zconf.h zconf.h.cmakein
287+
rm -f $(PKGFILE) configure.log zconf.h zconf.h.cmakein
282288
-@rm -f .DS_Store
283289
# Reset Makefile if building inside source tree
284290
@if [ -f Makefile.in ]; then \

configure

Lines changed: 68 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -47,18 +47,9 @@ case "${ARCH}" in
4747
;;
4848
esac
4949

50-
# destination name for static library
51-
STATICLIB=libz.a
52-
5350
# destination name for windows import library
5451
IMPORTLIB=
5552

56-
# extract zlib version numbers from zlib.h
57-
VER=`sed -n -e '/ZLIB_VERSION "/s/.*"\(.*\)".*/\1/p' < ${SRCDIR}/zlib.h`
58-
VER3=`sed -n -e '/ZLIB_VERSION "/s/.*"\([0-9]*\\.[0-9]*\\.[0-9]*\).*/\1/p' < ${SRCDIR}/zlib.h`
59-
VER2=`sed -n -e '/ZLIB_VERSION "/s/.*"\([0-9]*\\.[0-9]*\)\\..*/\1/p' < ${SRCDIR}/zlib.h`
60-
VER1=`sed -n -e '/ZLIB_VERSION "/s/.*"\([0-9]*\)\\..*/\1/p' < ${SRCDIR}/zlib.h`
61-
6253
# establish commands for library building
6354
if "${CROSS_PREFIX}ar" --version >/dev/null 2>/dev/null || test $? -lt 126; then
6455
AR=${AR-"${CROSS_PREFIX}ar"}
@@ -227,6 +218,33 @@ if test $build64 -eq 1; then
227218
LDFLAGS="${LDFLAGS} -m64"
228219
fi
229220

221+
# Set library name depending on zlib-compat option
222+
if test $compat -eq 0; then
223+
LIBNAME=libz-ng
224+
LIBNAME2=zlib-ng
225+
SUFFIX=-ng
226+
else
227+
LIBNAME=libz
228+
LIBNAME2=zlib
229+
SUFFIX=""
230+
fi
231+
232+
STATICLIB=${LIBNAME}.a
233+
MAPNAME=$LIBNAME2.map
234+
235+
# extract zlib version numbers from zlib.h
236+
if test $compat -eq 0; then
237+
VER=`sed -n -e '/ZLIBNG_VERSION "/s/.*"\(.*\)".*/\1/p' < ${SRCDIR}/zlib.h`
238+
VER3=`sed -n -e '/ZLIBNG_VERSION "/s/.*"\([0-9]*\\.[0-9]*\\.[0-9]*\).*/\1/p' < ${SRCDIR}/zlib.h`
239+
VER2=`sed -n -e '/ZLIBNG_VERSION "/s/.*"\([0-9]*\\.[0-9]*\)\\..*/\1/p' < ${SRCDIR}/zlib.h`
240+
VER1=`sed -n -e '/ZLIBNG_VERSION "/s/.*"\([0-9]*\)\\..*/\1/p' < ${SRCDIR}/zlib.h`
241+
else
242+
VER=`sed -n -e '/ZLIB_VERSION "/s/.*"\(.*\)".*/\1/p' < ${SRCDIR}/zlib.h`
243+
VER3=`sed -n -e '/ZLIB_VERSION "/s/.*"\([0-9]*\\.[0-9]*\\.[0-9]*\).*/\1/p' < ${SRCDIR}/zlib.h`
244+
VER2=`sed -n -e '/ZLIB_VERSION "/s/.*"\([0-9]*\\.[0-9]*\)\\..*/\1/p' < ${SRCDIR}/zlib.h`
245+
VER1=`sed -n -e '/ZLIB_VERSION "/s/.*"\([0-9]*\)\\..*/\1/p' < ${SRCDIR}/zlib.h`
246+
fi
247+
230248
show $cc -c $test.c
231249
if test "$gcc" -eq 1 && ($cc $CFLAGS -c $test.c) >> configure.log 2>&1; then
232250
echo ... using gcc >> configure.log
@@ -286,23 +304,27 @@ if test "$gcc" -eq 1 && ($cc $CFLAGS -c $test.c) >> configure.log 2>&1; then
286304
case "$uname" in
287305
Linux* | linux* | GNU | GNU/* | solaris*)
288306
LDSHARED=${LDSHARED-"$cc"}
289-
LDSHAREDFLAGS="-shared -Wl,-soname,libz.so.1,--version-script,${SRCDIR}/zlib.map" ;;
307+
LDSHAREDFLAGS="-shared -Wl,-soname,${LIBNAME}.so.1,--version-script,${SRCDIR}/${MAPNAME}" ;;
290308
*BSD | *bsd* | DragonFly)
291309
LDSHARED=${LDSHARED-"$cc"}
292-
LDSHAREDFLAGS="-shared -Wl,-soname,libz.so.1,--version-script,${SRCDIR}/zlib.map"
310+
LDSHAREDFLAGS="-shared -Wl,-soname,${LIBNAME}.so.1,--version-script,${SRCDIR}/${MAPNAME}"
293311
LDCONFIG="ldconfig -m" ;;
294312
CYGWIN* | Cygwin* | cygwin*)
295313
ARFLAGS="rcs"
296314
SFLAGS="${CFLAGS}"
297315
shared_ext='.dll'
298316
sharedlibdir='${bindir}'
299-
SHAREDLIB=cygz$shared_ext
317+
if test $compat -eq 0; then
318+
SHAREDLIB=cygz-ng$shared_ext
319+
else
320+
SHAREDLIB=cygz$shared_ext
321+
fi
300322
SHAREDLIBM=''
301323
SHAREDLIBV=''
302324
SHAREDTARGET=$SHAREDLIB
303-
IMPORTLIB='libz.dll.a'
325+
IMPORTLIB='${LIBNAME}.dll.a'
304326
LDSHARED=${LDSHARED-"$cc"}
305-
LDSHAREDFLAGS="-shared -Wl,--out-implib,${IMPORTLIB},--version-script,${SRCDIR}/zlib.map"
327+
LDSHAREDFLAGS="-shared -Wl,--out-implib,${IMPORTLIB},--version-script,${SRCDIR}/${MAPNAME}"
306328
LDSHAREDLIBC=""
307329
DEFFILE='win32/zlib.def'
308330
RC="${CROSS_PREFIX}windres"
@@ -315,11 +337,15 @@ if test "$gcc" -eq 1 && ($cc $CFLAGS -c $test.c) >> configure.log 2>&1; then
315337
SFLAGS="${CFLAGS}"
316338
shared_ext='.dll'
317339
sharedlibdir='${bindir}'
318-
SHAREDLIB=msys-z$shared_ext
340+
if test $compat -eq 0; then
341+
SHAREDLIB=msys-z-ng$shared_ext
342+
else
343+
SHAREDLIB=msys-z$shared_ext
344+
fi
319345
SHAREDLIBM=''
320346
SHAREDLIBV=''
321347
SHAREDTARGET=$SHAREDLIB
322-
IMPORTLIB='libz.dll.a'
348+
IMPORTLIB='${LIBNAME}.dll.a'
323349
LDSHARED=${LDSHARED-"$cc"}
324350
LDSHAREDFLAGS="-shared -Wl,--out-implib,${IMPORTLIB}"
325351
LDSHAREDLIBC=""
@@ -335,13 +361,13 @@ if test "$gcc" -eq 1 && ($cc $CFLAGS -c $test.c) >> configure.log 2>&1; then
335361
SFLAGS="${CFLAGS}"
336362
shared_ext='.dll'
337363
sharedlibdir='${bindir}'
338-
SHAREDLIB=libz-$VER1$shared_ext
364+
SHAREDLIB=${LIBNAME}-$VER1$shared_ext
339365
SHAREDLIBM=''
340366
SHAREDLIBV=''
341367
SHAREDTARGET=$SHAREDLIB
342-
IMPORTLIB='libz.dll.a'
368+
IMPORTLIB='${LIBNAME}.dll.a'
343369
LDSHARED=${LDSHARED-"$cc"}
344-
LDSHAREDFLAGS="-shared -Wl,--out-implib=${IMPORTLIB} -Wl,--version-script=${SRCDIR}/zlib.map"
370+
LDSHAREDFLAGS="-shared -Wl,--out-implib=${IMPORTLIB} -Wl,--version-script=${SRCDIR}/${MAPNAME}"
345371
LDSHAREDLIBC=""
346372
DEFFILE='win32/zlib.def'
347373
RC="${CROSS_PREFIX}windres"
@@ -357,23 +383,23 @@ if test "$gcc" -eq 1 && ($cc $CFLAGS -c $test.c) >> configure.log 2>&1; then
357383
QNX*) # This is for QNX6. I suppose that the QNX rule below is for QNX2,QNX4
358384
359385
LDSHARED=${LDSHARED-"$cc"}
360-
LDSHAREDFLAGS="-shared -Wl,-hlibz.so.1" ;;
386+
LDSHAREDFLAGS="-shared -Wl,-h${LIBNAME}.so.1" ;;
361387
HP-UX*)
362388
LDSHARED=${LDSHARED-"$cc"}
363389
LDSHAREDFLAGS="-shared"
364390
case `(uname -m || echo unknown) 2>/dev/null` in
365391
ia64)
366392
shared_ext='.so'
367-
SHAREDLIB='libz.so' ;;
393+
SHAREDLIB='${LIBNAME}.so' ;;
368394
*)
369395
shared_ext='.sl'
370-
SHAREDLIB='libz.sl' ;;
396+
SHAREDLIB='${LIBNAME}.sl' ;;
371397
esac ;;
372398
Darwin* | darwin*)
373399
shared_ext='.dylib'
374-
SHAREDLIB=libz$shared_ext
375-
SHAREDLIBV=libz.$VER$shared_ext
376-
SHAREDLIBM=libz.$VER1$shared_ext
400+
SHAREDLIB=${LIBNAME}$shared_ext
401+
SHAREDLIBV=${LIBNAME}.$VER$shared_ext
402+
SHAREDLIBM=${LIBNAME}.$VER1$shared_ext
377403
SHAREDTARGET=$SHAREDLIBV
378404
LDSHARED=${LDSHARED-"$cc"}
379405
LDSHAREDFLAGS="-dynamiclib -install_name $libdir/$SHAREDLIBM -compatibility_version $VER1 -current_version $VER3"
@@ -383,11 +409,13 @@ if test "$gcc" -eq 1 && ($cc $CFLAGS -c $test.c) >> configure.log 2>&1; then
383409
AR="/usr/bin/libtool"
384410
fi
385411
ARFLAGS="-o" ;;
386-
aarch64) LDSHARED=${LDSHARED-"$cc"}
387-
LDSHAREDFLAGS="-shared -Wl,-soname,libz.so.1 -Wl,--version-script,${SRCDIR}/zlib.map"
412+
aarch64)
413+
LDSHARED=${LDSHARED-"$cc"}
414+
LDSHAREDFLAGS="-shared -Wl,-soname,${LIBNAME}.so.1 -Wl,--version-script,${SRCDIR}/${MAPNAME}"
388415
LDSHAREDLIBC="-Wl,--start-group -lc -lrdimon -Wl,--end-group" ;;
389-
*) LDSHARED=${LDSHARED-"$cc"}
390-
LDSHAREDFLAGS="-shared" ;;
416+
*)
417+
LDSHARED=${LDSHARED-"$cc"}
418+
LDSHAREDFLAGS="-shared" ;;
391419
esac
392420
else
393421
# find system name and corresponding cc options
@@ -405,10 +433,10 @@ else
405433
case `(uname -m || echo unknown) 2>/dev/null` in
406434
ia64)
407435
shared_ext='.so'
408-
SHAREDLIB='libz.so' ;;
436+
SHAREDLIB='${LIBNAME}.so' ;;
409437
*)
410438
shared_ext='.sl'
411-
SHAREDLIB='libz.sl' ;;
439+
SHAREDLIB='${LIBNAME}.sl' ;;
412440
esac ;;
413441
AIX*) # Courtesy of [email protected]
414442
SFLAGS=${CFLAGS-"-O -qmaxmem=8192"}
@@ -424,10 +452,10 @@ else
424452
fi
425453

426454
# destination names for shared library if not defined above
427-
SHAREDLIB=${SHAREDLIB-"libz$shared_ext"}
428-
SHAREDLIBV=${SHAREDLIBV-"libz$shared_ext.$VER"}
429-
SHAREDLIBM=${SHAREDLIBM-"libz$shared_ext.$VER1"}
430-
SHAREDTARGET=${SHAREDTARGET-"libz$shared_ext.$VER"}
455+
SHAREDLIB=${SHAREDLIB-"${LIBNAME}$shared_ext"}
456+
SHAREDLIBV=${SHAREDLIBV-"${LIBNAME}$shared_ext.$VER"}
457+
SHAREDLIBM=${SHAREDLIBM-"${LIBNAME}$shared_ext.$VER1"}
458+
SHAREDTARGET=${SHAREDTARGET-"${LIBNAME}$shared_ext.$VER"}
431459

432460
echo >> configure.log
433461

@@ -967,6 +995,9 @@ sed < $SRCDIR/Makefile.in "
967995
/^LDFLAGS *=/s#=.*#=$LDFLAGS#
968996
/^LDSHARED *=/s#=.*#=$LDSHARED#
969997
/^LDSHAREDFLAGS *=/s#=.*#=$LDSHAREDFLAGS#
998+
/^LIBNAME1 *=/s#=.*#=$LIBNAME#
999+
/^LIBNAME2 *=/s#=.*#=$LIBNAME2#
1000+
/^SUFFIX *=/s#=.*#=$SUFFIX#
9701001
/^STATICLIB *=/s#=.*#=$STATICLIB#
9711002
/^SHAREDLIB *=/s#=.*#=$SHAREDLIB#
9721003
/^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV#
@@ -1066,7 +1097,8 @@ sed < $SRCDIR/zlib.pc.in "
10661097
/^LDFLAGS *=/s#=.*#=$LDFLAGS#
10671098
" | sed -e "
10681099
s/\@VERSION\@/$VER/g;
1069-
" > zlib.pc
1100+
s/\@SUFFIX\@/$SUFFIX/g;
1101+
" > ${LIBNAME2}.pc
10701102

10711103
# done
10721104
leave 0

0 commit comments

Comments
 (0)