OSDN Git Service

[UI][Qt] qt/gui : separate to libCSPgui.so excepts windows.
[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 # Use cmake if enabled.
8   find_program(USE_CCACHE ccache)
9   if(USE_CCACHE)
10    SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
11    SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
12   endif()
13   FIND_PACKAGE(Qt5Widgets REQUIRED)
14   FIND_PACKAGE(Qt5Core REQUIRED)
15   FIND_PACKAGE(Qt5Gui REQUIRED)
16   FIND_PACKAGE(Qt5OpenGL REQUIRED)
17   include_directories(${Qt5Widgets_INCLUDE_DIRS})
18   include_directories(${Qt5Core_INCLUDE_DIRS})
19   include_directories(${Qt5Gui_INCLUDE_DIRS})
20   include_directories(${Qt5OpenGL_INCLUDE_DIRS})
21   add_definitions(-D_USE_OPENGL -DUSE_OPENGL)
22 if(USE_SOCKET)
23   FIND_PACKAGE(Qt5Network REQUIRED)
24   include_directories(${Qt5Network_INCLUDE_DIRS})
25 endif()
26 SET(USE_QT_5 ON)
27 set(USE_QT5_4_APIS OFF CACHE BOOL "Build with Qt5.4 (or later) APIs if you can.")
28 set(USE_GCC_OLD_ABI ON CACHE BOOL "Build with older GCC ABIs if you can.")
29 set(USE_SDL2 ON CACHE BOOL "Build with libSDL2. DIsable is building with libSDL1.")
30
31 add_definitions(-D_USE_QT5)
32
33 if(USE_QT5_4_APIS)
34   add_definitions(-D_USE_QT_5_4)
35 endif()
36
37 if(USE_GCC_OLD_ABI)
38   add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
39 else()
40   add_definitions(-D_GLIBCXX_USE_CXX11_ABI=1)
41 endif()
42
43 SET(CMAKE_AUTOMOC OFF)
44 SET(CMAKE_AUTORCC ON)
45 SET(CMAKE_INCLUDE_CURRENT_DIR ON)
46
47
48 add_definitions(-D_USE_QT)
49 add_definitions(-DUSE_QT)
50 add_definitions(-DQT_MAJOR_VERSION=${Qt5Widgets_VERSION_MAJOR})
51 add_definitions(-DQT_MINOR_VERSION=${Qt5Widgets_VERSION_MINOR})
52 # Build Flags
53 if(WITH_JOYSTICK)
54 endif()
55
56 if(WITH_MOUSE)
57 endif()
58
59
60 if(USE_OPENMP)
61   find_package(OpenMP)
62   include_directories(${OPENMP_INCLUDE_PATH})
63 endif()
64
65 find_package(Threads)
66 include_directories(${THREADS_INCLUDE_PATH})
67
68 include(FindPkgConfig)
69
70 if(USE_SDL2)
71    if(CMAKE_CROSSCOMPILING)
72       include_directories(${SDL2_INCLUDE_DIRS})
73    else()
74       pkg_search_module(SDL2 REQUIRED sdl2)
75       include_directories(${SDL2_INCLUDE_DIRS})
76    endif()
77    set(SDL_LIBS ${SDL2_LIBRARIES})
78    add_definitions(-DUSE_SDL2)
79 else()
80    if(CMAKE_CROSSCOMPILING)
81       include_directories(${SDL_INCLUDE_DIRS})
82       set(SDL_LIBS ${SDL_LIBRARIES})
83    else()
84       include(FindSDL)
85       #pkg_search_module(SDL REQUIRED sdl)
86       #include_directories(${SDL_INCLUDE_DIRS})
87       include_directories(${SDL_INCLUDE_DIR})
88       set(SDL_LIBS ${SDL_LIBRARY})
89    endif()
90 endif()
91
92 # GCC Only?
93 if(CMAKE_COMPILER_IS_GNUCC) 
94   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flax-vector-conversions")
95 endif()
96
97 if(CMAKE_COMPILER_IS_GNUCXX) 
98  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive -flax-vector-conversions")
99 endif()
100
101
102 check_function_exists("nanosleep" HAVE_NANOSLEEP)
103 if(NOT HAVE_NANOSLEEP)
104   check_library_exists("rt" "nanosleep" "" LIB_RT_HAS_NANOSLEEP)
105 endif(NOT HAVE_NANOSLEEP)
106
107 if(LIB_RT_HAS_NANOSLEEP)
108   add_target_library(${EXEC_TARGET} rt)
109 endif(LIB_RT_HAS_NANOSLEEP)
110
111 if(HAVE_NANOSLEEP OR LIB_RT_HAS_NANOSLEEP)
112   add_definitions(-DHAVE_NANOSLEEP)
113 endif(HAVE_NANOSLEEP OR LIB_RT_HAS_NANOSLEEP)
114
115
116 set(SRC_BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../src)
117
118 if(USE_QT_5)
119   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
120   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
121 endif()
122
123 if(DEFINED VM_NAME)
124 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/vm/${VM_NAME})
125   if(USE_FMGEN)
126     include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/vm/fmgen)
127     set(FMGEN_LIB vm_fmgen)
128   endif()
129 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/machines/${VM_NAME})
130 endif()
131 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src)
132 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/vm)
133 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/common)
134 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/gui)
135 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt)
136
137 if(WIN32)
138   add_subdirectory(../../src/qt/gui qt/gui)
139 endif()  
140 add_subdirectory(../../src/qt qt/osd)
141 add_subdirectory(../../src common)
142 add_subdirectory(../../src/vm vm/)
143
144 if(DEFINED VM_NAME)
145  if(WITH_DEBUGGER)
146    set(DEBUG_LIBS qt_debugger)
147    include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/debugger)
148    add_subdirectory(../../src/qt/debugger qt/debugger)
149  else()
150    set(DEBUG_LIBS)
151  endif()
152
153 if(WIN32)
154            set(LOCAL_LIBS 
155                    common_emu
156                    qt_gui
157                    qt_${VM_NAME}
158                    vm_${VM_NAME}
159                    ${VM_APPEND_LIBS}
160                    vm_vm
161                    ${FMGEN_LIB}
162                    qt_osd
163                    ${DEBUG_LIBS}
164                    common_common
165                    
166                    )
167            else()
168            set(LOCAL_LIBS     
169                    common_emu
170                    qt_${VM_NAME}
171                    vm_${VM_NAME}
172                    ${VM_APPEND_LIBS}
173                    vm_vm
174                    ${FMGEN_LIB}
175                    qt_osd
176                    ${DEBUG_LIBS}
177                    common_common
178                    )
179            endif()
180 endif()
181
182 include(simd-x86)
183
184 set(BUNDLE_LIBS 
185                            ${OPENGL_LIBRARY}
186                            ${OPENCL_LIBRARY}
187                            ${GETTEXT_LIBRARY}
188                            ${OPENMP_LIBRARY}
189                            ${SDL_LIBS}
190                            ${ADDITIONAL_LIBRARIES}
191 )
192 if(WIN32)
193
194 else()
195    set(BUNDLE_LIBS ${BUNDLE_LIBS} -lCSPgui)
196 endif()
197
198 if(USE_QT_5)
199   set(BUNDLE_LIBS ${BUNDLE_LIBS} ${QT_LIBRARIES})
200 endif()
201
202 set(BUNDLE_LIBS ${BUNDLE_LIBS} ${THREADS_LIBRARY})
203
204 if(DEFINED VM_NAME)
205         add_subdirectory(../../src/vm/${VM_NAME} vm/${VM_NAME})
206   if(USE_FMGEN)
207         add_subdirectory(../../src/vm/fmgen vm/fmgen)
208   endif()       
209         add_subdirectory(../../src/qt/machines/${VM_NAME} qt/${VM_NAME})
210         add_subdirectory(../../src/qt/common qt/common)
211 endif()