# 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()
+
+if(DEFINED QT5_ROOT_PATH)
+ SET(CMAKE_FIND_ROOT_PATH ${QT5_ROOT_PATH} ${CMAKE_FIND_ROOT_PATH})
+endif()
+
# 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)
+ # SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
endif()
- FIND_PACKAGE(Qt5Widgets REQUIRED)
+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})
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()
add_definitions(-D_USE_QT5)
if(USE_QT5_4_APIS)
add_definitions(-D_USE_QT_5_4)
else()
- add_definitions(-DQT_NO_VERSION_TAGGING)
+ #add_definitions(-DQT_NO_VERSION_TAGGING)
endif()
if(USE_GCC_OLD_ABI)
add_definitions(-D_GLIBCXX_USE_CXX11_ABI=1)
endif()
+
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})
+
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(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()
+
include(FindLibAV)
if(LIBAV_FOUND)
add_definitions(-DUSE_LIBAV)
endif()
endif()
+include(FindZLIB)
+if(ZLIB_FOUND)
+ add_definitions(-DUSE_ZLIB)
+ include_directories(${ZLIB_INCLUDE_DIRS})
+endif()
+
# GCC Only?
if(CMAKE_COMPILER_IS_GNUCC)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flax-vector-conversions")
if(DEFINED VM_NAME)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/vm/${VM_NAME})
- if(USE_FMGEN)
+# if(USE_FMGEN)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/vm/fmgen)
- set(FMGEN_LIB vm_fmgen)
- endif()
+# 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(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)
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)
+# 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(WIN32)
- set(LOCAL_LIBS
+# 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}
+ qt_${VM_NAME}
vm_${VM_NAME}
- ${VM_APPEND_LIBS}
vm_vm
- ${FMGEN_LIB}
+ ${VM_APPEND_LIBS}
${DEBUG_LIBS}
common_common
)
-else()
+ else()
set(LOCAL_LIBS
common_emu
- qt_${VM_NAME}
+ qt_${VM_NAME}
vm_${VM_NAME}
- ${VM_APPEND_LIBS}
vm_vm
- ${FMGEN_LIB}
+ ${VM_APPEND_LIBS}
${DEBUG_LIBS}
common_common
)
- endif()
+ endif()
endif()
include(simd-x86)
+
if(WIN32)
set(BUNDLE_LIBS
${OPENGL_LIBRARY}
${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}
+# ${OPENGL_LIBRARY}
${OPENCL_LIBRARY}
- ${GETTEXT_LIBRARY}
+# ${GETTEXT_LIBRARY}
${OPENMP_LIBRARY}
${SDL_LIBS}
- ${LIBAV_LIBRARIES}
+# ${LIBAV_LIBRARIES}
${ADDITIONAL_LIBRARIES}
)
-
- set(BUNDLE_LIBS ${BUNDLE_LIBS} -lCSPosd -lCSPgui -lCSPemu_utils -lCSPavio)
-# set(BUNDLE_LIBS ${BUNDLE_LIBS} -lCSPavcodec -lCSPavfilter -lCSPavformat -lCSPavutil -lCSPswresample -lCSPswscale -lCSPpostproc )
-
+ 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})
+ set(BUNDLE_LIBS ${BUNDLE_LIBS} ${QT_LIBRARIES} ${ZLIB_LIBRARIES})
endif()
set(BUNDLE_LIBS ${BUNDLE_LIBS} ${THREADS_LIBRARY})
if(DEFINED VM_NAME)
- add_subdirectory(../../src/vm/${VM_NAME} vm/${VM_NAME})
- 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)
+ 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()