summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLike Ma <likemartinma@gmail.com>2013-02-12 02:41:27 +0800
committerMark Adler <madler@alumni.caltech.edu>2013-02-24 00:02:36 -0800
commitbc7e017112bb8e37a3103879148be718a48f5023 (patch)
tree2e244f4aac01c64e5e7b00ce803bcb260c95a4b0
parent64a77facc0f4f6f7f51acc30a25d23d113315cc9 (diff)
downloadzlib-bc7e017112bb8e37a3103879148be718a48f5023.tar.gz
zlib-bc7e017112bb8e37a3103879148be718a48f5023.tar.bz2
zlib-bc7e017112bb8e37a3103879148be718a48f5023.zip
Suport i686 and amd64 assembler builds in CMakeLists.txt.
* Use -DASM686=1 to build with i686 asm. * Use -DAMD64=1 to build with amd64 asm.
-rw-r--r--CMakeLists.txt40
1 files changed, 38 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0256437..f6c781a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,6 +5,9 @@ project(zlib C)
5 5
6set(VERSION "1.2.7") 6set(VERSION "1.2.7")
7 7
8option(ASM686 "Enable building i686 assembly implementation")
9option(AMD64 "Enable building amd64 assembly implementation")
10
8set(INSTALL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Installation directory for executables") 11set(INSTALL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Installation directory for executables")
9set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Installation directory for libraries") 12set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Installation directory for libraries")
10set(INSTALL_INC_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Installation directory for headers") 13set(INSTALL_INC_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Installation directory for headers")
@@ -126,6 +129,39 @@ if(NOT MINGW)
126 ) 129 )
127endif() 130endif()
128 131
132if(CMAKE_COMPILER_IS_GNUCC)
133 if(ASM686)
134 set(ZLIB_ASMS contrib/asm686/match.S)
135 elseif (AMD64)
136 set(ZLIB_ASMS contrib/amd64/amd64-match.S)
137 endif ()
138
139 if(ZLIB_ASMS)
140 add_definitions(-DASMV)
141 set_source_files_properties(${ZLIB_ASMS} PROPERTIES LANGUAGE C COMPILE_FLAGS -DNO_UNDERLINE)
142 endif()
143endif()
144
145if(MSVC)
146 if(ASM686)
147 ENABLE_LANGUAGE(ASM_MASM)
148 set(ZLIB_ASMS
149 contrib/masmx86/inffas32.asm
150 contrib/masmx86/match686.asm
151 )
152 elseif (AMD64)
153 ENABLE_LANGUAGE(ASM_MASM)
154 set(ZLIB_ASMS
155 contrib/masmx64/gvmat64.asm
156 contrib/masmx64/inffasx64.asm
157 )
158 endif()
159
160 if(ZLIB_ASMS)
161 add_definitions(-DASMV -DASMINF)
162 endif()
163endif()
164
129# parse the full version number from zlib.h and include in ZLIB_FULL_VERSION 165# parse the full version number from zlib.h and include in ZLIB_FULL_VERSION
130file(READ ${CMAKE_CURRENT_SOURCE_DIR}/zlib.h _zlib_h_contents) 166file(READ ${CMAKE_CURRENT_SOURCE_DIR}/zlib.h _zlib_h_contents)
131string(REGEX REPLACE ".*#define[ \t]+ZLIB_VERSION[ \t]+\"([-0-9A-Za-z.]+)\".*" 167string(REGEX REPLACE ".*#define[ \t]+ZLIB_VERSION[ \t]+\"([-0-9A-Za-z.]+)\".*"
@@ -147,8 +183,8 @@ if(MINGW)
147 set(ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj) 183 set(ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj)
148endif(MINGW) 184endif(MINGW)
149 185
150add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) 186add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
151add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) 187add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
152set_target_properties(zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL) 188set_target_properties(zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL)
153set_target_properties(zlib PROPERTIES SOVERSION 1) 189set_target_properties(zlib PROPERTIES SOVERSION 1)
154 190