diff --git a/.gitmodules b/.gitmodules index 923424f2..ea708bb8 100644 --- a/.gitmodules +++ b/.gitmodules @@ -2,7 +2,7 @@ path = deps/unicorn url = https://github.com/momo5502/unicorn.git shallow = true - branch = a19ae94 + branch = wasm [submodule "deps/reflect"] path = deps/reflect url = https://github.com/qlibs/reflect.git diff --git a/cmake/compiler-env.cmake b/cmake/compiler-env.cmake index fe06487d..c49c832f 100644 --- a/cmake/compiler-env.cmake +++ b/cmake/compiler-env.cmake @@ -27,7 +27,18 @@ set(CMAKE_POSITION_INDEPENDENT_CODE ON) # MinGW LTO will cause errors in compile stage # We just disable it -if(CMAKE_C_COMPILER MATCHES "/.*/x86_64-w64-mingw32-gcc$") +if(MINGW) + set(MINGW_WARNING_SHOWED FALSE) + if (NOT ${MINGW_WARNING_SHOWED}) + set(MINGW_WARNING_SHOWED TRUE) + message(STATUS "!!!!!!!!!!!!!!!!! WARNING !!!!!!!!!!!!!!!!!") + message(STATUS "!!! Cross compile with MinGW is not fully tested !!!") + message(STATUS "!!! Compile will continue after 10 seconds !!!") + message(STATUS "!!! to stop compile. !!!") + message(STATUS "!!! USE AT YOUR OWN RISK, YOU HAVE BEEN WARNED !!!") + message(STATUS "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!") + execute_process(COMMAND ${CMAKE_COMMAND} -E sleep 10) + endif() set(CMAKE_INTERPROCEDURAL_OPTIMIZATION OFF) elseif(NOT CMAKE_SYSTEM_NAME MATCHES "Emscripten") set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 870f20e1..f6138c49 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -8,6 +8,9 @@ momo_add_subdirectory_and_get_targets("backends" BACKEND_TARGETS) momo_targets_set_folder("backends" ${BACKEND_TARGETS}) if (NOT MOMO_BUILD_AS_LIBRARY) + if (MINGW) + add_link_options(-static-libstdc++ -static -lwinpthread) + endif() add_subdirectory(analyzer) add_subdirectory(debugger) add_subdirectory(fuzzing-engine) diff --git a/src/analyzer/CMakeLists.txt b/src/analyzer/CMakeLists.txt index c04e57ae..036e614e 100644 --- a/src/analyzer/CMakeLists.txt +++ b/src/analyzer/CMakeLists.txt @@ -14,10 +14,6 @@ if(NOT MOMO_ENABLE_CLANG_TIDY) target_precompile_headers(analyzer PRIVATE std_include.hpp) endif() -if(CMAKE_C_COMPILER MATCHES "/.*/x86_64-w64-mingw32-gcc$") - target_link_options(analyzer PRIVATE -static-libstdc++ -static -lwinpthread) -endif() - target_link_libraries(analyzer PRIVATE reflect debugger diff --git a/src/backends/icicle-emulator/CMakeLists.txt b/src/backends/icicle-emulator/CMakeLists.txt index 138cecab..da62e3af 100644 --- a/src/backends/icicle-emulator/CMakeLists.txt +++ b/src/backends/icicle-emulator/CMakeLists.txt @@ -16,9 +16,5 @@ endif() target_include_directories(icicle-emulator INTERFACE "${CMAKE_CURRENT_LIST_DIR}") -if(CMAKE_C_COMPILER MATCHES "/.*/x86_64-w64-mingw32-gcc$") - target_link_options(icicle-emulator PRIVATE -static-libstdc++ -static -lwinpthread) -endif() - target_link_libraries(icicle-emulator PUBLIC emulator) target_link_libraries(icicle-emulator PRIVATE emulator-common icicle-bridge) diff --git a/src/backends/unicorn-emulator/CMakeLists.txt b/src/backends/unicorn-emulator/CMakeLists.txt index e3ae081a..8b44e286 100644 --- a/src/backends/unicorn-emulator/CMakeLists.txt +++ b/src/backends/unicorn-emulator/CMakeLists.txt @@ -14,10 +14,6 @@ endif() target_include_directories(unicorn-emulator INTERFACE "${CMAKE_CURRENT_LIST_DIR}") -if(CMAKE_C_COMPILER MATCHES "/.*/x86_64-w64-mingw32-gcc$") - target_link_options(unicorn-emulator PRIVATE -static-libstdc++ -static -lwinpthread) -endif() - target_link_libraries(unicorn-emulator PUBLIC emulator) target_link_libraries(unicorn-emulator PRIVATE unicorn emulator-common) diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index 6a3a0fee..036793eb 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -12,15 +12,13 @@ target_include_directories(emulator-common INTERFACE "${CMAKE_CURRENT_LIST_DIR}" set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) -if(CMAKE_C_COMPILER MATCHES "/.*/x86_64-w64-mingw32-gcc$") +target_link_libraries(emulator-common PUBLIC + Threads::Threads + zlibstatic +) + +if(MINGW) target_link_libraries(emulator-common PUBLIC - Threads::Threads - zlibstatic ws2_32 ) -else() - target_link_libraries(emulator-common PUBLIC - Threads::Threads - zlibstatic - ) endif() diff --git a/src/common/network/address.hpp b/src/common/network/address.hpp index 6546bee5..6b332699 100644 --- a/src/common/network/address.hpp +++ b/src/common/network/address.hpp @@ -5,7 +5,7 @@ #ifdef __MINGW64__ #include #include -#include +#include #else #include #include diff --git a/src/fuzzer/CMakeLists.txt b/src/fuzzer/CMakeLists.txt index d5158de6..2ffc31a0 100644 --- a/src/fuzzer/CMakeLists.txt +++ b/src/fuzzer/CMakeLists.txt @@ -14,10 +14,6 @@ if(NOT MOMO_ENABLE_CLANG_TIDY) target_precompile_headers(fuzzer PRIVATE std_include.hpp) endif() -if(CMAKE_C_COMPILER MATCHES "/.*/x86_64-w64-mingw32-gcc$") - target_link_options(fuzzer PRIVATE -static-libstdc++ -static -lwinpthread) -endif() - target_link_libraries(fuzzer PRIVATE fuzzing-engine windows-emulator diff --git a/src/samples/test-sample/CMakeLists.txt b/src/samples/test-sample/CMakeLists.txt index f5772be4..918b772c 100644 --- a/src/samples/test-sample/CMakeLists.txt +++ b/src/samples/test-sample/CMakeLists.txt @@ -8,8 +8,7 @@ list(SORT SRC_FILES) add_executable(test-sample ${SRC_FILES}) -if(CMAKE_C_COMPILER MATCHES "/.*/x86_64-w64-mingw32-gcc$") - target_link_options(test-sample PRIVATE -static-libstdc++ -static -lwinpthread) +if(MINGW) target_link_libraries(test-sample PRIVATE ws2_32) endif() diff --git a/src/tools/dump-apiset/CMakeLists.txt b/src/tools/dump-apiset/CMakeLists.txt index e676abec..9a3bf180 100644 --- a/src/tools/dump-apiset/CMakeLists.txt +++ b/src/tools/dump-apiset/CMakeLists.txt @@ -10,10 +10,6 @@ add_executable(dump-apiset ${SRC_FILES}) momo_assign_source_group(${SRC_FILES}) -if(CMAKE_C_COMPILER MATCHES "/.*/x86_64-w64-mingw32-gcc$") - target_link_options(dump-apiset PRIVATE -static-libstdc++ -static -lwinpthread) -endif() - target_link_libraries(dump-apiset PRIVATE emulator-common ) diff --git a/src/windows-emulator-test/CMakeLists.txt b/src/windows-emulator-test/CMakeLists.txt index 7c30f4d4..8bea4b26 100644 --- a/src/windows-emulator-test/CMakeLists.txt +++ b/src/windows-emulator-test/CMakeLists.txt @@ -10,14 +10,6 @@ add_executable(windows-emulator-test ${SRC_FILES}) momo_assign_source_group(${SRC_FILES}) -if(CMAKE_C_COMPILER MATCHES "/.*/x86_64-w64-mingw32-gcc$") - target_link_options(windows-emulator-test PRIVATE -static-libstdc++ -static -lwinpthread) -endif() - -if(CMAKE_C_COMPILER MATCHES "/.*/x86_64-w64-mingw32-gcc$") - target_link_options(windows-emulator-test PRIVATE -static-libstdc++ -static -lwinpthread) -endif() - target_link_libraries(windows-emulator-test PRIVATE gtest gtest_main