~roger.light/ubuntu/vivid/libwebsockets/fix-for-1422623

« back to all changes in this revision

Viewing changes to cmake/UseRPMTools.cmake

  • Committer: Roger A. Light
  • Date: 2015-02-19 16:00:08 UTC
  • mfrom: (1.1.1)
  • Revision ID: roger@atchoo.org-20150219160008-162cd9naiu2yekny
New upstream release 1.3.

Show diffs side-by-side

added added

removed removed

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