@@ -3,6 +3,8 @@ set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON)
33
44project (zlib C)
55
6+ set (CMAKE_VERBOSE_MAKEFILE ON )
7+
68set (VERSION "1.3.1" )
79
810option (ZLIB_BUILD_EXAMPLES "Enable Zlib Examples" ON )
@@ -84,7 +86,6 @@ configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.cmakein
8486 ${CMAKE_CURRENT_BINARY_DIR} /zconf.h @ONLY)
8587include_directories (${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR} )
8688
87-
8889#============================================================================
8990# zlib
9091#============================================================================
@@ -149,40 +150,66 @@ if(MINGW)
149150 set (ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR} /zlib1rc.obj)
150151endif (MINGW)
151152
152- add_library (zlib SHARED ${ZLIB_SRCS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS} )
153- target_include_directories (zlib PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} )
154153add_library (zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS} )
155154target_include_directories (zlibstatic PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} )
156- set_target_properties (zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL)
157- set_target_properties (zlib PROPERTIES SOVERSION 1)
158-
159- if (NOT CYGWIN )
160- # This property causes shared libraries on Linux to have the full version
161- # encoded into their final filename. We disable this on Cygwin because
162- # it causes cygz-${ZLIB_FULL_VERSION}.dll to be created when cygz.dll
163- # seems to be the default.
164- #
165- # This has no effect with MSVC, on that platform the version info for
166- # the DLL comes from the resource file win32/zlib1.rc
167- set_target_properties (zlib PROPERTIES VERSION ${ZLIB_FULL_VERSION} )
155+ if (CMAKE_C_COMPILER_ID STREQUAL "OpenWatcom" )
156+ # On Open Watcom platforms the library is always called libz
157+ set_target_properties (zlibstatic PROPERTIES OUTPUT_NAME "zlib" )
158+ elseif (UNIX )
159+ # On unix-like platforms the library is almost always called libz
160+ set_target_properties (zlibstatic PROPERTIES OUTPUT_NAME z)
168161endif ()
169162
170- if (UNIX )
171- # On unix-like platforms the library is almost always called libz
172- set_target_properties (zlib zlibstatic PROPERTIES OUTPUT_NAME z)
173- if (NOT APPLE AND NOT (CMAKE_SYSTEM_NAME STREQUAL AIX))
174- set_target_properties (zlib PROPERTIES LINK_FLAGS "-Wl,--version-script,\" ${CMAKE_CURRENT_SOURCE_DIR} /zlib.map\" " )
175- endif ()
176- elseif (BUILD_SHARED_LIBS AND WIN32 )
177- # Creates zlib1.dll when building shared library version
178- set_target_properties (zlib PROPERTIES SUFFIX "1.dll" )
163+ set (ZLIB_BUILD_SHARED_LIB)
164+ if (NOT (CMAKE_C_COMPILER_ID STREQUAL "OpenWatcom" ) AND NOT () OR (CMAKE_SYSTEM_NAME MATCHES "Windows|OS2|Windows3x" ))
165+ set (ZLIB_BUILD_SHARED_LIB 1)
166+ add_library (zlib SHARED ${ZLIB_SRCS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS} )
167+ target_include_directories (zlib PUBLIC
168+ $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR} >
169+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} >)
170+ set_target_properties (zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL)
171+ set_target_properties (zlib PROPERTIES SOVERSION 1)
172+
173+ if (CMAKE_C_COMPILER_ID STREQUAL "OpenWatcom" )
174+ # Creates zlib1.dll when building shared library version
175+ set_target_properties (zlib PROPERTIES ARCHIVE_OUTPUT_NAME "zdll" )
176+ set_target_properties (zlib PROPERTIES SUFFIX "1.dll" )
177+ else ()
178+ if (NOT CYGWIN )
179+ # This property causes shared libraries on Linux to have the full version
180+ # encoded into their final filename. We disable this on Cygwin because
181+ # it causes cygz-${ZLIB_FULL_VERSION}.dll to be created when cygz.dll
182+ # seems to be the default.
183+ #
184+ # This has no effect with MSVC, on that platform the version info for
185+ # the DLL comes from the resource file win32/zlib1.rc
186+ set_target_properties (zlib PROPERTIES VERSION ${ZLIB_FULL_VERSION} )
187+ endif ()
188+
189+ if (UNIX )
190+ # On unix-like platforms the library is almost always called libz
191+ set_target_properties (zlib PROPERTIES OUTPUT_NAME z)
192+ if (NOT APPLE AND NOT (CMAKE_SYSTEM_NAME STREQUAL AIX))
193+ set_target_properties (zlib PROPERTIES LINK_FLAGS "-Wl,--version-script,\" ${CMAKE_CURRENT_SOURCE_DIR} /zlib.map\" " )
194+ endif ()
195+ elseif (BUILD_SHARED_LIBS AND WIN32 )
196+ # Creates zlib1.dll when building shared library version
197+ set_target_properties (zlib PROPERTIES SUFFIX "1.dll" )
198+ endif ()
199+ endif ()
179200endif ()
180201
181202if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL )
182- install (TARGETS zlib zlibstatic
203+ install (TARGETS zlibstatic
183204 RUNTIME DESTINATION "${INSTALL_BIN_DIR} "
184205 ARCHIVE DESTINATION "${INSTALL_LIB_DIR} "
185206 LIBRARY DESTINATION "${INSTALL_LIB_DIR} " )
207+ if (ZLIB_BUILD_SHARED_LIB)
208+ install (TARGETS zlib
209+ RUNTIME DESTINATION "${INSTALL_BIN_DIR} "
210+ ARCHIVE DESTINATION "${INSTALL_LIB_DIR} "
211+ LIBRARY DESTINATION "${INSTALL_LIB_DIR} " )
212+ endif ()
186213endif ()
187214if (NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL )
188215 install (FILES ${ZLIB_PUBLIC_HDRS} DESTINATION "${INSTALL_INC_DIR} " )
@@ -198,21 +225,29 @@ endif()
198225# Example binaries
199226#============================================================================
200227if (ZLIB_BUILD_EXAMPLES)
228+ set (ZLIB_EXAMPLES_LINK_LIB zlibstatic)
229+ if (ZLIB_BUILD_SHARED_LIB)
230+ if (CMAKE_C_COMPILER_ID STREQUAL "OpenWatcom" )
231+ set (ZLIB_EXAMPLES_LINK_LIB zdll)
232+ else ()
233+ set (ZLIB_EXAMPLES_LINK_LIB zlib)
234+ endif ()
235+ endif ()
201236 add_executable (example test /example.c)
202- target_link_libraries (example zlib )
237+ target_link_libraries (example ${ZLIB_EXAMPLES_LINK_LIB} )
203238 add_test (example example)
204239
205240 add_executable (minigzip test /minigzip.c)
206- target_link_libraries (minigzip zlib )
241+ target_link_libraries (minigzip ${ZLIB_EXAMPLES_LINK_LIB} )
207242
208243 if (HAVE_OFF64_T)
209244 add_executable (example64 test /example.c)
210- target_link_libraries (example64 zlib )
245+ target_link_libraries (example64 ${ZLIB_EXAMPLES_LINK_LIB} )
211246 set_target_properties (example64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64" )
212247 add_test (example64 example64)
213248
214249 add_executable (minigzip64 test /minigzip.c)
215- target_link_libraries (minigzip64 zlib )
250+ target_link_libraries (minigzip64 ${ZLIB_EXAMPLES_LINK_LIB} )
216251 set_target_properties (minigzip64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64" )
217252 endif ()
218253endif ()
0 commit comments