source: rtems/cpukit/zlib/CMakeLists.txt @ e8f3eb9

4.115
Last change on this file since e8f3eb9 was d5af3c1, checked in by Ralf Corsepius <ralf.corsepius@…>, on 03/28/10 at 19:06:13

Import from zlib-1.2.5

  • Property mode set to 100644
File size: 5.7 KB
Line 
1cmake_minimum_required(VERSION 2.4.4)
2set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON)
3
4project(zlib C)
5
6if(NOT DEFINED BUILD_SHARED_LIBS)
7    option(BUILD_SHARED_LIBS "Build a shared library form of zlib" ON)
8endif()
9
10include(CheckTypeSize)
11include(CheckFunctionExists)
12include(CheckIncludeFile)
13include(CheckCSourceCompiles)
14enable_testing()
15
16check_include_file(sys/types.h HAVE_SYS_TYPES_H)
17check_include_file(stdint.h    HAVE_STDINT_H)
18check_include_file(stddef.h    HAVE_STDDEF_H)
19
20#
21# Check to see if we have large file support
22#
23set(CMAKE_REQUIRED_DEFINITIONS -D_LARGEFILE64_SOURCE=1)
24# We add these other definitions here because CheckTypeSize.cmake
25# in CMake 2.4.x does not automatically do so and we want
26# compatibility with CMake 2.4.x.
27if(HAVE_SYS_TYPES_H)
28    list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_SYS_TYPES_H)
29endif()
30if(HAVE_STDINT_H)
31    list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_STDINT_H)
32endif()
33if(HAVE_STDDEF_H)
34    list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_STDDEF_H)
35endif()
36check_type_size(off64_t OFF64_T)
37if(HAVE_OFF64_T)
38   add_definitions(-D_LARGEFILE64_SOURCE=1)
39endif()
40set(CMAKE_REQUIRED_DEFINITIONS) # clear variable
41
42#
43# Check for fseeko
44#
45check_function_exists(fseeko HAVE_FSEEKO)
46if(NOT HAVE_FSEEKO)
47    add_definitions(-DNO_FSEEKO)
48endif()
49
50#
51# Check for unistd.h
52#
53check_include_file(unistd.h Z_HAVE_UNISTD_H)
54
55if(MSVC)
56    set(CMAKE_DEBUG_POSTFIX "d")
57    add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
58    add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE)
59endif()
60
61if(NOT CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR)
62    # If we're doing an out of source build and the user has a zconf.h
63    # in their source tree...
64    if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h)
65        message(FATAL_ERROR
66            "You must remove ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h "
67            "from the source tree.  This file is included with zlib "
68            "but CMake generates this file for you automatically "
69            "in the build directory.")
70  endif()
71endif()
72
73configure_file(${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.cmakein
74               ${CMAKE_CURRENT_BINARY_DIR}/zconf.h @ONLY)
75include_directories(${CMAKE_CURRENT_BINARY_DIR})
76
77
78#============================================================================
79# zlib
80#============================================================================
81
82set(ZLIB_PUBLIC_HDRS
83    ${CMAKE_CURRENT_BINARY_DIR}/zconf.h
84    zlib.h
85)
86set(ZLIB_PRIVATE_HDRS
87    crc32.h
88    deflate.h
89    gzguts.h
90    inffast.h
91    inffixed.h
92    inflate.h
93    inftrees.h
94    trees.h
95    zutil.h
96)
97set(ZLIB_SRCS
98    adler32.c
99    compress.c
100    crc32.c
101    deflate.c
102    gzclose.c
103    gzlib.c
104    gzread.c
105    gzwrite.c
106    inflate.c
107    infback.c
108    inftrees.c
109    inffast.c
110    trees.c
111    uncompr.c
112    zutil.c
113    win32/zlib1.rc
114)
115
116# parse the full version number from zlib.h and include in ZLIB_FULL_VERSION
117file(READ ${CMAKE_CURRENT_SOURCE_DIR}/zlib.h _zlib_h_contents)
118string(REGEX REPLACE ".*#define[ \t]+ZLIB_VERSION[ \t]+\"([0-9A-Za-z.]+)\".*"
119    "\\1" ZLIB_FULL_VERSION ${_zlib_h_contents})
120
121if(MINGW)
122    # This gets us DLL resource information when compiling on MinGW.
123    add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj
124                       COMMAND windres.exe
125                            -D GCC_WINDRES
126                            -I ${CMAKE_CURRENT_SOURCE_DIR}
127                            -I ${CMAKE_CURRENT_BINARY_DIR}
128                            -o ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj
129                            -i ${CMAKE_CURRENT_SOURCE_DIR}/win32/zlib1.rc)
130    set(ZLIB_SRCS ${ZLIB_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj)
131endif(MINGW)
132
133add_library(zlib ${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
134set_target_properties(zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL)
135
136set_target_properties(zlib PROPERTIES SOVERSION 1)
137
138if(NOT CYGWIN)
139    # This property causes shared libraries on Linux to have the full version
140    # encoded into their final filename.  We disable this on Cygwin because
141    # it causes cygz-${ZLIB_FULL_VERSION}.dll to be created when cygz.dll
142    # seems to be the default.
143    #
144    # This has no effect with MSVC, on that platform the version info for
145    # the DLL comes from the resource file win32/zlib1.rc
146    set_target_properties(zlib PROPERTIES VERSION ${ZLIB_FULL_VERSION})
147endif()
148
149if(UNIX)
150    # On unix-like platforms the library is almost always called libz
151   set_target_properties(zlib PROPERTIES OUTPUT_NAME z)
152elseif(BUILD_SHARED_LIBS AND WIN32)
153    # Creates zlib1.dll when building shared library version
154    set_target_properties(zlib PROPERTIES SUFFIX "1.dll")
155endif()
156
157if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL )
158    install(TARGETS zlib
159        RUNTIME DESTINATION bin
160        ARCHIVE DESTINATION lib
161        LIBRARY DESTINATION lib )
162endif()
163if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL )
164    install(FILES ${ZLIB_PUBLIC_HDRS} DESTINATION include)
165endif()
166if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL )
167    install(FILES zlib.3 DESTINATION share/man/man3)
168endif()
169
170#============================================================================
171# Example binaries
172#============================================================================
173
174add_executable(example example.c)
175target_link_libraries(example zlib)
176add_test(example example)
177
178add_executable(minigzip minigzip.c)
179target_link_libraries(minigzip zlib)
180
181if(HAVE_OFF64_T)
182    add_executable(example64 example.c)
183    target_link_libraries(example64 zlib)
184    set_target_properties(example64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
185    add_test(example64 example64)
186
187    add_executable(minigzip64 minigzip.c)
188    target_link_libraries(minigzip64 zlib)
189    set_target_properties(minigzip64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
190endif()
Note: See TracBrowser for help on using the repository browser.