# Per-platform rpm configuration file.

#==============================================================================
# ---- per-platform macros.
#
%_vendor		meego
%_os			linux
%_target_platform	%{_target_cpu}-%{_vendor}-%{_target_os}%{?_gnu}

#==============================================================================
# ---- configure macros.  note that most of these are inherited
#      from the defaults.
#
%_prefix		/usr
%_sysconfdir		/etc
%_localstatedir		/var
%_infodir		%{_datadir}/info
%_mandir		%{_datadir}/man
%_initrddir		%{_sysconfdir}/rc.d/init.d
%_fmoddir		%{_libdir}/gfortran/modules
%_enable_debug_packages 1

#       Default fuzz level for %patch in spec file.
%_default_patch_fuzz    2

%_source_filedigest_algorithm 8
%_binary_filedigest_algorithm 8

# Use zstd level 19 compression for source payloads
%_source_payload w19T0.zstdio

# Use zstd level 19 compression for binary payloads
%_binary_payload w19T0.zstdio


#==============================================================================
# ---- configure and makeinstall.
#

%reconfigure \
  autoreconf -v --install --force || exit 1 \
  %{configure}

%autogen \
  %{set_build_flags}; \
  ./autogen.sh --build=%{_build} --host=%{_host} \\\
	--target=%{_target_platform} \\\
	--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")

%make %{__make} %{_make_output_sync} %{?_smp_mflags} %{_make_verbose}

%make_check %{__make} %{_make_output_sync} %{?_smp_mflags} %{_make_verbose} check

%install_info(:-:) \
        lastarg() { shift $(($# - 1)) ; echo "$1" ; } \
        if test -x sbin/install-info ; then \
            if test -e "$(lastarg %{**})" ; then \
                sbin/install-info %{**} \
            fi \
        fi ;

%install_info_delete(:-:) \
        lastarg() { shift $(($# - 1)) ; echo "$1" ; } \
        if test -x sbin/install-info ; then \
           if ! test -e "$(lastarg %{**})" ; then \
                sbin/install-info --quiet --delete %{**} \
           fi ; \
        fi ;

%remove_documentation \
    rm -rf %{buildroot}%{_docdir} \
    rm -rf %{buildroot}%{_mandir} \
    rm -rf %{buildroot}%{_infodir} \

%remove_localizations \
    rm -rf %{buildroot}%{_datadir}/locale

#==============================================================================
# ---- Build policy macros.
#

%__spec_install_pre %{___build_pre}\
    [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "${RPM_BUILD_ROOT}"\
    mkdir -p `dirname "$RPM_BUILD_ROOT"`\
    mkdir "$RPM_BUILD_ROOT"\
%{nil}

#---------------------------------------------------------------------
#	Expanded at end of %install scriptlet.
#

%__arch_install_post   /usr/lib/rpm/check-buildroot

# "%undefine _enable_strip_binaries" to disable
%_enable_strip_binaries 1
%__brp_strip_binaries %{?_enable_strip_binaries:/usr/lib/rpm/meego/brp-strip %{__strip}}
# "%undefine _enable_strip_shared" to disable
%_enable_strip_shared 1
%__brp_strip_shared %{?_enable_strip_shared:/usr/lib/rpm/meego/brp-strip-shared %{__strip}}
# "%undefine _enable_strip_static" to disable
%_enable_strip_static 1
%__brp_strip_static %{?_enable_strip_static:/usr/lib/rpm/meego/brp-strip-static-archive %{__strip}}
# "%undefine _enable_strip_comment_note" to disable
%_enable_strip_comment_note 1
%__brp_strip_comment_note %{?_enable_strip_comment_note:/usr/lib/rpm/meego/brp-strip-comment-note %{__strip} %{__objdump}}

%__os_install_post    \
    /usr/lib/rpm/meego/brp-compress \
    %{!?__debug_package:%{__brp_strip_binaries}} \
    %{!?__debug_package:%{__brp_strip_shared}} \
    %{__brp_strip_static} \
    %{__brp_strip_comment_note} \
    /usr/lib/rpm/brp-python-bytecompile %{__python} \
    /usr/lib/rpm/brp-python-hardlink \
    %{!?disable_docs_package:/usr/lib/rpm/meego/find-docs.sh %{buildroot}} \
    %{!?__jar_repack:/usr/lib/rpm/meego/brp-java-repack-jars} \
%{nil}

#    /usr/lib/rpm/meego/brp-implant-ident-static

%__spec_install_post\
    %{?__debug_package:%{__debug_install_post}}\
    %{__arch_install_post}\
    %{__os_install_post}\
%{nil}


%lang_package \
%package locale \
Summary: Translations and Locale for package %{name}\
Group: Translations\
AutoReqProv: 0\
%description locale\
This package provides translations for package %{name}.\
%files locale -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 ; \
LDFLAGS="${LDFLAGS:-%{__global_ldflags}}" ; export LDFLAGS ; \
%if 0%{?_cross_build:1} \
unset PKG_CONFIG_PATH ; \
PKG_CONFIG_SYSROOT_DIR=/opt/cross/%{_target_platform}/sys-root ; export PKG_CONFIG_SYSROOT_DIR ; \
PKG_CONFIG_LIBDIR=${PKG_CONFIG_SYSROOT_DIR}%{_libdir}/pkgconfig:${PKG_CONFIG_SYSROOT_DIR}%{_datadir} ; export PKG_CONFIG_LIBDIR ; \
%endif \
%{nil}

%install %{?_enable_debug_packages:%{debug_package}}\
%%install\
LANG=C\
export LANG\
unset DISPLAY\
%{nil}

%check %%check\
LANG=C\
export LANG\
unset DISPLAY\
CFLAGS="%optflags" ; export CFLAGS ; \
CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ; \
FFLAGS="${FFLAGS:-%optflags -I%_fmoddir}" ; export FFLAGS ; \
LDFLAGS="${LDFLAGS:-%{__global_ldflags}}" ; export LDFLAGS ; \
%{nil}

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

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

#
# use internal dep generator?
%_use_internal_dependency_generator 1

#
# Should missing %doc files terminate a build?
%_missing_doc_files_terminate_build    1
#
# Should missing buildids terminate a build?
%_missing_build_ids_terminate_build    1

#
# Should unpackaged files in a build root terminate a build?
%_unpackaged_files_terminate_build    1

#
# Path to scripts to autogenerate package dependencies,
#
%__set_helper_env %{lua:
posix.setenv("RPMBUILD_SPECFILE",rpm.expand("%?_specfile"));
posix.setenv("RPMBUILD_SOURCEDIR",rpm.expand("%?_sourcedir"));
}
# Note: Used iff _use_internal_dependency_generator is zero.
#%__find_provides       %{_rpmconfigdir}/rpmdeps --provides
#%__find_requires       %{_rpmconfigdir}/rpmdeps --requires
#%__find_provides        %{__set_helper_env}%{_rpmconfigdir}/meego/find-provides %name
#%__find_requires        %{__set_helper_env}%{_rpmconfigdir}/meego/find-requires %name

%__find_provides        /usr/lib/rpm/meego/find-provides
%__find_requires        /usr/lib/rpm/meego/find-requires

# Default fortification level
#   "%define _fortify_level 2" to downgrade and
#   "%define _fortify_level 0" or "%undefine _fortify_level" to disable
#
# We use a single -Wp here to enforce order so that ccache does not ever reorder them
%_fortify_level 3
%_fortify_level_flags %[ 0%{?_fortify_level} > 0 ? "-Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=%{_fortify_level}" : "" ]

# "%undefine _use_file_offset64" to disable
%_use_file_offset64 %[ %{__isa_bits} == 32 ]
%_file_offset64_flags %[ %{?_use_file_offset64} ? "-D_FILE_OFFSET_BITS=64" : "" ]

# "%undefine _optimization_flags" to disable
%_optimization_flags -O2

# "%undefine _warning_flags" to disable
%_warning_flags -Wall -Wformat -Wformat-security

# "%undefine _stack_protector_flags" to disable
%_stack_protector_flags -fstack-protector-strong

# "%undefine _ld_as_needed" to disable
%_ld_as_needed 1
%_ld_as_needed_flags %{?_ld_as_needed:-Wl,--as-needed}

%_enable_fpie_fpic 1
%_fpie_fpic_cc1_spec %{?_enable_fpie_fpic:-specs=/usr/lib/rpm/aurora/pie-pic-cc1}
%_fpie_fpic_ld_spec %{?_enable_fpie_fpic:-specs=/usr/lib/rpm/aurora/pie-pic-ld}

%_hardening_cflags %{_fpie_fpic_cc1_spec} %{?_stack_protector_flags}
%_general_cflags -g -pipe -fexceptions --param=ssp-buffer-size=4
%_hardening_ldflags %{_ld_as_needed_flags} %{_fpie_fpic_ld_spec} -Wl,-z,relro,-z,now

%__global_ldflags %{_hardening_ldflags}
%__global_cflags %{_general_cflags} %{_file_offset64_flags} %{?_optimization_flags} %{_fortify_level_flags} %{_hardening_cflags} %{?_warning_flags} %{?_package_specific_flags}

# Disable lookups
%_hkp_keyserver  %{nil}

#
# RPM macros for Java applications.
#
# JPackage Project  <http://www.jpackage.org/>
#   David Walluck   <david@jpackage.org>
#   Ville Skyttä    <scop at jpackage.org>
#   Nicolas Mailhot <Nicolas.Mailhot@laPoste.net>
#

#==============================================================================
# ---- default Java directories

#
# Root directory where all Java VMs/SDK/JREs are installed.
#
# already in /usr/lib/macros on SUSE:
%_jvmdir	 %{_prefix}/lib/jvm

#
# Root directory where all Java VMs/SDK/JREs expose their jars
#
# already in /usr/lib/macros on SUSE:
%_jvmjardir	%{_prefix}/lib/jvm-exports

#
# Root directory for all Java VM/SDK/JRE's private things.
#
# already in /usr/lib/macros on SUSE:
%_jvmprivdir	%{_prefix}/lib/jvm-private

#
# Root directory for all architecture dependent parts of Java VM/SDK/JRE's
#
%_jvmlibdir	%{_prefix}/lib/jvm

#
# Root directory for all architecture independent parts of Java VM/SDK/JRE's
#
%_jvmdatadir	%{_datadir}/jvm

#
# Root directory for all configurations parts of Java VM/SDK/JRE's
#
%_jvmsysconfdir	%{_sysconfdir}/jvm

#
# Root directory for all common architecture dependent parts of Java VM/SDK/JRE's
#
%_jvmcommonlibdir	%{_prefix}/lib/jvm-commmon

#
# Root directory for all common architecture independent parts of Java VM/SDK/JRE's
#
%_jvmcommondatadir	%{_datadir}/jvm-commmon

#
# Root directory for all common configurations parts of Java VM/SDK/JRE's
#
%_jvmcommonsysconfdir	%{_sysconfdir}/jvm-commmon

#
# Directory where arch and version independent jars are installed.
# This has already been integrated in RH macros following our request.
#
# By extension:
# %{_javadir}-ext:
#   - version dependent jars
# %{_javadir}-x.y.z:
#   - jars for Java standard x.y.z (usually symlinks to  %{_javadir}-ext)
# %{_javadir}-utils:
#   - Java-related scripts
#
# To simplify things only %{_javadir} is defined.
#
# already in /usr/lib/macros on SUSE:
# %_javadir        %{_datadir}/java

#
# Directory where arch-specific (JNI) version-independent jars are installed.
#
# By extension:
# %{_jnidir}-ext:
#   - version dependent jars
# %{_jnidir}-x.y.z:
#   - jars for Java standard x.y.z (usually symlinks to  %{_jnidir}-ext)
# To simplify things only %{_jnidir} is defined.
#
# already in /usr/lib/macros on SUSE:
%_jnidir        %{_prefix}/lib/java

#
# Root directory where all javadoc is installed. Also already in RH macros.
#
# already in /usr/lib/macros on SUSE:
# %_javadocdir     %{_datadir}/javadoc

#
# Directory for maven depmaps
#
%_mavendepmapdir /etc/maven
%_mavendepmapfragdir /etc/maven/fragments

#
# Current default JVM home.
#
# already in /usr/lib/macros on SUSE:
%java_home      %(. %{_javadir}-utils/java-functions; set_jvm; echo $JAVA_HOME)

#==============================================================================
# ---- default Java commands

%ant            ant
%jar            %{java_home}/bin/jar
%java           %(. %{_javadir}-utils/java-functions; set_javacmd; echo $JAVACMD)
%javac          %{java_home}/bin/javac
%javadoc        %{java_home}/bin/javadoc


#==============================================================================
# ---- default icons directories as per the icon theme freedesktop spec

%_iconstheme    hicolor
%_iconsbasedir  %{_datadir}/icons/%{_iconstheme}

#
# The following is a bit heavy and will be removed
#
%_icons16dir    %{_iconsbasedir}/16x16/apps
%_icons22dir    %{_iconsbasedir}/22x22/apps
%_icons48dir    %{_iconsbasedir}/48x48/apps
%_icons64dir    %{_iconsbasedir}/64x64/apps
%_icons96dir    %{_iconsbasedir}/96x96/apps
%_icons192dir   %{_iconsbasedir}/192x192/apps
%_iconsscaldir  %{_iconsbasedir}/scalable/apps


#
# MeeGo icons
#
# %1	the name of the icon (typically the name of the package). RedHat
#	requires 3 icons sizes (48, 32, 16), all should be present.
%meego_icons() \
install -D -m 644 %1-48.png $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/48x48/apps/%{name}.png\
install -D -m 644 %1-32.png $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/32x32/apps/%{name}.png\
install -D -m 644 %1-16.png $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/16x16/apps/%{name}.png\
%{nil}


#==============================================================================
# ---- 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}" \
}
