]>
Commit | Line | Data |
---|---|---|
56966a5e | 1 | # ************************************************************************** |
2 | # * Copyright(c) 1998-2014, ALICE Experiment at CERN, All rights reserved. * | |
3 | # * * | |
4 | # * Author: The ALICE Off-line Project. * | |
5 | # * Contributors are mentioned in the code where appropriate. * | |
6 | # * * | |
7 | # * Permission to use, copy, modify and distribute this software and its * | |
8 | # * documentation strictly for non-commercial purposes is hereby granted * | |
9 | # * without fee, provided that the above copyright notice appears in all * | |
10 | # * copies and that both the copyright notice and this permission notice * | |
11 | # * appear in the supporting documentation. The authors make no claims * | |
12 | # * about the suitability of this software for any purpose. It is * | |
13 | # * provided "as is" without express or implied warranty. * | |
14 | # ************************************************************************** | |
6db31708 | 15 | |
56966a5e | 16 | # Find DATE DAQ installation using date-config |
17 | # Requires: | |
18 | # - date-config has to be found in the PATH | |
19 | # - Environment variables | |
ca331a9c | 20 | # - DATE_ROOT // try to not use |
21 | # - DATE_COMMON_DEFS // try to not use | |
22 | # - DATE_MONITOR_DIR //try not to use | |
56966a5e | 23 | # - DATE_VERSION - DATE version as reported by date-config |
24 | # - DATE_VERSION_MAJOR | |
25 | # - DATE_VERSIOM_MINOR | |
26 | # - DATE_CONFIG - path to date-config script | |
27 | # - DATE_CFLAGS - cflags reported by date-config | |
28 | # - DATE_LDFLAGS - ldflags reported by date-config | |
f82bfa66 | 29 | # - DATE_LIBS - DATE libs to be linked against to reported by date-config --libs |
30 | # - DATE_LIBRARIES - DATE libs as as list as extracted from date-config --libs | |
4d31eb1c | 31 | # - DATE_MONLIBS - static monitorlibs reported by date-config --monitorlibs without shift |
32 | # - DATE_DYNMONLIBS - dynamic monitorlibs reported by date-config --monitorlibs without shift | |
f82bfa66 | 33 | # - DATE_MONLIBRARIES - DATE monitor libs as a list extracted from the date-config --monitorlibs |
34 | # - DATE_STATICMON - DATE static monitor libs needed by the DA | |
35 | # - DATE_RCPROXYLIBS - rcproxylibs reported by date-config --rcproxylibs | |
36 | # - DATE_RCPROXYLIBRARIES - rcproxylibs as a list as extracted from date-config --rcproxylibs | |
6db31708 | 37 | |
f82bfa66 | 38 | ######################### |
39 | # Functions definitions | |
40 | ######################### | |
56966a5e | 41 | |
f82bfa66 | 42 | # A function to find all the libraries listed in library_list. The list contains the short |
43 | # names of libraries (ie. Db instead of libDb.so). | |
44 | # Libraries are search in library_paths. | |
45 | # It returns the list of libraries, with full path and full name. | |
46 | # Author: Barthelemy Von Haller | |
47 | function(find_date_libraries _output library_list library_paths) | |
48 | FOREACH (LIB ${library_list}) | |
49 | # Find first static, this is used by the DA | |
50 | find_library(DATE_LIBRARY_${LIB} NAMES "lib${LIB}.a" PATHS ${library_paths}) | |
51 | ||
52 | if(NOT DATE_LIBRARY_${LIB}) | |
53 | find_library(DATE_LIBRARY_${LIB} NAMES ${LIB} PATHS ${library_paths}) | |
54 | endif() | |
55 | ||
56 | mark_as_advanced(DATE_LIBRARY_${LIB}) | |
57 | set(_output_tmp ${_output_tmp} ${DATE_LIBRARY_${LIB}}) | |
58 | ENDFOREACH (LIB ${library_list}) | |
59 | ||
60 | set(${_output} ${_output_tmp} PARENT_SCOPE) | |
61 | endfunction(find_date_libraries _output library_list library_paths) | |
62 | ||
63 | # DATE_CONFIG set from the configuration | |
6db31708 | 64 | if(DATE_CONFIG) |
9f4ff23c | 65 | |
ec8c8ea6 | 66 | # Setting DIMDIR, ODIR and ROOTSYS in the environment, they are needed by date-config |
67 | set(ENV{DIMDIR} ${DIMDIR}) | |
68 | set(ENV{ODIR} ${ODIR}) | |
69 | set(ENV{ROOTSYS} ${ROOTSYS}) | |
70 | ||
56966a5e | 71 | # Checking DATE version |
72 | execute_process(COMMAND ${DATE_CONFIG} --version OUTPUT_VARIABLE DATE_VERSION ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE ) | |
73 | if(error) | |
74 | message(FATAL_ERROR "Error retrieving DATE version : ${error}") | |
75 | endif(error) | |
76 | string(STRIP ${DATE_VERSION} DATE_VERSION) | |
77 | ||
78 | # Extract major, minor, and patch versions from | |
79 | string(REGEX REPLACE "^([0-9]+)\\.[0-9]+" "\\1" DATE_VERSION_MAJOR "${DATE_VERSION}") | |
80 | string(REGEX REPLACE "^[0-9]+\\.([0-9]+)" "\\1" DATE_VERSION_MINOR "${DATE_VERSION}") | |
81 | message(STATUS "DATE version ${DATE_VERSION_MAJOR}.${DATE_VERSION_MINOR} found.") | |
82 | ||
56966a5e | 83 | # setting the cflags |
84 | execute_process(COMMAND ${DATE_CONFIG} --cflags OUTPUT_VARIABLE DATE_CFLAGS ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE ) | |
85 | if(error) | |
86 | message(FATAL_ERROR "Error retrieving DATE cflags : ${error}") | |
87 | endif(error) | |
ca331a9c | 88 | |
89 | # If flags not empty we strip them | |
90 | if(DATE_CFLAGS) | |
91 | string(STRIP ${DATE_CFLAGS} DATE_CFLAGS) | |
92 | endif() | |
56966a5e | 93 | |
94 | set(DATE_CFLAGS "-DALI_DATE ${DATE_CFLAGS}") | |
95 | ||
96 | # setting the ldflags | |
97 | execute_process(COMMAND ${DATE_CONFIG} --ldflags OUTPUT_VARIABLE DATE_LDFLAGS ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE ) | |
98 | if(error) | |
99 | message(FATAL_ERROR "Error retrieving DATE ldflags : ${error}") | |
100 | endif(error) | |
ca331a9c | 101 | |
102 | # If the flags are not empty we strip them | |
103 | if(DATE_LDFLAGS) | |
104 | string(STRIP ${DATE_LDFLAGS} DATE_LDFLAGS) | |
105 | endif() | |
106 | ||
107 | # setting the libs | |
108 | execute_process(COMMAND ${DATE_CONFIG} --libs OUTPUT_VARIABLE DATE_LIBS ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE ) | |
109 | if(error) | |
110 | message(FATAL_ERROR "Error retrieving DATE libs : ${error}") | |
111 | endif(error) | |
112 | ||
113 | # If the flags are not empty we strip them | |
114 | if(DATE_LIBS) | |
115 | string(STRIP ${DATE_LIBS} DATE_LIBS) | |
116 | endif() | |
56966a5e | 117 | |
f82bfa66 | 118 | # DATE_LIBRARIES |
119 | # Extracting the list of dynamic and static libraries from the --libs | |
120 | # The list is needed during the generation of the DAs | |
121 | # using a find_library in order to get the full path and not need to use -L during linking of the DAs | |
122 | string(REGEX MATCHALL "[-]l[^- ]+" DATE_LIBRARIES_TMP ${DATE_LIBS}) | |
123 | string(REGEX REPLACE "[-]l" ";" DATE_LIBRARIES_TMP ${DATE_LIBRARIES_TMP}) | |
124 | # Get the list of search path using -Lyyy -> yyy | |
125 | string(REGEX MATCHALL "[-]L[^- ]+" DATE_LIBRARIES_PATH_TMP ${DATE_LIBS}) | |
126 | string(REGEX REPLACE "[-]L" ";" DATE_LIBRARIES_PATH_TMP ${DATE_LIBRARIES_PATH_TMP}) | |
127 | find_date_libraries(DATE_LIBRARIES "${DATE_LIBRARIES_TMP}" "${DATE_LIBRARIES_PATH_TMP}") | |
f82bfa66 | 128 | |
129 | # Fix for mysql bug https://bugs.launchpad.net/percona-server/+bug/1287374 | |
130 | set(DATE_LIBS "${DATE_LIBS} -L/usr/lib64/mysql/") | |
131 | ||
56966a5e | 132 | # setting the monlibs |
f82bfa66 | 133 | execute_process(COMMAND ${DATE_CONFIG} --monitorlibs=noshift OUTPUT_VARIABLE DATE_MONLIBS ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE ) |
56966a5e | 134 | if(error) |
135 | message(FATAL_ERROR "Error retrieving DATE monitorlibs : ${error}") | |
136 | endif(error) | |
56966a5e | 137 | |
ca331a9c | 138 | # If the flags are not empty we strip them |
139 | if(DATE_MONLIBS) | |
140 | string(STRIP ${DATE_MONLIBS} DATE_MONLIBS) | |
141 | endif() | |
142 | ||
f82bfa66 | 143 | # DATE_MONLIBRARIES |
144 | # Extracting the list of dynamic and static libraries from the --libs | |
145 | # The list is needed during the generation of the DAs | |
146 | # Removing everything that starts with - to leave all the static libraries | |
147 | # Replacing space with ; to create a list that will be sent to the linked | |
148 | string(REGEX REPLACE "-[^ \r\n\t].+( |$)?" "" DATE_STATICMON ${DATE_MONLIBS}) | |
149 | if(DATE_STATICMON) | |
150 | string(REPLACE " " ";" DATE_STATICMON ${DATE_STATICMON}) | |
151 | endif(DATE_STATICMON) | |
152 | ||
153 | # Extracting all the shared libraries | |
154 | # using a find_library in order to get the full path and not need to use -L during linking of the DAs | |
155 | string(REGEX MATCHALL "[-]l[^- ]+" DATE_MONLIBRARIES_TMP ${DATE_MONLIBS}) | |
156 | string(REGEX REPLACE "[-]l" ";" DATE_MONLIBRARIES_TMP ${DATE_MONLIBRARIES_TMP}) | |
157 | # Get the list of search path using -Lyyy -> yyy | |
158 | string(REGEX MATCHALL "[-]L[^- ]+" DATE_MONLIBRARIES_PATH_TMP ${DATE_MONLIBS}) | |
159 | string(REGEX REPLACE "[-]L" ";" DATE_MONLIBRARIES_PATH_TMP ${DATE_MONLIBRARIES_PATH_TMP}) | |
160 | find_date_libraries(DATE_MONLIBRARIES "${DATE_MONLIBRARIES_TMP}" "${DATE_MONLIBRARIES_PATH_TMP}") | |
161 | set(DATE_MONLIBRARIES ${DATE_STATICMON} ${DATE_MONLIBRARIES}) | |
f82bfa66 | 162 | |
163 | # Fix for mysql bug https://bugs.launchpad.net/percona-server/+bug/1287374 | |
164 | set(DATE_MONLIBS "${DATE_MONLIBS} -L/usr/lib64/mysql/") | |
165 | ||
4d31eb1c | 166 | # setting the rclibs |
f82bfa66 | 167 | execute_process(COMMAND ${DATE_CONFIG} --rcproxylibs OUTPUT_VARIABLE DATE_RCPROXYLIBS ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE ) |
168 | if(error) | |
169 | message(FATAL_ERROR "Error retrieving DATE rcproxylibs") | |
170 | endif(error) | |
171 | ||
172 | # If the flags are not empty we strip them | |
173 | if(DATE_RCPROXYLIBS) | |
174 | string(STRIP ${DATE_RCPROXYLIBS} DATE_RCPROXYLIBS) | |
175 | endif() | |
176 | ||
177 | # DATE_LIBRARIES | |
178 | # Extracting the list of dynamic and static libraries from the --libs | |
179 | # The list is needed during the generation of the DAs | |
180 | string(REGEX MATCHALL "[-]l[^- ]+" DATE_RCPROXYLIBRARIES_TMP ${DATE_RCPROXYLIBS}) | |
181 | string(REGEX REPLACE "[-]l" ";" DATE_RCPROXYLIBRARIES_TMP ${DATE_RCPROXYLIBRARIES_TMP}) | |
182 | # Get the list of search path using -Lyyy -> yyy | |
183 | string(REGEX MATCHALL "[-]L[^- ]+" DATE_RCPROXYLIBRARIES_PATH_TMP ${DATE_RCPROXYLIBS}) | |
184 | string(REGEX REPLACE "[-]L" ";" DATE_RCPROXYLIBRARIES_PATH_TMP ${DATE_RCPROXYLIBRARIES_PATH_TMP}) | |
185 | find_date_libraries(DATE_RCPROXYLIBRARIES "${DATE_RCPROXYLIBRARIES_TMP}" "${DATE_RCPROXYLIBRARIES_PATH_TMP}") | |
f82bfa66 | 186 | |
4d31eb1c | 187 | # setting the monlibs |
188 | execute_process(COMMAND ${DATE_CONFIG} --monitorlibs=dyn OUTPUT_VARIABLE DATE_DYNMONLIBS ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE ) | |
189 | if(error) | |
190 | message(FATAL_ERROR "Error retrieving DATE monitorlibs : ${error}") | |
191 | endif(error) | |
192 | ||
193 | # If the flags are not empty we strip them | |
194 | if(DATE_DYNMONLIBS) | |
195 | string(STRIP ${DATE_DYNMONLIBS} DATE_DYNMONLIBS) | |
196 | endif() | |
197 | ||
ec8c8ea6 | 198 | # unsetting all environment variables |
199 | unset(ENV{DIMDIR}) | |
200 | unset(ENV{ODIR}) | |
201 | unset(ENV{ROOTSYS}) | |
202 | ||
56966a5e | 203 | set(DATE_FOUND TRUE) |
6db31708 | 204 | else() |
56966a5e | 205 | message(STATUS "DATE not found") |
6db31708 | 206 | endif(DATE_CONFIG) |
575bfc03 | 207 |