[Tizen] Support asan build option
[platform/core/uifw/dali-csharp-binder.git] / packaging / dali-csharp-binder.spec
1 # NOTES
2 # This spec file is used to build DALi C# binder for different Tizen Profiles
3 # Current profiles are:  Mobile, TV, Wearable, Common
4 #
5 # The profile variable is defined outside of the spec file in a build.conf file.
6 # It will contain the profile and whether or not to build with X11 or Wayland
7 #
8 # gbs will try to download the build.conf for the platform automatically from the repo location when
9 # performing a gbs build ( use gbs build -v to see it download location) E.g.
10 # http://download.tizen.org/snapshots/tizen/tv/tizen-tv/repos/arm-wayland/packages/repodata/xxxx-build.conf.gz
11
12 # This if statement is for backward compatibility with GBM/Obsolete build systems
13 %if "%{?profile}" != "wearable" && "%{?profile}" != "mobile" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
14 %global __provides_exclude_from ^.*\\.(wearable|mobile|tv|ivi|common)$
15 %endif
16
17 %bcond_with wayland
18
19 #please update nui_internal_version below, if you changed version-check.cpp
20 %define nui_internal_version nui550
21
22 Name: dali2-csharp-binder
23 Summary: The DALI Csharp Binder
24 Version: 2.3.12
25 Release: 1
26 Group: uifw/graphic
27 License: Apache-2.0 and BSD-3-Clause and MIT
28 Source: %{name}-%{version}.tar.xz
29
30 Requires(post): /sbin/ldconfig
31 Requires(postun): /sbin/ldconfig
32
33 %define tizen_platform_config_supported 1
34 BuildRequires:  pkgconfig(libtzplatform-config)
35
36 # If the profile is selected, the line below is repquired.
37 # if wearable || "undefined"
38 %if "%{?profile}" != "mobile" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
39 BuildRequires:  pkgconfig(capi-appfw-watch-application)
40 BuildRequires:  pkgconfig(appcore-watch)
41 BuildRequires:  pkgconfig(screen_connector_provider)
42 %endif
43
44 BuildRequires: pkgconfig
45 BuildRequires: cmake
46 BuildRequires: gawk
47 BuildRequires: pkgconfig(dali2-core)
48 BuildRequires: pkgconfig(dali2-adaptor)
49 BuildRequires: pkgconfig(dali2-toolkit)
50 BuildRequires: pkgconfig(dali2-scene3d)
51 BuildRequires: pkgconfig(dali2-physics-2d)
52 BuildRequires: pkgconfig(dali2-physics-3d)
53 %if "%{_vd_cfg_product_type}" != "AUDIO" && "%{_vd_cfg_product_type}" !="AV"
54 %define rive_animation_view 1
55 BuildRequires: pkgconfig(dali2-extension-rive-animation-view)
56 %endif
57
58
59 BuildRequires: pkgconfig(widget_viewer_dali)
60 BuildRequires: pkgconfig(watch_viewer_dali)
61 BuildRequires: pkgconfig(watch-holder-base)
62
63 %if 0%{?tizen_version_major} >= 5
64 BuildRequires: pkgconfig(ecore-wl2)
65 %else
66 BuildRequires:  pkgconfig(ecore-wayland)
67 %endif
68
69 # For ASAN test
70 %if "%{vd_asan}" == "1" || "%{asan}" == "1"
71 BuildRequires: asan-force-options
72 BuildRequires: asan-build-env
73 BuildRequires: libasan
74 %endif
75
76 # for multiprofile
77 Requires:   %{name}-compat = %{version}-%{release}
78 Recommends: %{name}-profile_common = %{version}-%{release}
79
80 %description
81 dali-csharp-binder
82
83 ###########################################
84 # Dali csharp binder for profiles
85 ###########################################
86
87 # If the profile is selected, the line below is repquired.
88 # if mobile || "undefined"
89 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
90 %package profile_mobile
91 Summary:        The DALi Tizen csharp binder for mobile
92 Provides:       %{name}-compat = %{version}-%{release}
93 Conflicts:      %{name}-profile_tv
94 Conflicts:      %{name}-profile_wearable
95 Conflicts:      %{name}-profile_ivi
96 Conflicts:      %{name}-profile_common
97 %description profile_mobile
98 The DALi Tizen csharp binder for mobile.
99 %endif
100
101 # If the profile is selected, the line below is repquired.
102 # if tv ||"undefined"
103 %if "%{?profile}" != "wearable" && "%{?profile}" != "common" && "%{?profile}" != "ivi" && "%{?profile}" != "mobile"
104 %package profile_tv
105 Summary:        The DALi Tizen csharp binder for tv
106 Provides:       %{name}-compat = %{version}-%{release}
107 Conflicts:      %{name}-profile_mobile
108 Conflicts:      %{name}-profile_wearable
109 Conflicts:      %{name}-profile_ivi
110 Conflicts:      %{name}-profile_common
111 %description profile_tv
112 The DALi Tizen csharp binder for tv.
113 %endif
114
115 # If the profile is selected, the line below is repquired.
116 # if wearable || "undefined"
117 %if "%{?profile}" != "mobile" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
118 %package profile_wearable
119 Summary:        The DALi Tizen csharp binder for wearable
120 Provides:       %{name}-compat = %{version}-%{release}
121 Conflicts:      %{name}-profile_mobile
122 Conflicts:      %{name}-profile_tv
123 Conflicts:      %{name}-profile_ivi
124 Conflicts:      %{name}-profile_common
125 %description profile_wearable
126 The DALi Tizen csharp binder for wearable.
127 %endif
128
129 # If the profile is selected, the line below is repquired.
130 # if ivi ||"undefined"
131 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "common" && "%{?profile}" != "mobile"
132 %package profile_ivi
133 Summary:        The DALi Tizen csharp binder for ivi
134 Provides:       %{name}-compat = %{version}-%{release}
135 Conflicts:      %{name}-profile_mobile
136 Conflicts:      %{name}-profile_wearable
137 Conflicts:      %{name}-profile_tv
138 Conflicts:      %{name}-profile_common
139 %description profile_ivi
140 The DALi Tizen csharp binder for ivi.
141 %endif
142
143 # If the profile is selected, the line below is repquired.
144 # if common ||"undefined"
145 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "mobile"
146 # Currently Tizen Common we use does not have wayland extensions like xdg-shell
147 %package profile_common
148 %define tizen_2_2_compatibility 0
149 Summary:        The DALi Tizen csharp binder for common
150 Provides:       %{name}-compat = %{version}-%{release}
151 Conflicts:      %{name}-profile_mobile
152 Conflicts:      %{name}-profile_wearable
153 Conflicts:      %{name}-profile_tv
154 Conflicts:      %{name}-profile_ivi
155 %description profile_common
156 The DALi Tizen csharp binder for common.
157 %endif
158
159
160 ##############################
161 # devel
162 ##############################
163 %package devel
164 Summary: build dali csharp binder
165 Group: Development/Building
166 Requires: %{name} = %{version}-%{release}
167
168 %description devel
169 This package includes developer files common to all packages.
170
171
172 ##############################
173 # Dali Scene3D
174 ##############################
175 %package scene3d
176 Summary:    build dali csharp binder scene3d
177 Group:      System/Libraries
178 Requires:   %{name} = %{version}-%{release}
179 %description scene3d
180 Scene 3D for Dali
181
182 ##############################
183 # Dali Physics 2D
184 ##############################
185 %package physics2d
186 Summary:    build dali csharp binder physics2d
187 Group:      System/Libraries
188 Requires:   %{name} = %{version}-%{release}
189 %description physics2d
190 2D Physics for Dali
191
192 ##############################
193 # Dali Physics 3D
194 ##############################
195 %package physics3d
196 Summary:    build dali csharp binder physics3d
197 Group:      System/Libraries
198 Requires:   %{name} = %{version}-%{release}
199 %description physics3d
200 3D Physics for Dali
201
202
203 ##############################
204 # Preparation
205 ##############################
206 %prep
207 %setup -q
208
209 # %define dali_data_rw_dir         %TZ_SYS_RO_SHARE/dali/
210 # %define dali_data_ro_dir         %TZ_SYS_RO_SHARE/dali/
211
212 ##############################
213 # Build
214 ##############################
215 %build
216 PREFIX+="/usr"
217 CXXFLAGS+=" -Wall -g -Os -fPIC"
218 LDFLAGS+=" -Wl,--rpath=%{_libdir} "
219
220 %if %{with wayland}
221 CFLAGS+=" -DWAYLAND"
222 CXXFLAGS+=" -DWAYLAND"
223 cmake_flags=" -DENABLE_WAYLAND=ON"
224
225 # Use this conditional when Tizen version is 5.x or greater
226 %if 0%{?tizen_version_major} >= 5
227 CXXFLAGS+=" -DOVER_TIZEN_VERSION_5"
228
229 # Need Ecore-Wayland2 when Tizen version is 5.x or greater
230 CFLAGS+=" -DECORE_WL2 -DEFL_BETA_API_SUPPORT"
231 CXXFLAGS+=" -DECORE_WL2 -DEFL_BETA_API_SUPPORT"
232 cmake_flags+=" -DENABLE_ECORE_WAYLAND2=ON"
233 %endif
234
235 # Use this conditional when Tizen version is 7.x or greater
236 %if 0%{?tizen_version_major} >= 7
237 CXXFLAGS+=" -DOVER_TIZEN_VERSION_7"
238 %endif
239
240 %endif
241
242 %if "%{vd_asan}" == "1" || "%{asan}" == "1"
243 CFLAGS+=" -fsanitize=address"
244 CXXFLAGS+=" -fsanitize=address"
245 LDFLAGS+=" -fsanitize=address"
246 %endif
247
248 %if 0%{?enable_debug}
249 cmake_flags+=" -DCMAKE_BUILD_TYPE=Debug"
250 %endif
251
252 %if 0%{?rive_animation_view}
253 cmake_flags+=" -DENABLE_RIVE_ANIMATION=ON"
254 %endif
255
256 # autogen
257 libtoolize --force
258 cd %{_builddir}/%{name}-%{version}/build/tizen
259
260 # DALI_DATA_RW_DIR="%{dali_data_rw_dir}" ; export DALI_DATA_RW_DIR
261 # DALI_DATA_RO_DIR="%{dali_data_ro_dir}"  ; export DALI_DATA_RO_DIR
262 %if 0%{?tizen_platform_config_supported}
263 TIZEN_PLATFORM_CONFIG_SUPPORTED="%{tizen_platform_config_supported}" ; export TIZEN_PLATFORM_CONFIG_SUPPORTED
264 %endif
265
266 cmake_flags+=" -DCMAKE_INSTALL_PREFIX=$PREFIX"
267 cmake_flags+=" -DCMAKE_INSTALL_LIBDIR=%{_libdir}"
268 cmake_flags+=" -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir}"
269 cmake_flags+=" -DENABLE_TIZEN_MAJOR_VERSION=%{tizen_version_major}"
270 cmake_flags+=" -DENABLE_SCENE3D=ON"
271 cmake_flags+=" -DENABLE_PHYSICS_2D=ON"
272 cmake_flags+=" -DENABLE_PHYSICS_3D=ON"
273
274
275 # Set up the build via Cmake
276 #######################################################################
277 # This is for backward-compatibility. This does not deteriorate 4.0 Configurability
278 # if mobile || "undefined"
279 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
280
281 mkdir -p mobile
282 pushd mobile
283
284 cmake -DENABLE_PROFILE=MOBILE $cmake_flags ..
285
286 # Build.
287 make %{?jobs:-j%jobs}
288 popd
289
290 %endif
291
292 #######################################################################
293 # This is for backward-compatibility. This does not deteriorate 4.0 Configurability
294 # if tv ||"undefined"
295 %if "%{?profile}" != "wearable" && "%{?profile}" != "common" && "%{?profile}" != "ivi" && "%{?profile}" != "mobile"
296
297 mkdir -p tv
298 pushd tv
299
300 cmake -DENABLE_PROFILE=TV $cmake_flags ..
301
302 # Build.
303 make %{?jobs:-j%jobs}
304 popd
305
306 %endif
307
308 #######################################################################
309 # This is for backward-compatibility. This does not deteriorate 4.0 Configurability
310 # if wearable || "undefined"
311 %if "%{?profile}" != "mobile" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
312
313 mkdir -p wearable
314 pushd wearable
315
316 cmake -DENABLE_PROFILE=WEARABLE $cmake_flags ..
317
318 # Build.
319 make %{?jobs:-j%jobs}
320 popd
321
322 %endif
323
324 #######################################################################
325 # This is for backward-compatibility. This does not deteriorate 4.0 Configurability
326 # if ivi ||"undefined"
327 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "common" && "%{?profile}" != "mobile"
328
329 mkdir -p ivi
330 pushd ivi
331
332 cmake -DENABLE_PROFILE=IVI $cmake_flags ..
333
334 # Build.
335 make %{?jobs:-j%jobs}
336 popd
337
338 %endif
339
340 #######################################################################
341 # common
342 # This is for backward-compatibility. This does not deteriorate 4.0 Configurability
343 # if common ||"undefined"
344 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "mobile"
345
346 mkdir -p common
347 pushd common
348
349 cmake -DENABLE_PROFILE=COMMON $cmake_flags ..
350
351 # Build.
352 make %{?jobs:-j%jobs}
353 popd
354
355 %endif
356
357 ##############################
358 # Installation
359 ##############################
360 %install
361 rm -rf %{buildroot}
362
363 pushd %{_builddir}/%{name}-%{version}/build/tizen
364
365 # if mobile || "undefined"
366 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
367 pushd mobile
368 %make_install
369 %if "%{?profile}" != "mobile"
370 pushd  %{buildroot}%{_libdir}
371 cp libdali2-csharp-binder.so.*.*.* libdali2-csharp-binder.so.mobile # If we're only building this profile, then there's no need to copy the lib
372 popd
373 make clean # So that we can gather symbol/size information for only one profile if we're building all profiles
374 %endif
375 popd
376 %endif
377
378 # if tv ||"undefined"
379 %if "%{?profile}" != "wearable" && "%{?profile}" != "common" && "%{?profile}" != "ivi" && "%{?profile}" != "mobile"
380 pushd tv
381 %make_install
382 %if "%{?profile}" != "tv"
383 pushd  %{buildroot}%{_libdir}
384 cp libdali2-csharp-binder.so.*.*.* libdali2-csharp-binder.so.tv # If we're only building this profile, then there's no need to copy the lib
385 popd
386 make clean # So that we can gather symbol/size information for only one profile if we're building all profiles
387 %endif
388 popd
389 %endif
390
391 # if wearable || "undefined"
392 %if "%{?profile}" != "mobile" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
393 pushd wearable
394 %make_install
395 %if "%{?profile}" != "wearable"
396 pushd  %{buildroot}%{_libdir}
397 cp libdali2-csharp-binder.so.*.*.* libdali2-csharp-binder.so.wearable # If we're only building this profile, then there's no need to copy the lib
398 popd
399 make clean # So that we can gather symbol/size information for only one profile if we're building all profiles
400 %endif
401 popd
402 %endif
403
404 # if ivi ||"undefined"
405 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "common" && "%{?profile}" != "mobile"
406 pushd ivi
407 %make_install
408 %if "%{?profile}" != "ivi"
409 pushd  %{buildroot}%{_libdir}
410 cp libdali2-csharp-binder.so.*.*.* libdali2-csharp-binder.so.ivi # If we're only building this profile, then there's no need to copy the lib
411 popd
412 make clean # So that we can gather symbol/size information for only one profile if we're building all profiles
413 %endif
414 popd
415 %endif
416
417 # if common ||"undefined"
418 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "mobile"
419 pushd common
420 %make_install
421 # No clean so we can gather symbol/size information for the common profile
422 popd
423 %endif
424
425 ##############################
426 # Upgrade order:
427 # 1 - Pre Install new package
428 # 2 - Install new package
429 # 3 - Post install new package
430 # 4 - Pre uninstall old package
431 # 5 - Remove files not overwritten by new package
432 # 6 - Post uninstall old package
433 ##############################
434
435 %pre
436 exit 0
437
438 ##############################
439 #  Post Install new package
440 ##############################
441 %post
442 pushd %{_libdir}
443 for i in mobile tv wearable ivi; do [[ -f libdali2-csharp-binder.so.$i ]] && ln -sf libdali2-csharp-binder.so.$i libdali2-csharp-binder.so.2.0.0; done
444 popd
445 /sbin/ldconfig
446 exit 0
447
448 ##############################
449 #  Pre Uninstall old package
450 ##############################
451 %preun
452 exit 0
453
454 ##############################
455 #  Post Uninstall old package
456 ##############################
457 %postun
458 /sbin/ldconfig
459 exit 0
460
461 ##############################
462 # Mobile Profile Commands
463 # No need to create a symbolic link on install required if only building this profile
464 # if mobile || "undefined"
465 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
466 %post profile_mobile
467 %if "%{?profile}" != "mobile"
468 pushd %{_libdir}
469 ln -sf libdali2-csharp-binder.so.mobile libdali2-csharp-binder.so.2.0.0
470 popd
471 %endif
472 /sbin/ldconfig
473 exit 0
474
475 %postun profile_mobile
476 /sbin/ldconfig
477 exit 0
478 %endif
479
480 ##############################
481 # TV Profile Commands
482 # No need to create a symbolic link on install required if only building this profile
483 # if tv ||"undefined"
484 %if "%{?profile}" != "wearable" && "%{?profile}" != "common" && "%{?profile}" != "ivi" && "%{?profile}" != "mobile"
485 %post profile_tv
486 %if "%{?profile}" != "tv"
487 pushd %{_libdir}
488 ln -sf libdali2-csharp-binder.so.tv libdali2-csharp-binder.so.2.0.0
489 popd
490 %endif
491 /sbin/ldconfig
492 exit 0
493
494 %postun profile_tv
495 /sbin/ldconfig
496 exit 0
497 %endif
498
499 ##############################
500 # Wearable Profile Commands
501 # No need to create a symbolic link on install required if only building this profile
502 # if wearable || "undefined"
503 %if "%{?profile}" != "mobile" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
504 %post profile_wearable
505 %if "%{?profile}" != "wearable"
506 pushd %{_libdir}
507 ln -sf libdali2-csharp-binder.so.wearable libdali2-csharp-binder.so.2.0.0
508 popd
509 %endif
510 /sbin/ldconfig
511 exit 0
512
513 %postun profile_wearable
514 /sbin/ldconfig
515 exit 0
516 %endif
517
518 ##############################
519 # IVI Profile Commands
520 # No need to create a symbolic link on install required if only building this profile
521 # if ivi ||"undefined"
522 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "common" && "%{?profile}" != "mobile"
523 %post profile_ivi
524 %if "%{?profile}" != "ivi"
525 pushd %{_libdir}
526 ln -sf libdali2-csharp-binder.so.ivi libdali2-csharp-binder.so.2.0.0
527 popd
528 %endif
529 /sbin/ldconfig
530 exit 0
531
532 %postun profile_ivi
533 /sbin/ldconfig
534 exit 0
535 %endif
536
537 ##############################
538 # Common Profile Commands
539 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "mobile"
540 %post profile_common
541 /sbin/ldconfig
542 exit 0
543
544 %postun profile_common
545 /sbin/ldconfig
546 exit 0
547 %endif
548
549 ##############################
550 # Files in Binary Packages
551 ##############################
552 %files
553 %manifest dali-csharp-binder.manifest
554 %license LICENSE
555 %defattr(-,root,root,-)
556 %{_libdir}/libdali2-csharp-binder.so
557 %{_libdir}/libdali2-csharp-binder.so.2
558 %{_libdir}/libdali2-csharp-binder.so.2.0.0
559
560 #################################################
561
562 %files scene3d
563 %manifest dali-csharp-binder.manifest
564 %defattr(-,root,root,-)
565 %{_libdir}/libdali2-csharp-binder-scene3d.so*
566
567 #################################################
568
569 %files physics2d
570 %manifest dali-csharp-binder.manifest
571 %defattr(-,root,root,-)
572 %{_libdir}/libdali2-csharp-binder-physics-2d.so*
573
574 #################################################
575
576 %files physics3d
577 %manifest dali-csharp-binder.manifest
578 %defattr(-,root,root,-)
579 %{_libdir}/libdali2-csharp-binder-physics-3d.so*
580
581 #################################################
582
583 # If the profile is selected, the line below is repquired.
584 # if common ||"undefined"
585 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "mobile"
586 %files profile_common
587 %manifest dali-csharp-binder.manifest
588 # default .so files are housed in the main pkg.
589 %endif
590
591 # If the profile is selected, the line below is repquired.
592 # if mobile || "undefined"
593 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
594 %files profile_mobile
595 %manifest dali-csharp-binder.manifest
596 %defattr(-,root,root,-)
597 %if "%{?profile}" != "mobile"
598 %{_libdir}/libdali2-csharp-binder.so.*mobile
599 %endif
600 %endif
601
602 # If the profile is selected, the line below is repquired.
603 # if tv ||"undefined"
604 %if "%{?profile}" != "wearable" && "%{?profile}" != "common" && "%{?profile}" != "ivi" && "%{?profile}" != "mobile"
605 %files profile_tv
606 %manifest dali-csharp-binder.manifest
607 %defattr(-,root,root,-)
608 %if "%{?profile}" != "tv"
609 %{_libdir}/libdali2-csharp-binder.so.*tv
610 %endif
611 %endif
612
613 # If the profile is selected, the line below is repquired.
614 # if wearable || "undefined"
615 %if "%{?profile}" != "mobile" && "%{?profile}" != "tv" && "%{?profile}" != "ivi" && "%{?profile}" != "common"
616 %files profile_wearable
617 %manifest dali-csharp-binder.manifest
618 %defattr(-,root,root,-)
619 %if "%{?profile}" != "wearable"
620 %{_libdir}/libdali2-csharp-binder.so.*wearable
621 %endif
622 %endif
623
624 # If the profile is selected, the line below is repquired.
625 # if ivi ||"undefined"
626 %if "%{?profile}" != "wearable" && "%{?profile}" != "tv" && "%{?profile}" != "common" && "%{?profile}" != "mobile"
627 %files profile_ivi
628 %manifest dali-csharp-binder.manifest
629 %defattr(-,root,root,-)
630 %if "%{?profile}" != "ivi"
631 %{_libdir}/libdali2-csharp-binder.so.*ivi
632 %endif
633 %endif
634
635 %files devel
636 %defattr(-,root,root,-)
637 %dir %{_includedir}/dali-csharp-binder/
638 %{_includedir}/dali-csharp-binder/*
639 %{_libdir}/pkgconfig/%{name}.pc
640 %{_libdir}/pkgconfig/%{name}-physics-2d.pc
641 %{_libdir}/pkgconfig/%{name}-physics-3d.pc