CMake: removing qpythia from the depedencies
[u/mrichter/AliRoot.git] / cmake / FindDATE.cmake
CommitLineData
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
47function(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)
61endfunction(find_date_libraries _output library_list library_paths)
62
63# DATE_CONFIG set from the configuration
6db31708 64if(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 204else()
56966a5e 205 message(STATUS "DATE not found")
6db31708 206endif(DATE_CONFIG)
575bfc03 207