From 5244f1576aa472757059f75cf7b62e95c34e639c Mon Sep 17 00:00:00 2001 From: Ken Shackleton Date: Wed, 14 May 2025 08:17:04 +0100 Subject: [PATCH 01/11] Strip symbols from Linux build. Signed-off-by: Ken Shackleton --- .github/workflows/continuous-integration.yml | 12 ++++++++++-- .github/workflows/publication.yml | 6 ++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index 74c9b8614a..4e42860398 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -43,11 +43,19 @@ jobs: - name: 'Build' env: - CC: zig cc -target x86_64-linux-musl - CXX: zig c++ -target x86_64-linux-musl + CC: zig cc + CXX: zig c++ + CFLAGS: -target x86_64-linux-musl -O2 -s + CXXFLAGS: -target x86_64-linux-musl -O2 -s run: | ./gradlew :selekt-sqlite3-native:jar + - name: 'Upload native JAR' + uses: actions/upload-artifact@v4 + with: + name: selekt-native-${{ runner.os }} + path: selekt-sqlite3-native/build/libs/*.jar + ci-pipeline: name: 'Continuous Integration' runs-on: ubuntu-latest diff --git a/.github/workflows/publication.yml b/.github/workflows/publication.yml index d25e7ab39c..86549e8a4e 100644 --- a/.github/workflows/publication.yml +++ b/.github/workflows/publication.yml @@ -46,8 +46,10 @@ jobs: - name: 'Build' env: - CC: zig cc -target x86_64-linux-musl - CXX: zig c++ -target x86_64-linux-musl + CC: zig cc + CXX: zig c++ + CFLAGS: -target x86_64-linux-musl -O2 -s + CXXFLAGS: -target x86_64-linux-musl -O2 -s run: | if [[ "${{ github.event_name }}" == "push" ]]; then ./gradlew :selekt-sqlite3-native:jar From 8d8a047549163fdf3ccc5bd825527e1d0501f54c Mon Sep 17 00:00:00 2001 From: Ken Shackleton Date: Wed, 14 May 2025 08:41:20 +0100 Subject: [PATCH 02/11] Set CMAKE_C_COMPILER. Signed-off-by: Ken Shackleton --- .github/workflows/continuous-integration.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index 4e42860398..88ac631f5a 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -43,10 +43,10 @@ jobs: - name: 'Build' env: - CC: zig cc - CXX: zig c++ - CFLAGS: -target x86_64-linux-musl -O2 -s - CXXFLAGS: -target x86_64-linux-musl -O2 -s + CMAKE_C_COMPILER: zig cc -target x86_64-linux-musl + CMAKE_CXX_COMPILER: zig c++ -target x86_64-linux-musl + CFLAGS: -O2 -s + CXXFLAGS: -O2 -s run: | ./gradlew :selekt-sqlite3-native:jar From d3da950ebf9f2640364ff489519d736035aa3bdc Mon Sep 17 00:00:00 2001 From: Ken Shackleton Date: Wed, 14 May 2025 09:06:36 +0100 Subject: [PATCH 03/11] Define a toolchain. Signed-off-by: Ken Shackleton --- .github/workflows/continuous-integration.yml | 5 ----- SQLite3/build.gradle.kts | 1 + SQLite3/linux.toolchain | 15 +++++++++++++++ SQLite3/sqlite3/CMakeLists.txt | 14 ++++++++++++++ 4 files changed, 30 insertions(+), 5 deletions(-) create mode 100644 SQLite3/linux.toolchain diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index 88ac631f5a..49c95a6ce8 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -42,11 +42,6 @@ jobs: echo 'org.gradle.configuration-cache=false' >> gradle.properties - name: 'Build' - env: - CMAKE_C_COMPILER: zig cc -target x86_64-linux-musl - CMAKE_CXX_COMPILER: zig c++ -target x86_64-linux-musl - CFLAGS: -O2 -s - CXXFLAGS: -O2 -s run: | ./gradlew :selekt-sqlite3-native:jar diff --git a/SQLite3/build.gradle.kts b/SQLite3/build.gradle.kts index 4baaa7097d..b9a0d1cbd4 100644 --- a/SQLite3/build.gradle.kts +++ b/SQLite3/build.gradle.kts @@ -103,6 +103,7 @@ tasks.register("cmakeSQLite") { workingDir(".cxx-host") commandLine("cmake") args( + "-DCMAKE_TOOLCHAIN_FILE=${layout.projectDirectory.dir("linux.toolchain").asFile.absolutePath}", "-DCMAKE_BUILD_TYPE=Release", "-DUSE_CCACHE=1", "-DSLKT_TARGET_ABI=${platformIdentifier()}", diff --git a/SQLite3/linux.toolchain b/SQLite3/linux.toolchain new file mode 100644 index 0000000000..cd505ec7bd --- /dev/null +++ b/SQLite3/linux.toolchain @@ -0,0 +1,15 @@ +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR x86_64) + +set(CMAKE_C_COMPILER zig) +set(CMAKE_C_COMPILER_ARG1 cc) +set(CMAKE_C_COMPILER_TARGET x86_64-linux-musl) + +set(CMAKE_CXX_COMPILER zig) +set(CMAKE_CXX_COMPILER_ARG1 c++) +set(CMAKE_CXX_COMPILER_TARGET x86_64-linux-musl) + +set(CMAKE_C_FLAGS "-O2 -s") +set(CMAKE_CXX_FLAGS "-O2 -s") + +set(CMAKE_SHARED_LINKER_FLAGS "--target=x86_64-linux-musl -s") diff --git a/SQLite3/sqlite3/CMakeLists.txt b/SQLite3/sqlite3/CMakeLists.txt index 28814c85dc..f0fb40ad44 100644 --- a/SQLite3/sqlite3/CMakeLists.txt +++ b/SQLite3/sqlite3/CMakeLists.txt @@ -76,3 +76,17 @@ if(NOT LIBCRYPTO) endif() message(STATUS "Linking to OpenSSL libcrypto: ${LIBCRYPTO}") target_link_libraries(selekt ${LIBCRYPTO}) + +message(STATUS "CMAKE_C_COMPILER = ${CMAKE_C_COMPILER}") +if(CMAKE_C_COMPILER MATCHES "zig") + message(STATUS "Applying Zig + musl compile and link flags") + target_compile_options(selekt PRIVATE + "--target=x86_64-linux-musl" + "-O2" + "-s" + ) + target_link_options(selekt PRIVATE + "--target=x86_64-linux-musl" + "-s" + ) +endif() From febc2ababe82f535834cf447333eb29514e3056a Mon Sep 17 00:00:00 2001 From: Ken Shackleton Date: Wed, 14 May 2025 13:56:17 +0100 Subject: [PATCH 04/11] Increase logging. Signed-off-by: Ken Shackleton --- SQLite3/build.gradle.kts | 3 +++ SQLite3/sqlite3/CMakeLists.txt | 14 -------------- 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/SQLite3/build.gradle.kts b/SQLite3/build.gradle.kts index b9a0d1cbd4..f0f48b45f4 100644 --- a/SQLite3/build.gradle.kts +++ b/SQLite3/build.gradle.kts @@ -109,6 +109,9 @@ tasks.register("cmakeSQLite") { "-DSLKT_TARGET_ABI=${platformIdentifier()}", projectDir ) + isIgnoreExitValue = false + standardOutput = System.out + errorOutput = System.err } tasks.register("makeSQLite") { diff --git a/SQLite3/sqlite3/CMakeLists.txt b/SQLite3/sqlite3/CMakeLists.txt index f0fb40ad44..28814c85dc 100644 --- a/SQLite3/sqlite3/CMakeLists.txt +++ b/SQLite3/sqlite3/CMakeLists.txt @@ -76,17 +76,3 @@ if(NOT LIBCRYPTO) endif() message(STATUS "Linking to OpenSSL libcrypto: ${LIBCRYPTO}") target_link_libraries(selekt ${LIBCRYPTO}) - -message(STATUS "CMAKE_C_COMPILER = ${CMAKE_C_COMPILER}") -if(CMAKE_C_COMPILER MATCHES "zig") - message(STATUS "Applying Zig + musl compile and link flags") - target_compile_options(selekt PRIVATE - "--target=x86_64-linux-musl" - "-O2" - "-s" - ) - target_link_options(selekt PRIVATE - "--target=x86_64-linux-musl" - "-s" - ) -endif() From 8bbbbe8ed4f9a2e857252cba361f33e71106e88f Mon Sep 17 00:00:00 2001 From: Ken Shackleton Date: Wed, 14 May 2025 17:18:43 +0100 Subject: [PATCH 05/11] Try disabling CCACHE. Signed-off-by: Ken Shackleton --- SQLite3/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SQLite3/build.gradle.kts b/SQLite3/build.gradle.kts index f0f48b45f4..9bd0c47baf 100644 --- a/SQLite3/build.gradle.kts +++ b/SQLite3/build.gradle.kts @@ -105,7 +105,7 @@ tasks.register("cmakeSQLite") { args( "-DCMAKE_TOOLCHAIN_FILE=${layout.projectDirectory.dir("linux.toolchain").asFile.absolutePath}", "-DCMAKE_BUILD_TYPE=Release", - "-DUSE_CCACHE=1", + //"-DUSE_CCACHE=1", "-DSLKT_TARGET_ABI=${platformIdentifier()}", projectDir ) From fd037c87e123d94b8377ac8aed089c69bae09c6b Mon Sep 17 00:00:00 2001 From: Ken Shackleton Date: Wed, 14 May 2025 17:31:41 +0100 Subject: [PATCH 06/11] Double quotes. Signed-off-by: Ken Shackleton --- SQLite3/linux.toolchain | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/SQLite3/linux.toolchain b/SQLite3/linux.toolchain index cd505ec7bd..1e3f89fb88 100644 --- a/SQLite3/linux.toolchain +++ b/SQLite3/linux.toolchain @@ -1,13 +1,13 @@ -set(CMAKE_SYSTEM_NAME Linux) -set(CMAKE_SYSTEM_PROCESSOR x86_64) +set(CMAKE_SYSTEM_NAME "Linux") +set(CMAKE_SYSTEM_PROCESSOR "x86_64") -set(CMAKE_C_COMPILER zig) -set(CMAKE_C_COMPILER_ARG1 cc) -set(CMAKE_C_COMPILER_TARGET x86_64-linux-musl) +set(CMAKE_C_COMPILER "zig") +set(CMAKE_C_COMPILER_ARG1 "cc") +set(CMAKE_C_COMPILER_TARGET "x86_64-linux-musl") -set(CMAKE_CXX_COMPILER zig) -set(CMAKE_CXX_COMPILER_ARG1 c++) -set(CMAKE_CXX_COMPILER_TARGET x86_64-linux-musl) +set(CMAKE_CXX_COMPILER "zig") +set(CMAKE_CXX_COMPILER_ARG1 "c++") +set(CMAKE_CXX_COMPILER_TARGET "x86_64-linux-musl") set(CMAKE_C_FLAGS "-O2 -s") set(CMAKE_CXX_FLAGS "-O2 -s") From bba30f7577845a3b5ef8fa05b30af02f041730f8 Mon Sep 17 00:00:00 2001 From: Ken Shackleton Date: Wed, 14 May 2025 17:35:48 +0100 Subject: [PATCH 07/11] Rename toolchain file. Signed-off-by: Ken Shackleton --- .gitignore | 1 - SQLite3/build.gradle.kts | 3 ++- .../{linux.toolchain => zig-toolchain-x86_64-linux-musl.cmake} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename SQLite3/{linux.toolchain => zig-toolchain-x86_64-linux-musl.cmake} (100%) diff --git a/.gitignore b/.gitignore index 8c773453b2..60cc6df32f 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,5 @@ local.properties **/.cxx-host **/CMakeCache.txt -**/*.cmake **/CMakeFiles **/MakeFile diff --git a/SQLite3/build.gradle.kts b/SQLite3/build.gradle.kts index 9bd0c47baf..0113c84ad9 100644 --- a/SQLite3/build.gradle.kts +++ b/SQLite3/build.gradle.kts @@ -103,7 +103,8 @@ tasks.register("cmakeSQLite") { workingDir(".cxx-host") commandLine("cmake") args( - "-DCMAKE_TOOLCHAIN_FILE=${layout.projectDirectory.dir("linux.toolchain").asFile.absolutePath}", + "-DCMAKE_TOOLCHAIN_FILE=${layout.projectDirectory.dir("zig-toolchain-x86_64-linux-musl.cmake") + .asFile.absolutePath}", "-DCMAKE_BUILD_TYPE=Release", //"-DUSE_CCACHE=1", "-DSLKT_TARGET_ABI=${platformIdentifier()}", diff --git a/SQLite3/linux.toolchain b/SQLite3/zig-toolchain-x86_64-linux-musl.cmake similarity index 100% rename from SQLite3/linux.toolchain rename to SQLite3/zig-toolchain-x86_64-linux-musl.cmake From a4583d83cfe44be197d0b218b8706204cb58e5d1 Mon Sep 17 00:00:00 2001 From: Ken Shackleton Date: Wed, 14 May 2025 17:46:57 +0100 Subject: [PATCH 08/11] Capture logs. Signed-off-by: Ken Shackleton --- SQLite3/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SQLite3/build.gradle.kts b/SQLite3/build.gradle.kts index 0113c84ad9..f7d3524a64 100644 --- a/SQLite3/build.gradle.kts +++ b/SQLite3/build.gradle.kts @@ -111,8 +111,8 @@ tasks.register("cmakeSQLite") { projectDir ) isIgnoreExitValue = false - standardOutput = System.out - errorOutput = System.err + logging.captureStandardOutput(LogLevel.INFO) + logging.captureStandardError(LogLevel.INFO) } tasks.register("makeSQLite") { From 3347bed9bbada2f24052ad9099f13b106fde6721 Mon Sep 17 00:00:00 2001 From: Ken Shackleton Date: Wed, 14 May 2025 18:30:56 +0100 Subject: [PATCH 09/11] File input. Signed-off-by: Ken Shackleton --- SQLite3/build.gradle.kts | 1 + 1 file changed, 1 insertion(+) diff --git a/SQLite3/build.gradle.kts b/SQLite3/build.gradle.kts index f7d3524a64..68bd66716f 100644 --- a/SQLite3/build.gradle.kts +++ b/SQLite3/build.gradle.kts @@ -100,6 +100,7 @@ tasks.register("cmakeSQLite") { doFirst { Files.createDirectories(workingDir) } + inputs.file("zig-toolchain-x86_64-linux-musl.cmake") workingDir(".cxx-host") commandLine("cmake") args( From 13da4b828e6a5f985f02d050421148a467f7caf5 Mon Sep 17 00:00:00 2001 From: Ken Shackleton Date: Thu, 15 May 2025 00:32:34 +0100 Subject: [PATCH 10/11] Remove inputs. Signed-off-by: Ken Shackleton --- .github/workflows/continuous-integration.yml | 2 +- SQLite3/build.gradle.kts | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index 49c95a6ce8..394d6a4b72 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -43,7 +43,7 @@ jobs: - name: 'Build' run: | - ./gradlew :selekt-sqlite3-native:jar + ./gradlew clean :selekt-sqlite3-native:jar --no-build-cache --no-configuration-cache --rerun-tasks - name: 'Upload native JAR' uses: actions/upload-artifact@v4 diff --git a/SQLite3/build.gradle.kts b/SQLite3/build.gradle.kts index 68bd66716f..eff0cc7567 100644 --- a/SQLite3/build.gradle.kts +++ b/SQLite3/build.gradle.kts @@ -100,8 +100,7 @@ tasks.register("cmakeSQLite") { doFirst { Files.createDirectories(workingDir) } - inputs.file("zig-toolchain-x86_64-linux-musl.cmake") - workingDir(".cxx-host") + workingDir(workingDir) commandLine("cmake") args( "-DCMAKE_TOOLCHAIN_FILE=${layout.projectDirectory.dir("zig-toolchain-x86_64-linux-musl.cmake") From fe1fb2cca485e66e906e009bb4cd067bea45ab56 Mon Sep 17 00:00:00 2001 From: Ken Shackleton Date: Thu, 15 May 2025 07:48:33 +0100 Subject: [PATCH 11/11] More CMake static configuration. Signed-off-by: Ken Shackleton --- SQLite3/zig-toolchain-x86_64-linux-musl.cmake | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/SQLite3/zig-toolchain-x86_64-linux-musl.cmake b/SQLite3/zig-toolchain-x86_64-linux-musl.cmake index 1e3f89fb88..3095a456be 100644 --- a/SQLite3/zig-toolchain-x86_64-linux-musl.cmake +++ b/SQLite3/zig-toolchain-x86_64-linux-musl.cmake @@ -9,7 +9,8 @@ set(CMAKE_CXX_COMPILER "zig") set(CMAKE_CXX_COMPILER_ARG1 "c++") set(CMAKE_CXX_COMPILER_TARGET "x86_64-linux-musl") -set(CMAKE_C_FLAGS "-O2 -s") -set(CMAKE_CXX_FLAGS "-O2 -s") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -s") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -s") -set(CMAKE_SHARED_LINKER_FLAGS "--target=x86_64-linux-musl -s") +set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --target=x86_64-linux-musl -s") +set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static")