ClhepVariables.cmake 19.6 KB
Newer Older
1
#
Lynn Garren's avatar
Lynn Garren committed
2
3
4
# clhep_set_compiler_flags() 
#    sets the default compiler flags
#    calls clhep_autoconf_variables
5
6
7
8
9
10
11
#
# clhep_autoconf_variables() defines global variables
#
# clhep_package_config():
#    defines ${PACKAGE}_LIBS
#    processes ${PACKAGE}-config.in
#    processes ${PACKAGE}-deps.in
Lynn Garren's avatar
Lynn Garren committed
12
#
13
14
15
# clhep_package_config_no_lib():
#    processes ${PACKAGE}-config.in
#
Lynn Garren's avatar
Lynn Garren committed
16
17
# clhep_config():
#    processes clhep-config.in
18
19
20
#
# clhep_lib_suffix();
#    check for -DLIB_SUFFIX=xxx and process intelligently
Lynn Garren's avatar
Lynn Garren committed
21
#
22

23
24
25
26
27
28
# CLHEP_SINGLE_THREAD is OFF (false) by default
option(CLHEP_SINGLE_THREAD "Build without multithreading" OFF)

# CLHEP_BUILD_DOCS is OFF (false) by default
option(CLHEP_BUILD_DOCS "Build and install CLHEP documentation" OFF)

29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
macro( clhep_check_variable_names )
  # useful if you need to check a variable
  message( STATUS "clhep_check_variable_names: CMAKE_SYSTEM_NAME is ${CMAKE_SYSTEM_NAME}" )
  message( STATUS "clhep_check_variable_names: CMAKE_BASE_NAME is ${CMAKE_BASE_NAME}" )
  message( STATUS "clhep_check_variable_names: CMAKE_CXX_COMPILER_ID is ${CMAKE_CXX_COMPILER_ID}" )
  message( STATUS "clhep_check_variable_names: CMAKE_COMPILER_IS_GNUCXX is ${CMAKE_COMPILER_IS_GNUCXX}" )
  message( STATUS "clhep_check_variable_names: CMAKE_COMPILER_IS_MINGW is ${CMAKE_COMPILER_IS_MINGW}" )
  message( STATUS "clhep_check_variable_names: CMAKE_COMPILER_IS_CYGWIN is ${CMAKE_COMPILER_IS_CYGWIN}" )
  message( STATUS "clhep_check_variable_names: CMAKE_AR is ${CMAKE_AR}" )
  message( STATUS "clhep_check_variable_names: CMAKE_RANLIB is ${CMAKE_RANLIB}" )
  message( STATUS "clhep_check_variable_names: CMAKE_CXX_OUTPUT_EXTENSION is ${CMAKE_CXX_OUTPUT_EXTENSION}" )
  message( STATUS "clhep_check_variable_names: CMAKE_SHARED_LIBRARY_CXX_FLAGS is ${CMAKE_SHARED_LIBRARY_CXX_FLAGS}" )
  message( STATUS "clhep_check_variable_names: CMAKE_SHARED_MODULE_CXX_FLAGS is ${CMAKE_SHARED_MODULE_CXX_FLAGS}" )
  message( STATUS "clhep_check_variable_names: CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS is ${CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS}" )
  message( STATUS "clhep_check_variable_names: CMAKE_CXX_FLAGS is ${CMAKE_CXX_FLAGS}" )
  message( STATUS "clhep_check_variable_names: CMAKE_CXX_FLAGS_DEBUG is ${CMAKE_CXX_FLAGS_DEBUG}" )
  message( STATUS "clhep_check_variable_names: CMAKE_CXX_FLAGS_RELEASE is ${CMAKE_CXX_FLAGS_RELEASE}" )
  message( STATUS "clhep_check_variable_names: CMAKE_CXX_FLAGS_RELWITHDEBINFO is ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}" )
  message( STATUS "clhep_check_variable_names: CMAKE_CXX_STANDARD_LIBRARIES is ${CMAKE_CXX_STANDARD_LIBRARIES}" )
  message( STATUS "clhep_check_variable_names: CMAKE_CXX_LINK_FLAGS is ${CMAKE_CXX_LINK_FLAGS}" )
Lynn Garren's avatar
Lynn Garren committed
49
50
  message( STATUS "clhep_check_variable_names: CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS is ${CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS}" )
  message( STATUS "clhep_check_variable_names: CMAKE_SHARED_LINKER_FLAGS is ${CMAKE_SHARED_LINKER_FLAGS}" )
51
52
endmacro( clhep_check_variable_names )

53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
macro( clhep_autoconf_variables )

  # these variables are used by <package>-config.in
  # typical values from autoconf:
  #   AM_CXXFLAGS = -O -ansi -pedantic -Wall -D_GNU_SOURCE
  #   CXXFLAGS = -g -O2
  #   CXX = g++
  #   CXXCPP = g++ -E
  #   CPPFLAGS = 
  #   CXXLD = $(CXX)
  #   AM_LDFLAGS = 
  #   LDFLAGS = 
  #   LIBS = 

  # automake/autoconf variables
  set( prefix      ${CMAKE_INSTALL_PREFIX} )
  set( exec_prefix "\${prefix}" )
  set( includedir  "\${prefix}/include" )
  set( configure_input "Generated by cmake" )

  ### autoconf variables typically do not have the path
  set( CXX ${CMAKE_BASE_NAME} )
  set( CXXCPP       "${CXX} -E" )
  if( ${CMAKE_BUILD_TYPE} MATCHES "Debug" )
     set( CXXFLAGS  ${CMAKE_CXX_FLAGS_DEBUG} )
  elseif( ${CMAKE_BUILD_TYPE} MATCHES "Release" )
     set( CXXFLAGS  ${CMAKE_CXX_FLAGS_RELEASE} )
  elseif( ${CMAKE_BUILD_TYPE} MATCHES "RelWithDebInfo" )
     set( CXXFLAGS  ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} )
  elseif( ${CMAKE_BUILD_TYPE} MATCHES "MinSizeRel" )
     set( CXXFLAGS  ${CMAKE_CXX_FLAGS_MINSIZEREL} )
  endif()
  ##message( STATUS "build type ${CMAKE_BUILD_TYPE} has ${CXXFLAGS}")
  set( AM_CXXFLAGS  ${CMAKE_CXX_FLAGS} )
  set( LDFLAGS      ${CMAKE_MODULE_LINKER_FLAGS} )
  set( LIBS         "" )
  set( DIFF_Q       "diff -q -b" )

91
92
93
  if( CLHEP_DEBUG_MESSAGES )
    clhep_check_variable_names()
  endif()
94
95
96

endmacro( clhep_autoconf_variables )

97
98
macro( _clhep_verify_cxx11 )
  if( ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" )
99
100
    if( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.5 )
      message( FATAL_ERROR "CLHEP now requires c++11 support with clang 3.5 or later")
101
102
103
    else()
      set( HAVE_STDCXX true )
    endif()
104
  elseif( ${CMAKE_CXX_COMPILER_ID} STREQUAL "AppleClang" )
105
106
    if( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 6.0 )
      message( FATAL_ERROR "CLHEP now requires c++11 support with Apple Clang 6.0 or later")
107
108
109
    else()
      set( HAVE_STDCXX true )
    endif()
110
  elseif( ${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel" )
Lynn Garren's avatar
Lynn Garren committed
111
    if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 14.0)
112
      message( FATAL_ERROR "c++11 extension is not available for ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}")
113
114
115
116
    else()
      set( HAVE_STDCXX true )
    endif()
  elseif(CMAKE_COMPILER_IS_GNUCXX)
Lynn Garren's avatar
Lynn Garren committed
117
118
    if( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8 )
      message( FATAL_ERROR "CLHEP now requires c++11 support with gcc 4.8 or later")
Lynn Garren's avatar
Lynn Garren committed
119
    else()
120
      set( HAVE_STDCXX true )
Lynn Garren's avatar
Lynn Garren committed
121
    endif()
122
123
  else()
    message(STATUS "clhep_set_compiler_flags: Do not know how to set c++11 extensions for ${CMAKE_CXX_COMPILER_ID}")
Lynn Garren's avatar
Lynn Garren committed
124
  endif()
125
126
127
128
129
130
131
132
133
endmacro( _clhep_verify_cxx11 )

macro( _clhep_verify_cxx1y )
  if( ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" )
    if( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.5 )
      message( FATAL_ERROR "c++1y extension is not available for ${CMAKE_CXX_COMPILER_ID}${CMAKE_CXX_COMPILER_VERSION}")
    else()
      set( HAVE_STDCXX true )
    endif()
134
  elseif( ${CMAKE_CXX_COMPILER_ID} STREQUAL "AppleClang" )
135
    if( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 6.0 )
136
137
138
139
      message( FATAL_ERROR "c++1y extension is not available for ${CMAKE_CXX_COMPILER_ID}${CMAKE_CXX_COMPILER_VERSION}")
    else()
      set( HAVE_STDCXX true )
    endif()
140
141
142
143
144
145
  elseif( ${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel" )
    if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15.0)
      message( FATAL_ERROR "c++11 extension is not available for ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}")
    else()
      set( HAVE_STDCXX true )
    endif()
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
  elseif(CMAKE_COMPILER_IS_GNUCXX)
    if( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9 )
      message( FATAL_ERROR "c++1y extension is not available for ${CMAKE_CXX_COMPILER}")
    else()
      set( HAVE_STDCXX true )
    endif()
  else()
    message(STATUS "clhep_set_compiler_flags: Do not know how to set c++1y extensions for ${CMAKE_CXX_COMPILER_ID}")
  endif()
endmacro( _clhep_verify_cxx1y )

macro( _clhep_verify_cxx14 )
  if( ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" )
    if( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.5 )
      message( FATAL_ERROR "c++14 extension is not available for ${CMAKE_CXX_COMPILER_ID}${CMAKE_CXX_COMPILER_VERSION}")
    else()
      set( HAVE_STDCXX true )
    endif()
164
  elseif( ${CMAKE_CXX_COMPILER_ID} STREQUAL "AppleClang" )
165
    if( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 6.0 )
166
167
168
169
      message( FATAL_ERROR "c++14 extension is not available for ${CMAKE_CXX_COMPILER_ID}${CMAKE_CXX_COMPILER_VERSION}")
    else()
      set( HAVE_STDCXX true )
    endif()
170
171
  elseif( ${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel" )
    if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16.0)
172
      message( FATAL_ERROR "c++14 extension is not available for ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}")
173
174
175
    else()
      set( HAVE_STDCXX true )
    endif()
176
177
178
179
180
181
182
183
184
185
186
187
  elseif(CMAKE_COMPILER_IS_GNUCXX)
    if( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9 )
      message( FATAL_ERROR "c++14 extension is not available for ${CMAKE_CXX_COMPILER}")
    else()
      set( HAVE_STDCXX true )
    endif()
  else()
    message(STATUS "clhep_set_compiler_flags: Do not know how to set c++14 extensions for ${CMAKE_CXX_COMPILER_ID}")
  endif()
endmacro( _clhep_verify_cxx14 )

macro( _clhep_check_cxxstd )
Lynn Garren's avatar
Lynn Garren committed
188
189
190
191
192
193
194
  if( CLHEP_DEBUG_MESSAGES )
    message(STATUS "_clhep_check_cxxstd debug: CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}")
    message(STATUS "_clhep_check_cxxstd debug: CMAKE_CXX_COMPILER_ID: ${CMAKE_CXX_COMPILER_ID}")
    message(STATUS "_clhep_check_cxxstd debug: CMAKE_CXX_COMPILER_VERSION: ${CMAKE_CXX_COMPILER_VERSION}")
    message(STATUS "_clhep_check_cxxstd debug: CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
    message(STATUS "_clhep_check_cxxstd debug: CLHEP_BUILD_CXXSTD: ${CLHEP_BUILD_CXXSTD}")
  endif( CLHEP_DEBUG_MESSAGES )
195
196
  set( HAVE_STDCXX )
  if( "${CLHEP_BUILD_CXXSTD}" STREQUAL "-std=c++0x" )
197
    message( FATAL_ERROR "The c++0x extension is no longer supported.  Please use c++11 or later.")
198
199
200
201
202
203
  elseif( "${CLHEP_BUILD_CXXSTD}" STREQUAL "-std=c++11" )
    _clhep_verify_cxx11()
  elseif( "${CLHEP_BUILD_CXXSTD}" STREQUAL "-std=c++1y" )
    _clhep_verify_cxx1y()
  elseif( "${CLHEP_BUILD_CXXSTD}" STREQUAL "-std=c++14" )
    _clhep_verify_cxx14()
204
205
  elseif( DEFINED CLHEP_BUILD_CXXSTD )
    message( FATAL_ERROR "${CLHEP_BUILD_CXXSTD} is not supported.  Supported extensions are c++11, c++1y, and c++14.")
206
207
208
209
210
211
212
213
  else()
    # presume -std=c++11
    set(CLHEP_BUILD_CXXSTD "-std=c++11")
    _clhep_verify_cxx11( )
  endif()
  ##message(STATUS "_clhep_check_cxxstd debug: CLHEP_BUILD_CXXSTD HAVE_STDCXX: ${CLHEP_BUILD_CXXSTD} ${HAVE_STDCXX}")
  if( DEFINED HAVE_STDCXX )
    if( ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" )
Lynn Garren's avatar
Lynn Garren committed
214
	set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CLHEP_BUILD_CXXSTD}" )
215
216
    elseif( ${CMAKE_CXX_COMPILER_ID} STREQUAL "AppleClang" )
	set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CLHEP_BUILD_CXXSTD}" )
217
    elseif( ${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel" )
Lynn Garren's avatar
Lynn Garren committed
218
	set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CLHEP_BUILD_CXXSTD}" )
219
    elseif(CMAKE_COMPILER_IS_GNUCXX)
Lynn Garren's avatar
Lynn Garren committed
220
	set( CMAKE_CXX_FLAGS "${CLHEP_BUILD_CXXSTD} ${CMAKE_CXX_FLAGS} -D_GNU_SOURCE" )
221
    else()
Lynn Garren's avatar
Lynn Garren committed
222
      message(STATUS "clhep_set_compiler_flags: Do not know how to set ${CLHEP_BUILD_CXXSTD} extensions for ${CMAKE_CXX_COMPILER_ID}")
223
224
    endif()
  endif()
Lynn Garren's avatar
Lynn Garren committed
225
226
endmacro( _clhep_check_cxxstd )

227
macro( _clhep_use_pthread )
228
229
230
231
232
233
234
235
236
237
238
    set(CLHEP_THREAD_DEFINITION "#define CLHEP_THREAD_LOCAL thread_local")
    set(THREADS_PREFER_PTHREAD_FLAG ON)
    find_package(Threads)
    ##message(STATUS "clhep_set_compiler_flags debug: CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
    message(STATUS "cmake build type is ${CMAKE_BUILD_TYPE}")
    if(THREADS_HAVE_PTHREAD_ARG) 
      set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread" )
    elseif(CMAKE_COMPILER_IS_GNUCXX)
      # needed when building with gcc on OSX
      set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread" )
    endif()
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
endmacro( _clhep_use_pthread )

macro( clhep_set_compiler_flags )
  ##message(STATUS "incoming cmake build type is ${CMAKE_BUILD_TYPE}")
  if(NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "" FORCE)
  endif()
  _clhep_check_cxxstd()
  # find pthread
  if(CLHEP_SINGLE_THREAD)
    set(CLHEP_THREAD_DEFINITION "#define CLHEP_THREAD_LOCAL")
  elseif(CMAKE_COMPILER_IS_GNUCXX)
    _clhep_use_pthread()
  elseif( ${CMAKE_CXX_COMPILER_ID} STREQUAL "AppleClang" )
    if( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.0 )
      set(CLHEP_THREAD_DEFINITION "#define CLHEP_THREAD_LOCAL")
    else()
      _clhep_use_pthread()
    endif()
258
259
260
261
262
263
  elseif( ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" )
    if( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.5 )
      set(CLHEP_THREAD_DEFINITION "#define CLHEP_THREAD_LOCAL")
    else()
      _clhep_use_pthread()
    endif()
264
265
  elseif( ${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel" )
    _clhep_use_pthread()
266
267
  else()
    set(CLHEP_THREAD_DEFINITION "#define CLHEP_THREAD_LOCAL")
268
269
270
  endif()
  if( CLHEP_DEBUG_MESSAGES )
    message(STATUS "enable c++11 extensions: ${CMAKE_CXX_FLAGS}")
Lynn Garren's avatar
Lynn Garren committed
271
  endif()
272
273
274
275
276
  if( CLHEP_DEBUG_MESSAGES )
    message(STATUS "clhep_set_compiler_flags debug: CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
    message(STATUS "clhep_set_compiler_flags debug: cmake compilers ${CMAKE_CXX_COMPILER} ${CMAKE_C_COMPILER}")
  endif( CLHEP_DEBUG_MESSAGES )
  if( CLHEP_DEBUG_MESSAGES )
277
    message(STATUS "using compiler ${CMAKE_CXX_COMPILER_ID}")
278
  endif( CLHEP_DEBUG_MESSAGES )
279
  if( ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" )
Lynn Garren's avatar
Lynn Garren committed
280
    set(CMAKE_C_FLAGS "-O -pedantic -Wall ${CMAKE_C_FLAGS}")
281
282
  elseif( ${CMAKE_CXX_COMPILER_ID} STREQUAL "AppleClang" )
    set(CMAKE_C_FLAGS "-O -pedantic -Wall ${CMAKE_C_FLAGS}")
283
284
  elseif( ${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel" )
    set(CMAKE_C_FLAGS "-O -ansi -pedantic -Wall {CMAKE_C_FLAGS}")
Lynn Garren's avatar
Lynn Garren committed
285
    set(CMAKE_CXX_FLAGS "-O -ansi -pedantic -Wall ${CMAKE_CXX_FLAGS}")
Lynn Garren's avatar
Lynn Garren committed
286
  elseif( CMAKE_COMPILER_IS_GNUCC )
Lynn Garren's avatar
Lynn Garren committed
287
    set(CMAKE_C_FLAGS "-O -ansi -pedantic -Wall -D_GNU_SOURCE ${CMAKE_C_FLAGS}")
Lynn Garren's avatar
Lynn Garren committed
288
  endif()
289
  if( ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" )
Lynn Garren's avatar
Lynn Garren committed
290
    set(CMAKE_CXX_FLAGS "-O -pedantic -Wall ${CMAKE_CXX_FLAGS}")
291
292
  elseif( ${CMAKE_CXX_COMPILER_ID} STREQUAL "AppleClang" )
    set(CMAKE_CXX_FLAGS "-O -pedantic -Wall ${CMAKE_CXX_FLAGS}")
Lynn Garren's avatar
Lynn Garren committed
293
  elseif(CMAKE_COMPILER_IS_GNUCXX)
Lynn Garren's avatar
Lynn Garren committed
294
    set(CMAKE_CXX_FLAGS "-O -ansi -pedantic -Wall -D_GNU_SOURCE ${CMAKE_CXX_FLAGS}")
Lynn Garren's avatar
Lynn Garren committed
295
  endif()
296
    message(STATUS "clhep_set_compiler_flags debug: CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
Lynn Garren's avatar
Lynn Garren committed
297
298
299
300
301
302
303
304
  # linker flags
    if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
      set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-undefined,error")
    else()
      set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined")
    endif()
  message(STATUS "setting CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS}")
  # override flags for Windows cl
Lynn Garren's avatar
Lynn Garren committed
305
306
307
308
309
310
  if( ${CMAKE_SYSTEM_NAME} MATCHES "Windows" )
    ##message( STATUS "system is Windows" )
    ##message( STATUS "CMAKE_BASE_NAME is ${CMAKE_BASE_NAME}" )
    if( ${CMAKE_BASE_NAME} MATCHES "cl" )
      ##message( STATUS "compiler is MSVC" )
      ##message( STATUS "incoming basic compiler flags are ${CMAKE_CXX_FLAGS}")
311
312
      set(CMAKE_C_FLAGS "/EHsc /nologo /GR /MD /D USING_VISUAL")
      set(CMAKE_CXX_FLAGS "/EHsc /nologo /GR /MD /D USING_VISUAL")
Lynn Garren's avatar
Lynn Garren committed
313
      set(CMAKE_SHARED_LINKER_FLAGS "/EHsc /nologo /GR /MD /D USING_VISUAL")
Lynn Garren's avatar
Lynn Garren committed
314
315
316
    endif()
  endif()
  clhep_autoconf_variables()
317
  message( STATUS "compiling with ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_FLAGS} ${CXXFLAGS}")
Lynn Garren's avatar
Lynn Garren committed
318
319
endmacro( clhep_set_compiler_flags )

320
321
322
323
324
325
326
327
macro( clhep_package_config_no_lib )
  set( ${PACKAGE}_CPPFLAGS "-I${includedir}" )
  set( ${PACKAGE}_LDFLAGS  " " )
  set( ${PACKAGE}_LIBS     " " )
  configure_file ( ${CLHEP_SOURCE_DIR}/${PACKAGE}/${PACKAGE}-config.in
                   ${CLHEP_BINARY_DIR}/${PACKAGE}/${PACKAGE}-config @ONLY )
  ## don't install <package>-config on Windows
  if( NOT ${CMAKE_SYSTEM_NAME} MATCHES "Windows" )
328
    install ( PROGRAMS ${CLHEP_BINARY_DIR}/${PACKAGE}/${PACKAGE}-config
329
330
331
332
333
              DESTINATION bin
	    )
  endif()
endmacro( clhep_package_config_no_lib )

334
335
macro( clhep_package_config )
  set( ${PACKAGE}_CPPFLAGS "-I${includedir}" )
Lynn Garren's avatar
Lynn Garren committed
336
  set( ${PACKAGE}_LDFLAGS  "-L\${exec_prefix}/lib${LIB_SUFFIX}" )
337
338
339
340
341
342
343
344
345
346
347
  set( ${PACKAGE}_LIBS     "-lCLHEP-${PACKAGE}-${VERSION}" )
  if( ${PACKAGE}_DEPS )
     foreach ( dep ${${PACKAGE}_DEPS} )
        message( STATUS "${PACKAGE} depends on ${dep}")
	set( ${PACKAGE}_LIBS     "${${PACKAGE}_LIBS} -lCLHEP-${dep}-${VERSION}" )
     endforeach()
  endif()
  configure_file ( ${CLHEP_SOURCE_DIR}/${PACKAGE}/${PACKAGE}-config.in
                   ${CLHEP_BINARY_DIR}/${PACKAGE}/${PACKAGE}-config @ONLY )
  configure_file ( ${CLHEP_SOURCE_DIR}/${PACKAGE}/${PACKAGE}-deps.in
                   ${CLHEP_BINARY_DIR}/${PACKAGE}/${PACKAGE}-deps @ONLY )
Lynn Garren's avatar
Lynn Garren committed
348
349
  ## don't install <package>-config on Windows
  if( NOT ${CMAKE_SYSTEM_NAME} MATCHES "Windows" )
350
    install ( PROGRAMS ${CLHEP_BINARY_DIR}/${PACKAGE}/${PACKAGE}-config
351
352
              DESTINATION bin
	    )
Lynn Garren's avatar
Lynn Garren committed
353
  endif()
354
endmacro( clhep_package_config )
Lynn Garren's avatar
Lynn Garren committed
355

Lynn Garren's avatar
Lynn Garren committed
356
357
358
359
360
macro( clhep_config )
  configure_file ( ${CLHEP_SOURCE_DIR}/clhep-config.in
                   ${CLHEP_BINARY_DIR}/clhep-config @ONLY )
  ## don't install clhep-config on Windows
  if( NOT ${CMAKE_SYSTEM_NAME} MATCHES "Windows" )
361
    install ( PROGRAMS ${CLHEP_BINARY_DIR}/clhep-config
362
363
              DESTINATION bin
	    )
Lynn Garren's avatar
Lynn Garren committed
364
365
  endif()
endmacro( clhep_config )
366

Lynn Garren's avatar
Lynn Garren committed
367
macro( _clhep_lib_suffix_64 )
Lynn Garren's avatar
Lynn Garren committed
368
369
370
371
372
373
374
375
376
377
  if( APPLE )
    #message(STATUS "checking LIB_SUFFIX ${LIB_SUFFIX} against ${CMAKE_SYSTEM_PROCESSOR} and ${CMAKE_OSX_ARCHITECTURES}")
    # On Mac, we use NAME-ARCH, but ARCH is 'Universal' if more than
    # one arch is built for. Note that falling back to use
    # CMAKE_SYSTEM_PROCESSOR may *not* be 100% reliable.
    list(LENGTH CMAKE_OSX_ARCHITECTURES _number_of_arches)
    if(NOT _number_of_arches)
      # - Default
      if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64")
        # building for 64bit
Lynn Garren's avatar
Lynn Garren committed
378
      else()
Lynn Garren's avatar
Lynn Garren committed
379
380
        message(STATUS "WARNING: LIB_SUFFIX ${LIB_SUFFIX} inappropriate for this build")
	set(LIB_SUFFIX "")
Lynn Garren's avatar
Lynn Garren committed
381
      endif()
Lynn Garren's avatar
Lynn Garren committed
382
383
    elseif(_number_of_arches GREATER 1)
      # - Universal
Lynn Garren's avatar
Lynn Garren committed
384
    else()
Lynn Garren's avatar
Lynn Garren committed
385
386
387
      # - Use what the user specified
      if (${CMAKE_OSX_ARCHITECTURES} STREQUAL "x86_64")
        # building for 64bit
388
      else()
Lynn Garren's avatar
Lynn Garren committed
389
390
        message(STATUS "WARNING: LIB_SUFFIX ${LIB_SUFFIX} inappropriate for this build")
	set(LIB_SUFFIX "")
391
      endif()
Lynn Garren's avatar
Lynn Garren committed
392
    endif()
Lynn Garren's avatar
Lynn Garren committed
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
  elseif( ${CMAKE_SYSTEM_NAME} MATCHES "Windows" )
    #message(STATUS "checking LIB_SUFFIX ${LIB_SUFFIX} against ${CMAKE_SYSTEM_PROCESSOR} ")
    if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86")
      # building for 64bit
    else()
      message(STATUS "WARNING: LIB_SUFFIX ${LIB_SUFFIX} inappropriate for this build")
      set(LIB_SUFFIX "")
    endif()
  else()
    #message(STATUS "checking LIB_SUFFIX ${LIB_SUFFIX} against ${CMAKE_SYSTEM_PROCESSOR} ")
    if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64")
      # building for 64bit
    else()
      message(STATUS "WARNING: LIB_SUFFIX ${LIB_SUFFIX} inappropriate for this build")
      set(LIB_SUFFIX "")
    endif()
  endif()
Lynn Garren's avatar
Lynn Garren committed
410
411
412
endmacro( _clhep_lib_suffix_64 )

macro( _clhep_lib_suffix_32 )
Lynn Garren's avatar
Lynn Garren committed
413
414
415
416
417
418
419
420
421
422
  if( APPLE )
    #message(STATUS "checking LIB_SUFFIX ${LIB_SUFFIX} against ${CMAKE_SYSTEM_PROCESSOR} and ${CMAKE_OSX_ARCHITECTURES}")
    # On Mac, we use NAME-ARCH, but ARCH is 'Universal' if more than
    # one arch is built for. Note that falling back to use
    # CMAKE_SYSTEM_PROCESSOR may *not* be 100% reliable.
    list(LENGTH CMAKE_OSX_ARCHITECTURES _number_of_arches)
    if(NOT _number_of_arches)
      # - Default
      if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "i386")
        # building for 32bit
Lynn Garren's avatar
Lynn Garren committed
423
      else()
Lynn Garren's avatar
Lynn Garren committed
424
425
        message(STATUS "WARNING: LIB_SUFFIX ${LIB_SUFFIX} inappropriate for this build")
	set(LIB_SUFFIX "")
Lynn Garren's avatar
Lynn Garren committed
426
      endif()
Lynn Garren's avatar
Lynn Garren committed
427
428
    elseif(_number_of_arches GREATER 1)
      # - Universal
Lynn Garren's avatar
Lynn Garren committed
429
    else()
Lynn Garren's avatar
Lynn Garren committed
430
431
432
      # - Use what the user specified
      if (${CMAKE_OSX_ARCHITECTURES} STREQUAL "i386")
        # building for 32bit
433
      else()
Lynn Garren's avatar
Lynn Garren committed
434
435
        message(STATUS "WARNING: LIB_SUFFIX ${LIB_SUFFIX} inappropriate for this build")
	set(LIB_SUFFIX "")
436
      endif()
Lynn Garren's avatar
Lynn Garren committed
437
    endif()
Lynn Garren's avatar
Lynn Garren committed
438
439
440
441
442
443
444
445
446
447
448
  else()
    #message(STATUS "checking LIB_SUFFIX ${LIB_SUFFIX} against ${CMAKE_SYSTEM_PROCESSOR} ")
    if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "i686")
      # building for 32bit
    elseif (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "i386")
      # building for 32bit
    else()
      message(STATUS "WARNING: LIB_SUFFIX ${LIB_SUFFIX} inappropriate for this build")
      set(LIB_SUFFIX "")
    endif()
  endif()
Lynn Garren's avatar
Lynn Garren committed
449
450
451
452
453
454
455
456
endmacro( _clhep_lib_suffix_32 )

macro( clhep_lib_suffix )
  if(LIB_SUFFIX)
    if ( ${LIB_SUFFIX} STREQUAL "64" )
      _clhep_lib_suffix_64()
    elseif( ${LIB_SUFFIX} STREQUAL "32" )
      _clhep_lib_suffix_32()
457
458
    endif()
  endif()
Lynn Garren's avatar
Lynn Garren committed
459
  message(STATUS "libraries will be installed in $ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}")
460
endmacro( clhep_lib_suffix )
Lynn Garren's avatar
Lynn Garren committed
461
462
463
464
465
466

macro( clhep_enable_asserts )
  string(REGEX REPLACE "-DNDEBUG" " " CXXFLAGS "${CXXFLAGS}" )
  string(TOUPPER ${CMAKE_BUILD_TYPE} BTYPE_UC )
  string(REGEX REPLACE "-DNDEBUG" " " CMAKE_CXX_FLAGS_${BTYPE_UC} "${CMAKE_CXX_FLAGS_${BTYPE_UC}}" )
endmacro( clhep_enable_asserts )