summaryrefslogtreecommitdiffstats
path: root/cmake/CMakeLists.txt
blob: dd26bd9cd1bbd4657be186fc355ce9c285c46eca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
PROJECT(LZ4 C)
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "LZ4 compression library")
set(CPACK_PACKAGE_VERSION_MAJOR 0)
set(CPACK_PACKAGE_VERSION_MINOR 0)
set(CPACK_PACKAGE_VERSION_PATCH r107)
#set(CPACK_RESOURCE_FILE_LICENSE  ${CMAKE_CURRENT_BINARY_DIR}/COPYING_LGPL)
set(VERSION_STRING	" \"${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}\" ")
include(CPack)


cmake_minimum_required (VERSION 2.6)
INCLUDE (CheckTypeSize)
check_type_size("void *" SIZEOF_VOID_P)
IF( ${SIZEOF_VOID_P} STREQUAL  "8" )
    set (CMAKE_SYSTEM_PROCESSOR "64bit")
    MESSAGE( STATUS "64 bit architecture detected size of void * is " ${SIZEOF_VOID_P})
ENDIF()

set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared libraries")

if (BUILD_SHARED_LIBS)
    message(STATUS "Enable shared library building")
else(BUILD_SHARED_LIBS)
    message(STATUS "Disable shared library building")
endif(BUILD_SHARED_LIBS)

if(UNIX AND BUILD_SHARED_LIBS)
    if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
        add_definitions(-fPIC)
    endif(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
endif()

set(SRC_DIR ../)
set(LZ4_SRCS_LIB ${SRC_DIR}lz4.c ${SRC_DIR}lz4hc.c ${SRC_DIR}lz4.h )
set(LZ4_SRCS ${SRC_DIR}xxhash.c ${SRC_DIR}bench.c ${SRC_DIR}lz4cli.c)

if(NOT BUILD_SHARED_LIBS)
    set(LZ4_SRCS ${LZ4_SRCS} ${LZ4_SRCS_LIB})
endif()

if (CMAKE_SYSTEM_PROCESSOR STREQUAL "64bit")
    message(STATUS "Build 64bit executable binary")
    add_executable(lz4c64 ${LZ4_SRCS})
    install(TARGETS lz4c64 RUNTIME DESTINATION "bin/")
    if(NOT BUILD_SHARED_LIBS)
        message(STATUS "Build 32bit executable binary")
        add_executable(lz4c32 ${LZ4_SRCS})
        install(TARGETS lz4c32 RUNTIME DESTINATION "bin/")

        SET_TARGET_PROPERTIES(lz4c32 PROPERTIES
            COMPILE_FLAGS PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32")
    endif()
else()
    message(STATUS "Build 32bit executable binary")
    add_executable(lz4c32 ${LZ4_SRCS})
    install(TARGETS lz4c32 RUNTIME DESTINATION "bin/")
endif()

if(BUILD_SHARED_LIBS)
    set(LZ4_SOVERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}")
    if (CMAKE_SYSTEM_PROCESSOR STREQUAL "64bit")
        target_link_libraries(lz4c64 liblz4)
    else()
        target_link_libraries(lz4c32 liblz4)
    endif()
	
    # for static library
    add_library(liblz4_static STATIC ${LZ4_SRCS_LIB})
    set_target_properties(liblz4_static PROPERTIES OUTPUT_NAME lz4)

    install(TARGETS liblz4_static
        LIBRARY DESTINATION lib
        ARCHIVE DESTINATION lib
    )

    # for shared library o
    add_library(liblz4 ${LZ4_SRCS_LIB})
    set_target_properties(liblz4 PROPERTIES
            OUTPUT_NAME lz4
            SOVERSION ${LZ4_SOVERSION})

    install(TARGETS liblz4
        LIBRARY DESTINATION lib
        ARCHIVE DESTINATION lib
    )
    
    install(FILES
        ${SRC_DIR}/lz4.h
        ${SRC_DIR}/lz4hc.h
        DESTINATION include)
            
endif(BUILD_SHARED_LIBS)


#warnings

ADD_DEFINITIONS("-Wall")
ADD_DEFINITIONS("-W")
ADD_DEFINITIONS("-Wundef")
ADD_DEFINITIONS("-Wcast-align")
ADD_DEFINITIONS("-Wno-implicit-function-declaration")
ADD_DEFINITIONS("-Os -march=native -std=c99")
INCLUDE_DIRECTORIES (${SRC_DIR})