8b3ec777d53e774be6957a5dc04de655f3e6d61d
[platform/upstream/libzypp.git] / cmake / modules / ZyppCommon.cmake
1 # Library
2 IF ( DEFINED LIB )
3   SET ( LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${LIB}" )
4 ELSE ( DEFINED  LIB )
5   IF (CMAKE_SIZEOF_VOID_P MATCHES "8")
6     SET( LIB_SUFFIX "64" )
7   ENDIF(CMAKE_SIZEOF_VOID_P MATCHES "8")
8   SET ( LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" )
9 ENDIF ( DEFINED  LIB )
10 MESSAGE(STATUS "Libraries will be installed in ${LIB_INSTALL_DIR}" )
11 # Headers
12 IF (DEFINED INCLUDE)
13   SET (INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${INCLUDE}")
14 else (DEFINED INCLUDE)
15   SET (INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include")
16 ENDIF (DEFINED  INCLUDE)
17 MESSAGE (STATUS "Header files will be installed in ${INCLUDE_INSTALL_DIR}")
18
19 # system configuration dir (etc)
20 IF( NOT DEFINED SYSCONFDIR )
21   IF ( ${CMAKE_INSTALL_PREFIX} STREQUAL "/usr" )
22     # if installing in usr, set sysconfg to etc
23     SET( SYSCONFDIR /etc )
24   ELSE ( ${CMAKE_INSTALL_PREFIX} STREQUAL "/usr" )
25     SET ( SYSCONFDIR "${CMAKE_INSTALL_PREFIX}/etc" )
26   ENDIF ( ${CMAKE_INSTALL_PREFIX} STREQUAL "/usr" )
27 ENDIF( NOT DEFINED SYSCONFDIR )
28 MESSAGE(STATUS "Config files will be installed in ${SYSCONFDIR}" )
29
30 # usr INSTALL_PREFIX
31
32 IF( DEFINED CMAKE_INSTALL_PREFIX )
33   SET( INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX} )
34 ELSE( DEFINED CMAKE_INSTALL_PREFIX )
35   SET( INSTALL_PREFIX /usr )
36 ENDIF( DEFINED CMAKE_INSTALL_PREFIX )
37
38 # system configuration dir (etc)
39 IF( NOT DEFINED MANDIR )
40   SET( MANDIR ${INSTALL_PREFIX}/share/man )
41 ENDIF( NOT DEFINED MANDIR )
42 MESSAGE( "** Manual files will be installed in ${MANDIR}" )
43
44 ####################################################################
45 # CONFIGURATION                                                    #
46 ####################################################################
47
48 IF( NOT DEFINED DOC_INSTALL_DIR )
49   SET( DOC_INSTALL_DIR
50      "${CMAKE_INSTALL_PREFIX}/share/doc/packages/${PACKAGE}"
51      CACHE PATH "The install dir for documentation (default prefix/share/doc/packages/${PACKAGE})"
52      FORCE
53   )
54 ENDIF( NOT DEFINED DOC_INSTALL_DIR )
55
56 ####################################################################
57 # INCLUDES                                                         #
58 ####################################################################
59
60 #SET (CMAKE_INCLUDE_DIRECTORIES_BEFORE ON)
61 INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} SYSTEM )
62
63
64 ####################################################################
65 # RPM SPEC                                                         #
66 ####################################################################
67
68 MACRO(SPECFILE)
69   MESSAGE(STATUS "Writing spec file...")
70   CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/${PACKAGE}.spec.cmake ${CMAKE_BINARY_DIR}/package/${PACKAGE}.spec @ONLY)
71   MESSAGE(STATUS "I hate you rpm-lint...!!!")
72   IF (EXISTS ${CMAKE_SOURCE_DIR}/package/${PACKAGE}-rpmlint.cmake)
73     CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/package/${PACKAGE}-rpmlint.cmake ${CMAKE_BINARY_DIR}/package/${PACKAGE}-rpmlintrc @ONLY)
74   ENDIF (EXISTS ${CMAKE_SOURCE_DIR}/package/${PACKAGE}-rpmlint.cmake)
75 ENDMACRO(SPECFILE)
76
77 MACRO(PKGCONFGFILE)
78   MESSAGE(STATUS "Writing pkg-config file...")
79   CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/libzypp.pc.cmake ${CMAKE_BINARY_DIR}/libzypp.pc @ONLY)
80   INSTALL( FILES ${CMAKE_BINARY_DIR}/libzypp.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig )
81 ENDMACRO(PKGCONFGFILE)
82
83 ####################################################################
84 # INSTALL                                                          #
85 ####################################################################
86
87 MACRO(GENERATE_PACKAGING PACKAGE VERSION)
88
89   # The following components are regex's to match anywhere (unless anchored)
90   # in absolute path + filename to find files or directories to be excluded
91   # from source tarball.
92   SET (CPACK_SOURCE_IGNORE_FILES
93   # hidden files
94   "/\\\\..+$"
95   # temporary files
96   "\\\\.swp$"
97   # backup files
98   "~$"
99   # others
100   "\\\\.#"
101   "/#"
102   "/build/"
103   "/_build/"
104   # used before
105   "/CVS/"
106   "\\\\.o$"
107   "\\\\.lo$"
108   "\\\\.la$"
109   "Makefile\\\\.in$"
110   )
111
112   #SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Novell's package management core engine.")
113   SET(CPACK_PACKAGE_VENDOR "Novell Inc.")
114   #SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ReadMe.txt")
115   #SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/Copyright.txt")
116   #SET(CPACK_PACKAGE_VERSION_MAJOR ${version_major})
117   #SET(CPACK_PACKAGE_VERSION_MINOR ${version_minor})
118   #SET(CPACK_PACKAGE_VERSION_PATCH ${version_patch})
119   SET( CPACK_GENERATOR "TBZ2")
120   SET( CPACK_SOURCE_GENERATOR "TBZ2")
121   SET( CPACK_SOURCE_PACKAGE_FILE_NAME "${PACKAGE}-${VERSION}" )
122   INCLUDE(CPack)
123
124   SPECFILE()
125
126   ADD_CUSTOM_TARGET( svncheck
127     COMMAND cd ${CMAKE_SOURCE_DIR} && LC_ALL=C git status | grep -q "nothing to commit .working directory clean."
128   )
129
130   SET( AUTOBUILD_COMMAND
131     COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_BINARY_DIR}/package/*.tar.bz2
132     COMMAND ${CMAKE_MAKE_PROGRAM} package_source
133     COMMAND ${CMAKE_COMMAND} -E copy ${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.bz2 ${CMAKE_BINARY_DIR}/package
134     COMMAND ${CMAKE_COMMAND} -E remove ${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.bz2
135     COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_SOURCE_DIR}/package/${PACKAGE}.changes" "${CMAKE_BINARY_DIR}/package/${PACKAGE}.changes"
136   )
137
138   ADD_CUSTOM_TARGET( srcpackage_local
139     ${AUTOBUILD_COMMAND}
140   )
141
142   ADD_CUSTOM_TARGET( srcpackage
143     COMMAND ${CMAKE_MAKE_PROGRAM} svncheck
144     ${AUTOBUILD_COMMAND}
145   )
146 ENDMACRO(GENERATE_PACKAGING)