authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-06-17 14:22:43-07:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2023-06-17 14:22:43-07:00
loge23d48e61a594cabb735accf4c0a18dab6ae18a2
treebf57a58defec4d420d4cc3c33c4a0443d0c4dc6a
parente3736baddb8ecff90f0594be9f604c7484ce9aa2
parent8eaf2ff207242bdac5092b262079543274a72f75
signaturebadge-question-mark Signed by PGP key 4AEE18F83AFDEB23

Merge pull request #15511 from mikdusan/netbsd-pkgsrc

netbsd: pkgsrc

2 files changed, 13 insertions(+), 6 deletions(-)

CMakeLists.txt+11-4
...@@ -120,6 +120,8 @@ if(ZIG_AR_WORKAROUND)...@@ -120,6 +120,8 @@ if(ZIG_AR_WORKAROUND)
120 string(REPLACE "<CMAKE_AR>" "<CMAKE_AR> ar" CMAKE_CXX_ARCHIVE_CREATE ${CMAKE_CXX_ARCHIVE_CREATE})120 string(REPLACE "<CMAKE_AR>" "<CMAKE_AR> ar" CMAKE_CXX_ARCHIVE_CREATE ${CMAKE_CXX_ARCHIVE_CREATE})
121endif()121endif()
122122
123set(ZIG_PIE off CACHE BOOL "produce a position independent zig executable")
124
123find_package(llvm 16)125find_package(llvm 16)
124find_package(clang 16)126find_package(clang 16)
125find_package(lld 16)127find_package(lld 16)
...@@ -671,7 +673,12 @@ if(ZIG_STATIC)...@@ -671,7 +673,12 @@ if(ZIG_STATIC)
671endif()673endif()
672674
673add_library(zigcpp STATIC ${ZIG_CPP_SOURCES})675add_library(zigcpp STATIC ${ZIG_CPP_SOURCES})
674set_target_properties(zigcpp PROPERTIES COMPILE_FLAGS ${EXE_CXX_FLAGS})676if(ZIG_PIE)
677 set(ZIGCPP_CXX_FLAGS "${EXE_CXX_FLAGS} -fPIC")
678else()
679 set(ZIGCPP_CXX_FLAGS "${EXE_CXX_FLAGS}")
680endif()
681set_target_properties(zigcpp PROPERTIES COMPILE_FLAGS ${ZIGCPP_CXX_FLAGS})
675682
676target_link_libraries(zigcpp LINK_PUBLIC683target_link_libraries(zigcpp LINK_PUBLIC
677 ${CLANG_LIBRARIES}684 ${CLANG_LIBRARIES}
...@@ -823,10 +830,10 @@ else()...@@ -823,10 +830,10 @@ else()
823 set(ZIG_STATIC_ARG "")830 set(ZIG_STATIC_ARG "")
824endif()831endif()
825832
826if(CMAKE_POSITION_INDEPENDENT_CODE)833if(CMAKE_POSITION_INDEPENDENT_CODE OR ZIG_PIE)
827 set(ZIG_PIE_ARG="-Dpie")834 set(ZIG_PIE_ARG "-Dpie")
828else()835else()
829 set(ZIG_PIE_ARG="")836 set(ZIG_PIE_ARG "")
830endif()837endif()
831838
832set(ZIG_BUILD_ARGS839set(ZIG_BUILD_ARGS
src/link/Elf.zig+2-2
...@@ -1667,10 +1667,10 @@ fn linkWithLLD(self: *Elf, comp: *Compilation, prog_node: *std.Progress.Node) !v...@@ -1667,10 +1667,10 @@ fn linkWithLLD(self: *Elf, comp: *Compilation, prog_node: *std.Progress.Node) !v
1667 try argv.append("-pie");1667 try argv.append("-pie");
1668 }1668 }
16691669
1670 if (self.base.options.link_mode == .Dynamic and target.os.tag == .netbsd) {1670 if (is_dyn_lib and target.os.tag == .netbsd) {
1671 // Add options to produce shared objects with only 2 PT_LOAD segments.1671 // Add options to produce shared objects with only 2 PT_LOAD segments.
1672 // NetBSD expects 2 PT_LOAD segments in a shared object, otherwise1672 // NetBSD expects 2 PT_LOAD segments in a shared object, otherwise
1673 // ld.elf_so fails to load, emitting a general "not found" error.1673 // ld.elf_so fails loading dynamic libraries with "not found" error.
1674 // See https://github.com/ziglang/zig/issues/9109 .1674 // See https://github.com/ziglang/zig/issues/9109 .
1675 try argv.append("--no-rosegment");1675 try argv.append("--no-rosegment");
1676 try argv.append("-znorelro");1676 try argv.append("-znorelro");