~angelsl/ubuntu/wily/gcc-5/mips-cross

« back to all changes in this revision

Viewing changes to debian/rules.d/binary-libgcc.mk

  • Committer: angelsl
  • Date: 2015-10-30 03:30:35 UTC
  • Revision ID: angelsl-20151030033035-rmug41zm8hyjgisg
Original import

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
ifeq ($(with_libgcc),yes)
 
2
  $(lib_binaries)       += libgcc
 
3
endif
 
4
ifeq ($(with_lib64gcc),yes)
 
5
  $(lib_binaries)       += lib64gcc
 
6
endif
 
7
ifeq ($(with_lib32gcc),yes)
 
8
  $(lib_binaries)       += lib32gcc
 
9
endif
 
10
ifeq ($(with_libn32gcc),yes)
 
11
  $(lib_binaries)       += libn32gcc
 
12
endif
 
13
ifeq ($(with_libx32gcc),yes)
 
14
  $(lib_binaries)       += libx32gcc
 
15
endif
 
16
ifeq ($(with_libhfgcc),yes)
 
17
  $(lib_binaries)       += libhfgcc
 
18
endif
 
19
ifeq ($(with_libsfgcc),yes)
 
20
  $(lib_binaries)       += libsfgcc
 
21
endif
 
22
 
 
23
ifneq ($(DEB_STAGE),rtlibs)
 
24
  ifeq ($(with_cdev),yes)
 
25
    $(lib_binaries)  += libgcc-dev
 
26
  endif
 
27
  ifeq ($(with_lib64gccdev),yes)
 
28
    $(lib_binaries)  += lib64gcc-dev
 
29
  endif
 
30
  ifeq ($(with_lib32gccdev),yes)
 
31
    $(lib_binaries)  += lib32gcc-dev
 
32
  endif
 
33
  ifeq ($(with_libn32gccdev),yes)
 
34
    $(lib_binaries)  += libn32gcc-dev
 
35
  endif
 
36
  ifeq ($(with_libx32gccdev),yes)
 
37
    $(lib_binaries)  += libx32gcc-dev
 
38
  endif
 
39
  ifeq ($(with_libhfgccdev),yes)
 
40
    $(lib_binaries)  += libhfgcc-dev
 
41
  endif
 
42
  ifeq ($(with_libsfgccdev),yes)
 
43
    $(lib_binaries)  += libsfgcc-dev
 
44
  endif
 
45
endif
 
46
 
 
47
header_files = \
 
48
        $(gcc_lib_dir)/include/std*.h \
 
49
        $(shell for h in \
 
50
                    README features.h arm_neon.h loongson.h \
 
51
                    {cpuid,decfloat,float,iso646,limits,mm3dnow,mm_malloc}.h \
 
52
                    {ppu_intrinsics,paired,spu2vmx,vec_types,si2vmx}.h \
 
53
                    {,a,b,e,i,n,p,s,t,w,x}mmintrin.h mmintrin-common.h \
 
54
                    {abm,adx,avx,avx2,bmi,bmi2,f16c,fma,fma4,fxsr,ia32,}intrin.h \
 
55
                    {lwp,lzcnt,popcnt,prfchw,rdseed,rtm,tbm,x86,xop,xsave{,opt},xtest,}intrin.h \
 
56
                    {htm,htmxl,mwaitx,sha}intrin.h \
 
57
                    avx512{bw,er,cd,dq,f,ifma,ifmavl,pf,vlbw,vbmi,vldq,vbmivl,vl}intrin.h \
 
58
                    {clflushopt,clwb,pcommit,xsavec,xsaves}intrin.h \
 
59
                    {arm_acle,unwind-arm-common,s390intrin}.h \
 
60
                    {cross-stdarg,syslimits,unwind,varargs}.h; \
 
61
                do \
 
62
                  test -e $(d)/$(gcc_lib_dir)/include/$$h \
 
63
                    && echo $(gcc_lib_dir)/include/$$h; \
 
64
                  test -e $(d)/$(gcc_lib_dir)/include-fixed/$$h \
 
65
                    && echo $(gcc_lib_dir)/include-fixed/$$h; \
 
66
                done) \
 
67
        $(shell for d in \
 
68
                  asm bits cilk gnu linux sanitizer $(TARGET_ALIAS) \
 
69
                  $(subst $(DEB_TARGET_GNU_CPU),$(biarch_cpu),$(TARGET_ALIAS)); \
 
70
                do \
 
71
                  test -e $(d)/$(gcc_lib_dir)/include/$$d \
 
72
                    && echo $(gcc_lib_dir)/include/$$d; \
 
73
                  test -e $(d)/$(gcc_lib_dir)/include-fixed/$$d \
 
74
                    && echo $(gcc_lib_dir)/include-fixed/$$d; \
 
75
                done)
 
76
 
 
77
ifeq ($(with_libssp),yes)
 
78
    header_files += $(gcc_lib_dir)/include/ssp
 
79
endif
 
80
ifeq ($(with_gomp),yes)
 
81
    header_files += $(gcc_lib_dir)/include/{omp,openacc}.h
 
82
endif
 
83
ifeq ($(with_qmath),yes)
 
84
    header_files += $(gcc_lib_dir)/include/quadmath{,_weak}.h
 
85
endif
 
86
 
 
87
ifeq ($(DEB_TARGET_ARCH),ia64)
 
88
    header_files += $(gcc_lib_dir)/include/ia64intrin.h
 
89
endif
 
90
 
 
91
ifeq ($(DEB_TARGET_ARCH),m68k)
 
92
    header_files += $(gcc_lib_dir)/include/math-68881.h
 
93
endif
 
94
 
 
95
ifeq ($(DEB_TARGET_ARCH),$(findstring $(DEB_TARGET_ARCH),powerpc ppc64 ppc64el powerpcspe))
 
96
    header_files += $(gcc_lib_dir)/include/{altivec.h,ppc-asm.h,spe.h}
 
97
endif
 
98
 
 
99
p_lgcc          = libgcc$(GCC_SONAME)$(cross_lib_arch)
 
100
p_lgccdbg       = libgcc$(GCC_SONAME)-dbg$(cross_lib_arch)
 
101
p_lgccdev       = libgcc-$(BASE_VERSION)-dev$(cross_lib_arch)
 
102
d_lgcc          = debian/$(p_lgcc)
 
103
d_lgccdbg       = debian/$(p_lgccdbg)
 
104
d_lgccdev       = debian/$(p_lgccdev)
 
105
 
 
106
p_l32gcc        = lib32gcc$(GCC_SONAME)$(cross_lib_arch)
 
107
p_l32gccdbg     = lib32gcc$(GCC_SONAME)-dbg$(cross_lib_arch)
 
108
p_l32gccdev     = lib32gcc-$(BASE_VERSION)-dev$(cross_lib_arch)
 
109
d_l32gcc        = debian/$(p_l32gcc)
 
110
d_l32gccdbg     = debian/$(p_l32gccdbg)
 
111
d_l32gccdev     = debian/$(p_l32gccdev)
 
112
 
 
113
p_l64gcc        = lib64gcc$(GCC_SONAME)$(cross_lib_arch)
 
114
p_l64gccdbg     = lib64gcc$(GCC_SONAME)-dbg$(cross_lib_arch)
 
115
p_l64gccdev     = lib64gcc-$(BASE_VERSION)-dev$(cross_lib_arch)
 
116
d_l64gcc        = debian/$(p_l64gcc)
 
117
d_l64gccdbg     = debian/$(p_l64gccdbg)
 
118
d_l64gccdev     = debian/$(p_l64gccdev)
 
119
 
 
120
p_ln32gcc       = libn32gcc$(GCC_SONAME)$(cross_lib_arch)
 
121
p_ln32gccdbg    = libn32gcc$(GCC_SONAME)-dbg$(cross_lib_arch)
 
122
p_ln32gccdev    = libn32gcc-$(BASE_VERSION)-dev$(cross_lib_arch)
 
123
d_ln32gcc       = debian/$(p_ln32gcc)
 
124
d_ln32gccdbg    = debian/$(p_ln32gccdbg)
 
125
d_ln32gccdev    = debian/$(p_ln32gccdev)
 
126
 
 
127
p_lx32gcc       = libx32gcc$(GCC_SONAME)$(cross_lib_arch)
 
128
p_lx32gccdbg    = libx32gcc$(GCC_SONAME)-dbg$(cross_lib_arch)
 
129
p_lx32gccdev    = libx32gcc-$(BASE_VERSION)-dev$(cross_lib_arch)
 
130
d_lx32gcc       = debian/$(p_lx32gcc)
 
131
d_lx32gccdbg    = debian/$(p_lx32gccdbg)
 
132
d_lx32gccdev    = debian/$(p_lx32gccdev)
 
133
 
 
134
p_lhfgcc        = libhfgcc$(GCC_SONAME)$(cross_lib_arch)
 
135
p_lhfgccdbg     = libhfgcc$(GCC_SONAME)-dbg$(cross_lib_arch)
 
136
p_lhfgccdev     = libhfgcc-$(BASE_VERSION)-dev$(cross_lib_arch)
 
137
d_lhfgcc        = debian/$(p_lhfgcc)
 
138
d_lhfgccdbg     = debian/$(p_lhfgccdbg)
 
139
d_lhfgccdev     = debian/$(p_lhfgccdev)
 
140
 
 
141
p_lsfgcc        = libsfgcc$(GCC_SONAME)$(cross_lib_arch)
 
142
p_lsfgccdbg     = libsfgcc$(GCC_SONAME)-dbg$(cross_lib_arch)
 
143
p_lsfgccdev     = libsfgcc-$(BASE_VERSION)-dev$(cross_lib_arch)
 
144
d_lsfgcc        = debian/$(p_lsfgcc)
 
145
d_lsfgccdbg     = debian/$(p_lsfgccdbg)
 
146
d_lsfgccdev     = debian/$(p_lsfgccdev)
 
147
 
 
148
# __do_gcc_devels(flavour,package,todir,fromdir)
 
149
define __do_gcc_devels
 
150
        dh_testdir
 
151
        dh_testroot
 
152
        mv $(install_stamp) $(install_stamp)-tmp
 
153
 
 
154
        test -n "$(2)"
 
155
        rm -rf debian/$(2)
 
156
        dh_installdirs -p$(2) $(docdir) #TODO
 
157
        dh_installdirs -p$(2) $(3)
 
158
 
 
159
        $(call __do_gcc_devels2,$(1),$(2),$(3),$(4))
 
160
 
 
161
        debian/dh_doclink -p$(2) $(p_lbase)
 
162
        debian/dh_rmemptydirs -p$(2)
 
163
 
 
164
        dh_strip -p$(2)
 
165
        dh_compress -p$(2)
 
166
        $(cross_shlibdeps) dh_shlibdeps -p$(2)
 
167
        $(call cross_mangle_substvars,$(2))
 
168
        dh_fixperms -p$(2)
 
169
        dh_installdeb -p$(2)
 
170
        $(cross_gencontrol) dh_gencontrol -p$(2) -- -v$(DEB_VERSION) $(common_substvars)
 
171
        $(call cross_mangle_control,$(2))
 
172
        dh_md5sums -p$(2)
 
173
        dh_builddeb -p$(2)
 
174
 
 
175
        trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
 
176
endef
 
177
 
 
178
# __do_gcc_devels2(flavour,package,todir,fromdir)
 
179
define __do_gcc_devels2
 
180
# stage1 builds static libgcc only
 
181
        $(if $(filter $(DEB_STAGE),stage1),,
 
182
                : # libgcc_s.so may be a linker script on some architectures
 
183
                set -e; \
 
184
                if [ -h $(4)/libgcc_s.so ]; then \
 
185
                  rm -f $(4)/libgcc_s.so; \
 
186
                  dh_link -p$(2) /$(libgcc_dir$(1))/libgcc_s.so.$(GCC_SONAME) \
 
187
                    /$(3)/libgcc_s.so; \
 
188
                else \
 
189
                  mv $(4)/libgcc_s.so $(d)/$(3)/libgcc_s.so; \
 
190
                  dh_link -p$(2) /$(libgcc_dir$(1))/libgcc_s.so.$(GCC_SONAME) \
 
191
                    /$(3)/libgcc_s.so.$(GCC_SONAME); \
 
192
                fi; \
 
193
                $(if $(1), dh_link -p$(2) /$(3)/libgcc_s.so \
 
194
                    /$(gcc_lib_dir)/libgcc_s_$(1).so;)
 
195
        )
 
196
        $(dh_compat2) dh_movefiles -p$(2) \
 
197
                $(3)/{libgcc*,libgcov.a,*.o} \
 
198
                $(if $(1),,$(header_files)) # Only move headers for the "main" package
 
199
 
 
200
        : # libbacktrace not installed by default
 
201
        $(if $(filter yes, $(with_backtrace)),
 
202
        if [ -f $(buildlibdir)/$(1)/libbacktrace/.libs/libbacktrace.a ]; then \
 
203
          install -m644 $(buildlibdir)/$(1)/libbacktrace/.libs/libbacktrace.a \
 
204
              debian/$(2)/$(gcc_lib_dir)/$(1); \
 
205
        fi; \
 
206
        $(if $(1),,
 
207
        if [ -f $(buildlibdir)/libbacktrace/backtrace-supported.h ]; then \
 
208
          install -m644 $(buildlibdir)/libbacktrace/backtrace-supported.h \
 
209
            debian/$(2)/$(gcc_lib_dir)/include/; \
 
210
          install -m644 $(srcdir)/libbacktrace/backtrace.h \
 
211
            debian/$(2)/$(gcc_lib_dir)/include/; \
 
212
        fi
 
213
        ))
 
214
 
 
215
        : # If building a flavour, add a lintian override
 
216
        $(if $(1),
 
217
                #TODO: use a file instead of a hacky echo
 
218
                # bu do we want to use one override file (in the source package) per
 
219
                # flavour or not since they are essentially the same?
 
220
                mkdir -p debian/$(2)/usr/share/lintian/overrides
 
221
                echo "$(2) binary: binary-from-other-architecture" \
 
222
                        >> debian/$(2)/usr/share/lintian/overrides/$(2)
 
223
        )
 
224
        $(if $(filter yes, $(with_lib$(1)gmath)),
 
225
                $(call install_gcc_lib,libgcc-math,$(GCC_SONAME),$(1),$(2))
 
226
        )
 
227
        $(if $(filter yes, $(with_libssp)),
 
228
                $(call install_gcc_lib,libssp,$(SSP_SONAME),$(1),$(2))
 
229
        )
 
230
        $(if $(filter yes, $(with_ssp)),
 
231
                mv $(4)/libssp_nonshared.a debian/$(2)/$(3)/;
 
232
        )
 
233
        $(if $(filter yes, $(with_gomp)),
 
234
                $(call install_gcc_lib,libgomp,$(GOMP_SONAME),$(1),$(2))
 
235
        )
 
236
        $(if $(filter yes, $(with_itm)),
 
237
                $(call install_gcc_lib,libitm,$(ITM_SONAME),$(1),$(2))
 
238
        )
 
239
        $(if $(filter yes, $(with_atomic)),
 
240
                $(call install_gcc_lib,libatomic,$(ATOMIC_SONAME),$(1),$(2))
 
241
        )
 
242
        $(if $(filter yes, $(with_asan)),
 
243
                $(call install_gcc_lib,libasan,$(ASAN_SONAME),$(1),$(2))
 
244
                mv $(4)/libasan_preinit.o debian/$(2)/$(3)/;
 
245
        )
 
246
        $(if $(1),,$(if $(filter yes, $(with_lsan)),
 
247
                $(call install_gcc_lib,liblsan,$(LSAN_SONAME),$(1),$(2))
 
248
        ))
 
249
        $(if $(1),,$(if $(filter yes, $(with_tsan)),
 
250
                $(call install_gcc_lib,libtsan,$(TSAN_SONAME),$(1),$(2))
 
251
        ))
 
252
        $(if $(filter yes, $(with_ubsan)),
 
253
                $(call install_gcc_lib,libubsan,$(UBSAN_SONAME),$(1),$(2))
 
254
        )
 
255
        $(if $(filter yes, $(with_vtv)),
 
256
                $(call install_gcc_lib,libvtv,$(VTV_SONAME),$(1),$(2))
 
257
        )
 
258
        $(if $(filter yes, $(with_cilkrts)),
 
259
                $(call install_gcc_lib,libcilkrts,$(CILKRTS_SONAME),$(1),$(2))
 
260
        )
 
261
        $(if $(filter yes, $(with_mpx)),
 
262
            $(if $(filter x32, $(1)),,
 
263
                $(call install_gcc_lib,libmpxwrappers,$(MPX_SONAME),$(1),$(2))
 
264
                $(call install_gcc_lib,libmpx,$(MPX_SONAME),$(1),$(2))
 
265
            )
 
266
        )
 
267
        $(if $(filter yes, $(with_qmath)),
 
268
                $(call install_gcc_lib,libquadmath,$(QMATH_SONAME),$(1),$(2))
 
269
        )
 
270
endef
 
271
 
 
272
# do_gcc_devels(flavour)
 
273
define do_gcc_devels
 
274
        $(call __do_gcc_devels,$(1),$(p_l$(1)gccdev),$(gcc_lib_dir$(1)),$(d)/$(usr_lib$(1)))
 
275
endef
 
276
 
 
277
 
 
278
define __do_libgcc
 
279
        dh_testdir
 
280
        dh_testroot
 
281
        mv $(install_stamp) $(install_stamp)-tmp
 
282
 
 
283
        rm -rf $(d_l) $(d_d)
 
284
 
 
285
        dh_installdirs -p$(p_l) \
 
286
                $(docdir)/$(p_l) \
 
287
                $(libgcc_dir$(2))
 
288
 
 
289
        $(if $(filter yes,$(with_shared_libgcc)),
 
290
                mv $(d)/$(usr_lib$(2))/libgcc_s.so.$(GCC_SONAME) \
 
291
                        $(d_l)/$(libgcc_dir$(2))/.
 
292
        )
 
293
 
 
294
        debian/dh_doclink -p$(p_l) $(if $(3),$(3),$(p_lbase))
 
295
        debian/dh_doclink -p$(p_d) $(if $(3),$(3),$(p_lbase))
 
296
        debian/dh_rmemptydirs -p$(p_l)
 
297
        debian/dh_rmemptydirs -p$(p_d)
 
298
        dh_strip -p$(p_l) --dbg-package=$(p_d)
 
299
 
 
300
        # see Debian #533843 for the __aeabi symbol handling; this construct is
 
301
        # just to include the symbols for dpkg versions older than 1.15.3 which
 
302
        # didn't allow bypassing the symbol blacklist
 
303
        $(if $(filter yes,$(with_shared_libgcc)),
 
304
                $(cross_makeshlibs) dh_makeshlibs -p$(p_l) -p$(p_d) \
 
305
                        -- -v$(DEB_LIBGCC_VERSION)
 
306
                $(call cross_mangle_shlibs,$(p_l))
 
307
                $(if $(filter arm-linux-gnueabi%,$(DEB_TARGET_GNU_TYPE)),
 
308
                        if head -1 $(d_l)/DEBIAN/symbols 2>/dev/null | grep -q '^lib'; then \
 
309
                          grep -q '^ __aeabi' $(d_l)/DEBIAN/symbols \
 
310
                            || cat debian/libgcc1.symbols.aeabi \
 
311
                                >> $(d_l)/DEBIAN/symbols; \
 
312
                        fi
 
313
                )
 
314
        )
 
315
 
 
316
        $(if $(DEB_STAGE),,
 
317
            $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \
 
318
                $(call shlibdirs_to_search,,$(2))
 
319
        )
 
320
        $(call cross_mangle_substvars,$(p_l))
 
321
 
 
322
        $(if $(2),,     # only for native
 
323
                mkdir -p $(d_l)/usr/share/lintian/overrides
 
324
                echo '$(p_l): package-name-doesnt-match-sonames' \
 
325
                        > $(d_l)/usr/share/lintian/overrides/$(p_l)
 
326
        )
 
327
 
 
328
        dh_compress -p$(p_l) -p$(p_d)
 
329
        dh_fixperms -p$(p_l) -p$(p_d)
 
330
        $(cross_gencontrol) dh_gencontrol -p$(p_l) -p$(p_d) \
 
331
                -- -v$(DEB_LIBGCC_VERSION) $(common_substvars)
 
332
        $(call cross_mangle_control,$(p_l))
 
333
 
 
334
        dh_installdeb -p$(p_l) -p$(p_d)
 
335
        dh_md5sums -p$(p_l) -p$(p_d)
 
336
        dh_builddeb -p$(p_l) -p$(p_d)
 
337
 
 
338
        trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
 
339
endef
 
340
 
 
341
do_libgcc = $(call __do_libgcc,lib$(1)gcc$(GCC_SONAME),$(1),$(2))
 
342
# ----------------------------------------------------------------------
 
343
 
 
344
$(binary_stamp)-libgcc: $(install_dependencies)
 
345
ifeq ($(with_standalone_gcj),yes)
 
346
        $(call do_libgcc,,$(p_jbase))
 
347
else
 
348
        $(call do_libgcc,,)
 
349
endif
 
350
 
 
351
$(binary_stamp)-lib64gcc: $(install_dependencies)
 
352
        $(call do_libgcc,64,)
 
353
 
 
354
$(binary_stamp)-lib32gcc: $(install_dependencies)
 
355
        $(call do_libgcc,32,)
 
356
 
 
357
$(binary_stamp)-libn32gcc: $(install_dependencies)
 
358
        $(call do_libgcc,n32,)
 
359
 
 
360
$(binary_stamp)-libx32gcc: $(install_dependencies)
 
361
        $(call do_libgcc,x32,)
 
362
 
 
363
$(binary_stamp)-libhfgcc: $(install_dependencies)
 
364
        $(call do_libgcc,hf)
 
365
 
 
366
$(binary_stamp)-libsfgcc: $(install_dependencies)
 
367
        $(call do_libgcc,sf)
 
368
 
 
369
$(binary_stamp)-libgcc-dev: $(install_dependencies)
 
370
        $(call do_gcc_devels,)
 
371
 
 
372
$(binary_stamp)-lib64gcc-dev: $(install_dependencies)
 
373
        $(call do_gcc_devels,64)
 
374
 
 
375
$(binary_stamp)-lib32gcc-dev: $(install_dependencies)
 
376
        $(call do_gcc_devels,32)
 
377
 
 
378
$(binary_stamp)-libn32gcc-dev: $(install_dependencies)
 
379
        $(call do_gcc_devels,n32)
 
380
 
 
381
$(binary_stamp)-libx32gcc-dev: $(install_dependencies)
 
382
        $(call do_gcc_devels,x32)
 
383
 
 
384
$(binary_stamp)-libhfgcc-dev: $(install_dependencies)
 
385
        $(call do_gcc_devels,hf)
 
386
 
 
387
$(binary_stamp)-libsfgcc-dev: $(install_dependencies)
 
388
        $(call do_gcc_devels,sf)
 
389