diff --git a/CMakeLists.txt b/CMakeLists.txt index 2691fa330..b8c36d0f8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,7 +13,7 @@ endmacro(add_cxxflags) include(CheckCXXCompilerFlag) CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11) -if (WIN32 AND NOT MINGW) +if (MSVC) CHECK_CXX_COMPILER_FLAG("/std:c++17" COMPILER_SUPPORTS_CXX17) else() CHECK_CXX_COMPILER_FLAG("-std=c++17" COMPILER_SUPPORTS_CXX17) @@ -24,7 +24,7 @@ option(HAVE_CXX17_FILESYSTEM "Disable if your C++ compiler and runtime library l if(COMPILER_SUPPORTS_CXX11 AND NOT HAVE_CXX17_FILESYSTEM) add_cxxflags("-std=c++11") elseif(COMPILER_SUPPORTS_CXX17 AND HAVE_CXX17_FILESYSTEM) - if (WIN32 AND NOT MINGW) + if (MSVC) add_cxxflags("/std:c++17") else() add_cxxflags("-std=c++17") @@ -43,12 +43,21 @@ endif() if(ANDROID) set(THREAD_LIB "-pthread") # finally removed pthread dependency for MSC++ -elseif(WIN32 AND NOT MINGW) +elseif(MSVC) set(THREAD_LIB) else() set(THREAD_LIB pthread) endif() +else() +option (BUILD_AVX2 "Enable AVX2 FPU vector instructions." OFF) +if (BUILD_AVX2) +add_cflags("/arch:AVX2") +add_cxxflags("/arch:AVX2") +else() +add_cflags("/arch:SSE2") +add_cxxflags("/arch:SSE2") +endif(BUILD_AVX2) if(STATIC_LINK) add_cflags("-static -Wl,--whole-archive -lpthread -Wl,--no-whole-archive") @@ -61,12 +70,12 @@ else() set(WITH_STATIC ON) endif() -if (UNIX OR MINGW OR APPLE) +if (NOT MSVC) add_cflags("-Wall") add_cxxflags("-Wall") endif() -if (WIN32 AND NOT MINGW) +if (MSVC) set(OPTIMIZE_FLAGS "-Od") set(DEBUG_FLAGS "-ZI") else() @@ -98,7 +107,7 @@ if(SHADOW) include_directories(${SHADOW_ROOT}/include) endif() -if (WIN32 AND NOT MINGW) +if (MSVC) add_cflags("-wd4996 -wd4244 -MP ${OPTIMIZE_FLAGS}") add_cxxflags("-wd4996 -wd4244 -MP ${OPTIMIZE_FLAGS}") else() @@ -182,7 +191,7 @@ if(UNIX) else() message(FATAL_ERROR "Your operating system is not supported yet") endif() -elseif(WIN32 OR MINGW) +elseif(WIN32) set(LIBTUNTAP_IMPL ${TT_ROOT}/tuntap-windows.c) add_definitions(-DWIN32_LEAN_AND_MEAN) add_definitions(-DWIN32) @@ -196,7 +205,7 @@ set(LIBTUNTAP_SRC_BASE ${TT_ROOT}/tuntap_log.cpp ${LIBTUNTAP_IMPL}) if (UNIX) - set(LIBTUNTAP_SRC + set(LIBTUNTAP_SRC ${TT_ROOT}/tuntap-unix.c ${LIBTUNTAP_SRC_BASE}) endif() @@ -257,7 +266,7 @@ set(LIB_PLATFORM_SRC ${ANDROID_PLATFORM_SRC} # process isolation implementation ${ISOLATE_PROC_SRC} -# tun +# tun ${LIBTUNTAP_SRC} # win32 inline procs llarp/win32_inet.c @@ -440,7 +449,7 @@ include_directories(include) include_directories(vendor/cppbackport-master/lib) include_directories(${sodium_INCLUDE_DIR}) -if (WIN32 AND NOT MINGW) +if (MSVC) include_directories(contrib/msc/include) link_directories(contrib/msc/lib) endif() @@ -450,23 +459,28 @@ set(DNS_EXE dns) if(SHADOW) - add_shadow_plugin(shadow-plugin-${SHARED_LIB} ${EXE_SRC} ${LIB_SRC} ${LIB_PLATFORM_SRC} ${CPP_BACKPORT_SRC}) - target_link_libraries(shadow-plugin-${SHARED_LIB} ${LIBS}) - install(TARGETS shadow-plugin-${SHARED_LIB} DESTINATION plugins) +add_shadow_plugin(shadow-plugin-${SHARED_LIB} ${EXE_SRC} ${LIB_SRC} ${LIB_PLATFORM_SRC} ${CPP_BACKPORT_SRC}) +target_link_libraries(shadow-plugin-${SHARED_LIB} ${LIBS}) +install(TARGETS shadow-plugin-${SHARED_LIB} DESTINATION plugins) else() add_executable(${RC_EXE} ${RC_SRC}) - add_executable(${EXE} ${EXE_SRC}) - add_executable(${CLIENT_EXE} ${CLIENT_SRC}) +add_executable(${EXE} ${EXE_SRC}) +add_executable(${CLIENT_EXE} ${CLIENT_SRC}) add_executable(${DNS_EXE} ${DNS_SRC}) +add_subdirectory(${GTEST_DIR}) +include_directories(${GTEST_DIR}/include ${GTEST_DIR}) +add_executable(${TEST_EXE} ${TEST_SRC}) + +if (WIN32) +target_link_libraries(${TEST_EXE} ${STATIC_LINK_LIBS} gtest_main ${STATIC_LIB} ws2_32 iphlpapi) +if (MINGW) +target_link_libraries(${TEST_EXE} ${STATIC_LINK_LIBS} gtest_main ${STATIC_LIB} ws2_32 stdc++fs iphlpapi) +endif() +else() +target_link_libraries(${TEST_EXE} ${STATIC_LINK_LIBS} gtest_main ${STATIC_LIB}) +endif(WIN32) - - if(NOT WIN32) - add_subdirectory(${GTEST_DIR}) - include_directories(${GTEST_DIR}/include ${GTEST_DIR}) - add_executable(${TEST_EXE} ${TEST_SRC}) - target_link_libraries(${TEST_EXE} ${STATIC_LINK_LIBS} gtest_main ${STATIC_LIB}) - endif() - if(WITH_STATIC) +if(WITH_STATIC) add_library(${STATIC_LIB} STATIC ${LIB_SRC}) if(NOT HAVE_CXX17_FILESYSTEM) add_library(${BACKPORT_LIB} STATIC ${CPP_BACKPORT_SRC}) @@ -490,7 +504,7 @@ else() target_link_libraries(${EXE} ${STATIC_LINK_LIBS} ${STATIC_LIB} ${BACKPORT_LIB} ${PLATFORM_LIB} ws2_32 stdc++fs iphlpapi) target_link_libraries(${CLIENT_EXE} ${STATIC_LINK_LIBS} ${STATIC_LIB} ${BACKPORT_LIB} ${PLATFORM_LIB} ws2_32 stdc++fs iphlpapi) target_link_libraries(${RC_EXE} ${STATIC_LINK_LIBS} ${STATIC_LIB} ${BACKPORT_LIB} ${PLATFORM_LIB} ws2_32 stdc++fs iphlpapi) - elseif(WIN32) + elseif(MSVC) target_link_libraries(${EXE} ${STATIC_LINK_LIBS} ${STATIC_LIB} ${BACKPORT_LIB} ${PLATFORM_LIB} ws2_32 iphlpapi) target_link_libraries(${CLIENT_EXE} ${STATIC_LINK_LIBS} ${STATIC_LIB} ${BACKPORT_LIB} ${PLATFORM_LIB} ws2_32 iphlpapi) target_link_libraries(${RC_EXE} ${STATIC_LINK_LIBS} ${STATIC_LIB} ${BACKPORT_LIB} ${PLATFORM_LIB} ws2_32 iphlpapi) @@ -503,7 +517,7 @@ else() target_link_libraries(${EXE} ${STATIC_LINK_LIBS} ${STATIC_LIB} ${PLATFORM_LIB} ws2_32 stdc++fs iphlpapi) target_link_libraries(${CLIENT_EXE} ${STATIC_LINK_LIBS} ${STATIC_LIB} ${PLATFORM_LIB} ws2_32 stdc++fs iphlpapi) target_link_libraries(${RC_EXE} ${STATIC_LINK_LIBS} ${STATIC_LIB} ${PLATFORM_LIB} ws2_32 stdc++fs iphlpapi) - elseif(WIN32) + elseif(MSVC) target_link_libraries(${EXE} ${STATIC_LINK_LIBS} ${STATIC_LIB} ${PLATFORM_LIB} ws2_32 iphlpapi) target_link_libraries(${CLIENT_EXE} ${STATIC_LINK_LIBS} ${STATIC_LIB} ${PLATFORM_LIB} ws2_32 iphlpapi) target_link_libraries(${RC_EXE} ${STATIC_LINK_LIBS} ${STATIC_LIB} ${PLATFORM_LIB} ws2_32 iphlpapi) @@ -529,7 +543,7 @@ else() add_library(${SHARED_LIB} SHARED ${LIB_SRC} ${LIB_PLATFORM_SRC}) if (MINGW) set(${LIBS} ${LIBS} ws2_32 stdc++fs iphlpapi) - elseif(WIN32) + elseif(MSVC) set(${LIBS} ${LIBS} ws2_32 iphlpapi) endif(MINGW) target_link_libraries(${SHARED_LIB} ${LIBS} ${THREAD_LIB}) diff --git a/LICENSE b/LICENSE index 551854a07..17889aaec 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,5 @@ Copyright (c) 2018 Jeff Becker +Win32 port and portions copyright ©2018 Rick V. This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/gtest/CMakeLists.txt b/test/gtest/CMakeLists.txt index 621d0f042..e9a55c6f8 100644 --- a/test/gtest/CMakeLists.txt +++ b/test/gtest/CMakeLists.txt @@ -22,6 +22,11 @@ option(gtest_build_samples "Build gtest's sample programs." OFF) option(gtest_disable_pthreads "Disable uses of pthreads in gtest." OFF) +# use native windows nt threading even in gcc or clang +if (WIN32) +option(gtest_disable_pthreads ON) +endif(WIN32) + option( gtest_hide_internal_symbols "Build gtest with internal symbols hidden in shared libraries."