summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt10
-rw-r--r--libproxy/cmake/libproxy.cmk12
-rw-r--r--libproxy/cmake/modules/pacrunner_duktape.cmk12
-rw-r--r--libproxy/modules/config_gnome3.cpp15
-rw-r--r--libproxy/modules/pacrunner_duktape.cpp11
-rw-r--r--utils/CMakeLists.txt2
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