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)
7 # Use cmake if enabled.
8 find_program(USE_CCACHE ccache)
10 SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
11 SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
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)
23 FIND_PACKAGE(Qt5Network REQUIRED)
24 include_directories(${Qt5Network_INCLUDE_DIRS})
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.")
31 add_definitions(-D_USE_QT5)
34 add_definitions(-D_USE_QT_5_4)
38 add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
40 add_definitions(-D_GLIBCXX_USE_CXX11_ABI=1)
43 SET(CMAKE_AUTOMOC OFF)
45 SET(CMAKE_INCLUDE_CURRENT_DIR ON)
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})
62 include_directories(${OPENMP_INCLUDE_PATH})
66 include_directories(${THREADS_INCLUDE_PATH})
68 include(FindPkgConfig)
71 if(CMAKE_CROSSCOMPILING)
72 include_directories(${SDL2_INCLUDE_DIRS})
74 pkg_search_module(SDL2 REQUIRED sdl2)
75 include_directories(${SDL2_INCLUDE_DIRS})
77 set(SDL_LIBS ${SDL2_LIBRARIES})
78 add_definitions(-DUSE_SDL2)
80 if(CMAKE_CROSSCOMPILING)
81 include_directories(${SDL_INCLUDE_DIRS})
82 set(SDL_LIBS ${SDL_LIBRARIES})
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})
93 if(CMAKE_COMPILER_IS_GNUCC)
94 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flax-vector-conversions")
97 if(CMAKE_COMPILER_IS_GNUCXX)
98 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive -flax-vector-conversions")
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)
107 if(LIB_RT_HAS_NANOSLEEP)
108 add_target_library(${EXEC_TARGET} rt)
109 endif(LIB_RT_HAS_NANOSLEEP)
111 if(HAVE_NANOSLEEP OR LIB_RT_HAS_NANOSLEEP)
112 add_definitions(-DHAVE_NANOSLEEP)
113 endif(HAVE_NANOSLEEP OR LIB_RT_HAS_NANOSLEEP)
116 set(SRC_BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../src)
119 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
120 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
124 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/vm/${VM_NAME})
126 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/vm/fmgen)
127 set(FMGEN_LIB vm_fmgen)
129 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/machines/${VM_NAME})
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)
138 add_subdirectory(../../src/qt/gui qt/gui)
140 add_subdirectory(../../src/qt qt/osd)
141 add_subdirectory(../../src common)
142 add_subdirectory(../../src/vm vm/)
146 set(DEBUG_LIBS qt_debugger)
147 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/debugger)
148 add_subdirectory(../../src/qt/debugger qt/debugger)
190 ${ADDITIONAL_LIBRARIES}
195 set(BUNDLE_LIBS ${BUNDLE_LIBS} -lCSPgui)
199 set(BUNDLE_LIBS ${BUNDLE_LIBS} ${QT_LIBRARIES})
202 set(BUNDLE_LIBS ${BUNDLE_LIBS} ${THREADS_LIBRARY})
205 add_subdirectory(../../src/vm/${VM_NAME} vm/${VM_NAME})
207 add_subdirectory(../../src/vm/fmgen vm/fmgen)
209 add_subdirectory(../../src/qt/machines/${VM_NAME} qt/${VM_NAME})
210 add_subdirectory(../../src/qt/common qt/common)