# directories
%_infodir               %{_prefix}/share/info
%_mandir                %{_prefix}/share/man
%_sysconfdir            /etc
%_localstatedir         /var
%_defaultdocdir         %{_usr}/share/doc/packages
%_unitdir_user /usr/lib/systemd/user
%_unitdir /usr/lib/systemd/system

# package build macros
# %make_install           make install DESTDIR=%{?buildroot}
# %makeinstall            make DESTDIR=%{?buildroot:%{buildroot}} install
%rb_arch                %(echo %{_host_cpu}-linux | sed -e "s/i686/i586/" -e "s/armv5tel/armv4l/" -e "s/hppa2.0/hppa/")
%rb_ver                 %(/usr/bin/ruby -e 'puts VERSION.sub(/\\\.\\\d$/, "")')

# external kernel module helper macro(s)
%kernel_devel_uname_r %(/bin/rpm -q --provides $(/bin/rpm -q --whatprovides kernel-devel-uname-r) | sed -ne 's,kernel-devel-uname-r = ,, p')
%kernel_release %(/bin/rpm -q --queryformat '%{RPMTAG_VERSION}-%{RPMTAG_RELEASE}' $(/bin/rpm -q --whatprovides kernel))
%kernel_name    %(/bin/rpm -q --queryformat '%{RPMTAG_NAME}' $(/bin/rpm -q --whatprovides kernel))

# this script calls all scripts in /usr/lib/rpm/brp-tizen.d
%__os_install_post  \
	/usr/lib/rpm/brp-compress \
	/usr/lib/rpm/brp-tizen  \
	%{!?disable_docs_package:/usr/lib/rpm/tizen/find-docs.sh %{buildroot}} \
%{nil}

# macro: %configure_kernel_source
#
#
%configure_kernel_source() \
	if test -d /usr/src/linux ; then \
	    pushd /usr/src/linux \
	    test -f .config || cp arch/%_arch/defconfig.default .config \
	    yes "" | make oldconfig \
	    make dep \
	    popd \
	fi \
	%nil

%install_info(:-:) \
    ALL_ARGS=(%{**}) \
    NUM_ARGS=${#ALL_ARGS[@]} \
    if test -x /sbin/install-info ; then \
	if test -e "${ALL_ARGS[$((NUM_ARGS-1))]}" ; then \
	    /sbin/install-info "${ALL_ARGS[@]}" \
	fi \
    fi ; 

%install_info_delete(:-:) \
    ALL_ARGS=(%{**}) \
    NUM_ARGS=${#ALL_ARGS[@]} \
    if test -x /sbin/install-info ; then \
	if ! test -e "${ALL_ARGS[$((NUM_ARGS-1))]}" ; then \
	    /sbin/install-info --quiet --delete "${ALL_ARGS[@]}" \
	fi ; \
    fi ; 

# find-supplements.ksyms parses this macro directly out of the spec file:
%supplements_kernel_module() \
    %{expand:%(if ! rpm -q kernel-syms > /dev/null; then echo "%fail Please add the kernel-syms package to BuildRequires"; fi)}

%do_profiling 1
%cflags_profile_generate -fprofile-generate
%cflags_profile_feedback -fprofile-use



# Tizen
#
%configure \
  CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS ; \
  CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ; \
  FFLAGS="${FFLAGS:-%optflags -I%_fmoddir}" ; export FFLAGS ; \
  ./configure --build=%{_build} --host=%{_host} \\\
        --program-prefix=%{?_program_prefix} \\\
        --prefix=%{_prefix} \\\
        --exec-prefix=%{_exec_prefix} \\\
        --bindir=%{_bindir} \\\
        --sbindir=%{_sbindir} \\\
        --sysconfdir=%{_sysconfdir} \\\
        --datadir=%{_datadir} \\\
        --includedir=%{_includedir} \\\
        --libdir=%{_libdir} \\\
        --libexecdir=%{_libexecdir} \\\
        --localstatedir=%{_localstatedir} \\\
        --sharedstatedir=%{_sharedstatedir} \\\
        --mandir=%{_mandir} \\\
        --infodir=%{_infodir}


%reconfigure \
  CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS ; \
  CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ; \
  FFLAGS="${FFLAGS:-%optflags -I%_fmoddir}" ; export FFLAGS ; \
  autoreconf -v --install --force || exit 1 \
  ./configure --build=%{_build} --host=%{_host} \\\
        --program-prefix=%{?_program_prefix} \\\
        --prefix=%{_prefix} \\\
        --exec-prefix=%{_exec_prefix} \\\
        --bindir=%{_bindir} \\\
        --sbindir=%{_sbindir} \\\
        --sysconfdir=%{_sysconfdir} \\\
        --datadir=%{_datadir} \\\
        --includedir=%{_includedir} \\\
        --libdir=%{_libdir} \\\
        --libexecdir=%{_libexecdir} \\\
        --localstatedir=%{_localstatedir} \\\
        --sharedstatedir=%{_sharedstatedir} \\\
        --mandir=%{_mandir} \\\
        --infodir=%{_infodir}

%autogen \
  CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS ; \
  CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ; \
  FFLAGS="${FFLAGS:-%optflags -I%_fmoddir}" ; export FFLAGS ; \
  ./autogen.sh --build=%{_build} --host=%{_host} \\\
        --program-prefix=%{?_program_prefix} \\\
        --prefix=%{_prefix} \\\
        --exec-prefix=%{_exec_prefix} \\\
        --bindir=%{_bindir} \\\
        --sbindir=%{_sbindir} \\\
        --sysconfdir=%{_sysconfdir} \\\
        --datadir=%{_datadir} \\\
        --includedir=%{_includedir} \\\
        --libdir=%{_libdir} \\\
        --libexecdir=%{_libexecdir} \\\
        --localstatedir=%{_localstatedir} \\\
        --sharedstatedir=%{_sharedstatedir} \\\
        --mandir=%{_mandir} \\\
        --infodir=%{_infodir}


%makeinstall \
  %{__make} \\\
        prefix=%{?buildroot:%{buildroot}}%{_prefix} \\\
        exec_prefix=%{?buildroot:%{buildroot}}%{_exec_prefix} \\\
        bindir=%{?buildroot:%{buildroot}}%{_bindir} \\\
        sbindir=%{?buildroot:%{buildroot}}%{_sbindir} \\\
        sysconfdir=%{?buildroot:%{buildroot}}%{_sysconfdir} \\\
        datadir=%{?buildroot:%{buildroot}}%{_datadir} \\\
        includedir=%{?buildroot:%{buildroot}}%{_includedir} \\\
        libdir=%{?buildroot:%{buildroot}}%{_libdir} \\\
        libexecdir=%{?buildroot:%{buildroot}}%{_libexecdir} \\\
        localstatedir=%{?buildroot:%{buildroot}}%{_localstatedir} \\\
        sharedstatedir=%{?buildroot:%{buildroot}}%{_sharedstatedir} \\\
        mandir=%{?buildroot:%{buildroot}}%{_mandir} \\\
        infodir=%{?buildroot:%{buildroot}}%{_infodir} \\\
  install


%make_install \
  %{__make} \\\
        DESTDIR=%{?buildroot:%{buildroot}} \\\
        INSTALL_ROOT=%{?buildroot:%{buildroot}} \\\
  install  \
  rm -f %{?buildroot:%{buildroot}}%{_infodir}/dir \
  find %{?buildroot:%{buildroot}} -regex ".*\\.la$" | xargs rm -f -- \
  %{!?keepstatic:find %{?buildroot:%{buildroot}} -regex ".*\\.a$" | xargs rm -f --}

%_smp_mflags %([ -z "$RPM_BUILD_NCPUS" ] \\\
        && RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"; \\\
        [ "$RPM_BUILD_NCPUS" -gt 1 ] && echo "-j$RPM_BUILD_NCPUS")

%lang_package(n:f:) \
%package %{-n:-n %{-n*}-}locale \
Summary: Translations and Locale for package %{name}\
Group: System/Localization\
Requires: %{-n:%{-n*}}%{!-n:%{name}} = %{version} \
Provides: %{-n:%{-n*}}%{!-n:%{name}}-lang-all = %{version} \
BuildArch:  noarch \
%description %{-n:-n %{-n*}-}locale\
This package provides translations for package %{name}.\
%files %{-n:-n %{-n*}-}locale -f %{-f:%{-f*}.lang} %{!-f:%{name}.lang}\
%defattr(-,root,root,-)\
%{nil}

%docs_package \
%package docs \
Summary: Documentation for package %{name}\
Group: Documentation\
AutoReqProv: 0\
%description docs\
This package provides documentation for package %{name}.\
%files docs -f documentation.list\
%defattr(-,root,root,-)\
%{nil}

# Bad hack to set $LANG to C during all RPM builds
%prep \
%%prep\
LANG=C\
export LANG\
unset DISPLAY\
%{nil}

%build %%build\
LANG=C\
export LANG\
unset DISPLAY\
CFLAGS="%optflags" ; export CFLAGS ; \
CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ; \
FFLAGS="${FFLAGS:-%optflags -I%_fmoddir}" ; export FFLAGS ; \
LD_AS_NEEDED=1; export LD_AS_NEEDED ; \
%{nil}

%install %{?_enable_debug_packages:%{?buildsubdir:%{debug_package}}}\
%%install\
LANG=C\
export LANG\
unset DISPLAY\
rm -rf %{?buildroot:%{buildroot}} \
mkdir -p %{?buildroot:%{buildroot}} \
%{nil}


%clean %%clean\
rm -rf %{?buildroot:%{buildroot}} \
%{nil}

%find_lang      /usr/lib/rpm/find-lang.sh %{buildroot}
%find_docs      /usr/lib/rpm/tizen/find-docs.sh %{buildroot}



#==============================================================================
# ---- default .desktop directories per the desktop-entry freedesktop.org spec

%_desktopdir    %{_datadir}/applications

#==============================================================================
# ---- Generic auto req/prov filtering macros
#
# http://fedoraproject.org/wiki/PackagingDrafts/AutoProvidesAndRequiresFiltering

# prevent anything matching from being scanned for provides
%filter_provides_in(P) %{expand: \
%global __filter_prov_cmd %{?__filter_prov_cmd} %{__grep} -v %{-P} '%*' | \
}

# prevent anything matching from being scanned for requires
%filter_requires_in(P) %{expand: \
%global __filter_req_cmd %{?__filter_req_cmd} %{__grep} -v %{-P} '%*' | \
}

# filter anything matching out of the provides stream
%filter_from_provides() %{expand: \
%global __filter_from_prov %{?__filter_from_prov} | %{__sed} -e '%*' \
}

# filter anything matching out of the requires stream
%filter_from_requires() %{expand: \
%global __filter_from_req %{?__filter_from_req} | %{__sed} -e '%*' \
}

# actually set up the filtering bits
%filter_setup %{expand: \
%global _use_internal_dependency_generator 0 \
%global __deploop() while read FILE; do /usr/lib/rpm/rpmdeps -%{1} ${FILE}; done | /bin/sort -u \
%global __find_provides /bin/sh -c "%{?__filter_prov_cmd} %{__deploop P} %{?__filter_from_prov}" \
%global __find_requires /bin/sh -c "%{?__filter_req_cmd}  %{__deploop R} %{?__filter_from_req}" \
}

%remove_docs \
  rm -rf %{?buildroot:%{buildroot}}%{_infodir} \
  rm -rf %{?buildroot:%{buildroot}}%{_defaultdocdir} \
  rm -rf %{?buildroot:%{buildroot}}%{_datadir}/doc/%{name} \
  rm -rf %{?buildroot:%{buildroot}}%{_datadir}/doc/%{name}-%{version} \
  rm -rf %{?buildroot:%{buildroot}}%{_datadir}/gtk-doc \
  rm -rf %{?buildroot:%{buildroot}}%{_datadir}/doc \
  rm -rf %{?buildroot:%{buildroot}}%{_datadir}/man \
  find %{?buildroot:%{buildroot}} -regex ".*/man/man./.*\.[0-9]" | xargs rm -f -- \
  find %{?buildroot:%{buildroot}} -regex ".*/man/../man./.*\.[0-9]" | xargs rm -f -- \
  find %{?buildroot:%{buildroot}} -regex ".*/man/man./.*\.[0-9]pm" | xargs rm -f --


%install_service() \
mkdir -p %{buildroot}/%{_unitdir}/%{1} \
ln -s ../%{2}  %{buildroot}/%{_unitdir}/%{1}/%{2}  \
%{nil}


%_fontsdir               %{_usr}/share/fonts
%_ttfontsdir             %{_fontsdir}/truetype
%_miscfontsdir           %{_fontsdir}/misc
%_fontsconfdir           %{_sysconfdir}/fonts
%_fontsconfddir          %{_fontsconfdir}/conf.d
%_fontsconfavaildir      %{_datadir}/%{name}/conf.avail

%devel_package \
%package devel \
Summary: Development files for package %{name}\
Group: Development\
%description devel\
This package provides header files and other developer releated files for package %{name}.\
%files devel \
%{_includedir}/*\
%{_libdir}/pkgconfig/*.pc\
%{_libdir}/*.so\
%{nil}

%devel_desc This package contains all necessary include files and libraries needed \
to develop applications that require %{name}.\
%{nil}

