CMakeLists.txt 3.66 KB
Newer Older
Stezowski Olivier's avatar
Stezowski Olivier committed
1 2 3
# CMake for GammaWare/DEPRECATED
# O. Stezowski
#
4 5 6 7 8
# To add a file, add it in the with_dictionnary list or in the without_dictionnary list depending
#  whether or not the ROOT dictionnary is to be generated.
#  !! Do not forget to fill the LinkDef file !!
#  !! Do not forget to add EXTRA_INTERNAL_LIBRARIES and EXTRA_EXTERNAL_LIBRARIES with the names of the libraries this one relies on !!
#
Stezowski Olivier's avatar
Stezowski Olivier committed
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
project (deprecated)
#
MESSAGE("[GW] + ${PROJECT_NAME}")
#
#
set(GWLIBNAME GWDEPRECATED)
#
# headers / dictionnary / sources 
# 
# so far no automatic methods for computing which class has a dictionnary or not
# manual method : base file name separated in two lists with different treatment.
#
set( with_dictionnaries
	Peak
	PeakFitter
	ClickCollector
	Events
)
set( without_dictionnaries
)
# add includes : root + current (before to have the latest) + all gw includes copied in CMAKE_BINARY_DIR/include 
#
include_directories(${ROOT_INCLUDES})
include_directories(${CMAKE_BINARY_DIR}/include)
include_directories(BEFORE ${CMAKE_CURRENT_SOURCE_DIR})
#
set (ALL_GW_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_BINARY_DIR}/include ${ROOT_INCLUDES}) 
#
link_directories(${ROOT_LIBRARY_DIR})
link_directories(${CMAKE_LIBRARY_OUTPUT_DIRECTORY})	
#
# headers / linkdef etc ... 
#
set(headers "")
set(all_headers "")
set(sources "")
#
# set headers/ etc and generate dictionnary for the files which require it 
#
foreach( f ${with_dictionnaries} )
49 50
	set(sources ${sources} ${CMAKE_CURRENT_SOURCE_DIR}/${f}.cpp)
	set(headers ${headers} ${CMAKE_CURRENT_SOURCE_DIR}/${f}.h)
Stezowski Olivier's avatar
Stezowski Olivier committed
51
endforeach()
52 53 54
#
# Dictionnary from one file only 'a la ROOT' + internal and external dependencies
#
55 56 57
ROOT_GENERATE_DICTIONARY(G__${GWLIBNAME} ${headers} MODULE ${GWLIBNAME} LINKDEF ${CMAKE_CURRENT_SOURCE_DIR}/LinkDef.h OPTIONS "")

set(EXTRA_INTERNAL_LIBRARIES GWCORE)
58

Stezowski Olivier's avatar
Stezowski Olivier committed
59 60 61 62 63 64 65 66 67 68 69
#
foreach( f ${without_dictionnaries} )
	set(sources ${sources} ${CMAKE_CURRENT_SOURCE_DIR}/${f}.cpp)
	set(headers ${headers} ${CMAKE_CURRENT_SOURCE_DIR}/${f}.h)	
endforeach()
#

#----------------------------------------------------------------------------
#
# Use root functions to generate the library and the root map file 
#
70 71 72 73 74 75
if ( with_dictionnaries )
    ROOT_LINKER_LIBRARY(${GWLIBNAME} ${sources} G__${GWLIBNAME}.cxx LIBRARIES ${EXTRA_INTERNAL_LIBRARIES} ${EXTRA_EXTERNAL_LIBRARIES})
    ROOT_GENERATE_ROOTMAP(${GWLIBNAME} LINKDEF ${linkdefs} DEPENDENCIES ${EXTRA_INTERNAL_LIBRARIES} ${EXTRA_EXTERNAL_LIBRARIES})
else ()
    ROOT_LINKER_LIBRARY(${GWLIBNAME} ${sources} DEPENDENCIES ${EXTRA_EXTERNAL_LIBRARIES})
endif()
Stezowski Olivier's avatar
Stezowski Olivier committed
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
#
# copy headers file in a single directory	so that is becomes available for ohers sub-projects
#	 	
# because cmake2.6 does not provide COPY in file, do it another way
if( ${CMAKE_VERSION} VERSION_GREATER "2.8.0" )
  file(COPY ${headers} DESTINATION ${CMAKE_BINARY_DIR}/include)	
else()
  if ( EXISTS ${CMAKE_BINARY_DIR}/include )
  else()
    execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/include/ )
  endif()
  foreach ( f ${headers} )
    execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${f} ${CMAKE_BINARY_DIR}/include/ )
  endforeach()
endif()	
#		
# Install lib and headers 
#
install(TARGETS ${GWLIBNAME} RUNTIME DESTINATION bin
								LIBRARY DESTINATION lib
								ARCHIVE DESTINATION lib
								COMPONENT libraries)
#
99 100
install(FILES ${headers} DESTINATION ${GW_INCLUDE_DIR} COMPONENT headers )
if ( with_dictionnaries )
101
    install(FILES ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/lib${GWLIBNAME}_rdict.pcm DESTINATION lib COMPONENT libraries )
102 103 104
    install(FILES ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/lib${GWLIBNAME}.rootmap DESTINATION lib COMPONENT libraries )
endif()

Stezowski Olivier's avatar
Stezowski Olivier committed
105 106 107 108