- add cmake support
[platform/upstream/libsolv.git] / CMakeLists.txt
1 PROJECT(satsolver)
2
3 # Library
4 IF ( DEFINED LIB )
5   SET ( LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${LIB}" )
6 ELSE ( DEFINED  LIB )
7   IF (CMAKE_SIZEOF_VOID_P MATCHES "8")
8     SET( LIB_SUFFIX "64" )
9   ENDIF(CMAKE_SIZEOF_VOID_P MATCHES "8")
10   SET ( LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" )
11 ENDIF ( DEFINED  LIB )
12 MESSAGE(STATUS "Libraries will be installed in ${LIB_INSTALL_DIR}" )
13
14 ####################################################################
15 # CONFIGURATION                                                    #
16 ####################################################################
17
18 # where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked
19 SET( CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules )
20
21 FIND_PACKAGE(Db43 REQUIRED)
22 FIND_PACKAGE(EXPAT REQUIRED)
23
24 SET( PACKAGE "satsolver" )
25 SET( VERSION "${LIBZYPP_MAJOR}.${LIBZYPP_MINOR}.${LIBZYPP_PATCH}" )
26
27 SET( CMAKE_C_FLAGS   "${CMAKE_C_FLAGS}   -g -O3 -Wall" )
28 ADD_DEFINITIONS( -D_FILE_OFFSET_BITS=64 )
29 ADD_DEFINITIONS( -DVERSION=\\\"${VERSION}\\\" )
30
31 SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "mls solver")
32 SET(CPACK_PACKAGE_VENDOR "Novell Inc.")
33 SET(CPACK_PACKAGE_VERSION_MAJOR ${LIBZYPP_MAJOR})
34 SET(CPACK_PACKAGE_VERSION_MINOR ${LIBZYPP_MINOR})
35 SET(CPACK_PACKAGE_VERSION_PATCH ${LIBZYPP_PATCH})
36 SET( CPACK_GENERATOR "TBZ2")
37 SET( CPACK_SOURCE_GENERATOR "TBZ2")
38 SET( CPACK_SOURCE_PACKAGE_FILE_NAME "${PACKAGE}-${VERSION}" )
39
40 # The following components are regex's to match anywhere (unless anchored)
41 # in absolute path + filename to find files or directories to be excluded
42 # from source tarball.
43 SET (CPACK_SOURCE_IGNORE_FILES
44 #svn files
45 "\\\\.svn/"
46 "\\\\.cvsignore$"
47 # temporary files
48 "\\\\.swp$"
49 # backup files
50 "~$"
51 # eclipse files
52 "\\\\.cdtproject$"
53 "\\\\.cproject$"
54 "\\\\.project$"
55 "\\\\.settings/"
56 # others
57 "\\\\.#"
58 "/#"
59 "/build/"
60 "/_build/"
61 "/\\\\.git/"
62 # used before
63 "/CVS/"
64 "/\\\\.libs/"
65 "/\\\\.deps/"
66 "\\\\.o$"
67 "\\\\.lo$"
68 "\\\\.la$"
69 "Makefile\\\\.in$"
70 )
71
72 INCLUDE(CPack)
73
74 ####################################################################
75
76 SET( DOC_INSTALL_DIR
77    "${CMAKE_INSTALL_PREFIX}/share/doc/packages/${PACKAGE}"
78    CACHE PATH "The install dir for documentation (default prefix/share/doc/packages/${PACKAGE})"
79    FORCE
80 )
81
82 ####################################################################
83 # INCLUDES                                                         #
84 ####################################################################
85
86 #SET (CMAKE_INCLUDE_DIRECTORIES_BEFORE ON)
87 INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/src ${CMAKE_CURRENT_BINARY_DIR} SYSTEM )
88
89 ####################################################################
90
91 MESSAGE(STATUS "Looking modules in ${CMAKE_MODULE_PATH}")
92 FIND_PROGRAM(SWIG_EXECUTABLE
93   NAMES swig-1.3 swig
94   PATHS ${SWIG_DIR} ${SWIG_DIR}/.. ${SWIG_DIR}/../../bin /usr/bin /usr/local/bin ${CMAKE_INSTALL_PREFIX}/bin
95 )
96
97 ADD_SUBDIRECTORY(src)
98 ADD_SUBDIRECTORY(tools)
99 ADD_SUBDIRECTORY(testsuite)
100
101 IF ( NOT SWIG_EXECUTABLE )
102   MESSAGE( FATAL "SWIG not found." )
103 ELSE ( NOT SWIG_EXECUTABLE )
104   MESSAGE( STATUS "SWIG found at ${SWIG_EXECUTABLE}" )
105   ADD_SUBDIRECTORY(bindings)
106 ENDIF ( NOT SWIG_EXECUTABLE )
107
108 MESSAGE(STATUS "version: ${VERSION}")
109
110 ####################################################################
111 # RPM SPEC                                                         #
112 ####################################################################
113
114 MACRO(SPECFILE)
115   MESSAGE(STATUS "Writing spec file...")
116   CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/libsatsolver.spec.in ${CMAKE_BINARY_DIR}/package/libsatsolver.spec.in @ONLY)
117   #MESSAGE(STATUS "I hate you rpm-lint...!!!")
118   #CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/package/libsatsolver-rpmlint.cmake ${CMAKE_BINARY_DIR}/package/libsatsolver-rpmlintrc @ONLY)
119 ENDMACRO(SPECFILE)
120
121 SPECFILE()
122
123 ADD_CUSTOM_TARGET( svncheck
124   COMMAND cd $(CMAKE_SOURCE_DIR) && ! LC_ALL=C svn status --show-updates --quiet | grep -v '^Status against revision'
125 )
126
127 SET( AUTOBUILD_COMMAND
128   COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_BINARY_DIR}/package/*.tar.bz2
129   COMMAND ${CMAKE_MAKE_PROGRAM} package_source
130   COMMAND ${CMAKE_COMMAND} -E copy ${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.bz2 ${CMAKE_BINARY_DIR}/package
131   COMMAND ${CMAKE_COMMAND} -E remove ${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.bz2
132   COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_SOURCE_DIR}/package/${PACKAGE}.changes" "${CMAKE_BINARY_DIR}/package/${PACKAGE}.changes"
133 )
134
135 ADD_CUSTOM_TARGET( srcpackage_local
136   ${AUTOBUILD_COMMAND}
137 )
138
139 ADD_CUSTOM_TARGET( srcpackage
140   COMMAND ${CMAKE_MAKE_PROGRAM} svncheck
141   ${AUTOBUILD_COMMAND}
142 )