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.
6 cmake_minimum_required (VERSION 2.8)
7 cmake_policy(SET CMP0011 NEW)
9 #set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../cmake")
11 include(CheckFunctionExists)
14 if(USE_DEVICES_SHARED_LIB)
15 add_definitions(-DUSE_SHARED_DLL)
17 # Use cmake if enabled.
18 find_program(USE_CCACHE ccache)
20 SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
21 SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
23 if(NOT CSP_CROSS_BUILD)
24 #SET(CMAKE_FIND_ROOT_PATH /opt/Qt5.5.1/5.5/gcc_64 ${CMAKE_FIND_ROOT_PATH})
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)
36 FIND_PACKAGE(Qt5Network REQUIRED)
37 include_directories(${Qt5Network_INCLUDE_DIRS})
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.")
48 # set_property(DIRECTORY PROPERTY INTERPROCEDURAL_OPTIMIZATION true)
50 # set_property(DIRECTORY PROPERTY INTERPROCEDURAL_OPTIMIZATION false)
53 add_definitions(-D_USE_QT5)
55 add_definitions(-D_UNICODE)
59 add_definitions(-D_USE_QT_5_4)
61 #add_definitions(-DQT_NO_VERSION_TAGGING)
65 add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
67 add_definitions(-D_GLIBCXX_USE_CXX11_ABI=1)
72 add_definitions(-DUSE_ZLIB)
73 include_directories(${ZLIB_INCLUDE_DIRS})
76 SET(CMAKE_AUTOMOC OFF)
78 SET(CMAKE_INCLUDE_CURRENT_DIR ON)
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})
88 include_directories(${OPENMP_INCLUDE_PATH})
90 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
91 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
96 include_directories(${THREADS_INCLUDE_PATH})
98 include(FindPkgConfig)
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})
108 add_definitions(-U__GIT_REPO_VERSION)
114 add_definitions(-DUSE_LIBAV)
116 add_definitions(-DUSE_MOVIE_SAVER)
119 add_definitions(-DUSE_MOVIE_LOADER)
121 add_definitions(-D__STDC_CONSTANT_MACROS)
122 add_definitions(-D__STDC_FORMAT_MACROS)
124 set(USE_MOVIE_SAVER OFF)
125 set(USE_MOVIE_LOADER OFF)
126 set(LIBAV_LIBRARIES "")
129 if(CMAKE_CROSSCOMPILING)
130 include_directories(${SDL2_INCLUDE_DIRS})
132 pkg_search_module(SDL2 REQUIRED sdl2)
133 include_directories(${SDL2_INCLUDE_DIRS})
135 set(SDL_LIBS ${SDL2_LIBRARIES})
136 add_definitions(-DUSE_SDL2)
138 if(CMAKE_CROSSCOMPILING)
139 include_directories(${SDL_INCLUDE_DIRS})
140 set(SDL_LIBS ${SDL_LIBRARIES})
143 #pkg_search_module(SDL REQUIRED sdl)
144 #include_directories(${SDL_INCLUDE_DIRS})
145 include_directories(${SDL_INCLUDE_DIR})
146 set(SDL_LIBS ${SDL_LIBRARY})
150 set(SRC_BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../src)
153 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
154 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
158 include_directories(${LIBAV_INCLUDE_DIRS})
161 add_definitions(-D_USE_QT5)
164 add_definitions(-D_USE_QT_5_4)
168 if(CMAKE_COMPILER_IS_GNUCC)
169 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flax-vector-conversions")
172 if(CMAKE_COMPILER_IS_GNUCXX)
173 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive -flax-vector-conversions")
177 check_function_exists("nanosleep" HAVE_NANOSLEEP)
178 if(NOT HAVE_NANOSLEEP)
179 check_library_exists("rt" "nanosleep" "" LIB_RT_HAS_NANOSLEEP)
180 endif(NOT HAVE_NANOSLEEP)
182 if(LIB_RT_HAS_NANOSLEEP)
183 add_target_library(${EXEC_TARGET} rt)
184 endif(LIB_RT_HAS_NANOSLEEP)
186 if(HAVE_NANOSLEEP OR LIB_RT_HAS_NANOSLEEP)
187 add_definitions(-DHAVE_NANOSLEEP)
188 endif(HAVE_NANOSLEEP OR LIB_RT_HAS_NANOSLEEP)
191 set(SRC_BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../src)
194 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
195 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
199 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/common)
200 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/gui)
201 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt)
202 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src)