diff --git a/CMakeLists.txt b/CMakeLists.txt index 2d286cc75..ffa231776 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -560,6 +560,10 @@ if(UNIX AND NOT APPLE) set(OS_NAME "linux") # sorry BSD endif() +if(OVERRIDE_JDBC_OS_NAME) + set(OS_NAME ${OVERRIDE_JDBC_OS_NAME}) +endif() + if(OVERRIDE_JDBC_OS_ARCH) set(OS_ARCH ${OVERRIDE_JDBC_OS_ARCH}) endif() @@ -579,8 +583,8 @@ add_jar(duckdb_jdbc_tests ${JAVA_TEST_FILES} INCLUDE_JARS duckdb_jdbc_nolib) # main shared lib compilation -if(MSVC) - list(APPEND DUCKDB_INCLUDE_DIRS src/windows) +if(MSVC OR ZOS) + list(APPEND DUCKDB_INCLUDE_DIRS src/stubs) list(APPEND DUCKDB_SRC_FILES duckdb_java.def) else() list(APPEND DUCKDB_SRC_FILES ${JEMALLOC_SRC_FILES}) @@ -606,7 +610,7 @@ target_include_directories(duckdb_java PRIVATE ${JAVA_INCLUDE_PATH2} ${DUCKDB_INCLUDE_DIRS}) -if (NOT MSVC) +if (NOT MSVC AND NOT ZOS) target_include_directories(duckdb_java PRIVATE ${JEMALLOC_INCLUDE_DIRS}) endif() @@ -637,7 +641,7 @@ target_compile_definitions(duckdb_java PRIVATE -DDUCKDB_EXTENSION_AUTOLOAD_DEFAULT -DDUCKDB_EXTENSION_AUTOINSTALL_DEFAULT) -if(NOT MSVC) +if(NOT MSVC AND NOT ZOS) target_compile_definitions(duckdb_java PRIVATE -DDUCKDB_EXTENSION_JEMALLOC_LINKED) endif() diff --git a/CMakeLists.txt.in b/CMakeLists.txt.in index 3d6f041d6..8633e01be 100644 --- a/CMakeLists.txt.in +++ b/CMakeLists.txt.in @@ -78,6 +78,10 @@ if(UNIX AND NOT APPLE) set(OS_NAME "linux") # sorry BSD endif() +if(OVERRIDE_JDBC_OS_NAME) + set(OS_NAME ${OVERRIDE_JDBC_OS_NAME}) +endif() + if(OVERRIDE_JDBC_OS_ARCH) set(OS_ARCH ${OVERRIDE_JDBC_OS_ARCH}) endif() @@ -97,8 +101,8 @@ add_jar(duckdb_jdbc_tests ${JAVA_TEST_FILES} INCLUDE_JARS duckdb_jdbc_nolib) # main shared lib compilation -if(MSVC) - list(APPEND DUCKDB_INCLUDE_DIRS src/windows) +if(MSVC OR ZOS) + list(APPEND DUCKDB_INCLUDE_DIRS src/stubs) list(APPEND DUCKDB_SRC_FILES duckdb_java.def) else() list(APPEND DUCKDB_SRC_FILES ${JEMALLOC_SRC_FILES}) @@ -124,7 +128,7 @@ target_include_directories(duckdb_java PRIVATE ${JAVA_INCLUDE_PATH2} ${DUCKDB_INCLUDE_DIRS}) -if (NOT MSVC) +if (NOT MSVC AND NOT ZOS) target_include_directories(duckdb_java PRIVATE ${JEMALLOC_INCLUDE_DIRS}) endif() @@ -155,7 +159,7 @@ target_compile_definitions(duckdb_java PRIVATE -DDUCKDB_EXTENSION_AUTOLOAD_DEFAULT -DDUCKDB_EXTENSION_AUTOINSTALL_DEFAULT) -if(NOT MSVC) +if(NOT MSVC AND NOT ZOS) target_compile_definitions(duckdb_java PRIVATE -DDUCKDB_EXTENSION_JEMALLOC_LINKED) endif() diff --git a/Makefile b/Makefile index dc269ba25..96e3a8e09 100644 --- a/Makefile +++ b/Makefile @@ -12,9 +12,14 @@ else JARS=build/release endif -ARCH_OVERRIDE= +OS_NAME_OVERRIDE= +ifneq ($(OVERRIDE_JDBC_OS_NAME),) + OS_NAME_OVERRIDE=-DOVERRIDE_JDBC_OS_NAME=$(OVERRIDE_JDBC_OS_NAME) +endif + +OS_ARCH_OVERRIDE= ifneq ($(OVERRIDE_JDBC_OS_ARCH),) - ARCH_OVERRIDE=-DOVERRIDE_JDBC_OS_ARCH=$(OVERRIDE_JDBC_OS_ARCH) + OS_ARCH_OVERRIDE=-DOVERRIDE_JDBC_OS_ARCH=$(OVERRIDE_JDBC_OS_ARCH) endif @@ -33,15 +38,15 @@ test: debug: mkdir -p build/debug - cd build/debug && cmake -DCMAKE_BUILD_TYPE=Debug $(GENERATOR) $(ARCH_OVERRIDE) ../.. && cmake --build . --config Debug + cd build/debug && cmake -DCMAKE_BUILD_TYPE=Debug $(GENERATOR) $(OS_NAME_OVERRIDE) $(OS_ARCH_OVERRIDE) ../.. && cmake --build . --config Debug release: mkdir -p build/release - cd build/release && cmake -DCMAKE_BUILD_TYPE=Release $(GENERATOR) $(ARCH_OVERRIDE) ../.. && cmake --build . --config Release + cd build/release && cmake -DCMAKE_BUILD_TYPE=Release $(GENERATOR) $(OS_NAME_OVERRIDE) $(OS_ARCH_OVERRIDE) ../.. && cmake --build . --config Release sanitized: mkdir -p build/sanitized - cd build/sanitized && cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_ADDRESS_SANITIZER=ON $(GENERATOR) $(ARCH_OVERRIDE) ../.. && cmake --build . --config Release + cd build/sanitized && cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_ADDRESS_SANITIZER=ON $(GENERATOR) $(OS_NAME_OVERRIDE) $(OS_ARCH_OVERRIDE) ../.. && cmake --build . --config Release format: python3 scripts/format.py diff --git a/src/main/java/org/duckdb/DuckDBNative.java b/src/main/java/org/duckdb/DuckDBNative.java index 9570c2c4d..2267bae40 100644 --- a/src/main/java/org/duckdb/DuckDBNative.java +++ b/src/main/java/org/duckdb/DuckDBNative.java @@ -72,7 +72,7 @@ private static String cpuArch() { case "arm64": return ARCH_AARCH64; default: - throw new IllegalStateException("Unsupported system architecture: '" + prop + "'"); + return prop.replaceAll("[^a-z0-9_\\-.]", ""); } } @@ -85,7 +85,7 @@ static String osName() { } else if (prop.startsWith("linux")) { return OS_LINUX; } else { - throw new IllegalStateException("Unsupported OS: '" + prop + "'"); + return prop.replaceAll("[^a-z0-9_\\-.]", ""); } } @@ -116,6 +116,8 @@ private static void unpackAndLoad(URL nativeLibRes) throws IOException { Files.copy(is, tmpFile, REPLACE_EXISTING); } tmpFile.toFile().deleteOnExit(); + // Harmless on the officially supported platforms but required on some other. + tmpFile.toFile().setExecutable(true); System.load(tmpFile.toAbsolutePath().toString()); } diff --git a/src/windows/jemalloc_extension.hpp b/src/stubs/jemalloc_extension.hpp similarity index 100% rename from src/windows/jemalloc_extension.hpp rename to src/stubs/jemalloc_extension.hpp