1d4afb5ceSopenharmony_ci#
2d4afb5ceSopenharmony_ci# - Find tools needed for building RPM Packages
3d4afb5ceSopenharmony_ci#   on Linux systems and defines macro that helps to
4d4afb5ceSopenharmony_ci#   build source or binary RPM, the MACRO assumes
5d4afb5ceSopenharmony_ci#   CMake 2.4.x which includes CPack support.
6d4afb5ceSopenharmony_ci#   CPack is used to build tar.gz source tarball
7d4afb5ceSopenharmony_ci#   which may be used by a custom user-made spec file.
8d4afb5ceSopenharmony_ci#
9d4afb5ceSopenharmony_ci# - Define RPMTools_ADD_RPM_TARGETS which defines
10d4afb5ceSopenharmony_ci#   two (top-level) CUSTOM targets for building
11d4afb5ceSopenharmony_ci#   source and binary RPMs
12d4afb5ceSopenharmony_ci#
13d4afb5ceSopenharmony_ci# Those CMake macros are provided by the TSP Developer Team
14d4afb5ceSopenharmony_ci# https://savannah.nongnu.org/projects/tsp
15d4afb5ceSopenharmony_ci#
16d4afb5ceSopenharmony_ci
17d4afb5ceSopenharmony_ciIF (WIN32)
18d4afb5ceSopenharmony_ci  MESSAGE(STATUS "RPM tools not available on Win32 systems")
19d4afb5ceSopenharmony_ciENDIF(WIN32)
20d4afb5ceSopenharmony_ci
21d4afb5ceSopenharmony_ciIF (UNIX)
22d4afb5ceSopenharmony_ci  # Look for RPM builder executable
23d4afb5ceSopenharmony_ci  FIND_PROGRAM(RPMTools_RPMBUILD_EXECUTABLE
24d4afb5ceSopenharmony_ci    NAMES rpmbuild
25d4afb5ceSopenharmony_ci    PATHS "/usr/bin;/usr/lib/rpm"
26d4afb5ceSopenharmony_ci    PATH_SUFFIXES bin
27d4afb5ceSopenharmony_ci    DOC "The RPM builder tool")
28d4afb5ceSopenharmony_ci
29d4afb5ceSopenharmony_ci  IF (RPMTools_RPMBUILD_EXECUTABLE)
30d4afb5ceSopenharmony_ci    MESSAGE(STATUS "Looking for RPMTools... - found rpmuild is ${RPMTools_RPMBUILD_EXECUTABLE}")
31d4afb5ceSopenharmony_ci    SET(RPMTools_RPMBUILD_FOUND "YES")
32d4afb5ceSopenharmony_ci    GET_FILENAME_COMPONENT(RPMTools_BINARY_DIRS ${RPMTools_RPMBUILD_EXECUTABLE} PATH)
33d4afb5ceSopenharmony_ci  ELSE (RPMTools_RPMBUILD_EXECUTABLE)
34d4afb5ceSopenharmony_ci    SET(RPMTools_RPMBUILD_FOUND "NO")
35d4afb5ceSopenharmony_ci    MESSAGE(STATUS "Looking for RPMTools... - rpmbuild NOT FOUND")
36d4afb5ceSopenharmony_ci  ENDIF (RPMTools_RPMBUILD_EXECUTABLE)
37d4afb5ceSopenharmony_ci
38d4afb5ceSopenharmony_ci  # Detect if CPack was included or not
39d4afb5ceSopenharmony_ci  IF (NOT DEFINED "CPACK_PACKAGE_NAME")
40d4afb5ceSopenharmony_ci    MESSAGE(FATAL_ERROR "CPack was not included, you should include CPack before Using RPMTools")
41d4afb5ceSopenharmony_ci  ENDIF (NOT DEFINED "CPACK_PACKAGE_NAME")
42d4afb5ceSopenharmony_ci
43d4afb5ceSopenharmony_ci  IF (RPMTools_RPMBUILD_FOUND)
44d4afb5ceSopenharmony_ci    SET(RPMTools_FOUND TRUE)
45d4afb5ceSopenharmony_ci    #
46d4afb5ceSopenharmony_ci    # - first arg  (ARGV0) is RPM name
47d4afb5ceSopenharmony_ci    # - second arg (ARGV1) is the RPM spec file path [optional]
48d4afb5ceSopenharmony_ci    # - third arg  (ARGV2) is the RPM ROOT DIRECTORY used to build RPMs [optional]
49d4afb5ceSopenharmony_ci    #
50d4afb5ceSopenharmony_ci    MACRO(RPMTools_ADD_RPM_TARGETS RPMNAME)
51d4afb5ceSopenharmony_ci
52d4afb5ceSopenharmony_ci      #
53d4afb5ceSopenharmony_ci      # If no spec file is provided create a minimal one
54d4afb5ceSopenharmony_ci      #
55d4afb5ceSopenharmony_ci      IF ("${ARGV1}" STREQUAL "")
56d4afb5ceSopenharmony_ci	SET(SPECFILE_PATH "${CMAKE_BINARY_DIR}/${RPMNAME}.spec")
57d4afb5ceSopenharmony_ci      ELSE ("${ARGV1}" STREQUAL "")
58d4afb5ceSopenharmony_ci	SET(SPECFILE_PATH "${ARGV1}")
59d4afb5ceSopenharmony_ci      ENDIF("${ARGV1}" STREQUAL "")
60d4afb5ceSopenharmony_ci
61d4afb5ceSopenharmony_ci      # Verify whether if RPM_ROOTDIR was provided or not
62d4afb5ceSopenharmony_ci      IF("${ARGV2}" STREQUAL "")
63d4afb5ceSopenharmony_ci	SET(RPM_ROOTDIR ${CMAKE_BINARY_DIR}/RPM)
64d4afb5ceSopenharmony_ci      ELSE ("${ARGV2}" STREQUAL "")
65d4afb5ceSopenharmony_ci	SET(RPM_ROOTDIR "${ARGV2}")
66d4afb5ceSopenharmony_ci      ENDIF("${ARGV2}" STREQUAL "")
67d4afb5ceSopenharmony_ci      MESSAGE(STATUS "RPMTools:: Using RPM_ROOTDIR=${RPM_ROOTDIR}")
68d4afb5ceSopenharmony_ci
69d4afb5ceSopenharmony_ci      # Prepare RPM build tree
70d4afb5ceSopenharmony_ci      FILE(MAKE_DIRECTORY ${RPM_ROOTDIR})
71d4afb5ceSopenharmony_ci      FILE(MAKE_DIRECTORY ${RPM_ROOTDIR}/tmp)
72d4afb5ceSopenharmony_ci      FILE(MAKE_DIRECTORY ${RPM_ROOTDIR}/BUILD)
73d4afb5ceSopenharmony_ci      FILE(MAKE_DIRECTORY ${RPM_ROOTDIR}/RPMS)
74d4afb5ceSopenharmony_ci      FILE(MAKE_DIRECTORY ${RPM_ROOTDIR}/SOURCES)
75d4afb5ceSopenharmony_ci      FILE(MAKE_DIRECTORY ${RPM_ROOTDIR}/SPECS)
76d4afb5ceSopenharmony_ci      FILE(MAKE_DIRECTORY ${RPM_ROOTDIR}/SRPMS)
77d4afb5ceSopenharmony_ci
78d4afb5ceSopenharmony_ci      #
79d4afb5ceSopenharmony_ci      # We check whether if the provided spec file is
80d4afb5ceSopenharmony_ci      # to be configure or not.
81d4afb5ceSopenharmony_ci      #
82d4afb5ceSopenharmony_ci      IF ("${ARGV1}" STREQUAL "")
83d4afb5ceSopenharmony_ci	SET(SPECFILE_PATH "${RPM_ROOTDIR}/SPECS/${RPMNAME}.spec")
84d4afb5ceSopenharmony_ci	SET(SPECFILE_NAME "${RPMNAME}.spec")
85d4afb5ceSopenharmony_ci	MESSAGE(STATUS "No Spec file given generate a minimal one --> ${RPM_ROOTDIR}/SPECS/${RPMNAME}.spec")
86d4afb5ceSopenharmony_ci      	FILE(WRITE ${RPM_ROOTDIR}/SPECS/${RPMNAME}.spec
87d4afb5ceSopenharmony_ci	  "# -*- rpm-spec -*-
88d4afb5ceSopenharmony_ciSummary:        ${RPMNAME}
89d4afb5ceSopenharmony_ciName:           ${RPMNAME}
90d4afb5ceSopenharmony_ciVersion:        ${CPACK_PACKAGE_VERSION}
91d4afb5ceSopenharmony_ciRelease:        1
92d4afb5ceSopenharmony_ciLicense:        Unknown
93d4afb5ceSopenharmony_ciGroup:          Unknown
94d4afb5ceSopenharmony_ciSource:         ${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz
95d4afb5ceSopenharmony_ciBuildRoot:      %{_tmppath}/%{name}-%{CPACK_PACKAGE_VERSION}-1-root
96d4afb5ceSopenharmony_ciBuildRequires:	cmake
97d4afb5ceSopenharmony_ci
98d4afb5ceSopenharmony_ci%define prefix /opt/${RPMNAME}-%{version}
99d4afb5ceSopenharmony_ci%define rpmprefix $RPM_BUILD_ROOT%{prefix}
100d4afb5ceSopenharmony_ci%define srcdirname %{name}-%{version}
101d4afb5ceSopenharmony_ci
102d4afb5ceSopenharmony_ci%description
103d4afb5ceSopenharmony_ci${RPMNAME} : No description for now
104d4afb5ceSopenharmony_ci
105d4afb5ceSopenharmony_ci%prep
106d4afb5ceSopenharmony_ci%setup -q -n %{srcdirname}
107d4afb5ceSopenharmony_ci
108d4afb5ceSopenharmony_ci%build
109d4afb5ceSopenharmony_cicd ..
110d4afb5ceSopenharmony_cirm -rf build_tree
111d4afb5ceSopenharmony_cimkdir build_tree
112d4afb5ceSopenharmony_cicd build_tree
113d4afb5ceSopenharmony_cicmake -DCMAKE_INSTALL_PREFIX=%{rpmprefix} ../%{srcdirname}
114d4afb5ceSopenharmony_cimake %{?_smp_mflags}
115d4afb5ceSopenharmony_ci
116d4afb5ceSopenharmony_ci%install
117d4afb5ceSopenharmony_cicd ../build_tree
118d4afb5ceSopenharmony_cimake install
119d4afb5ceSopenharmony_ci
120d4afb5ceSopenharmony_ci%clean
121d4afb5ceSopenharmony_cirm -rf %{srcdirname}
122d4afb5ceSopenharmony_cirm -rf build_tree
123d4afb5ceSopenharmony_ci
124d4afb5ceSopenharmony_ci%files
125d4afb5ceSopenharmony_ci%defattr(-,root,root,-)
126d4afb5ceSopenharmony_ci%dir %{prefix}
127d4afb5ceSopenharmony_ci%{prefix}/*
128d4afb5ceSopenharmony_ci
129d4afb5ceSopenharmony_ci%changelog
130d4afb5ceSopenharmony_ci* Wed Feb 28 2007 Erk <eric.noulard@gmail.com>
131d4afb5ceSopenharmony_ci  Generated by CMake UseRPMTools macros"
132d4afb5ceSopenharmony_ci	)
133d4afb5ceSopenharmony_ci
134d4afb5ceSopenharmony_ci      ELSE ("${ARGV1}" STREQUAL "")
135d4afb5ceSopenharmony_ci	SET(SPECFILE_PATH "${ARGV1}")
136d4afb5ceSopenharmony_ci
137d4afb5ceSopenharmony_ci	GET_FILENAME_COMPONENT(SPECFILE_EXT ${SPECFILE_PATH} EXT)
138d4afb5ceSopenharmony_ci	IF ("${SPECFILE_EXT}" STREQUAL ".spec")
139d4afb5ceSopenharmony_ci	  # This is a 'ready-to-use' spec file which does not need to be CONFIGURED
140d4afb5ceSopenharmony_ci	  GET_FILENAME_COMPONENT(SPECFILE_NAME ${SPECFILE_PATH} NAME)
141d4afb5ceSopenharmony_ci	  MESSAGE(STATUS "Simple copy spec file <${SPECFILE_PATH}> --> <${RPM_ROOTDIR}/SPECS/${SPECFILE_NAME}>")
142d4afb5ceSopenharmony_ci	  CONFIGURE_FILE(
143d4afb5ceSopenharmony_ci	    ${SPECFILE_PATH}
144d4afb5ceSopenharmony_ci	    ${RPM_ROOTDIR}/SPECS/${SPECFILE_NAME}
145d4afb5ceSopenharmony_ci	    COPYONLY)
146d4afb5ceSopenharmony_ci	ELSE ("${SPECFILE_EXT}" STREQUAL ".spec")
147d4afb5ceSopenharmony_ci	  # This is a to-be-configured spec file
148d4afb5ceSopenharmony_ci	  GET_FILENAME_COMPONENT(SPECFILE_NAME ${SPECFILE_PATH} NAME_WE)
149d4afb5ceSopenharmony_ci	  SET(SPECFILE_NAME "${SPECFILE_NAME}.spec")
150d4afb5ceSopenharmony_ci	  MESSAGE(STATUS "Configuring spec file <${SPECFILE_PATH}> --> <${RPM_ROOTDIR}/SPECS/${SPECFILE_NAME}>")
151d4afb5ceSopenharmony_ci	  CONFIGURE_FILE(
152d4afb5ceSopenharmony_ci	    ${SPECFILE_PATH}
153d4afb5ceSopenharmony_ci	    ${RPM_ROOTDIR}/SPECS/${SPECFILE_NAME}
154d4afb5ceSopenharmony_ci	    @ONLY)
155d4afb5ceSopenharmony_ci	ENDIF ("${SPECFILE_EXT}" STREQUAL ".spec")
156d4afb5ceSopenharmony_ci      ENDIF("${ARGV1}" STREQUAL "")
157d4afb5ceSopenharmony_ci
158d4afb5ceSopenharmony_ci      ADD_CUSTOM_TARGET(${RPMNAME}_srpm
159d4afb5ceSopenharmony_ci	COMMAND cpack -G TGZ --config CPackSourceConfig.cmake
160d4afb5ceSopenharmony_ci	COMMAND ${CMAKE_COMMAND} -E copy ${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz ${RPM_ROOTDIR}/SOURCES
161d4afb5ceSopenharmony_ci	COMMAND ${RPMTools_RPMBUILD_EXECUTABLE} -bs --define=\"_topdir ${RPM_ROOTDIR}\" --buildroot=${RPM_ROOTDIR}/tmp ${RPM_ROOTDIR}/SPECS/${SPECFILE_NAME}
162d4afb5ceSopenharmony_ci	)
163d4afb5ceSopenharmony_ci
164d4afb5ceSopenharmony_ci      ADD_CUSTOM_TARGET(${RPMNAME}_rpm
165d4afb5ceSopenharmony_ci	COMMAND cpack -G TGZ --config CPackSourceConfig.cmake
166d4afb5ceSopenharmony_ci	COMMAND ${CMAKE_COMMAND} -E copy ${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz ${RPM_ROOTDIR}/SOURCES
167d4afb5ceSopenharmony_ci	COMMAND ${RPMTools_RPMBUILD_EXECUTABLE} -bb --define=\"_topdir ${RPM_ROOTDIR}\" --buildroot=${RPM_ROOTDIR}/tmp ${RPM_ROOTDIR}/SPECS/${SPECFILE_NAME}
168d4afb5ceSopenharmony_ci	)
169d4afb5ceSopenharmony_ci    ENDMACRO(RPMTools_ADD_RPM_TARGETS)
170d4afb5ceSopenharmony_ci
171d4afb5ceSopenharmony_ci  ELSE (RPMTools_RPMBUILD_FOUND)
172d4afb5ceSopenharmony_ci    SET(RPMTools FALSE)
173d4afb5ceSopenharmony_ci  ENDIF (RPMTools_RPMBUILD_FOUND)
174d4afb5ceSopenharmony_ci
175d4afb5ceSopenharmony_ciENDIF (UNIX)
176d4afb5ceSopenharmony_ci
177