OSDN Git Service

[BUILD][CMAKE] Add __GIT_REPO_VERSION definition.
[csp-qt/common_source_project-fm7.git] / source / build-cmake / cmake / config_commonsource.cmake
index 2f0a1bd..04f7998 100644 (file)
 # 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()
 
-# Use cmake if enabled.
-SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
-SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
+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})
+if(DEFINED QT5_ROOT_PATH)
+  SET(CMAKE_FIND_ROOT_PATH  ${QT5_ROOT_PATH} ${CMAKE_FIND_ROOT_PATH})
+endif()
 
-add_definitions(-D_USE_QT)
-add_definitions(-DUSE_QT)
+# 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()
 
-# Build Flags
+add_definitions(-D_USE_QT5)
 
+if(USE_QT5_4_APIS)
+  add_definitions(-D_USE_QT_5_4)
+else()
+  #add_definitions(-DQT_NO_VERSION_TAGGING)
+endif()
 
-find_package(Gettext)
-include_directories(${GETTEXT_INCLUDE_PATH})
-include(compile_gettext_catalogue)
-if(GETTEXT_FOUND)
-   add_definitions(-DUSE_GETTEXT)
+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})
 
-##PKG_SEARCH_MODULE(SDL2 REQUIRED sdl2)
-#find_package(SDL)
-#include_directories(${SDL_INCLUDE_PATH})
-
-
 include(FindPkgConfig)
 
-pkg_search_module(SDL2 REQUIRED sdl2)
-include_directories(${SDL2_INCLUDE_DIRS})
+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) 
@@ -81,74 +220,145 @@ if(HAVE_NANOSLEEP OR LIB_RT_HAS_NANOSLEEP)
   add_definitions(-DHAVE_NANOSLEEP)
 endif(HAVE_NANOSLEEP OR LIB_RT_HAS_NANOSLEEP)
 
-find_package(OpenGL)
 
+set(SRC_BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../src)
 
-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()
+if(USE_QT_5)
+  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
 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(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()
 
-set(SRC_BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../src)
-
-if(WITH_DEBUGGER)
-   add_definitions(-DUSE_DEBUGGER)
-   include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/debugger)
-   include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../src/qt/3rdparty/qtermwidget/lib)
+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)
-
+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/)
 
-if(WITH_DEBUGGER)
-   add_subdirectory(../../src/qt/3rdparty/qtermwidget/lib qt/qtermwidget)
+#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)
- if(USE_QT5)
-     set(LOCAL_LIBS ${LOCAL_LIBS} qt_debugger qtermwidget5)
- else()
-     set(LOCAL_LIBS ${LOCAL_LIBS} qt_debugger qtermwidget4)
- endif()
+# 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)
 
-set(BUNDLE_LIBS 
-                           ${OPENGL_LIBRARY}
-                          ${OPENCL_LIBRARY}
-                          ${GETTEXT_LIBRARY}
-                          ${OPENMP_LIBRARY}
-#                         ${SDL_LIBRARY}
-                           ${SDL2_LIBRARIES}
-                          ${QT_LIBRARIES}
-                          ${THREADS_LIBRARY}
-)
 
+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()