# this part was written only me.
include(CheckFunctionExists)
+#include(cotire)
+
+if(USE_DEVICES_SHARED_LIB)
+ add_definitions(-DUSE_SHARED_DLL)
+ add_definitions(-DUSE_SHARED_UI_DLL)
+ add_definitions(-DUSE_SHARED_DEVICES_DLL)
+ set(I386_CPPS
+ libcpu_newdev/i386.cpp
+ libcpu_newdev/libcpu_i386/i386_real.cpp
+ libcpu_newdev/libcpu_i386/i386op16_real.cpp
+ libcpu_newdev/libcpu_i386/i386dasm.cpp
+ )
+ set(MC6809_CPPS
+ mc6809.cpp
+ )
+ set(MCS48_CPPS
+ mcs48.cpp
+ )
+ set(IX86_CPPS
+ libcpu_newdev/i86.cpp
+ )
+ set(Z80_CPPS
+ z80.cpp
+ )
+else()
+ set(I386_CPPS i386.cpp)
+ set(MC6809_CPPS mc6809_base.cpp mc6809.cpp)
+ set(MCS48_CPPS mcs48_base.cpp mcs48.cpp)
+ set(IX86_CPPS i86.cpp)
+ set(Z80_CPPS z80_base.cpp z80.cpp)
+ set(VMFILES ${VMFILES} ${VMFILES_LIB})
+endif()
+if(FLAG_USE_I86)
+ set(VMFILES ${VMFILES} ${IX86_CPPS})
+endif()
+if(FLAG_USE_I286)
+ set(VMFILES ${VMFILES} i286.cpp)
+endif()
+if(FLAG_USE_I386_VARIANTS)
+ set(VMFILES ${VMFILES} ${I386_CPPS})
+endif()
+if(FLAG_USE_Z80)
+ set(VMFILES ${VMFILES} z80.cpp)
+endif()
+if(FLAG_USE_MC6809)
+ set(VMFILES ${VMFILES} ${MC6809_CPPS})
+endif()
+if(FLAG_USE_MCS48)
+ set(VMFILES ${VMFILES} ${MCS48_CPPS})
+endif()
+if(FLAG_USE_Z80)
+ set(VMFILES ${VMFILES} ${Z80_CPPS})
+endif()
+if(USE_DEVICES_SHARED_LIB)
+ set(VMFILES ${VMFILES} libcpu_newdev/device.cpp)
+endif()
-FIND_PACKAGE(Qt4 REQUIRED QtCore QtGui QtOpenGL )
-INCLUDE(${QT_USE_FILE})
-
-add_definitions(-D_USE_QT)
-add_definitions(-DUSE_QT)
+if(DEFINED QT5_ROOT_PATH)
+ SET(CMAKE_FIND_ROOT_PATH ${QT5_ROOT_PATH} ${CMAKE_FIND_ROOT_PATH})
+endif()
-# Build Flags
+# Use cmake if enabled.
+ find_program(USE_CCACHE ccache)
+ if(USE_CCACHE)
+ SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
+ # SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
+ endif()
+if(WIN32)
+ FIND_PACKAGE(Qt5Core REQUIRED)
+else()
+ FIND_PACKAGE(Qt5Widgets REQUIRED)
+endif()
+ FIND_PACKAGE(Qt5Gui REQUIRED)
+ FIND_PACKAGE(Qt5OpenGL REQUIRED)
+ include_directories(${Qt5Widgets_INCLUDE_DIRS})
+ include_directories(${Qt5Core_INCLUDE_DIRS})
+ include_directories(${Qt5Gui_INCLUDE_DIRS})
+ include_directories(${Qt5OpenGL_INCLUDE_DIRS})
+ add_definitions(-D_USE_OPENGL -DUSE_OPENGL)
+if(USE_SOCKET)
+ FIND_PACKAGE(Qt5Network REQUIRED)
+ include_directories(${Qt5Network_INCLUDE_DIRS})
+endif()
+SET(USE_QT_5 ON)
+set(USE_QT5_4_APIS OFF CACHE BOOL "Build with Qt5.4 (or later) APIs if you can.")
+set(USE_GCC_OLD_ABI ON CACHE BOOL "Build with older GCC ABIs if you can.")
+set(USE_SDL2 ON CACHE BOOL "Build with libSDL2. DIsable is building with libSDL1.")
+set(USE_MOVIE_SAVER OFF CACHE BOOL "Save screen/audio as MP4 MOVIE. Needs libav .")
+set(USE_MOVIE_LOADER OFF CACHE BOOL "Load movie from screen for some VMs. Needs libav .")
+set(USE_LTO ON CACHE BOOL "Use link-time-optimization to build.")
+if(USE_LTO)
+ # set_property(DIRECTORY PROPERTY INTERPROCEDURAL_OPTIMIZATION true)
+else()
+ # set_property(DIRECTORY PROPERTY INTERPROCEDURAL_OPTIMIZATION false)
+endif()
-#set(WITH_AGAR_STATIC ON CACHE BOOL "Link LibAgar statically.")
-#set(WITH_LIBAGAR_PREFIX "/usr/local" CACHE STRING "Set prefix of LibAgar")
-#include_directories(${WITH_LIBAGAR_PREFIX}/include/agar)
-# Will discard libagar, use Qt.
-#add_definitions(-D_USE_AGAR)
-#if(WITH_AGAR_STATIC)
-# set(AGAR_LIBS ${WITH_LIBAGAR_PREFIX}/lib/libag_dev.a ${WITH_LIBAGAR_PREFIX}/lib/libag_gui.a ${WITH_LIBAGAR_PREFIX}/lib/libag_core.a)
-#else(WITH_AGAR_STATIC)
-# set(AGAR_LIBS ag_core ag_dev ag_gui)
-# link_directories(${WITH_LIBAGAR_PREFIX}/lib)
-#endif()
-#set(AGAR_DEPLIBS m jpeg png z dl uim-scm uim Xinerama)
+add_definitions(-D_USE_QT5)
-find_package(Gettext)
-include_directories(${GETTEXT_INCLUDE_PATH})
-include(compile_gettext_catalogue)
-if(GETTEXT_FOUND)
- add_definitions(-DUSE_GETTEXT)
+if(USE_QT5_4_APIS)
+ add_definitions(-D_USE_QT_5_4)
+else()
+ #add_definitions(-DQT_NO_VERSION_TAGGING)
endif()
+if(USE_GCC_OLD_ABI)
+ add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
+else()
+ add_definitions(-D_GLIBCXX_USE_CXX11_ABI=1)
+endif()
-find_package(Freetype)
-include_directories(${FREETYPE_INCLUDE_PATH})
+SET(CMAKE_AUTOMOC OFF)
+SET(CMAKE_AUTORCC ON)
+SET(CMAKE_INCLUDE_CURRENT_DIR ON)
+add_definitions(-D_USE_QT)
+add_definitions(-DUSE_QT)
+add_definitions(-DQT_MAJOR_VERSION=${Qt5Widgets_VERSION_MAJOR})
+add_definitions(-DQT_MINOR_VERSION=${Qt5Widgets_VERSION_MINOR})
-find_package(Iconv)
-if(ICONV_FOUND)
- add_definitions(-DUSE_ICONV)
-endif()
if(USE_OPENMP)
find_package(OpenMP)
include_directories(${OPENMP_INCLUDE_PATH})
+ if(OPENMP_FOUND)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
+ endif()
endif()
find_package(Threads)
include_directories(${THREADS_INCLUDE_PATH})
-find_package(SDL)
-include_directories(${SDL_INCLUDE_PATH})
-
+include(FindPkgConfig)
+
+find_package(Git)
+if(GIT_FOUND)
+ execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse HEAD OUTPUT_VARIABLE __tstr)
+ string(FIND ${__tstr} "fatal" __notfound)
+ string(REPLACE "\n" "" __tstr2 ${__tstr})
+ if(${__notfound} EQUAL -1)
+ add_definitions(-D__GIT_REPO_VERSION=${__tstr2})
+ else()
+ add_definitions(-U__GIT_REPO_VERSION)
+ endif()
+endif()
-if(ICONV_FOUND)
- include_directories(${ICONV_INCLUDE_DIRS})
- set(LOCAL_LIBS ${LOCAL_LIBS} ${ICONV_LIBRARIES})
+include(FindLibAV)
+ if(LIBAV_FOUND)
+ add_definitions(-DUSE_LIBAV)
+ if(USE_MOVIE_SAVER)
+ add_definitions(-DUSE_MOVIE_SAVER)
+ endif()
+ if(USE_MOVIE_LOADER)
+ add_definitions(-DUSE_MOVIE_LOADER)
+ endif()
+ add_definitions(-D__STDC_CONSTANT_MACROS)
+ add_definitions(-D__STDC_FORMAT_MACROS)
+ else()
+ set(USE_MOVIE_SAVER OFF)
+ set(USE_MOVIE_LOADER OFF)
+ set(LIBAV_LIBRARIES "")
+ endif()
+
+if(USE_SDL2)
+ if(CMAKE_CROSSCOMPILING)
+ include_directories(${SDL2_INCLUDE_DIRS})
+ else()
+ pkg_search_module(SDL2 REQUIRED sdl2)
+ include_directories(${SDL2_INCLUDE_DIRS})
+ endif()
+ set(SDL_LIBS ${SDL2_LIBRARIES})
+ add_definitions(-DUSE_SDL2)
+else()
+ if(CMAKE_CROSSCOMPILING)
+ include_directories(${SDL_INCLUDE_DIRS})
+ set(SDL_LIBS ${SDL_LIBRARIES})
+ else()
+ include(FindSDL)
+ #pkg_search_module(SDL REQUIRED sdl)
+ #include_directories(${SDL_INCLUDE_DIRS})
+ include_directories(${SDL_INCLUDE_DIR})
+ set(SDL_LIBS ${SDL_LIBRARY})
+ endif()
endif()
+include(FindZLIB)
+if(ZLIB_FOUND)
+ add_definitions(-DUSE_ZLIB)
+ include_directories(${ZLIB_INCLUDE_DIRS})
+endif()
# GCC Only?
if(CMAKE_COMPILER_IS_GNUCC)
add_definitions(-DHAVE_NANOSLEEP)
endif(HAVE_NANOSLEEP OR LIB_RT_HAS_NANOSLEEP)
-find_package(OpenGL)
-if(USE_OPENCL)
- if(OPENGL_FOUND)
- find_package(OpenCL)
- if(OPENCL_FOUND)
- include_directories(${OPENCL_INCLUDE_DIRS})
- add_definitions(-D_USE_OPENCL -DUSE_OPENCL)
- set(OPENCL_LIBRARY ${OPENCL_LIBRARIES})
- set(USE_OPENGL ON)
- endif()
- endif()
+set(SRC_BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../src)
+
+if(USE_QT_5)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
+endif()
+
+if(DEFINED VM_NAME)
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/vm/${VM_NAME})
+# if(USE_FMGEN)
+ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/vm/fmgen)
+# if(WIN32)
+# set(FMGEN_LIB vm_fmgen)
+# set(FMGEN_LIB "-lCSPfmgen")
+# endif()
+# endif()
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/machines/${VM_NAME})
endif()
-if(USE_OPENGL)
- if(OPENGL_FOUND)
- include_directories(${OPENGL_INCLUDE_PATH})
- add_definitions(-D_USE_OPENGL -DUSE_OPENGL)
- else()
- set(USE_OPENGL OFF)
- set(USE_OPENCL OFF)
- unset(OPENCL_LIBRARY)
- endif()
+if(LIBAV_FOUND)
+ include_directories(${LIBAV_INCLUDE_DIRS})
endif()
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/vm)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/common)
-#include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/agar/common/scaler/generic)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/gui)
-#include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/agar/menu)
-
-#add_subdirectory(../../src/agar/common/scaler/generic agar/common/scaler/generic)
-add_subdirectory(../../src/qt/gui qt/gui)
-#add_subdirectory(../../src/qt/menu qt/menu)
-
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt)
+if(WIN32)
+# add_subdirectory(../../src/qt/gui qt/gui)
+endif()
+#add_subdirectory(../../src/qt qt/osd)
add_subdirectory(../../src common)
add_subdirectory(../../src/vm vm/)
+#add_custom_command(OUTPUT test.txt
+# COMMAND grep ARGS -m 1 THIS_LIB_VERSION ${CMAKE_CURRENT_SOURCE_DIR}/../../src/vm/fmgen/CMakeLists.txt
+# COMMAND sed ARGS "-r" "'s/.*THIS_VERSION\ //'"
+# COMMAND sed ARGS "-r" "'s/\).*$//'"
+# )
+
+
+if(DEFINED VM_NAME)
+# if(WITH_DEBUGGER)
+ set(DEBUG_LIBS qt_debugger)
+ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/debugger)
+ add_subdirectory(../../src/qt/debugger qt/debugger)
+# else()
+# set(DEBUG_LIBS)
+# endif()
+ if(USE_DEVICES_SHARED_LIB)
+ else()
+ if(USE_FMGEN)
+ set(VM_APPEND_LIBS fmgen ${VM_APPEND_LIBS})
+
+ else()
+ set(VM_APPEND_LIBS ${VM_APPEND_LIBS})
+ endif()
+ endif()
+ if(WIN32)
+ set(LOCAL_LIBS
+ common_emu
+ qt_${VM_NAME}
+ vm_${VM_NAME}
+ vm_vm
+ ${VM_APPEND_LIBS}
+ ${DEBUG_LIBS}
+ common_common
+ )
+ else()
+ set(LOCAL_LIBS
+ common_emu
+ qt_${VM_NAME}
+ vm_${VM_NAME}
+ vm_vm
+ ${VM_APPEND_LIBS}
+ ${DEBUG_LIBS}
+ common_common
+ )
+ endif()
+endif()
+
include(simd-x86)
+if(WIN32)
+ set(BUNDLE_LIBS
+ ${OPENGL_LIBRARY}
+ ${OPENCL_LIBRARY}
+ ${GETTEXT_LIBRARY}
+ ${OPENMP_LIBRARY}
+ ${LIBAV_LIBRARIES}
+ ${SDL_LIBS}
+ ${LIBAV_LIBRARIES}
+ ${ADDITIONAL_LIBRARIES}
+ ${ZLIB_LIBRARIES}
+ )
+ #SET(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> qcs <TARGET> <LINK_FLAGS> <OBJECTS>")
+ #SET(CMAKE_C_ARCHIVE_FINISH true)
+ #SET(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> qcs <TARGET> <LINK_FLAGS> <OBJECTS>")
+ #SET(CMAKE_CXX_ARCHIVE_FINISH true)
+else()
+ add_definitions(-D_UNICODE)
+ set(BUNDLE_LIBS
+# ${OPENGL_LIBRARY}
+ ${OPENCL_LIBRARY}
+# ${GETTEXT_LIBRARY}
+ ${OPENMP_LIBRARY}
+ ${SDL_LIBS}
+# ${LIBAV_LIBRARIES}
+ ${ADDITIONAL_LIBRARIES}
+ )
+ if(USE_DEVICES_SHARED_LIB)
+ set(BUNDLE_LIBS ${BUNDLE_LIBS} -lCSPosd -lCSPcommon_vm -lCSPfmgen -lCSPgui -lCSPemu_utils -lCSPavio)
+ else()
+ set(BUNDLE_LIBS ${BUNDLE_LIBS} -lCSPosd -lCSPgui -lCSPavio)
+ endif()
+endif()
+
+if(USE_QT_5)
+ set(BUNDLE_LIBS ${BUNDLE_LIBS} ${QT_LIBRARIES} ${ZLIB_LIBRARIES})
+endif()
+
+set(BUNDLE_LIBS ${BUNDLE_LIBS} ${THREADS_LIBRARY})
+
+if(DEFINED VM_NAME)
+ if(USE_DEVICES_SHARED_LIB)
+ add_subdirectory(../../src/vm/${VM_NAME} vm/${VM_NAME})
+ add_subdirectory(../../src/qt/machines/${VM_NAME} qt/${VM_NAME})
+ add_subdirectory(../../src/qt/common qt/common)
+ else()
+ add_subdirectory(../../src/vm/${VM_NAME} vm/${VM_NAME})
+ #add_subdirectory(../../src/vm vm/common)
+ #add_subdirectory(../../src common/common)
+ if(USE_FMGEN)
+ add_subdirectory(../../src/vm/fmgen vm/fmgen)
+ endif()
+ add_subdirectory(../../src/qt/machines/${VM_NAME} qt/${VM_NAME})
+ add_subdirectory(../../src/qt/common qt/common)
+ endif()
+endif()