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(USE_DEVICES_SHARED_LIB)
9 #add_definitions(-DUSE_DEVICES_SHARED_LIB)
10 add_definitions(-DUSE_SHARED_DLL)
12 libcpu_newdev/i386.cpp
13 libcpu_newdev/libcpu_i386/i386_real.cpp
14 libcpu_newdev/libcpu_i386/i386op16_real.cpp
15 libcpu_newdev/libcpu_i386/i386dasm.cpp
21 libcpu_newdev/mcs48.cpp
30 set(I386_CPPS i386.cpp)
31 set(MC6809_CPPS mc6809_base.cpp mc6809.cpp)
32 set(MCS48_CPPS mcs48.cpp)
33 set(IX86_CPPS i86.cpp)
34 set(Z80_CPPS z80_base.cpp z80.cpp)
35 set(VMFILES ${VMFILES} ${VMFILES_LIB})
39 set(VMFILES ${VMFILES} ${IX86_CPPS})
42 set(VMFILES ${VMFILES} i286.cpp)
44 if(FLAG_USE_I386_VARIANTS)
45 set(VMFILES ${VMFILES} ${I386_CPPS})
48 set(VMFILES ${VMFILES} z80.cpp)
51 set(VMFILES ${VMFILES} ${MC6809_CPPS})
54 set(VMFILES ${VMFILES} ${MCS48_CPPS})
57 set(VMFILES ${VMFILES} ${Z80_CPPS})
59 if(USE_DEVICES_SHARED_LIB)
60 set(VMFILES ${VMFILES} libcpu_newdev/device.cpp)
63 if(DEFINED QT5_ROOT_PATH)
64 SET(CMAKE_FIND_ROOT_PATH ${QT5_ROOT_PATH} ${CMAKE_FIND_ROOT_PATH})
67 # Use cmake if enabled.
68 find_program(USE_CCACHE ccache)
70 SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
71 SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
73 FIND_PACKAGE(Qt5Widgets REQUIRED)
74 FIND_PACKAGE(Qt5Core REQUIRED)
75 FIND_PACKAGE(Qt5Gui REQUIRED)
76 FIND_PACKAGE(Qt5OpenGL REQUIRED)
77 include_directories(${Qt5Widgets_INCLUDE_DIRS})
78 include_directories(${Qt5Core_INCLUDE_DIRS})
79 include_directories(${Qt5Gui_INCLUDE_DIRS})
80 include_directories(${Qt5OpenGL_INCLUDE_DIRS})
81 add_definitions(-D_USE_OPENGL -DUSE_OPENGL)
83 FIND_PACKAGE(Qt5Network REQUIRED)
84 include_directories(${Qt5Network_INCLUDE_DIRS})
87 set(USE_QT5_4_APIS OFF CACHE BOOL "Build with Qt5.4 (or later) APIs if you can.")
88 set(USE_GCC_OLD_ABI ON CACHE BOOL "Build with older GCC ABIs if you can.")
89 set(USE_SDL2 ON CACHE BOOL "Build with libSDL2. DIsable is building with libSDL1.")
90 set(USE_MOVIE_SAVER OFF CACHE BOOL "Save screen/audio as MP4 MOVIE. Needs libav .")
91 set(USE_MOVIE_LOADER OFF CACHE BOOL "Load movie from screen for some VMs. Needs libav .")
92 set(USE_LTO ON CACHE BOOL "Use link-time-optimization to build.")
94 # set_property(DIRECTORY PROPERTY INTERPROCEDURAL_OPTIMIZATION true)
96 # set_property(DIRECTORY PROPERTY INTERPROCEDURAL_OPTIMIZATION false)
99 add_definitions(-D_USE_QT5)
102 add_definitions(-D_USE_QT_5_4)
104 #add_definitions(-DQT_NO_VERSION_TAGGING)
108 add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
110 add_definitions(-D_GLIBCXX_USE_CXX11_ABI=1)
113 SET(CMAKE_AUTOMOC OFF)
114 SET(CMAKE_AUTORCC ON)
115 SET(CMAKE_INCLUDE_CURRENT_DIR ON)
118 add_definitions(-D_USE_QT)
119 add_definitions(-DUSE_QT)
120 add_definitions(-DQT_MAJOR_VERSION=${Qt5Widgets_VERSION_MAJOR})
121 add_definitions(-DQT_MINOR_VERSION=${Qt5Widgets_VERSION_MINOR})
125 include_directories(${OPENMP_INCLUDE_PATH})
128 find_package(Threads)
129 include_directories(${THREADS_INCLUDE_PATH})
131 include(FindPkgConfig)
135 add_definitions(-DUSE_LIBAV)
137 add_definitions(-DUSE_MOVIE_SAVER)
140 add_definitions(-DUSE_MOVIE_LOADER)
142 add_definitions(-D__STDC_CONSTANT_MACROS)
143 add_definitions(-D__STDC_FORMAT_MACROS)
145 set(USE_MOVIE_SAVER OFF)
146 set(USE_MOVIE_LOADER OFF)
147 set(LIBAV_LIBRARIES "")
151 if(CMAKE_CROSSCOMPILING)
152 include_directories(${SDL2_INCLUDE_DIRS})
154 pkg_search_module(SDL2 REQUIRED sdl2)
155 include_directories(${SDL2_INCLUDE_DIRS})
157 set(SDL_LIBS ${SDL2_LIBRARIES})
158 add_definitions(-DUSE_SDL2)
160 if(CMAKE_CROSSCOMPILING)
161 include_directories(${SDL_INCLUDE_DIRS})
162 set(SDL_LIBS ${SDL_LIBRARIES})
165 #pkg_search_module(SDL REQUIRED sdl)
166 #include_directories(${SDL_INCLUDE_DIRS})
167 include_directories(${SDL_INCLUDE_DIR})
168 set(SDL_LIBS ${SDL_LIBRARY})
174 add_definitions(-DUSE_ZLIB)
175 include_directories(${ZLIB_INCLUDE_DIRS})
179 if(CMAKE_COMPILER_IS_GNUCC)
180 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flax-vector-conversions")
183 if(CMAKE_COMPILER_IS_GNUCXX)
184 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive -flax-vector-conversions")
188 check_function_exists("nanosleep" HAVE_NANOSLEEP)
189 if(NOT HAVE_NANOSLEEP)
190 check_library_exists("rt" "nanosleep" "" LIB_RT_HAS_NANOSLEEP)
191 endif(NOT HAVE_NANOSLEEP)
193 if(LIB_RT_HAS_NANOSLEEP)
194 add_target_library(${EXEC_TARGET} rt)
195 endif(LIB_RT_HAS_NANOSLEEP)
197 if(HAVE_NANOSLEEP OR LIB_RT_HAS_NANOSLEEP)
198 add_definitions(-DHAVE_NANOSLEEP)
199 endif(HAVE_NANOSLEEP OR LIB_RT_HAS_NANOSLEEP)
202 set(SRC_BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../src)
205 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
206 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
210 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/vm/${VM_NAME})
212 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/vm/fmgen)
214 # set(FMGEN_LIB vm_fmgen)
215 # set(FMGEN_LIB "-lCSPfmgen")
218 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/machines/${VM_NAME})
222 include_directories(${LIBAV_INCLUDE_DIRS})
224 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src)
225 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/vm)
226 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/common)
227 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/gui)
228 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt)
230 # add_subdirectory(../../src/qt/gui qt/gui)
232 #add_subdirectory(../../src/qt qt/osd)
233 add_subdirectory(../../src common)
234 add_subdirectory(../../src/vm vm/)
238 set(DEBUG_LIBS qt_debugger)
239 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/debugger)
240 add_subdirectory(../../src/qt/debugger qt/debugger)
280 ${ADDITIONAL_LIBRARIES}
283 #SET(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> qcs <TARGET> <LINK_FLAGS> <OBJECTS>")
284 #SET(CMAKE_C_ARCHIVE_FINISH true)
285 #SET(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> qcs <TARGET> <LINK_FLAGS> <OBJECTS>")
286 #SET(CMAKE_CXX_ARCHIVE_FINISH true)
288 add_definitions(-D_UNICODE)
296 ${ADDITIONAL_LIBRARIES}
298 set(BUNDLE_LIBS ${BUNDLE_LIBS} -lCSPosd -lCSPcommon_vm -lCSPfmgen -lCSPgui -lCSPemu_utils -lCSPavio)
302 set(BUNDLE_LIBS ${BUNDLE_LIBS} ${QT_LIBRARIES} ${ZLIB_LIBRARIES})
305 set(BUNDLE_LIBS ${BUNDLE_LIBS} ${THREADS_LIBRARY})
308 add_subdirectory(../../src/vm/${VM_NAME} vm/${VM_NAME})
310 # add_subdirectory(../../src/vm/fmgen vm/fmgen)
312 add_subdirectory(../../src/qt/machines/${VM_NAME} qt/${VM_NAME})
313 add_subdirectory(../../src/qt/common qt/common)