1 # Set configuration for building XM7/SDL.
2 # (C) 2014 K.Ohta <whatisthis.sowhat@gmail.com>
3 # This is part of XM7/SDL, but license is apache 2.2,
4 # this part was written only me.
6 include(CheckFunctionExists)
8 if(DEFINED QT5_ROOT_PATH)
9 SET(CMAKE_FIND_ROOT_PATH ${QT5_ROOT_PATH} ${CMAKE_FIND_ROOT_PATH})
12 # Use cmake if enabled.
13 find_program(USE_CCACHE ccache)
15 SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
16 SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
18 FIND_PACKAGE(Qt5Widgets REQUIRED)
19 FIND_PACKAGE(Qt5Core REQUIRED)
20 FIND_PACKAGE(Qt5Gui REQUIRED)
21 FIND_PACKAGE(Qt5OpenGL REQUIRED)
22 include_directories(${Qt5Widgets_INCLUDE_DIRS})
23 include_directories(${Qt5Core_INCLUDE_DIRS})
24 include_directories(${Qt5Gui_INCLUDE_DIRS})
25 include_directories(${Qt5OpenGL_INCLUDE_DIRS})
26 add_definitions(-D_USE_OPENGL -DUSE_OPENGL)
28 FIND_PACKAGE(Qt5Network REQUIRED)
29 include_directories(${Qt5Network_INCLUDE_DIRS})
32 set(USE_QT5_4_APIS OFF CACHE BOOL "Build with Qt5.4 (or later) APIs if you can.")
33 set(USE_GCC_OLD_ABI ON CACHE BOOL "Build with older GCC ABIs if you can.")
34 set(USE_SDL2 ON CACHE BOOL "Build with libSDL2. DIsable is building with libSDL1.")
35 set(USE_MOVIE_SAVER OFF CACHE BOOL "Save screen/audio as MP4 MOVIE. Needs libav .")
36 set(USE_MOVIE_LOADER OFF CACHE BOOL "Load movie from screen for some VMs. Needs libav .")
37 set(USE_LTO ON CACHE BOOL "Use link-time-optimization to build.")
39 # set_property(DIRECTORY PROPERTY INTERPROCEDURAL_OPTIMIZATION true)
41 # set_property(DIRECTORY PROPERTY INTERPROCEDURAL_OPTIMIZATION false)
44 add_definitions(-D_USE_QT5)
47 add_definitions(-D_USE_QT_5_4)
49 #add_definitions(-DQT_NO_VERSION_TAGGING)
53 add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
55 add_definitions(-D_GLIBCXX_USE_CXX11_ABI=1)
58 SET(CMAKE_AUTOMOC OFF)
60 SET(CMAKE_INCLUDE_CURRENT_DIR ON)
63 add_definitions(-D_USE_QT)
64 add_definitions(-DUSE_QT)
65 add_definitions(-DQT_MAJOR_VERSION=${Qt5Widgets_VERSION_MAJOR})
66 add_definitions(-DQT_MINOR_VERSION=${Qt5Widgets_VERSION_MINOR})
70 include_directories(${OPENMP_INCLUDE_PATH})
74 include_directories(${THREADS_INCLUDE_PATH})
76 include(FindPkgConfig)
80 add_definitions(-DUSE_LIBAV)
82 add_definitions(-DUSE_MOVIE_SAVER)
85 add_definitions(-DUSE_MOVIE_LOADER)
87 add_definitions(-D__STDC_CONSTANT_MACROS)
88 add_definitions(-D__STDC_FORMAT_MACROS)
90 set(USE_MOVIE_SAVER OFF)
91 set(USE_MOVIE_LOADER OFF)
92 set(LIBAV_LIBRARIES "")
96 if(CMAKE_CROSSCOMPILING)
97 include_directories(${SDL2_INCLUDE_DIRS})
99 pkg_search_module(SDL2 REQUIRED sdl2)
100 include_directories(${SDL2_INCLUDE_DIRS})
102 set(SDL_LIBS ${SDL2_LIBRARIES})
103 add_definitions(-DUSE_SDL2)
105 if(CMAKE_CROSSCOMPILING)
106 include_directories(${SDL_INCLUDE_DIRS})
107 set(SDL_LIBS ${SDL_LIBRARIES})
110 #pkg_search_module(SDL REQUIRED sdl)
111 #include_directories(${SDL_INCLUDE_DIRS})
112 include_directories(${SDL_INCLUDE_DIR})
113 set(SDL_LIBS ${SDL_LIBRARY})
118 if(CMAKE_COMPILER_IS_GNUCC)
119 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flax-vector-conversions")
122 if(CMAKE_COMPILER_IS_GNUCXX)
123 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive -flax-vector-conversions")
127 check_function_exists("nanosleep" HAVE_NANOSLEEP)
128 if(NOT HAVE_NANOSLEEP)
129 check_library_exists("rt" "nanosleep" "" LIB_RT_HAS_NANOSLEEP)
130 endif(NOT HAVE_NANOSLEEP)
132 if(LIB_RT_HAS_NANOSLEEP)
133 add_target_library(${EXEC_TARGET} rt)
134 endif(LIB_RT_HAS_NANOSLEEP)
136 if(HAVE_NANOSLEEP OR LIB_RT_HAS_NANOSLEEP)
137 add_definitions(-DHAVE_NANOSLEEP)
138 endif(HAVE_NANOSLEEP OR LIB_RT_HAS_NANOSLEEP)
141 set(SRC_BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../src)
144 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
145 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
149 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/vm/${VM_NAME})
151 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/vm/fmgen)
153 # set(FMGEN_LIB vm_fmgen)
154 # set(FMGEN_LIB "-lCSPfmgen")
157 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/machines/${VM_NAME})
161 include_directories(${LIBAV_INCLUDE_DIRS})
163 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src)
164 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/vm)
165 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/common)
166 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/gui)
167 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt)
169 # add_subdirectory(../../src/qt/gui qt/gui)
171 #add_subdirectory(../../src/qt qt/osd)
172 add_subdirectory(../../src common)
173 add_subdirectory(../../src/vm vm/)
177 set(DEBUG_LIBS qt_debugger)
178 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/debugger)
179 add_subdirectory(../../src/qt/debugger qt/debugger)
219 ${ADDITIONAL_LIBRARIES}
221 #SET(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> qcs <TARGET> <LINK_FLAGS> <OBJECTS>")
222 #SET(CMAKE_C_ARCHIVE_FINISH true)
223 #SET(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> qcs <TARGET> <LINK_FLAGS> <OBJECTS>")
224 #SET(CMAKE_CXX_ARCHIVE_FINISH true)
233 ${ADDITIONAL_LIBRARIES}
235 set(BUNDLE_LIBS ${BUNDLE_LIBS} -lCSPosd -lCSPfmgen -lCSPcommon_vm -lCSPgui -lCSPemu_utils -lCSPavio)
239 set(BUNDLE_LIBS ${BUNDLE_LIBS} ${QT_LIBRARIES})
242 set(BUNDLE_LIBS ${BUNDLE_LIBS} ${THREADS_LIBRARY})
245 add_subdirectory(../../src/vm/${VM_NAME} vm/${VM_NAME})
247 # add_subdirectory(../../src/vm/fmgen vm/fmgen)
249 add_subdirectory(../../src/qt/machines/${VM_NAME} qt/${VM_NAME})
250 add_subdirectory(../../src/qt/common qt/common)