Merge branch 'awakecoding' of github.com:vworkspace/FreeRDP
[platform/upstream/freerdp.git] / winpr / CMakeLists.txt
1 # WinPR: Windows Portable Runtime
2 # winpr cmake build script
3 #
4 # Copyright 2012 Marc-Andre Moreau <marcandre.moreau@gmail.com>
5 #
6 # Licensed under the Apache License, Version 2.0 (the "License");
7 # you may not use this file except in compliance with the License.
8 # You may obtain a copy of the License at
9 #
10 #     http://www.apache.org/licenses/LICENSE-2.0
11 #
12 # Unless required by applicable law or agreed to in writing, software
13 # distributed under the License is distributed on an "AS IS" BASIS,
14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
17
18 cmake_minimum_required(VERSION 2.8)
19
20 project(WinPR C)
21
22 set(CMAKE_COLOR_MAKEFILE ON)
23
24 if(FREERDP_VERSION)
25         set(FREERDP_BUILD 1)
26 endif()
27
28 # Include cmake modules
29 include(CheckIncludeFiles)
30 include(CheckLibraryExists)
31 include(CheckStructHasMember)
32 include(FindPkgConfig)
33 include(TestBigEndian)
34
35 # Include our extra modules
36 set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/)
37
38 # Check for cmake compatibility (enable/disable features)
39 include(CheckCmakeCompat)
40 include(FindFeature)
41 include(ComplexLibrary)
42 include(AutoVersioning)
43 include(ConfigOptions)
44 include(CheckCCompilerFlag)
45 include(GNUInstallDirsWrapper)
46 include(CMakePackageConfigHelpers)
47
48 # Soname versioning
49 set(WINPR_VERSION_MAJOR "1")
50 set(WINPR_VERSION_MINOR "1")
51 set(WINPR_VERSION_REVISION "0")
52 set(WINPR_VERSION "${WINPR_VERSION_MAJOR}.${WINPR_VERSION_MINOR}")
53 set(WINPR_VERSION_FULL "${WINPR_VERSION}.${WINPR_VERSION_REVISION}")
54
55 # Default to release build type
56 if(NOT CMAKE_BUILD_TYPE)
57    set(CMAKE_BUILD_TYPE "Release")
58 endif()
59
60 # Default to build shared libs
61 if(NOT DEFINED BUILD_SHARED_LIBS)
62         set(BUILD_SHARED_LIBS ON)
63 endif()
64
65 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DWINPR_EXPORTS")
66
67 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
68 include_directories(${CMAKE_CURRENT_BINARY_DIR}/include)
69
70 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/include/winpr/config.h.in 
71         ${CMAKE_CURRENT_BINARY_DIR}/include/winpr/config.h)
72
73 add_subdirectory(include)
74
75 add_subdirectory(libwinpr)
76
77 if(NOT ANDROID AND NOT IOS)
78         add_subdirectory(tools)
79 endif()
80
81 # Exporting
82
83 if(${CMAKE_VERSION} VERSION_GREATER "2.8.10")
84
85         export(PACKAGE winpr)
86
87         set(WINPR_CMAKE_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/WinPR")
88
89         set(WINPR_INCLUDE_DIR "include")
90         set(WINPR_MONOLITHIC_BUILD ${MONOLITHIC_BUILD})
91
92         configure_package_config_file(WinPRConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/WinPRConfig.cmake
93                 INSTALL_DESTINATION ${WINPR_CMAKE_INSTALL_DIR}
94                 PATH_VARS WINPR_INCLUDE_DIR WINPR_MONOLITHIC_BUILD)
95
96         write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/WinPRConfigVersion.cmake
97                 VERSION ${WINPR_VERSION} COMPATIBILITY SameMajorVersion)
98
99         install(FILES ${CMAKE_CURRENT_BINARY_DIR}/WinPRConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/WinPRConfigVersion.cmake
100                 DESTINATION ${WINPR_CMAKE_INSTALL_DIR})
101
102         install(EXPORT WinPRTargets DESTINATION ${WINPR_CMAKE_INSTALL_DIR})
103
104 endif()
105