]> granicus.if.org Git - fortune-mod/blob - fortune-mod/CMakeLists.txt
Generate the man page using a perl proggy.
[fortune-mod] / fortune-mod / CMakeLists.txt
1 cmake_minimum_required(VERSION 3.2)
2
3 SET (private_mod_path "${CMAKE_SOURCE_DIR}/cmake")
4 LIST (APPEND CMAKE_MODULE_PATH "${private_mod_path}")
5 INCLUDE(Shlomif_Common)
6
7 SHLOMIF_COMMON_SETUP("${private_mod_path}")
8
9 CMAKE_POLICY(SET CMP0054 NEW)
10
11 SET (PKGDATADIR_SUBDIR "fortune-mod")
12 SET (RELATIVE_PKGDATADIR "${RELATIVE_DATADIR}/${PKGDATADIR_SUBDIR}")
13 SET (PKGDATADIR "${DATADIR}/${PKGDATADIR_SUBDIR}")
14
15 # Introduces VERSION , CPACK_PACKAGE_VERSION_MAJOR,
16 # CPACK_PACKAGE_VERSION_MAJOR, and CPACK_PACKAGE_VERSION_PATCH
17 READ_VERSION_FROM_VER_TXT()
18
19 # This is the equivalent to perform a "make dist"/"make distdir" etc.
20 SET(CPACK_PACKAGE_NAME "fortune-mod")
21 SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "fortune-mod")
22 SET(CPACK_PACKAGE_VENDOR "Shlomi Fish")
23 SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README")
24 SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING.txt")
25
26
27 SET(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_DESCRIPTION_SUMMARY} ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
28
29 SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
30
31 SET (base_with_ver "fortune-mod-[0-9]+\\\\.[0-9]+\\\\.[0-9]+")
32
33 SET(CPACK_SOURCE_IGNORE_FILES
34     "/.deps/"
35     "~$"
36     "\\\\.pyc$"
37     "/tags$"
38     "/(build|BUILD|B)/"
39 )
40
41 IF(WIN32 AND NOT UNIX)
42     # There is a bug in NSI that does not handle full unix paths properly. Make
43     # sure there is at least one set of four (4) backlasshes.
44     SET(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}\\\\dondorf-king.bmp")
45     SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\fortune.exe")
46     SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\github.com\\\\shlomif\\\\fortune-mod")
47     SET(CPACK_NSIS_URL_INFO_ABOUT  "http:\\\\\\\\github.com\\\\shlomif\\\\fortune-mod")
48     SET(CPACK_NSIS_DISPLAY_NAME "fortune-mod")
49     SET(CPACK_NSIS_CONTACT "shlomif@shlomifish.org")
50     SET(CPACK_NSIS_MODIFY_PATH ON)
51     # Setting for NSIS :
52     SET(CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\fc-solve.ico")
53     SET(CPACK_NSIS_MUI_UNIICON ${CPACK_NSIS_MUI_ICON})
54     SET(CPACK_PACKAGE_ICON ${CPACK_NSIS_MUI_ICON})
55     SET(CPACK_NSIS_MODIFY_PATH "ON")
56 ELSE()
57   SET(CPACK_STRIP_FILES "fortune")
58   SET(CPACK_SOURCE_STRIP_FILES "")
59 ENDIF()
60
61 SET(CPACK_PACKAGE_EXECUTABLES
62     "fortune" "The fortune-mod program"
63 )
64
65 ### This is to set the RPATH correctly, so when installed under a prefix
66 ### the executables will find the libraries.
67 ###
68 ### See:
69 ###
70 ### http://www.cmake.org/Wiki/CMake_RPATH_handling
71 ###
72 ### (Taken from that wiki page)
73
74 # use, i.e. don't skip the full RPATH for the build tree
75 SET(CMAKE_SKIP_BUILD_RPATH  FALSE)
76
77 # when building, don't use the install RPATH already
78 # (but later on when installing)
79 SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
80
81 # the RPATH to be used when installing
82 SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}")
83
84 # add the automatically determined parts of the RPATH
85 # which point to directories outside the build tree to the install RPATH
86 SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
87
88 SET (WITH_TEST_SUITE CACHE BOOL "")
89 SET (NO_OFFENSIVE CACHE BOOL "Exclude the offensive option.")
90 SET (LOCALDIR "${CMAKE_INSTALL_PREFIX}/local/share/games/fortunes" CACHE STRING "LOCALDIR fortunes dir")
91 SET (LOCALODIR "${LOCALDIR}/off" CACHE STRING "offensive fortunes localdir")
92 SET (COOKIEDIR "${CMAKE_INSTALL_PREFIX}/share/games/fortunes" CACHE STRING  "cookie dir not under /usr/local")
93 SET (OCOOKIEDIR "${COOKIEDIR}/off" CACHE STRING "offensive cookie dir not under /usr/local")
94
95 SHLOMIF_ADD_COMMON_C_FLAGS()
96
97 FIND_PATH( RECODE_H "recode.h")
98
99 MACRO(my_exe exe c_file dir)
100     ADD_EXECUTABLE("${exe}" "${c_file}")
101     INSTALL(TARGETS "${exe}" RUNTIME DESTINATION "${dir}")
102 ENDMACRO()
103
104 my_exe(
105     "fortune"
106     "fortune/fortune.c"
107     "games"
108 )
109
110 my_exe(
111     "strfile"
112     "util/strfile.c"
113     "sbin"
114 )
115
116 my_exe(
117     "unstr"
118     "util/unstr.c"
119     "sbin"
120 )
121
122 my_exe(
123     "rot"
124     "util/rot.c"
125     "bin"
126 )
127
128 SET (_my_man_page "${CMAKE_CURRENT_SOURCE_DIR}/fortune/fortune.6")
129 SET (_my_man_gen "${CMAKE_CURRENT_SOURCE_DIR}/fortune/gen-fortune-man-page.pl")
130 SET (_my_args)
131 LIST(APPEND _my_args "--cookiedir" "${COOKIEDIR}" "--ocookiedir" "${OCOOKIEDIR}" "--output" "${_my_man_page}")
132 IF ("${NO_OFFENSIVE}")
133     LIST(APPEND _my_args "--without-offensive")
134 ENDIF()
135
136 ADD_CUSTOM_COMMAND(
137     OUTPUT "${_my_man_page}"
138     COMMAND "${PERL_EXECUTABLE}"
139     ARGS "${_my_man_gen}" ${_my_args}
140     DEPENDS "${_my_man_gen}"
141 )
142
143 ADD_CUSTOM_TARGET(
144     generate_man_page
145     ALL DEPENDS "${_my_man_page}"
146 )
147 INSTALL_RENAME_MAN("strfile.man" "1" "strfile" "util")
148 INSTALL_RENAME_MAN("fortune.6" "6" "fortune" "fortune")
149
150 TARGET_LINK_LIBRARIES("fortune" "recode")
151 INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/util")
152
153 ADD_DEFINITIONS("-DLOCOFFDIR=\"${LOCALODIR}\"")
154 ADD_DEFINITIONS("-DLOCFORTDIR=\"${LOCALDIR}\"")
155 ADD_DEFINITIONS("-DOFFDIR=\"${OCOOKIEDIR}\"")
156 ADD_DEFINITIONS("-DFORTDIR=\"${COOKIEDIR}\"")
157
158 IF ("${NO_OFFENSIVE}")
159     ADD_DEFINITIONS("-DNO_OFFENSIVE=1")
160 ENDIF()
161
162 INCLUDE(CheckIncludeFile)
163 CHECK_INCLUDE_FILE("regex.h" HAVE_REGEX_H)
164
165 IF ("${HAVE_REGEX_H}")
166     ADD_DEFINITIONS("-DHAVE_REGEX_H")
167     ADD_DEFINITIONS("-DBSD_REGEX")
168 ENDIF()
169
170 ADD_DEFINITIONS("-DHAVE_STDBOOL")
171 SET (COOKIES
172     art
173     ascii-art
174     computers
175     cookie
176     definitions
177     drugs
178     education
179     ethnic
180     food
181     fortunes
182     goedel
183     humorists
184     kids
185     law
186     linuxcookie
187     literature
188     love
189     magic
190     medicine
191     men-women
192     miscellaneous
193     news
194     people
195     pets
196     platitudes
197     politics
198     riddles
199     science
200     songs-poems
201     sports
202     startrek
203     translate-me
204     wisdom
205     work
206     linux
207     perl
208     knghtbrd
209     paradoxum
210     zippy
211     debian
212 )
213
214 ADD_SUBDIRECTORY("datfiles")
215
216 string (REPLACE ";" " " COOKIES_STR "${COOKIES}")
217 ADD_CUSTOM_TARGET(
218     "check"
219     "perl" "${CMAKE_SOURCE_DIR}/run-tests.pl" "--src-dir" "${CMAKE_SOURCE_DIR}" "--cookies" "${COOKIES_STR}"
220 )
221
222 INCLUDE(CPack)