OSDN Git Service

[VM][FM7][LIBNEWDEV] Add some devices to libCSPcommon_dev.
[csp-qt/common_source_project-fm7.git] / source / build-cmake / cmake / config_commonsource.cmake
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.
5
6 include(CheckFunctionExists)
7
8 if(USE_DEVICES_SHARED_LIB)
9   add_definitions(-DUSE_DEVICES_SHARED_LIB)
10   set(I386_CPPS
11         libcpu_newdev/i386.cpp
12         libcpu_newdev/libcpu_i386/i386_real.cpp
13         libcpu_newdev/libcpu_i386/i386op16_real.cpp
14         libcpu_newdev/libcpu_i386/i386dasm.cpp
15         )
16   set(MC6809_CPPS 
17         libcpu_newdev/libcpu_mc6809/mc6809.cpp
18   )
19   set(MCS48_CPPS
20         libcpu_newdev/mcs48.cpp
21   )
22 else()
23   set(I386_CPPS i386.cpp)
24   set(MC6809_CPPS mc6809.cpp)
25   set(MCS48_CPPS mcs48.cpp)
26   set(VMFILES ${VMFILES} ${VMFILES_LIB})
27 endif()
28
29 if(FLAG_USE_I86)
30   set(VMFILES ${VMFILES} i86.cpp)
31 endif()
32 if(FLAG_USE_I286)
33   set(VMFILES ${VMFILES} i286.cpp)
34 endif()
35 if(FLAG_USE_I386_VARIANTS)
36   set(VMFILES ${VMFILES} ${I386_CPPS})
37 endif()
38 if(FLAG_USE_Z80)
39   set(VMFILES ${VMFILES} z80.cpp)
40 endif()
41 if(FLAG_USE_MC6809)
42   set(VMFILES ${VMFILES} ${MC6809_CPPS})
43 endif()
44 if(FLAG_USE_MCS48)
45   set(VMFILES ${VMFILES} ${MCS48_CPPS})
46 endif()
47 if(USE_DEVICES_SHARED_LIB)
48   set(VMFILES ${VMFILES}   libcpu_newdev/device.cpp)
49 endif()
50
51 if(DEFINED QT5_ROOT_PATH)
52   SET(CMAKE_FIND_ROOT_PATH  ${QT5_ROOT_PATH} ${CMAKE_FIND_ROOT_PATH})
53 endif()
54
55 # Use cmake if enabled.
56   find_program(USE_CCACHE ccache)
57   if(USE_CCACHE)
58    SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
59    SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
60   endif()
61   FIND_PACKAGE(Qt5Widgets REQUIRED)
62   FIND_PACKAGE(Qt5Core REQUIRED)
63   FIND_PACKAGE(Qt5Gui REQUIRED)
64   FIND_PACKAGE(Qt5OpenGL REQUIRED)
65   include_directories(${Qt5Widgets_INCLUDE_DIRS})
66   include_directories(${Qt5Core_INCLUDE_DIRS})
67   include_directories(${Qt5Gui_INCLUDE_DIRS})
68   include_directories(${Qt5OpenGL_INCLUDE_DIRS})
69   add_definitions(-D_USE_OPENGL -DUSE_OPENGL)
70 if(USE_SOCKET)
71   FIND_PACKAGE(Qt5Network REQUIRED)
72   include_directories(${Qt5Network_INCLUDE_DIRS})
73 endif()
74 SET(USE_QT_5 ON)
75 set(USE_QT5_4_APIS OFF CACHE BOOL "Build with Qt5.4 (or later) APIs if you can.")
76 set(USE_GCC_OLD_ABI ON CACHE BOOL "Build with older GCC ABIs if you can.")
77 set(USE_SDL2 ON CACHE BOOL "Build with libSDL2. DIsable is building with libSDL1.")
78 set(USE_MOVIE_SAVER OFF CACHE BOOL "Save screen/audio as MP4 MOVIE. Needs libav .")
79 set(USE_MOVIE_LOADER OFF CACHE BOOL "Load movie from screen for some VMs. Needs libav .")
80 set(USE_LTO ON CACHE BOOL "Use link-time-optimization to build.")
81 if(USE_LTO)
82   # set_property(DIRECTORY PROPERTY INTERPROCEDURAL_OPTIMIZATION true)
83 else()
84   # set_property(DIRECTORY PROPERTY INTERPROCEDURAL_OPTIMIZATION false)
85 endif()
86
87 add_definitions(-D_USE_QT5)
88
89 if(USE_QT5_4_APIS)
90   add_definitions(-D_USE_QT_5_4)
91 else()
92   #add_definitions(-DQT_NO_VERSION_TAGGING)
93 endif()
94
95 if(USE_GCC_OLD_ABI)
96   add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
97 else()
98   add_definitions(-D_GLIBCXX_USE_CXX11_ABI=1)
99 endif()
100
101 SET(CMAKE_AUTOMOC OFF)
102 SET(CMAKE_AUTORCC ON)
103 SET(CMAKE_INCLUDE_CURRENT_DIR ON)
104
105
106 add_definitions(-D_USE_QT)
107 add_definitions(-DUSE_QT)
108 add_definitions(-DQT_MAJOR_VERSION=${Qt5Widgets_VERSION_MAJOR})
109 add_definitions(-DQT_MINOR_VERSION=${Qt5Widgets_VERSION_MINOR})
110
111 if(USE_OPENMP)
112   find_package(OpenMP)
113   include_directories(${OPENMP_INCLUDE_PATH})
114 endif()
115
116 find_package(Threads)
117 include_directories(${THREADS_INCLUDE_PATH})
118
119 include(FindPkgConfig)
120
121 include(FindLibAV)
122     if(LIBAV_FOUND)
123       add_definitions(-DUSE_LIBAV)
124       if(USE_MOVIE_SAVER)
125         add_definitions(-DUSE_MOVIE_SAVER)
126       endif()
127       if(USE_MOVIE_LOADER)
128         add_definitions(-DUSE_MOVIE_LOADER)
129       endif()
130       add_definitions(-D__STDC_CONSTANT_MACROS)
131       add_definitions(-D__STDC_FORMAT_MACROS)
132     else()
133       set(USE_MOVIE_SAVER OFF)
134       set(USE_MOVIE_LOADER OFF)
135       set(LIBAV_LIBRARIES "")
136     endif()
137     
138 if(USE_SDL2)
139    if(CMAKE_CROSSCOMPILING)
140       include_directories(${SDL2_INCLUDE_DIRS})
141    else()
142       pkg_search_module(SDL2 REQUIRED  sdl2)
143       include_directories(${SDL2_INCLUDE_DIRS})
144    endif()
145    set(SDL_LIBS ${SDL2_LIBRARIES})
146    add_definitions(-DUSE_SDL2)
147 else()
148    if(CMAKE_CROSSCOMPILING)
149       include_directories(${SDL_INCLUDE_DIRS})
150       set(SDL_LIBS ${SDL_LIBRARIES})
151    else()
152       include(FindSDL)
153       #pkg_search_module(SDL REQUIRED sdl)
154       #include_directories(${SDL_INCLUDE_DIRS})
155       include_directories(${SDL_INCLUDE_DIR})
156       set(SDL_LIBS ${SDL_LIBRARY})
157    endif()
158 endif()
159
160 # GCC Only?
161 if(CMAKE_COMPILER_IS_GNUCC) 
162   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flax-vector-conversions")
163 endif()
164
165 if(CMAKE_COMPILER_IS_GNUCXX) 
166  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive -flax-vector-conversions")
167 endif()
168
169
170 check_function_exists("nanosleep" HAVE_NANOSLEEP)
171 if(NOT HAVE_NANOSLEEP)
172   check_library_exists("rt" "nanosleep" "" LIB_RT_HAS_NANOSLEEP)
173 endif(NOT HAVE_NANOSLEEP)
174
175 if(LIB_RT_HAS_NANOSLEEP)
176   add_target_library(${EXEC_TARGET} rt)
177 endif(LIB_RT_HAS_NANOSLEEP)
178
179 if(HAVE_NANOSLEEP OR LIB_RT_HAS_NANOSLEEP)
180   add_definitions(-DHAVE_NANOSLEEP)
181 endif(HAVE_NANOSLEEP OR LIB_RT_HAS_NANOSLEEP)
182
183
184 set(SRC_BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../src)
185
186 if(USE_QT_5)
187   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
188   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
189 endif()
190
191 if(DEFINED VM_NAME)
192 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/vm/${VM_NAME})
193 #  if(USE_FMGEN)
194     include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/vm/fmgen)
195 #    if(WIN32)
196 #      set(FMGEN_LIB vm_fmgen)
197 #         set(FMGEN_LIB "-lCSPfmgen")
198 #       endif()
199 #  endif()
200 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/machines/${VM_NAME})
201 endif()
202
203 if(LIBAV_FOUND)
204    include_directories(${LIBAV_INCLUDE_DIRS})
205 endif()
206 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src)
207 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/vm)
208 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/common)
209 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/gui)
210 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt)
211 if(WIN32)
212 #  add_subdirectory(../../src/qt/gui qt/gui)
213 endif()  
214 #add_subdirectory(../../src/qt qt/osd)
215 add_subdirectory(../../src common)
216 add_subdirectory(../../src/vm vm/)
217
218 if(DEFINED VM_NAME)
219 # if(WITH_DEBUGGER)
220    set(DEBUG_LIBS qt_debugger)
221    include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/debugger)
222    add_subdirectory(../../src/qt/debugger qt/debugger)
223 # else()
224 #   set(DEBUG_LIBS)
225 # endif()
226
227 if(WIN32)
228            set(LOCAL_LIBS 
229                    common_emu
230            qt_${VM_NAME}
231                    vm_${VM_NAME}
232                    ${VM_APPEND_LIBS}
233                    ${FMGEN_LIB}
234                    vm_vm
235                    ${DEBUG_LIBS}
236                    common_common
237                    )
238 else()
239            set(LOCAL_LIBS     
240                    common_emu
241            qt_${VM_NAME}
242                    vm_${VM_NAME}
243                    vm_vm
244                    ${VM_APPEND_LIBS}
245                    ${DEBUG_LIBS}
246                    common_common
247                    )
248            endif()
249 endif()
250
251 include(simd-x86)
252
253 if(WIN32)
254    set(BUNDLE_LIBS 
255        ${OPENGL_LIBRARY}
256        ${OPENCL_LIBRARY}
257        ${GETTEXT_LIBRARY}
258        ${OPENMP_LIBRARY}
259        ${LIBAV_LIBRARIES}
260        ${SDL_LIBS}
261        ${LIBAV_LIBRARIES}
262        ${ADDITIONAL_LIBRARIES}
263        )
264        #SET(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> qcs <TARGET>  <LINK_FLAGS> <OBJECTS>")
265        #SET(CMAKE_C_ARCHIVE_FINISH   true)
266        #SET(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> qcs <TARGET> <LINK_FLAGS> <OBJECTS>")
267        #SET(CMAKE_CXX_ARCHIVE_FINISH   true)
268 else()
269    set(BUNDLE_LIBS 
270 #       ${OPENGL_LIBRARY}
271        ${OPENCL_LIBRARY}
272 #       ${GETTEXT_LIBRARY}
273        ${OPENMP_LIBRARY}
274        ${SDL_LIBS}
275 #       ${LIBAV_LIBRARIES}
276        ${ADDITIONAL_LIBRARIES}
277        )
278        set(BUNDLE_LIBS ${BUNDLE_LIBS} -lCSPosd -lCSPfmgen -lCSPcommon_vm -lCSPgui -lCSPemu_utils -lCSPavio)
279 endif()
280
281 if(USE_QT_5)
282   set(BUNDLE_LIBS ${BUNDLE_LIBS} ${QT_LIBRARIES})
283 endif()
284
285 set(BUNDLE_LIBS ${BUNDLE_LIBS} ${THREADS_LIBRARY})
286
287 if(DEFINED VM_NAME)
288         add_subdirectory(../../src/vm/${VM_NAME} vm/${VM_NAME})
289 #  if(USE_FMGEN)
290 #       add_subdirectory(../../src/vm/fmgen vm/fmgen)
291 #  endif()      
292         add_subdirectory(../../src/qt/machines/${VM_NAME} qt/${VM_NAME})
293         add_subdirectory(../../src/qt/common qt/common)
294 endif()