diff options
-rw-r--r-- | CMakeLists.txt | 10 | ||||
-rw-r--r-- | libproxy/cmake/libproxy.cmk | 12 | ||||
-rw-r--r-- | libproxy/cmake/modules/pacrunner_duktape.cmk | 12 | ||||
-rw-r--r-- | libproxy/modules/config_gnome3.cpp | 15 | ||||
-rw-r--r-- | libproxy/modules/pacrunner_duktape.cpp | 11 | ||||
-rw-r--r-- | utils/CMakeLists.txt | 2 |
6 files changed, 48 insertions, 14 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 4f51e38..08f9170 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ ### Required -cmake_minimum_required(VERSION 2.6) +cmake_minimum_required(VERSION 3.15) project(libproxy) @@ -31,6 +31,14 @@ include(cmake/ctest.cmk) include(cmake/paths.cmk) option(WITH_WEBKIT3 "Build against gtk-3 version of webkitgtk" OFF) +option(BUILD_SHARED_LIBS "Build using shared libraries" ON) + +if(WIN32) + option(MSVC_STATIC "Use statically-linked runtime library" ON) + if(MSVC_STATIC) + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>") + endif() +endif() ### Subdirectories diff --git a/libproxy/cmake/libproxy.cmk b/libproxy/cmake/libproxy.cmk index de68e5c..adc0f2e 100644 --- a/libproxy/cmake/libproxy.cmk +++ b/libproxy/cmake/libproxy.cmk @@ -1,4 +1,11 @@ -add_library(libproxy SHARED extension_config.cpp extension_pacrunner.cpp extension_wpad.cpp proxy.cpp url.cpp ${LIBPROXY_SOURCES}) +set(LIBPROXY_SOURCES ${LIBPROXY_SOURCES} extension_config.cpp extension_pacrunner.cpp extension_wpad.cpp proxy.cpp url.cpp) + +if(BUILD_SHARED_LIBS) + add_library(libproxy SHARED ${LIBPROXY_SOURCES}) +else () + add_library(libproxy STATIC ${LIBPROXY_SOURCES}) +endif() + if(WIN32) target_link_libraries(libproxy modman;ws2_32;${LIBPROXY_LIBRARIES}) else() @@ -19,8 +26,7 @@ set_property(SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/proxy.cpp PROPERTY COMPILE_DEFINITIONS MODULEDIR="${MODULEDIR}";BUILTIN_MODULES=${BUILTIN_MODULES}) # When changing the SOVERSION here remember to also bump the 'favorite proxy .so' in python bindings. set_target_properties(libproxy PROPERTIES PREFIX "" VERSION 1.0.0 SOVERSION 1) -set_target_properties(libproxy PROPERTIES INTERFACE_LINK_LIBRARIES "") -set_target_properties(libproxy PROPERTIES LINK_INTERFACE_LIBRARIES "") + if(NOT APPLE) set_target_properties(libproxy PROPERTIES LINK_FLAGS "-Wl,--version-script,${CMAKE_CURRENT_SOURCE_DIR}/libproxy.map") endif() diff --git a/libproxy/cmake/modules/pacrunner_duktape.cmk b/libproxy/cmake/modules/pacrunner_duktape.cmk index a468125..781985d 100644 --- a/libproxy/cmake/modules/pacrunner_duktape.cmk +++ b/libproxy/cmake/modules/pacrunner_duktape.cmk @@ -1,11 +1,19 @@ +option(WITH_DUKTAPE "Search for Duktape package" ON) + if(WIN32) set(DUKTAPE_FOUND 0) + if(WITH_DUKTAPE) + find_package(Duktape QUIET) + if(DUKTAPE_FOUND) + include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${DUKTAPE_INCLUDE_DIRS}) + link_libraries(${DUKTAPE_LIBRARY}) + set(DUKTAPE_FOUND 1) # find_package sets DUKTAPE_FOUND to True and not 0 + endif() + endif() else() set(DUKTAPE_INCLUDE_DIR "DUKTAPE_INCLUDE_DIR-NOTFOUND" CACHE PATH "Path to Duktape headers") set(DUKTAPE_LIBRARIES "DUKTAPE_LIBRARIES-NOTFOUND" CACHE FILEPATH "Path to Duktape libraries") - option(WITH_DUKTAPE "Search for Duktape package" ON) - if(WITH_DUKTAPE) px_check_modules(DUKTAPE "duktape") diff --git a/libproxy/modules/config_gnome3.cpp b/libproxy/modules/config_gnome3.cpp index 15b9dd2..7415027 100644 --- a/libproxy/modules/config_gnome3.cpp +++ b/libproxy/modules/config_gnome3.cpp @@ -295,13 +295,14 @@ static base_extension** gnome_config_extension_init() { } static bool gnome_config_extension_test() { - return (getenv("GNOME_DESKTOP_SESSION_ID") - || (getenv("DESKTOP_SESSION") - && string(getenv("DESKTOP_SESSION")) == "gnome") - || (getenv("DESKTOP_SESSION") - && string(getenv("DESKTOP_SESSION")) == "gnome-wayland") - || (getenv("DESKTOP_SESSION") - && string(getenv("DESKTOP_SESSION")) == "mate")); + const char *desktops; + + desktops = getenv ("XDG_CURRENT_DESKTOP"); + if (!desktops) + return false; + + /* Remember that XDG_CURRENT_DESKTOP is a list of strings. */ + return strstr (desktops, "GNOME") != NULL; } MM_MODULE_INIT(gnome_config_extension, diff --git a/libproxy/modules/pacrunner_duktape.cpp b/libproxy/modules/pacrunner_duktape.cpp index 8288e13..a32d946 100644 --- a/libproxy/modules/pacrunner_duktape.cpp +++ b/libproxy/modules/pacrunner_duktape.cpp @@ -19,7 +19,10 @@ ******************************************************************************/ #include "../extension_pacrunner.hpp" +#ifndef WIN32 #include <unistd.h> // gethostname +#endif + using namespace libproxy; #include <duktape.h> @@ -75,6 +78,11 @@ static duk_ret_t myIpAddress(duk_context *ctx) { class duktape_pacrunner : public pacrunner { public: duktape_pacrunner(string pac, const url& pacurl) : pacrunner(pac, pacurl) { +#ifdef WIN32 + // On windows, we need to initialize the winsock dll first. + WSADATA WsaData; + WSAStartup(MAKEWORD(2, 0), &WsaData); +#endif this->ctx = duk_create_heap_default(); if (!this->ctx) goto error; duk_push_c_function(this->ctx, dnsResolve, 1); @@ -103,6 +111,9 @@ public: ~duktape_pacrunner() { duk_destroy_heap(this->ctx); +#ifdef WIN32 + WSACleanup(); +#endif } string run(const url& url_) override { diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt index 52010c6..53cf0c0 100644 --- a/utils/CMakeLists.txt +++ b/utils/CMakeLists.txt @@ -2,4 +2,4 @@ include_directories("../libproxy") add_executable(proxy proxy.c) target_link_libraries(proxy libproxy) -install(TARGETS proxy RUNTIME DESTINATION ${BIN_INSTALL_DIR}) +install(TARGETS proxy RUNTIME DESTINATION ${BIN_INSTALL_DIR})
\ No newline at end of file |