%define _project Tizen-Unified

Macros:
%vendor Tizen
%_project Tizen-Unified
:Macros

%define _project Tizen-Unified

Macros:
%vendor Tizen
%_project Tizen-Unified
:Macros


### from Tizen-Base
%define _repository standard

Macros:


%_project Tizen-Unified

### from Tizen-Base

%_repository standard
:Macros

################################################################################
# OBS Project config for Tizen:Base
#
# RE contacts:
#
#
# vim: set syntax=spec:
################################################################################

Patterntype: rpm-md comps
Release: <CI_CNT>.<B_CNT>
Support: build
Support: build-compare build-mkbaselibs
# Support: rpmlint-mini rpmlint-tizen

# new cycle handling (gbs version >= 0.25.29)
BuildFlags: genmetaalgo:1

############################# conflicts resolution #############################

Prefer: util-linux
Prefer: mono-wcf
Prefer: monodoc
Prefer: mono-extras
Prefer: mono-web
Prefer: mono-data
Prefer: mono-mvc
Prefer: mono-winforms
Prefer: mono-data-sqlite

# Set a preference for ambiguous libs to use *-64bit libs
#     *-64bit libs on 32bit build environment are required for .Net build (e.g., coreclr, corefx)
#     But when building 64bit target, they could make 'have choice' error with original libs in 64bit repository.
#     e.g., libstdc++ and libstdc++-64bit provides same libs. It's ambiguous to choose appropriate one.
#     Owner : Jiyoung Yun (jy910.yun@samsung.com)
#     libopenssl* : Dongsun Lee (ds73.lee@samsung.com), Dariusz Michaluk (d.michaluk@samsung.com)
Prefer: libgcc libstdc++ libunwind libuuid zlib libopenssl libopenssl11 libopenssl3
Prefer: lldb

############################# base definition ###############################

# %release_name and %tizen_full_version are used in platform/upstream/tizen-release

Macros:
%release_name Tizen10.0/Unified

%tizen_version_major 10
%tizen_version_minor 0
%tizen_version_patch 0

%tizen_version %{tizen_version_major}.%{tizen_version_minor}
%tizen_full_version %{tizen_version}.%{tizen_version_patch}
%tizen %tizen_version
%vendor tizen
%_vendor tizen
%_with_tizen 1

#### %__spec_check_pre exit 0
#### %run_check_section 0

%opensuse_bs 1
%_default_patch_fuzz   2

%_binary_payload w5T.xzdio
:Macros

#### %%__spec_check_pre exit 0
#### %%run_check_section 0

# skip %%check section
Macros:
# skip package list
%_skip_check_packages autogen bison boost expat findutils flex fribidi glibc \\\
gmp gn golang grep libgc libgcrypt libogg libsigc++ libvorbis libxml2 libzio \\\
m4 nspr openssl openssl1.1 perl-Devel-Symdump perl-gettext perl-Pod-Coverage \\\
perl-Test-Pod perl-Test-Pod-Coverage perl-TimeDate procps-ng python3-mako \\\
python3-mock python3-ply python-funcsigs python-mako python-mock python-ply \\\
setup zlib openssl3 autoconf

%__spec_check_pre \
for name in %_skip_check_packages \
do \
    if [ "$name" = "%{name}" ]; then \
        exit 0 \
    fi \
done \
%{___build_pre} \
%{nil}

:Macros

############################# build config #####################################

########## targets ##########

%ifarch i586
Target: i686-tizen-linux
%endif

%ifarch armv7hl
Target: armv7hl-tizen-linux
%endif

%ifarch armv7l
Target: armv7l-tizen-linux
%endif

%ifarch aarch64
Target: aarch64-tizen-linux
%endif

########## cross build ##########

%define build_hostarch x86_64
Macros:
%build_hostarch x86_64
:Macros

%ifarch %arm armv7l armv7hl aarch64
Hostarch: x86_64
# cross build support for the build hosts
Preinstall: qemu-linux-user-%{build_hostarch}-cross
Runscripts: qemu-linux-user-%{build_hostarch}-cross
Keep: qemu-linux-user-%{build_hostarch}-cross
Macros:
%qemu_user_space_build 1
:Macros
%endif

%ifarch armv7l
Preinstall: qemu-accel-%{build_hostarch}-armv7l
Runscripts: qemu-accel-%{build_hostarch}-armv7l
Preinstall: libmount libblkid libuuid
%endif

%ifarch armv7hl
Preinstall: qemu-accel-%{build_hostarch}-armv7hl
Runscripts: qemu-accel-%{build_hostarch}-armv7hl
Preinstall: libmount libblkid libuuid
%endif

%ifarch aarch64
Preinstall: qemu-accel-%{build_hostarch}-aarch64
Runscripts: qemu-accel-%{build_hostarch}-aarch64
Preinstall: libmount libblkid libuuid
%endif # aarch64

Substitute: python-accel-armv7l-cross-arm python-accel-%{build_hostarch}-armv7l
Substitute: python-accel-armv7hl-cross-arm python-accel-%{build_hostarch}-armv7hl
Substitute: python-accel-aarch64-cross-aarch64 python-accel-%{build_hostarch}-aarch64

Substitute: clang-accel-armv7l-cross-arm clang-accel-%{build_hostarch}-armv7l
Substitute: clang-accel-armv7hl-cross-arm clang-accel-%{build_hostarch}-armv7hl
Substitute: clang-accel-aarch64-cross-aarch64 clang-accel-%{build_hostarch}-aarch64

########## exports for different architectures ##########

ExportFilter: \.armv7l\.rpm$ armv7l
ExportFilter: \.armv7hl\.rpm$ armv7hl
ExportFilter: \.aarch64\.rpm$ aarch64
ExportFilter: \.i586\.rpm$ i586
ExportFilter: \.x86_64\.rpm$ x86_64

########## buildroot config ##########

Preinstall: setup filesystem
RunScripts: setup

Preinstall: bash bzip2 coreutils diffutils grep rpm
Preinstall: glibc libacl libattr
Preinstall: libcap
Preinstall: libgcc
Preinstall: libpopt sed tar zlib
Preinstall: libncurses libreadline
Preinstall: libelf libbz2
Preinstall: liblzma
Preinstall: nss nspr libfreebl3 libsoftokn3
Preinstall: libmagic
Preinstall: liblua
Preinstall: smack libsmack libxml2 libmagic  libmagic-data
Preinstall: libsqlite
#Preinstall: rpm-security-plugin
Preinstall: util-linux util-linux-su
Preinstall: libzstd1

VMinstall: perl libmount libblkid libext2fs libuuid  grep libpcre util-linux libsmartcols procps-ng

Required: binutils gcc glibc rpm-build libtool
Required: gcc-c++

Support: glibc-locale
Support: perl
Support: hostname
Support: cpio findutils
Support: file findutils zlib bzip2
Support: gzip hostname net-tools
Support: make  patch sed  gawk tar grep coreutils pkg-config
Support: m4  tzdata
Support: util-linux
Support: less
Support: which  elfutils
Support: update-alternatives
Support: libstdc++-devel
Support: cpp
Support: libatomic
Support: libgomp
Support: libitm
Support: hal-rootstrap-checker

Keep: libstdc++-devel
Keep: cpp gcc libstdc++
Keep: pam
Keep: binutils cpp  libmagic-data file findutils gawk gcc  gcc-c++
Keep: gdbm gzip libada libunwind  glibc-devel libpcre xz-lzma-compat
Keep: make  gmp libcap groff cpio
Keep: patch rpm-build  nss nspr elfutils python grep libgcc gcc-c++
Keep: kernel-headers  perl-libs perl
Keep: pkgconfig glib2 tizen-rpm-config
Keep: libmpc libmpfr libppl libgmp libppl_c
Keep: libcloog libppl libgmpxx
Keep: nss-softokn-freebl libmagic libmagic-data
Keep: setup
Keep: update-alternatives
Keep: cpp
Keep: gcc-c++
Keep: libatomic
Keep: libgomp
Keep: libitm

Substitute: gettext gettext-tools

%ifarch x86_64
Substitute: glibc-devel-32bit glibc-devel-32bit glibc-32bit
Substitute: libgcc_s1-32bit libgcc-32bit
%else
Substitute: glibc-devel-32bit
%endif

########## compilation flags ##########
%define __global_cflags -O2 -g2 -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong -Wformat-security -fmessage-length=0 -frecord-gcc-switches -Wl,-z,relro,--as-needed

Optflags: armv7l %{__global_cflags} --param=ssp-buffer-size=4 -march=armv7-a -mtune=cortex-a8 -mlittle-endian -mfpu=neon -mfloat-abi=softfp -mthumb -Wp,-D__SOFTFP__ -Wl,-O1 -Wl,--hash-style=gnu -Wa,-mimplicit-it=thumb
Optflags: armv7hl %{__global_cflags} --param=ssp-buffer-size=4 -march=armv7-a -mtune=cortex-a8 -mlittle-endian -mfpu=neon -mfloat-abi=hard -mthumb -Wl,-O1 -Wl,--hash-style=gnu -Wa,-mimplicit-it=thumb
Optflags: aarch64 %{__global_cflags} -feliminate-unused-debug-types -Wformat -march=armv8-a+fp+simd+crc+crypto -mtune=cortex-a57.cortex-a53
Optflags: i686 %{__global_cflags} -feliminate-unused-debug-types --param=ssp-buffer-size=4 -fdiagnostics-color=never -m32 -march=i686 -mtune=i686 -msse4.2 -mfpmath=sse -fasynchronous-unwind-tables -fno-omit-frame-pointer -mstackrealign -Wl,-z,noseparate-code
Optflags: x86_64 %{__global_cflags} -feliminate-unused-debug-types --param=ssp-buffer-size=4 -fdiagnostics-color=never -m64 -march=nehalem -msse4.2 -mfpmath=sse -fasynchronous-unwind-tables -fno-omit-frame-pointer


### from Tizen-Unified
%define _repository standard

Macros:

%distribution Tizen-Unified / standard
%_project Tizen-Unified

### from Tizen-Unified

%_repository standard
:Macros

################################################################################
# OBS Project config for Tizen:Unified
#
# vim: set syntax=spec:
################################################################################

############################# conflicts resolution #############################

FileProvides: /usr/sbin/groupadd shadow-utils
Prefer: bluetooth-tools-no-firmware

############################# profile definition ###############################

%define _with_tizen 1

# For classifying debug/release mode
Macros:
%tizen_build_devel_mode 1
:Macros

# %release_name and %tizen_full_version are used in platform/upstream/tizen-release

Macros:
%release_name Tizen10.0/Unified

%tizen_version_major 10
%tizen_version_minor 0
%tizen_version_patch 0

%tizen_version %{tizen_version_major}.%{tizen_version_minor}
%tizen_full_version %{tizen_version}.%{tizen_version_patch}
%tizen %tizen_version
%vendor tizen
%_vendor tizen
%_with_tizen 1

#### %__spec_check_pre exit 0
#### %run_check_section 0
%opensuse_bs 1
%_default_patch_fuzz   2
:Macros

########## mesa activation / coregl ##########

%define _with_mesa 1
Macros:
%_with_mesa 1
:Macros

Substitute: mesa-devel pkgconfig(glesv2)
Substitute: pkgconfig(gles20)  pkgconfig(egl) pkgconfig(glesv2)
Substitute: pkgconfig(gles11)  pkgconfig(egl) pkgconfig(glesv1) pkgconfig(gl)

Prefer: coregl coregl-devel
Prefer: libwayland-egl libwayland-egl-devel
Prefer: vulkan-loader vulkan-loader-devel
#libelementary.so (upstream, tizen-only ) so add below Prefer. Requested by EFL team.
Prefer: elementary

########## WAYLAND #########

%define _with_wayland 1
Macros:
%_with_wayland 1
:Macros

########## RDP flag ##########

# enable/disable RDP (remote desktop protocol) for wayland
# flag: _with_rdp, used in repositories
# Affects: weston, freerdp
# Owner: Manuel <manuel.bachmann@open.eurogiciel.org>

############################# target repositories #############################

%if "%_repository" == "standard"

Prefer: mesa libgbm
Substitute: mesa-libGLESv2 coregl
Substitute: mesa-libEGL coregl

%define _with_rdp 1
Macros:
%_with_rdp 1
:Macros

%endif

############################# emulator repositories ############################

%if "%_repository" == "emulator"

Prefer: libgbm
Prefer: emulator-yagl emulator-yagl-devel

%define _with_emulator 1
Macros:
%_with_emulator 1
:Macros

%endif

############################# standard_gcov repositories ############################

%if "%_repository" == "standard_gcov"
Prefer: mesa libgbm
Substitute: mesa-libGLESv2 coregl
Substitute: mesa-libEGL coregl

%define _with_rdp 1
Macros:
%_with_rdp 1
:Macros

#### Gcov ON ####
%define gcov 1
Macros:
%gcov 1
:Macros

# Temporarily skip the check section.
# Build fail occurs in some tests during build
# remove this macro when fix errors
Macros:
%__spec_check_pre exit 0
%run_check_section 0
:Macros

%endif

############################# misc config flags ################################
########## USAGE ##########
#
# IMPORTANT: please follow the following rules when playing with flags
# ********************************************************************
#
# In spec file, call %bcond_with macro at the beginning and test with %with:
# -------------------------
# | %bcond_with myfeature
# | [...]
# | %if %{with myfeature}
# | [...]
# | %endif
# | [...]
# -------------------------
#
# To activate an option, use:
# -------------------------
# | %define _with_myfeature 1
# | Macros:
# | %_with_myfeature 1
# | :Macros
# -------------------------
#
# To disable an option, DON'T set the values to 0, as the option would still be defined
# but simply comment the lines: this will undefine the option.
# -------------------------
# | #%define _with_myfeature 1
# | #Macros:
# | #%_with_myfeature 1
# | #:Macros
# -------------------------
#
# More information here:
# https://en.opensuse.org/openSUSE:Build_Service_prjconf#.25bcond
#

########## flags ##########

# Activate introspection
# This is needed on GuPNP to build Rygel correctly in IVI
# Impacts potentially packages that use gobject-introspection
# Owner: Mikko <mikko.ylinen@intel.com>

Macros:
%_with_introspection 1
:Macros

############################# other config #####################################
# derived from Tizen:Base
################################################################################

