OSDN Git Service

[BUILD][CMAKE][WIN32] Available to cross build for Win32, with CLANG/Docker.
authorKyuma Ohta <whatisthis.sowhat@gmail.com>
Sat, 3 Oct 2020 16:50:36 +0000 (16:50 +0000)
committerKyuma Ohta <whatisthis.sowhat@gmail.com>
Sat, 3 Oct 2020 16:50:36 +0000 (16:50 +0000)
12 files changed:
source/cmake/config.cmake
source/cmake/toolchains/toolchain_mingw_cross_linux.cmake [moved from source/build-cmake/cmake/toolchain_mingw_cross_linux.cmake with 91% similarity]
source/cmake/toolchains/toolchain_native_gcc.cmake [moved from source/build-cmake/cmake/toolchain_native_gcc.cmake with 100% similarity]
source/cmake/toolchains/toolchain_native_llvm.cmake [moved from source/build-cmake/cmake/toolchain_native_llvm.cmake with 100% similarity]
source/cmake/toolchains/toolchain_win32_cross_linux_llvm.cmake [moved from source/build-cmake/cmake/toolchain_win32_cross_linux_llvm.cmake with 100% similarity]
source/cmake/toolchains/windows-mingw-cross.cmake [moved from source/build-cmake/cmake/windows-mingw-cross.cmake with 100% similarity]
source/sample-scripts/build_default_vars.llvm.sh
source/sample-scripts/build_default_vars.sh.gcc.sh
source/sample-scripts/build_default_vars_mingw-cross.sh [new file with mode: 0644]
source/src/qt/CMakeLists.txt
source/src/qt/emuutils/CMakeLists.txt
source/src/vm/fmgen/CMakeLists.txt

index 40e03b9..8ee8b65 100644 (file)
@@ -42,6 +42,9 @@ if(USE_DEVICES_SHARED_LIB)
   add_definitions(-DUSE_SHARED_DLL)
   add_definitions(-DUSE_SHARED_UI_DLL)
   add_definitions(-DUSE_SHARED_DEVICES_DLL)
+elseif(WIN32)
+  add_definitions(-DUSE_SHARED_DLL)
+  add_definitions(-DUSE_SHARED_UI_DLL)
 endif()
 
 set(USE_FMGEN ON)
@@ -192,7 +195,7 @@ endif()
 include(FindZLIB)
 if(ZLIB_FOUND)
        add_definitions(-DUSE_ZLIB)
-   include_directories(${ZLIB_INCLUDE_DIRS})
+       include_directories(${ZLIB_INCLUDE_DIRS})
 endif()
 
 # GCC Only?
@@ -301,7 +304,8 @@ if(USE_DEVICES_SHARED_LIB)
        add_subdirectory("${PROJECT_SOURCE_DIR}/src/vm/fmgen" vm/fmgen)
 else()
        add_subdirectory("${PROJECT_SOURCE_DIR}/src" common)
-       add_subdirectory("${PROJECT_SOURCE_DIR}/src/vm" vm)
+       add_subdirectory("${PROJECT_SOURCE_DIR}/src/vm/common_vm" vm/)
+       add_subdirectory("${PROJECT_SOURCE_DIR}/src/vm/fmgen" vm/fmgen)
 endif()
 
 function(ADD_VM VM_NAME EXE_NAME VMDEF)
@@ -371,32 +375,12 @@ function(ADD_VM VM_NAME EXE_NAME VMDEF)
 #      endif()
        if(NOT USE_DEVICES_SHARED_LIB)
                if(USE_FMGEN)
-                       set(VM_APPEND_LIBS fmgen)
+                       set(VM_APPEND_LIBS CSPfmgen)
                else()
                        set(VM_APPEND_LIBS)
                endif()
        endif()
        if(WIN32)
-               set(LOCAL_LIBS     
-                       common_emu
-                       qt_${EXE_NAME}
-                       vm_${EXE_NAME}
-                       vm_vm
-                       ${VM_APPEND_LIBS}
-                       ${DEBUG_LIBS}
-                       common_${EXE_NAME}
-               )
-       else()
-               set(LOCAL_LIBS
-                       qt_${EXE_NAME}
-                       vm_${EXE_NAME}
-                       vm_vm
-                       ${VM_APPEND_LIBS}
-                       ${DEBUG_LIBS}
-                       common_${EXE_NAME}
-               )
-       endif()
-       if(WIN32)
                set(BUNDLE_LIBS
                        ${OPENGL_LIBRARY}
                        ${OPENCL_LIBRARY}
@@ -424,7 +408,7 @@ function(ADD_VM VM_NAME EXE_NAME VMDEF)
           set(LOCAL_LIBS     
            qt_${EXE_NAME}
                   vm_${EXE_NAME}
-                  vm_vm
+                  vm_common_vm
                   ${VM_APPEND_LIBS}
                   ${DEBUG_LIBS}
                   common_${EXE_NAME}
@@ -450,10 +434,12 @@ function(ADD_VM VM_NAME EXE_NAME VMDEF)
                )
        else()
                set(BUNDLE_LIBS
+                       CSPosd
+#                      CSPfmgen
+                       CSPgui
+                       CSPemu_utils
+                       CSPavio
                        ${BUNDLE_LIBS}
-#                      -lCSPosd
-#                      -lCSPgui
-#                      -lCSPavio
                )
        endif()
 
@@ -462,7 +448,7 @@ function(ADD_VM VM_NAME EXE_NAME VMDEF)
        add_subdirectory("${PROJECT_SOURCE_DIR}/src/vm/${VM_NAME}" vm/${EXE_NAME} EXCLUDE_FROM_ALL)
        if(NOT USE_DEVICES_SHARED_LIB)
                if(USE_FMGEN)
-                       add_subdirectory("${PROJECT_SOURCE_DIR}/src/vm/fmgen" vm/fmgen_${EXE_NAME}  EXCLUDE_FROM_ALL)
+#                      add_subdirectory("${PROJECT_SOURCE_DIR}/src/vm/fmgen" vm/fmgen_${EXE_NAME}  EXCLUDE_FROM_ALL)
                endif()
        endif()
        add_subdirectory("${PROJECT_SOURCE_DIR}/src/qt/machines/${VM_NAME}" qt/${EXE_NAME}  EXCLUDE_FROM_ALL)
@@ -5,7 +5,7 @@ SET(CMAKE_SYSTEM_NAME Windows)
 SET(CMAKE_C_COMPILER i686-w64-mingw32-gcc)
 SET(CMAKE_CXX_COMPILER i686-w64-mingw32-g++)
 SET(CMAKE_RC_COMPILER i686-w64-mingw32-windres)
-SET(CMAKE_AR  i686-w64-mingw32-gcc-ar)
+SET(CMAKE_AR  i686-w64-mingw32-ar)
 
 
 #set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++")
@@ -17,7 +17,7 @@ SET(CMAKE_AR  i686-w64-mingw32-gcc-ar)
 #SET(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> qcs <TARGET> --plugin==$(i686-w64-mingw32-gcc --print-file-name=liblto_plugin.so) <LINK_FLAGS> <OBJECTS>")
 #SET(CMAKE_CXX_ARCHIVE_FINISH   true)
 
-set(LIBAV_ROOT_DIR "/usr/local/i586-mingw-msvc/ffmpeg-4.1")
+#set(LIBAV_ROOT_DIR "/usr/local/i586-mingw-msvc/ffmpeg-4.1")
 
 # here is the target environment located
 set(USE_SDL2 ON)
@@ -25,13 +25,13 @@ if(USE_SDL2)
    SET(CMAKE_FIND_ROOT_PATH  /usr/i686-w64-mingw32 
                           /usr/local/i586-mingw-msvc
                           /usr/local/i586-mingw-msvc/SDL/i686-w64-mingw32
-                         /usr/local/i586-mingw-msvc/Qt5.12/mingw_82x
+                         /usr/local/i586-mingw-msvc/Qt5.15/mingw_82x
                          )
 else()
    SET(CMAKE_FIND_ROOT_PATH  /usr/i686-w64-mingw32 
                           /usr/local/i586-mingw-msvc
                           /usr/local/i586-mingw-msvc/SDL1/
-                         /usr/local/i586-mingw-msvc/Qt5.12/mingw_82x
+                         /usr/local/i586-mingw-msvc/Qt5.15/mingw_82x
                          )
 endif()
 SET(CSP_CROSS_BUILD 1)
index 3b9b7d2..e7b03f0 100644 (file)
@@ -1,4 +1,4 @@
-cmake .. -DCMAKE_TOOLCHAIN_FILE="$PWD/../build-cmake/cmake/toolchain_native_llvm.cmake" \
+cmake .. -DCMAKE_TOOLCHAIN_FILE="$PWD/../cmake/toolchains/toolchain_native_llvm.cmake" \
       -DCMAKE_BUILD_TYPE=Relwithdebinfo \
       -DCMAKE_C_FLAGS_RELWITHDEBINFO=" \
                -g2 \
index fd20ec3..b263c63 100644 (file)
@@ -1,4 +1,4 @@
-cmake .. -DCMAKE_TOOLCHAIN_FILE="$PWD/../build-cmake/cmake/toolchain_native_gcc.cmake" \
+cmake .. -DCMAKE_TOOLCHAIN_FILE="$PWD/../cmake/toolchains/toolchain_native_gcc.cmake" \
       -DCMAKE_BUILD_TYPE=Relwithdebinfo \
       -DCMAKE_C_FLAGS_RELWITHDEBINFO=" \
                -gz=zlib \
diff --git a/source/sample-scripts/build_default_vars_mingw-cross.sh b/source/sample-scripts/build_default_vars_mingw-cross.sh
new file mode 100644 (file)
index 0000000..be09628
--- /dev/null
@@ -0,0 +1,49 @@
+FFMPEG_DIR="/usr/local/i586-mingw-msvc/ffmpeg-4.2"
+QT5_DIR="/usr/local/i586-mingw-msvc/Qt5.15/mingw_82x"
+PATH=/opt/llvm-mingw/bin:$PATH
+cmake .. \
+       -DCMAKE_TOOLCHAIN_FILE="$PWD/../cmake/toolchains/toolchain_mingw_cross_linux.cmake" \
+       -DCMAKE_BUILD_TYPE=Release \
+       -DCMAKE_C_FLAGS_RELWITHDEBINFO=" \
+               -g2 \
+               -ggdb \
+               -gz=zlib \
+               -O3 \
+               -msse2 \
+               -mfpmath=sse \
+               -Wreserved-user-defined-literal \
+               -fslp-vectorize \
+               -fvectorize \
+               -fstrict-vtable-pointers \
+               -fstrict-enums \
+               " \
+       -DCMAKE_CXX_FLAGS_RELWITHDEBINFO=" \
+               -g2 \
+               -ggdb \
+               -gz=zlib \
+               -O3 \
+               -msse2 \
+               -mfpmath=sse \
+               -Wreserved-user-defined-literal \
+               -fslp-vectorize \
+               -fvectorize \
+               -fstrict-vtable-pointers \
+               -fstrict-enums \
+               " \
+       -DCMAKE_EXE_LINKER_FLAGS="\
+               -g2 \
+               -ggdb \
+               -gz=zlib \
+               -L/usr/i686-w64-mingw32/lib \
+               " \
+       -DCMAKE_MODULE_LINKER_FLAGS="\
+               -g2 \
+               -ggdb \
+               -gz=zlib \
+               -L/usr/i686-w64-mingw32/lib \
+               " \
+       -DLIBAV_ROOT_DIR="${FFMPEG_DIR}" \
+       -DQT5_ROOT_PATH="${QT5_DIR}"    \
+       -DUSE_DEVICES_SHARED_LIB=ON \
+       
+       
\ No newline at end of file
index f56e8da..d357c43 100644 (file)
@@ -33,16 +33,17 @@ include (GenerateExportHeader)
 
 if(WIN32)
 target_link_libraries(CSPosd PUBLIC
-          PRIVATE ${CMAKE_SOURCE_DIR}/../../build-cmake/bin-win32/libCSPemu_utils.dll.a
+#          PRIVATE ${CMAKE_SOURCE_DIR}/../../build-cmake/bin-win32/libCSPemu_utils.dll.a
 #          INTERFACE ${CMAKE_SOURCE_DIR}/../../build-cmake/bin-win32/libCSPgui.dll.a
 #          ${CMAKE_SOURCE_DIR}/../../build-cmake/bin-win32/libCSPavio.dll.a
-         Qt5::Core
-         Qt5::Gui
-         Qt5::OpenGL
-         Qt5::Widgets
-         Qt5::Network
-         ${SDL2_LIBRARIES}
-         )
+       CSPemu_utils
+       Qt5::Core
+       Qt5::Gui
+       Qt5::OpenGL
+       Qt5::Widgets
+       Qt5::Network
+       ${SDL2_LIBRARIES}
+       )
 generate_export_header(CSPosd
        BASE_NAME CSPosd
        EXPORT_MACRO_NAME CSPosd_EXPORT
index ed2ebd6..1ffb8be 100644 (file)
@@ -30,7 +30,7 @@ add_library(CSPemu_utils SHARED
 
 target_link_libraries(CSPemu_utils PRIVATE
                Qt5::Core
-               libz.dll.a
+               ${ZLIB_LIBRARIES}
                ${SDL2_LIBRARIES}
          )
          
index 0b27581..cfe21b1 100644 (file)
@@ -14,28 +14,28 @@ SET(s_vm_fmgen_srcs
 )
 
 if(WIN32)
-#add_library(vm_fmgen
-#    ${s_vm_fmgen_srcs}
-#    )
+       add_library(vm_fmgen SHARED
+               ${s_vm_fmgen_srcs}
+       )
 
-include (GenerateExportHeader)
-add_library(CSPfmgen SHARED
-    ${s_vm_fmgen_srcs}
-    )
-target_link_libraries(CSPfmgen
-       PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../../build-cmake/bin-win32/libCSPemu_utils.dll.a
+       include (GenerateExportHeader)
+       add_library(CSPfmgen SHARED
+               ${s_vm_fmgen_srcs}
+       )
+       target_link_libraries(CSPfmgen
+               PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../../build-cmake/bin-win32/libCSPemu_utils.dll.a
+       )
+       set_target_properties(CSPfmgen PROPERTIES
+               SOVERSION ${THIS_LIB_VERSION}
+               VERSION ${THIS_LIB_VERSION}
+               LINK_INTERFACE_LIBRARIES ""
+       )
+       generate_export_header(CSPfmgen
+               BASE_NAME CSPfmgen
+               EXPORT_MACRO_NAME CSPfmgen_EXPORT
+               EXPORT_FILE_NAME CSPfmgen_Export.h
+               STATIC_DEFINE CSPfmgen_BUILT_AS_STATIC
        )
-set_target_properties(CSPfmgen PROPERTIES
-                            SOVERSION ${THIS_LIB_VERSION}
-                            VERSION ${THIS_LIB_VERSION}
-                            LINK_INTERFACE_LIBRARIES ""
-                            )
-generate_export_header(CSPfmgen
-        BASE_NAME CSPfmgen
-        EXPORT_MACRO_NAME CSPfmgen_EXPORT
-        EXPORT_FILE_NAME CSPfmgen_Export.h
-        STATIC_DEFINE CSPfmgen_BUILT_AS_STATIC
-)
 
 else()
   if(USE_DEVICES_SHARED_LIB)