Skip to content

Commit 3b14ab8

Browse files
committed
(PA-6383) share compiler default settings
1 parent 07b77c1 commit 3b14ab8

7 files changed

+34
-93
lines changed

configs/projects/_shared-agent-settings.rb

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -140,23 +140,8 @@
140140
proj.setting(:platform_triple, platform_triple)
141141
proj.setting(:host, host)
142142

143-
# Define default CFLAGS and LDFLAGS for most platforms, and then
144-
# tweak or adjust them as needed.
145-
proj.setting(:cppflags, "-I#{proj.includedir} -I/opt/pl-build-tools/include")
146-
proj.setting(:cflags, "#{proj.cppflags}")
147-
proj.setting(:ldflags, "-L#{proj.libdir} -L/opt/pl-build-tools/lib -Wl,-rpath=#{proj.libdir}")
148-
149-
# Platform specific overrides or settings, which may override the defaults
150-
151-
# Harden Linux ELF binaries by compiling with PIE (Position Independent Executables) support,
152-
# stack canary and full RELRO.
153-
# We only do this on platforms that use their default OS toolchain since pl-gcc versions
154-
# are too old to support these flags.
155-
if (platform.is_sles? && platform.os_version.to_i >= 15) || (platform.is_el? && platform.os_version.to_i >= 8) || platform.is_debian? || (platform.is_ubuntu? && platform.os_version.to_i >= 20) || platform.is_fedora?
156-
proj.setting(:cppflags, "-I#{proj.includedir} -D_FORTIFY_SOURCE=2")
157-
proj.setting(:cflags, '-fstack-protector-strong -fno-plt -O2')
158-
proj.setting(:ldflags, "-L#{proj.libdir} -Wl,-rpath=#{proj.libdir},-z,relro,-z,now")
159-
end
143+
# Load default compiler settings
144+
instance_eval File.read(File.join(__dir__, '_shared-compiler-settings.rb'))
160145

161146
if ruby_version_x == "3"
162147
proj.setting(:openssl_version, '3.0')

configs/projects/_shared-client-tools-runtime.rb

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -92,20 +92,8 @@
9292
proj.setting(:ldflags, "-L#{proj.tools_root}/lib -L#{proj.gcc_root}/lib -L#{proj.libdir} -Wl,--nxcompat -Wl,--dynamicbase")
9393
proj.setting(:cygwin, "nodosfilewarning winsymlinks:native")
9494
else
95-
proj.setting(:tools_root, "/opt/pl-build-tools")
96-
proj.setting(:cppflags, "-I#{proj.includedir} -I/opt/pl-build-tools/include")
97-
proj.setting(:cflags, "#{proj.cppflags}")
98-
proj.setting(:ldflags, "-L#{proj.libdir} -L/opt/pl-build-tools/lib -Wl,-rpath=#{proj.libdir}")
99-
100-
# Harden Linux ELF binaries by compiling with PIE (Position Independent Executables) support,
101-
# stack canary and full RELRO.
102-
# We only do this on platforms that use their default OS toolchain since pl-gcc versions
103-
# are too old to support these flags.
104-
if (platform.is_sles? && platform.os_version.to_i >= 15) || (platform.is_el? && platform.os_version.to_i >= 8) || platform.is_debian? || (platform.is_ubuntu? && platform.os_version.to_i >= 20) || platform.is_fedora?
105-
proj.setting(:cppflags, "-I#{proj.includedir} -D_FORTIFY_SOURCE=2")
106-
proj.setting(:cflags, '-fstack-protector-strong -fno-plt -O2')
107-
proj.setting(:ldflags, "-L#{proj.libdir} -Wl,-rpath=#{proj.libdir},-z,relro,-z,now")
108-
end
95+
# Load default compiler settings
96+
instance_eval File.read(File.join(__dir__, '_shared-compiler-settings.rb'))
10997
end
11098

11199
# What to build?
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Define default CFLAGS and LDFLAGS for most platforms, and then
2+
# tweak or adjust them as needed.
3+
proj.setting(:cppflags, "-I#{proj.includedir} -I/opt/pl-build-tools/include")
4+
proj.setting(:cflags, "#{proj.cppflags}")
5+
proj.setting(:ldflags, "-L#{proj.libdir} -L/opt/pl-build-tools/lib -Wl,-rpath=#{proj.libdir}")
6+
7+
# Platform specific overrides or settings, which may override the defaults
8+
9+
# Harden Linux ELF binaries by compiling with PIE (Position Independent Executables) support,
10+
# stack canary and full RELRO.
11+
# We only do this on platforms that use their default OS toolchain since pl-gcc versions
12+
# are too old to support these flags.
13+
if ((platform.is_sles? && platform.os_version.to_i >= 15) ||
14+
(platform.is_el? && platform.os_version.to_i >= 8) ||
15+
platform.is_debian? ||
16+
(platform.is_ubuntu? && platform.os_version.to_i >= 20) ||
17+
platform.is_fedora?
18+
)
19+
proj.setting(:cppflags, "-I#{proj.includedir} -D_FORTIFY_SOURCE=2")
20+
proj.setting(:cflags, '-fstack-protector-strong -fno-plt -O2')
21+
proj.setting(:ldflags, "-L#{proj.libdir} -Wl,-rpath=#{proj.libdir},-z,relro,-z,now")
22+
end

configs/projects/_shared-pe-bolt-server_with_ruby.rb

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -75,23 +75,8 @@
7575
ruby_base_version = proj.ruby_version.gsub(/(\d+)\.(\d+)\.(\d+)/, '\1.\2.0')
7676
proj.setting(:gem_home, File.join(proj.libdir, 'ruby', 'gems', ruby_base_version))
7777

78-
# Define default CFLAGS and LDFLAGS for most platforms, and then
79-
# tweak or adjust them as needed.
80-
proj.setting(:cppflags, "-I#{proj.includedir} -I/opt/pl-build-tools/include")
81-
proj.setting(:cflags, "#{proj.cppflags}")
82-
proj.setting(:ldflags, "-L#{proj.libdir} -L/opt/pl-build-tools/lib -Wl,-rpath=#{proj.libdir}")
83-
84-
# Platform specific overrides or settings, which may override the defaults
85-
86-
# Harden Linux ELF binaries by compiling with PIE (Position Independent Executables) support,
87-
# stack canary and full RELRO.
88-
# We only do this on platforms that use their default OS toolchain since pl-gcc versions
89-
# are too old to support these flags.
90-
if (platform.is_sles? && platform.os_version.to_i >= 15) || (platform.is_el? && platform.os_version.to_i >= 8) || platform.is_debian? || (platform.is_ubuntu? && platform.os_version.to_i >= 20) || platform.is_fedora?
91-
proj.setting(:cppflags, "-I#{proj.includedir} -D_FORTIFY_SOURCE=2")
92-
proj.setting(:cflags, '-fstack-protector-strong -fno-plt -O2')
93-
proj.setting(:ldflags, "-L#{proj.libdir} -Wl,-rpath=#{proj.libdir},-z,relro,-z,now")
94-
end
78+
# Load default compiler settings
79+
instance_eval File.read(File.join(__dir__, '_shared-compiler-settings.rb'))
9580

9681
# Required to build ruby
9782
proj.component 'libffi'

configs/projects/_shared-pe-installer-runtime.rb

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -31,21 +31,8 @@
3131
proj.setting(:artifactory_url, "https://artifactory.delivery.puppetlabs.net/artifactory")
3232
proj.setting(:buildsources_url, "#{proj.artifactory_url}/generic/buildsources")
3333

34-
# Define default CFLAGS and LDFLAGS for most platforms, and then
35-
# tweak or adjust them as needed.
36-
proj.setting(:cppflags, "-I#{proj.includedir} -I/opt/pl-build-tools/include")
37-
proj.setting(:cflags, "#{proj.cppflags}")
38-
proj.setting(:ldflags, "-L#{proj.libdir} -L/opt/pl-build-tools/lib -Wl,-rpath=#{proj.libdir}")
39-
40-
# Harden Linux ELF binaries by compiling with PIE (Position Independent Executables) support,
41-
# stack canary and full RELRO.
42-
# We only do this on platforms that use their default OS toolchain since pl-gcc versions
43-
# are too old to support these flags.
44-
if (platform.is_sles? && platform.os_version.to_i >= 15) || (platform.is_el? && platform.os_version.to_i >= 8) || platform.is_debian? || (platform.is_ubuntu? && platform.os_version.to_i >= 20) || platform.is_fedora?
45-
proj.setting(:cppflags, "-I#{proj.includedir} -D_FORTIFY_SOURCE=2")
46-
proj.setting(:cflags, '-fstack-protector-strong -fno-plt -O2')
47-
proj.setting(:ldflags, "-L#{proj.libdir} -Wl,-rpath=#{proj.libdir},-z,relro,-z,now")
48-
end
34+
# Load default compiler settings
35+
instance_eval File.read(File.join(__dir__, '_shared-compiler-settings.rb'))
4936

5037
# These flags are applied in addition to the defaults in configs/component/openssl.rb.
5138
proj.setting(:openssl_extra_configure_flags, [

configs/projects/bolt-runtime.rb

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -66,21 +66,8 @@
6666
proj.setting(:artifactory_url, "https://artifactory.delivery.puppetlabs.net/artifactory")
6767
proj.setting(:buildsources_url, "#{proj.artifactory_url}/generic/buildsources")
6868

69-
# Define default CFLAGS and LDFLAGS for most platforms, and then
70-
# tweak or adjust them as needed.
71-
proj.setting(:cppflags, "-I#{proj.includedir} -I/opt/pl-build-tools/include")
72-
proj.setting(:cflags, "#{proj.cppflags}")
73-
proj.setting(:ldflags, "-L#{proj.libdir} -L/opt/pl-build-tools/lib -Wl,-rpath=#{proj.libdir}")
74-
75-
# Harden Linux ELF binaries by compiling with PIE (Position Independent Executables) support,
76-
# stack canary and full RELRO.
77-
# We only do this on platforms that use their default OS toolchain since pl-gcc versions
78-
# are too old to support these flags.
79-
if (platform.is_sles? && platform.os_version.to_i >= 15) || (platform.is_el? && platform.os_version.to_i >= 8) || platform.is_debian? || (platform.is_ubuntu? && platform.os_version.to_i >= 20) || platform.is_fedora?
80-
proj.setting(:cppflags, "-I#{proj.includedir} -D_FORTIFY_SOURCE=2")
81-
proj.setting(:cflags, '-fstack-protector-strong -fno-plt -O2')
82-
proj.setting(:ldflags, "-L#{proj.libdir} -Wl,-rpath=#{proj.libdir},-z,relro,-z,now")
83-
end
69+
# Load default compiler settings
70+
instance_eval File.read(File.join(__dir__, '_shared-compiler-settings.rb'))
8471

8572
# Platform specific overrides or settings, which may override the defaults
8673
if platform.is_windows?

configs/projects/pdk-runtime.rb

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -111,21 +111,8 @@
111111
proj.setting(:host, "--host #{platform.platform_triple}")
112112
end
113113

114-
# Define default CFLAGS and LDFLAGS for most platforms, and then
115-
# tweak or adjust them as needed.
116-
proj.setting(:cppflags, "-I#{proj.includedir} -I/opt/pl-build-tools/include")
117-
proj.setting(:cflags, proj.cppflags.to_s)
118-
proj.setting(:ldflags, "-L#{proj.libdir} -L/opt/pl-build-tools/lib -Wl,-rpath=#{proj.libdir}")
119-
120-
# Harden Linux ELF binaries by compiling with PIE (Position Independent Executables) support,
121-
# stack canary and full RELRO.
122-
# We only do this on platforms that use their default OS toolchain since pl-gcc versions
123-
# are too old to support these flags.
124-
if (platform.is_sles? && platform.os_version.to_i >= 15) || (platform.is_el? && platform.os_version.to_i >= 8) || platform.is_debian? || (platform.is_ubuntu? && platform.os_version.to_i >= 20) || platform.is_fedora?
125-
proj.setting(:cppflags, "-I#{proj.includedir} -D_FORTIFY_SOURCE=2")
126-
proj.setting(:cflags, '-fstack-protector-strong -fno-plt -O2')
127-
proj.setting(:ldflags, "-L#{proj.libdir} -Wl,-rpath=#{proj.libdir},-z,relro,-z,now")
128-
end
114+
# Load default compiler settings
115+
instance_eval File.read(File.join(__dir__, '_shared-compiler-settings.rb'))
129116

130117
if platform.is_windows?
131118
proj.setting(:gcc_root, 'C:/tools/mingw64')

0 commit comments

Comments
 (0)