diff --git a/CMakeLists.txt b/CMakeLists.txt index 4de1a9b99198c178c6f8fbfc57b7802dbc311847..fbd8673ce48b00f22cd95d79200de3f27403614f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -787,6 +787,11 @@ else() set(ZIG_WASM2C_COMPILE_FLAGS "-std=c99 -O2") set(ZIG1_COMPILE_FLAGS "-std=c99 -Os") set(ZIG2_COMPILE_FLAGS "-std=c99 -O0 -fno-sanitize=undefined -fno-stack-protector") + # Must match the condition in build.zig. + if(ZIG_HOST_TARGET_ARCH MATCHES "^powerpc(64)?(le)?$") + set(ZIG1_COMPILE_FLAGS "${ZIG1_COMPILE_FLAGS} -ffunction-sections -fdata-sections") + set(ZIG2_COMPILE_FLAGS "${ZIG2_COMPILE_FLAGS} -ffunction-sections -fdata-sections") + endif() if(APPLE) set(ZIG2_LINK_FLAGS "-Wl,-stack_size,0x10000000") elseif(MINGW) diff --git a/build.zig b/build.zig index 342c2cfada354e9cccda63484ed9252b7bcafe67..2311f879a42153e79056f180fa0d50b381ac9ba0 100644 --- a/build.zig +++ b/build.zig @@ -838,6 +838,12 @@ fn addCompilerStep(b: *std.Build, options: AddCompilerModOptions) *std.Build.Ste }); exe.stack_size = stack_size; + // Must match the condition in CMakeLists.txt. + const function_data_sections = options.target.result.cpu.arch.isPowerPC(); + + exe.link_function_sections = function_data_sections; + exe.link_data_sections = function_data_sections; + return exe; }