CMakeLists.txt 4.25 KB
Newer Older
Stezowski Olivier's avatar
Stezowski Olivier committed
1 2
# CMake for GammaWare/ADFE
# O. Stezowski
3 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
project (adfe)
#
MESSAGE("[GW]  + root/${PROJECT_NAME}")
#
#
set(GWLIBNAME GWADFE)
#
# 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
	TTreeWatchers
	FrameDispatcher
	Watchers
)
set( without_dictionnaries
27
	WatcherProducer
Stezowski Olivier's avatar
Stezowski Olivier committed
28 29 30 31 32 33
	BasicReplica
	BaseEmulator
	AnActorConnection
	ALoadedActor
	RootAFP
	DEmulator
34
    ReadMezzAFP
Stezowski Olivier's avatar
Stezowski Olivier committed
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
)	
# 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} )
56 57
	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
58
endforeach()
59 60 61 62 63 64 65 66 67 68 69 70 71 72
#
# Dictionnary from one file only 'a la ROOT' + internal and external dependencies
#
if ( RDICTIONNARY EQUAL 1 )
    ROOT_GENERATE_DICTIONARY(G__${GWLIBNAME} ${headers} MODULE ${GWLIBNAME} LINKDEF ${CMAKE_CURRENT_SOURCE_DIR}/LinkDef.h OPTIONS "")
    set( EXTRA_EXTERNAL_LIBRARIES Core Graf MathCore Gpad Hist Tree RIO Thread Net TreePlayer)
    # MESSAGE("[GW-CLING]")
else ()
    ROOT_GENERATE_DICTIONARY(G__${GWLIBNAME} ${headers} LINKDEF ${CMAKE_CURRENT_SOURCE_DIR}/LinkDef.h)
    set( EXTRA_EXTERNAL_LIBRARIES Core Graf MathCore Gpad Hist Tree RIO Thread Net TreePlayer)
    # MESSAGE("[GW-CINT]")
endif()
set(EXTRA_INTERNAL_LIBRARIES GWCORE GWADF GWPHYSICS)

Stezowski Olivier's avatar
Stezowski Olivier committed
73 74 75 76 77 78 79 80 81 82 83
#
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 
#
84 85 86 87 88 89 90
if ( with_dictionnaries )
    ROOT_LINKER_LIBRARY(${GWLIBNAME} ${sources} G__${GWLIBNAME}.cxx DEPENDENCIES ${EXTRA_INTERNAL_LIBRARIES} ${EXTRA_EXTERNAL_LIBRARIES})
    ROOT_GENERATE_ROOTMAP(${GWLIBNAME} LINKDEF ${CMAKE_CURRENT_SOURCE_DIR}/LinkDef.h DEPENDENCIES ${EXTRA_INTERNAL_LIBRARIES} ${EXTRA_EXTERNAL_LIBRARIES})
else ()
    ROOT_LINKER_LIBRARY(${GWLIBNAME} ${sources} DEPENDENCIES ${EXTRA_INTERNAL_LIBRARIES} ${EXTRA_EXTERNAL_LIBRARIES})
endif()

Stezowski Olivier's avatar
Stezowski Olivier committed
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
#
# copy headers file in a single directory	so that is becomes available for ohers 
#	 	
# 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)
#
114 115 116 117 118 119 120 121
install(FILES ${headers} DESTINATION ${GW_INCLUDE_DIR} COMPONENT headers )
if ( with_dictionnaries )
    if ( RDICTIONNARY EQUAL 1 )
        install(FILES ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/lib${GWLIBNAME}_rdict.pcm DESTINATION lib COMPONENT libraries )
    endif()
    install(FILES ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/lib${GWLIBNAME}.rootmap DESTINATION lib COMPONENT libraries )
endif()

Stezowski Olivier's avatar
Stezowski Olivier committed
122 123 124 125