OSDN Git Service

3454264581a77425e1cf4b8ba0c110cbe7a124ca
[csp-qt/common_source_project-fm7.git] / source / build-cmake / cmake / config_sharedlibs.cmake
1 # Build Common Sourcecode Project, Agar.
2 # (C) 2014 K.Ohta <whatisthis.sowhat@gmail.com>
3 # This is part of , but license is apache 2.2,
4 # this part was written only me.
5
6 cmake_minimum_required (VERSION 2.8)
7 cmake_policy(SET CMP0011 NEW)
8
9 #set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../cmake")
10
11 include(CheckFunctionExists)
12 #include(cotire)
13
14 if(USE_DEVICES_SHARED_LIB)
15   add_definitions(-DUSE_SHARED_DLL)
16 endif()
17 # Use cmake if enabled.
18   find_program(USE_CCACHE ccache)
19   if(USE_CCACHE)
20    SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
21    SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
22   endif()
23   if(NOT CSP_CROSS_BUILD)
24     #SET(CMAKE_FIND_ROOT_PATH  /opt/Qt5.5.1/5.5/gcc_64 ${CMAKE_FIND_ROOT_PATH})
25   endif()
26   FIND_PACKAGE(Qt5Widgets REQUIRED)
27   FIND_PACKAGE(Qt5Core REQUIRED)
28   FIND_PACKAGE(Qt5Gui REQUIRED)
29   FIND_PACKAGE(Qt5OpenGL REQUIRED)
30   include_directories(${Qt5Widgets_INCLUDE_DIRS})
31   include_directories(${Qt5Core_INCLUDE_DIRS})
32   include_directories(${Qt5Gui_INCLUDE_DIRS})
33   include_directories(${Qt5OpenGL_INCLUDE_DIRS})
34   add_definitions(-D_USE_OPENGL -DUSE_OPENGL)
35 if(USE_SOCKET)
36   FIND_PACKAGE(Qt5Network REQUIRED)
37   include_directories(${Qt5Network_INCLUDE_DIRS})
38 endif()
39
40 SET(USE_QT_5 ON)
41 set(USE_QT5_4_APIS OFF CACHE BOOL "Build with Qt5.4 (or later) APIs if you can.")
42 set(USE_GCC_OLD_ABI ON CACHE BOOL "Build with older GCC ABIs if you can.")
43 set(USE_SDL2 ON CACHE BOOL "Build with libSDL2. DIsable is building with libSDL1.")
44 set(USE_MOVIE_SAVER OFF CACHE BOOL "Save screen/audio as MP4 MOVIE. Needs libav .")
45 set(USE_MOVIE_LOADER OFF CACHE BOOL "Load movie from screen for some VMs. Needs libav .")
46 set(USE_LTO ON CACHE BOOL "Use link-time-optimization to build.")
47 if(USE_LTO)
48 #   set_property(DIRECTORY PROPERTY INTERPROCEDURAL_OPTIMIZATION true)
49 else()
50 #   set_property(DIRECTORY PROPERTY INTERPROCEDURAL_OPTIMIZATION false)
51 endif()
52
53 add_definitions(-D_USE_QT5)
54 if(NOT WIN32)
55   add_definitions(-D_UNICODE)
56 endif()
57
58 if(USE_QT5_4_APIS)
59   add_definitions(-D_USE_QT_5_4)
60 else()
61   #add_definitions(-DQT_NO_VERSION_TAGGING)
62 endif()
63
64 if(USE_GCC_OLD_ABI)
65   add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
66 else()
67   add_definitions(-D_GLIBCXX_USE_CXX11_ABI=1)
68 endif()
69
70 include(FindZLIB)
71 if(ZLIB_FOUND)
72   add_definitions(-DUSE_ZLIB)
73   include_directories(${ZLIB_INCLUDE_DIRS})
74 endif()
75
76 SET(CMAKE_AUTOMOC OFF)
77 SET(CMAKE_AUTORCC ON)
78 SET(CMAKE_INCLUDE_CURRENT_DIR ON)
79
80
81 add_definitions(-D_USE_QT)
82 add_definitions(-DUSE_QT)
83 add_definitions(-DQT_MAJOR_VERSION=${Qt5Widgets_VERSION_MAJOR})
84 add_definitions(-DQT_MINOR_VERSION=${Qt5Widgets_VERSION_MINOR})
85
86 if(USE_OPENMP)
87   find_package(OpenMP)
88   include_directories(${OPENMP_INCLUDE_PATH})
89   if(OPENMP_FOUND)
90     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
91     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
92   endif()
93 endif()
94
95 find_package(Threads)
96 include_directories(${THREADS_INCLUDE_PATH})
97
98 include(FindPkgConfig)
99
100 find_package(Git)
101 if(GIT_FOUND)
102         execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse HEAD OUTPUT_VARIABLE __tstr)
103         string(FIND ${__tstr} "fatal" __notfound)
104         string(REPLACE "\n" "" __tstr2 ${__tstr})
105         if(${__notfound} EQUAL -1)
106                    add_definitions(-D__GIT_REPO_VERSION=${__tstr2})
107         else()
108                    add_definitions(-U__GIT_REPO_VERSION)
109         endif()
110 endif()
111
112 string(TIMESTAMP __build_date "%b %d,%Y %H:%M:%S UTC" UTC)
113 add_definitions(-D__BUILD_DATE=\"${__build_date}\")
114
115 include(FindLibAV)
116 if(LIBAV_FOUND)
117       add_definitions(-DUSE_LIBAV)
118       if(USE_MOVIE_SAVER)
119         add_definitions(-DUSE_MOVIE_SAVER)
120       endif()
121       if(USE_MOVIE_LOADER)
122         add_definitions(-DUSE_MOVIE_LOADER)
123       endif()
124       add_definitions(-D__STDC_CONSTANT_MACROS)
125       add_definitions(-D__STDC_FORMAT_MACROS)
126 else()
127       set(USE_MOVIE_SAVER OFF)
128       set(USE_MOVIE_LOADER OFF)
129       set(LIBAV_LIBRARIES "")
130 endif()
131 if(USE_SDL2)
132    if(CMAKE_CROSSCOMPILING)
133       include_directories(${SDL2_INCLUDE_DIRS})
134    else()
135       pkg_search_module(SDL2 REQUIRED sdl2)
136       include_directories(${SDL2_INCLUDE_DIRS})
137    endif()
138    set(SDL_LIBS ${SDL2_LIBRARIES})
139    add_definitions(-DUSE_SDL2)
140 else()
141    if(CMAKE_CROSSCOMPILING)
142       include_directories(${SDL_INCLUDE_DIRS})
143       set(SDL_LIBS ${SDL_LIBRARIES})
144    else()
145       include(FindSDL)
146       #pkg_search_module(SDL REQUIRED sdl)
147       #include_directories(${SDL_INCLUDE_DIRS})
148       include_directories(${SDL_INCLUDE_DIR})
149       set(SDL_LIBS ${SDL_LIBRARY})
150    endif()
151 endif()
152
153 set(SRC_BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../src)
154
155 if(USE_QT_5)
156   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
157   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
158 endif()
159
160 if(LIBAV_FOUND)
161   include_directories(${LIBAV_INCLUDE_DIRS})
162 endif()
163
164 add_definitions(-D_USE_QT5)
165
166 if(USE_QT5_4_APIS)
167   add_definitions(-D_USE_QT_5_4)
168 endif()
169
170 # GCC Only?
171 if(CMAKE_COMPILER_IS_GNUCC) 
172   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flax-vector-conversions")
173 endif()
174
175 if(CMAKE_COMPILER_IS_GNUCXX) 
176  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive -flax-vector-conversions")
177 endif()
178
179
180 check_function_exists("nanosleep" HAVE_NANOSLEEP)
181 if(NOT HAVE_NANOSLEEP)
182   check_library_exists("rt" "nanosleep" "" LIB_RT_HAS_NANOSLEEP)
183 endif(NOT HAVE_NANOSLEEP)
184
185 if(LIB_RT_HAS_NANOSLEEP)
186   add_target_library(${EXEC_TARGET} rt)
187 endif(LIB_RT_HAS_NANOSLEEP)
188
189 if(HAVE_NANOSLEEP OR LIB_RT_HAS_NANOSLEEP)
190   add_definitions(-DHAVE_NANOSLEEP)
191 endif(HAVE_NANOSLEEP OR LIB_RT_HAS_NANOSLEEP)
192
193
194 set(SRC_BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../src)
195
196 if(USE_QT_5)
197   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
198   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
199 endif()
200
201
202 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/common)
203 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/gui)
204 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt)
205 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src)