Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion bindings/pyroot/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
############################################################################
include_directories(${PYTHON_INCLUDE_DIRS})

ROOT_GENERATE_DICTIONARY(G__PyROOT *.h MODULE PyROOT LINKDEF LinkDef.h OPTIONS "-writeEmptyRootPCM")
ROOT_GENERATE_DICTIONARY(G__PyROOT *.h MODULE PyROOT LINKDEF LinkDef.h OPTIONS "-writeEmptyRootPCM" DEPENDENCIES Core MathCore)

ROOT_ADD_CXX_FLAG(CMAKE_CXX_FLAGS -fno-strict-aliasing)
ROOT_ADD_CXX_FLAG(CMAKE_CXX_FLAGS -Wno-parentheses-equality)
Expand Down
2 changes: 1 addition & 1 deletion bindings/r/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ set(R_HEADERS ${CMAKE_SOURCE_DIR}/bindings/r/inc/TRInterface.h
${CMAKE_SOURCE_DIR}/bindings/r/inc/TRDataFrame.h
${CMAKE_SOURCE_DIR}/bindings/r/inc/RExports.h)

ROOT_GENERATE_DICTIONARY(G__RInterface ${R_HEADERS} MODULE ${libname} LINKDEF LinkDef.h)
ROOT_GENERATE_DICTIONARY(G__RInterface ${R_HEADERS} MODULE ${libname} LINKDEF LinkDef.h DEPENDENCIES Core Matrix Thread RIO)
ROOT_LINKER_LIBRARY(RInterface *.cxx G__RInterface.cxx LIBRARIES ${R_LIBRARIES} DEPENDENCIES Core Matrix Thread RIO readline)

ROOT_INSTALL_HEADERS()
2 changes: 1 addition & 1 deletion bindings/ruby/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
############################################################################
include_directories(${RUBY_INCLUDE_DIRS})

ROOT_GENERATE_DICTIONARY(G__Ruby *.h MODULE Ruby LINKDEF LinkDef.h)
ROOT_GENERATE_DICTIONARY(G__Ruby *.h MODULE Ruby LINKDEF LinkDef.h DEPENDENCIES Hist MathCore)


ROOT_LINKER_LIBRARY(Ruby *.cxx G__Ruby.cxx LIBRARIES ${RUBY_LIBRARY} ${CMAKE_DL_LIBS} DEPENDENCIES Hist MathCore)
Expand Down
43 changes: 41 additions & 2 deletions cmake/modules/RootNewMacros.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -207,10 +207,11 @@ endmacro()

#---------------------------------------------------------------------------------------------------
#---ROOT_GENERATE_DICTIONARY( dictionary headerfiles MODULE module DEPENDENCIES dep1 dep2
# BUILTINS dep1 dep2
# STAGE1 LINKDEF linkdef OPTIONS opt1 opt2 ...)
#---------------------------------------------------------------------------------------------------
function(ROOT_GENERATE_DICTIONARY dictionary)
CMAKE_PARSE_ARGUMENTS(ARG "STAGE1;MULTIDICT;NOINSTALL" "MODULE" "LINKDEF;OPTIONS;DEPENDENCIES" ${ARGN})
CMAKE_PARSE_ARGUMENTS(ARG "STAGE1;MULTIDICT;NOINSTALL" "MODULE" "LINKDEF;OPTIONS;DEPENDENCIES;BUILTINS" ${ARGN})

# Check if OPTIONS start with a dash.
if (ARG_OPTIONS)
Expand Down Expand Up @@ -379,12 +380,22 @@ function(ROOT_GENERATE_DICTIONARY dictionary)
if (cxxmodules)
set(genverbosity "-v2")
endif(cxxmodules)

set(module_dependencies "")
foreach(dep ${ARG_DEPENDENCIES})
if(TARGET ROOTCLING_${dep})
set(module_dependencies ${module_dependencies} ROOTCLING_${dep})
else()
set(module_dependencies ${module_dependencies} ${dep})
endif()
endforeach()

#---call rootcint------------------------------------------
add_custom_command(OUTPUT ${dictionary}.cxx ${pcm_name} ${rootmap_name}
COMMAND ${command} ${genverbosity} -f ${dictionary}.cxx ${newargs} ${excludepathsargs} ${rootmapargs}
${ARG_OPTIONS} ${definitions} ${includedirs} ${headerfiles} ${_linkdef}
IMPLICIT_DEPENDS ${_implicitdeps}
DEPENDS ${_list_of_header_dependencies} ${_linkdef} ${ROOTCINTDEP})
DEPENDS ${_list_of_header_dependencies} ${_linkdef} ${ROOTCINTDEP} ${ARG_DEPENDENCIES})
get_filename_component(dictname ${dictionary} NAME)

#---roottest compability
Expand All @@ -404,6 +415,28 @@ function(ROOT_GENERATE_DICTIONARY dictionary)
DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries)
endif()
endif()
# Create a target for this rootcling invocation based on the module name.
# We can use this in other ROOT_GENERATE_DICTIONARY that only care about
# the generation of PCMs without waiting on the whole module.
if(ARG_MODULE)
# If we have multiple modules with the same name, let's just attach the
# generation of this dictionary to the ROOTCLING_X target of the existing
# module. This happens for example with ROOTCLING_Smatrix which also comes
# in a "Smatrix32" version.
if (TARGET ROOTCLING_${ARG_MODULE})
add_dependencies(ROOTCLING_${ARG_MODULE} ${dictname})
else()
add_custom_target(ROOTCLING_${ARG_MODULE} DEPENDS ${dictname})
endif()
endif()

if(ARG_BUILTINS)
foreach(arg1 ${ARG_BUILTINS})
if(${arg1}_TARGET)
add_dependencies(${dictname} ${${arg1}_TARGET})
endif()
endforeach()
endif()
# FIXME: Support mulptiple dictionaries. In some cases (libSMatrix and
# libGenVector) we have to have two or more dictionaries (eg. for math,
# we need the two for double vs Double32_t template specializations).
Expand Down Expand Up @@ -560,6 +593,12 @@ function(ROOT_LINKER_LIBRARY library)
endif()
if(TARGET G__${library})
add_dependencies(${library} G__${library})
else()
# Uncomment to see if we maybe forgot to add a dependency between linking
# a dictionary and generating the G__*.cxx file. We can't have this by
# default because right now quite few dictionaries don't have the associated
# ROOT_GENERATE_DICTIONARY call that prevents this warning.
#message(AUTHOR_WARNING "Couldn't find target: " ${library} "\n Forgot to call ROOT_GENERATE_DICTIONARY?")
endif()
add_dependencies(${library} move_headers)
set_property(GLOBAL APPEND PROPERTY ROOT_EXPORTED_TARGETS ${library})
Expand Down
4 changes: 2 additions & 2 deletions core/clingutils/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,8 @@ foreach(dict ${stldicts})
string(REPLACE "2" "" header ${dict})
string(REPLACE "complex" "root_std_complex.h" header ${header})
string(REPLACE "multi" "" header ${header})
ROOT_GENERATE_DICTIONARY(G__std_${dict} ${header} STAGE1 MODULE ${dict}Dict LINKDEF src/${dict}Linkdef.h)
ROOT_LINKER_LIBRARY(${dict}Dict G__std_${dict}.cxx DEPENDENCIES Core)
ROOT_GENERATE_DICTIONARY(G__${dict}Dict ${header} STAGE1 MODULE ${dict}Dict LINKDEF src/${dict}Linkdef.h DEPENDENCIES Core)
ROOT_LINKER_LIBRARY(${dict}Dict G__${dict}Dict.cxx DEPENDENCIES Core)
endforeach()

#---Deal with LLVM resource here----------------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion core/dictgen/src/rootcling_impl.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -3218,7 +3218,7 @@ class tempFileNamesCatalog {
tempFileNamesCatalog(): m_size(0), m_emptyString("") {};

std::string getTmpFileName(const std::string &filename) {
return filename + "_tmp";
return filename + "_tmp_" + std::to_string(getpid());
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I find this problematic - this will mean we'll never fix the underlying build system issue that triggers concurrent invocations on the same dictionary. Could you add a note to the relevant Jira ticket https://sft.its.cern.ch/jira/browse/ROOT-8244 that this commit should be reverted once the issue is fixed?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This part can actually go away now, as far as I can tell. It was needed before because more than one process was trying to make the dictionaries, and one process would move the files of the other, causing a crash as seen here.

Copy link
Contributor Author

@Teemperor Teemperor Jul 11, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

According to the CMake bug tracker and the CMake mailing list, the underlying issue is a design flaw in Make (without GNU extensions) which prevents from coordinating the generation of custom_command targets between multiple jobs (this is also why Pere doesn't see this in Ninja). See the man page of "add_custom_command" which states that we should never depend on the output files directly, but instead on a custom target. If we don't do this, then the make jobs can't communicate who is responsible for this target and then produce it multiple times (usually twice from what I saw).

We already have this custom target in the current CMakeLists.txt, we just had the wrong dependencies based on it (because of the inconsistent naming). Those missing links are fixed in the commit about fixing the dependencies, which should prevent this issue in the way the CMake manual recommends (even though it seems they still make no guarantee that this works as intended on every platform).

I also added the commented out debug code which helps figuring out if dependencies are missing for rootcling invocations (the developer warnings are enabled by default in CMake, so there isn't a better way of doing this without spamming the compile log). This should fix the problem of "How do we debug this in the future" in a systematic (and better) way than hoping to find race conditions by trial-and-error and trying to increase the error-chance by using always the same file name.

Also, we should behave like every other generator/compiler which tries to further mitigate this problem by choosing process unique tmp names (see clang etc. with their FILE.o-UNIQUE names). We don't know if someone generates build files for something really obscure (e.g. Visual Studio or an old Make version) which chooses the target order in a different way (e.g. on the CMake mailing list people complained that VS seems to have yet another behavior for building these things1 ), so let's at least give those people at least some relief in the future by making it less likely that things blow up when building :).

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Teemperor Can you drop this commit from the PR? I think you agree it's not needed anymore, right?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@amadio I think I ninja'd you there :)

Copy link
Member

@Axel-Naumann Axel-Naumann Jul 12, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Teemperor

We don't know if someone generates build files for something really obscure (e.g. Visual Studio or an old Make version) which chooses the target order in a different way

That's not the issue.

What you're saying is that build systems might trigger concurrent commands to generate the same target. That's horrendous. It's a bug. It would mean e.g. that the same library is linked twice in parallel. I buy your argument that this is a consequence of your CMake-based configuration to use add_custom_command.

I'd hope that we can not use add_custom_command and instead use something that allows CMake to construct a proper dependency tree.

Can we keep the original tmp name, issue an warning message if that file exists and then go use a unique name? That would allows us to detect whether the build system is generating the same dictionary in multiple concurrent processes.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Axel-Naumann nope, no way around add_custom_command and add_custom_target here. LLVM is in the same situation with TableGen (even though I'm not sure if they do unique temp files). But we can easily check from CMake if someone forget to link to the custom_target as we have quite obvious naming conventions (and we further prevent this when we refactor most stuff to use the ROOT_STANDARD_WHATEVER function from RootNewMacros).

I prefer the first suggestion with reverting the "_tmp" commit before we start turning rootcling into a tool for checking our CMake build system files.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, @Teemperor . Anything that prevents CMake from spawning two rootcling processes to build the same product is majorly appreciated by anyone building with LLVM_BUILD_TYPE=Debug! :-)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Teemperor ping - can this be reverted so we see build system issues again?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Teemperor and/or should be it be replaced by a 'if already exist' fail?

}
/////////////////////////////////////////////////////////////////////////////
/// Adds the name and the associated temp name to the catalog.
Expand Down
2 changes: 1 addition & 1 deletion core/imt/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ set(sources base.cxx)

if (imt)
set(headers ROOT/TPoolManager.hxx ROOT/TThreadExecutor.hxx)
ROOT_GENERATE_DICTIONARY(G__Imt ${headers} STAGE1 MODULE Imt LINKDEF LinkDef.h) # For auto{loading,parsing}
ROOT_GENERATE_DICTIONARY(G__Imt ${headers} STAGE1 MODULE Imt LINKDEF LinkDef.h DEPENDENCIES Core Thread BUILTINS TBB) # For auto{loading,parsing}
set(sources ${sources} TImplicitMT.cxx TThreadExecutor.cxx TPoolManager.cxx G__Imt.cxx)
endif()

Expand Down
2 changes: 1 addition & 1 deletion core/multiproc/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ set(headers TMPClient.h MPSendRecv.h ROOT/TProcessExecutor.hxx TProcPool.h TMPWo

set(sources TMPClient.cxx MPSendRecv.cxx TProcessExecutor.cxx TMPWorker.cxx)

ROOT_GENERATE_DICTIONARY(G__MultiProc ${headers} MODULE MultiProc LINKDEF LinkDef.h)
ROOT_GENERATE_DICTIONARY(G__MultiProc ${headers} MODULE MultiProc LINKDEF LinkDef.h DEPENDENCIES Core Net Tree)

ROOT_OBJECT_LIBRARY(MultiProcObjs ${sources} G__MultiProc.cxx)
ROOT_LINKER_LIBRARY(MultiProc $<TARGET_OBJECTS:MultiProcObjs> DEPENDENCIES Core Net dl)
Expand Down
2 changes: 1 addition & 1 deletion core/rint/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# CMakeLists.txt file for building ROOT core/rint package
############################################################################

ROOT_GENERATE_DICTIONARY(G__Rint *.h STAGE1 MODULE Rint LINKDEF LinkDef.h OPTIONS "-writeEmptyRootPCM")
ROOT_GENERATE_DICTIONARY(G__Rint *.h STAGE1 MODULE Rint LINKDEF LinkDef.h OPTIONS "-writeEmptyRootPCM" DEPENDENCIES Core)

ROOT_LINKER_LIBRARY(Rint *.cxx G__Rint.cxx DEPENDENCIES Core)
ROOT_INSTALL_HEADERS()
2 changes: 1 addition & 1 deletion core/thread/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ else()
TWin32Thread.cxx TWin32ThreadFactory.cxx)
endif()

ROOT_GENERATE_DICTIONARY(G__Thread ${headers} STAGE1 MODULE Thread LINKDEF LinkDef.h)
ROOT_GENERATE_DICTIONARY(G__Thread ${headers} STAGE1 MODULE Thread LINKDEF LinkDef.h DEPENDENCIES Core)

ROOT_OBJECT_LIBRARY(ThreadObjs ${sources} G__Thread.cxx)
ROOT_LINKER_LIBRARY(Thread $<TARGET_OBJECTS:ThreadObjs> LIBRARIES ${CMAKE_THREAD_LIBS_INIT} DEPENDENCIES Core BUILTINS)
Expand Down
2 changes: 1 addition & 1 deletion geom/gdml/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# CMakeLists.txt file for building ROOT geom/gdml package
############################################################################

ROOT_GENERATE_DICTIONARY(G__Gdml *.h MODULE Gdml LINKDEF LinkDef.h)
ROOT_GENERATE_DICTIONARY(G__Gdml *.h MODULE Gdml LINKDEF LinkDef.h DEPENDENCIES Geom XMLIO Hist RIO)

ROOT_LINKER_LIBRARY(Gdml *.cxx G__Gdml.cxx DEPENDENCIES Geom XMLIO Hist RIO)
ROOT_INSTALL_HEADERS()
Expand Down
2 changes: 1 addition & 1 deletion geom/geocad/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ include_directories(${OCC_INCLUDE_DIR})
ROOT_ADD_CXX_FLAG(CMAKE_CXX_FLAGS -Wno-overloaded-virtual)
ROOT_ADD_CXX_FLAG(CMAKE_CXX_FLAGS -Wno-ignored-qualifiers)

ROOT_GENERATE_DICTIONARY(G__GeoCad *.h MODULE GeoCad LINKDEF LinkDef.h)
ROOT_GENERATE_DICTIONARY(G__GeoCad *.h MODULE GeoCad LINKDEF LinkDef.h DEPENDENCIES Geom)

ROOT_LINKER_LIBRARY(GeoCad *.cxx G__GeoCad.cxx LIBRARIES Core ${OCC_LIBRARIES} DEPENDENCIES Geom)

Expand Down
2 changes: 1 addition & 1 deletion geom/geom/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ set(headers2 TGeoPatternFinder.h TGeoCache.h TVirtualMagField.h
TGeoExtension.h TGeoParallelWorld.h)


ROOT_GENERATE_DICTIONARY(G__${libname} ${headers1} ${headers2} MODULE ${libname} LINKDEF LinkDef.h)
ROOT_GENERATE_DICTIONARY(G__${libname} ${headers1} ${headers2} MODULE ${libname} LINKDEF LinkDef.h DEPENDENCIES Thread RIO MathCore)


ROOT_LINKER_LIBRARY(${libname} *.cxx G__${libname}.cxx DEPENDENCIES Thread RIO MathCore)
Expand Down
2 changes: 1 addition & 1 deletion geom/geombuilder/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ set(headers TGeoVolumeEditor.h TGeoBBoxEditor.h TGeoMediumEditor.h
TGeoTorusEditor.h TGeoEltuEditor.h TGeoHypeEditor.h
TGeoPgonEditor.h TGeoTrapEditor.h TGeoGedFrame.h )

ROOT_GENERATE_DICTIONARY(G__${libname} ${headers} MODULE ${libname} LINKDEF LinkDef.h)
ROOT_GENERATE_DICTIONARY(G__${libname} ${headers} MODULE ${libname} LINKDEF LinkDef.h DEPENDENCIES Geom Graf3d Gpad Graf Gui Ged)


ROOT_LINKER_LIBRARY(${libname} *.cxx G__${libname}.cxx DEPENDENCIES Geom Graf3d Gpad Graf Gui Ged)
Expand Down
2 changes: 1 addition & 1 deletion geom/geompainter/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

set(libname GeomPainter)

ROOT_GENERATE_DICTIONARY(G__${libname} T*.h MODULE ${libname} LINKDEF LinkDef.h)
ROOT_GENERATE_DICTIONARY(G__${libname} T*.h MODULE ${libname} LINKDEF LinkDef.h DEPENDENCIES Geom Tree Graf3d Hist Gpad RIO)


ROOT_LINKER_LIBRARY(${libname} *.cxx G__${libname}.cxx DEPENDENCIES Geom Tree Graf3d Hist Gpad RIO)
Expand Down
2 changes: 1 addition & 1 deletion geom/vecgeom/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ if ( Vc_FOUND )
endif()
endif()

ROOT_GENERATE_DICTIONARY(G__ConverterVG TGeoVGConverter.h TGeoVGShape.h MODULE ConverterVG LINKDEF LinkDef.h)
ROOT_GENERATE_DICTIONARY(G__ConverterVG TGeoVGConverter.h TGeoVGShape.h MODULE ConverterVG LINKDEF LinkDef.h DEPENDENCIES Geom)

ROOT_LINKER_LIBRARY(ConverterVG *.cxx G__ConverterVG.cxx LIBRARIES ${VECGEOM_LIBRARIES} -ldl DEPENDENCIES Geom)

Expand Down
4 changes: 2 additions & 2 deletions graf2d/asimage/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ endif()
#---Build ASImage/ASImageGui libraries---------------------------------------
include_directories(${FREETYPE_INCLUDE_DIRS} ${AFTERIMAGE_INCLUDE_DIR} ${X11_INCLUDE_DIR})

ROOT_GENERATE_DICTIONARY(G__ASImage TASImage.h TASImagePlugin.h TASPluginGS.h MODULE ASImage LINKDEF LinkDef.h OPTIONS "-writeEmptyRootPCM")
ROOT_GENERATE_DICTIONARY(G__ASImage TASImage.h TASImagePlugin.h TASPluginGS.h MODULE ASImage LINKDEF LinkDef.h OPTIONS "-writeEmptyRootPCM" DEPENDENCIES Graf BUILTINS AFTERIMAGE)

ROOT_LINKER_LIBRARY(ASImage TASImage.cxx TASPluginGS.cxx G__ASImage.cxx
LIBRARIES Core ${AFTERIMAGE_LIBRARIES} ${FREETYPE_LIBRARIES} ${ASEXTRA_LIBRARIES} ${X11_LIBRARIES}
${ZLIB_LIBRARIES} DEPENDENCIES Graf BUILTINS AFTERIMAGE)

ROOT_GENERATE_DICTIONARY(G__ASImageGui TASPaletteEditor.h MODULE ASImageGui LINKDEF LinkDefGui.h OPTIONS "-writeEmptyRootPCM")
ROOT_GENERATE_DICTIONARY(G__ASImageGui TASPaletteEditor.h MODULE ASImageGui LINKDEF LinkDefGui.h OPTIONS "-writeEmptyRootPCM" DEPENDENCIES Gui)

ROOT_LINKER_LIBRARY(ASImageGui TASPaletteEditor.cxx G__ASImageGui.cxx
LIBRARIES ${AFTERIMAGE_LIBRARIES} ${FREETYPE_LIBRARIES} ${ASEXTRA_LIBRARIES} ${X11_LIBRARIES}
Expand Down
2 changes: 1 addition & 1 deletion graf2d/cocoa/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ endif(cxxmodules)

include_directories(${FREETYPE_INCLUDE_DIRS})

ROOT_GENERATE_DICTIONARY(G__Cocoa T*.h MODULE GCocoa LINKDEF LinkDef.h)
ROOT_GENERATE_DICTIONARY(G__Cocoa T*.h MODULE GCocoa LINKDEF LinkDef.h DEPENDENCIES Gui GQuartz)

ROOT_LINKER_LIBRARY(GCocoa *.mm G__Cocoa.cxx LIBRARIES "-framework Cocoa" "-framework OpenGL" ${FREETYPE_LIBRARIES} DEPENDENCIES Gui GQuartz )
ROOT_INSTALL_HEADERS()
Expand Down
2 changes: 1 addition & 1 deletion graf2d/fitsio/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

include_directories(${CFITSIO_INCLUDE_DIR})

ROOT_GENERATE_DICTIONARY(G__FITSIO *.h MODULE FITSIO LINKDEF LinkDef.h OPTIONS "-writeEmptyRootPCM")
ROOT_GENERATE_DICTIONARY(G__FITSIO *.h MODULE FITSIO LINKDEF LinkDef.h OPTIONS "-writeEmptyRootPCM" DEPENDENCIES Hist Gpad Graf BUILTINS CFITSIO)

ROOT_LINKER_LIBRARY(FITSIO *.cxx G__FITSIO.cxx LIBRARIES ${CFITSIO_LIBRARIES} DEPENDENCIES Hist Gpad Graf Matrix BUILTINS CFITSIO)

Expand Down
2 changes: 1 addition & 1 deletion graf2d/gpad/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ if(root7)
ROOT_GLOB_HEADERS(Gpad_v7_dict_headers ${CMAKE_CURRENT_SOURCE_DIR}/v7/inc/ROOT/T*.hxx)
endif()

ROOT_GENERATE_DICTIONARY(G__Gpad *.h ${Gpad_v7_dict_headers} MODULE Gpad LINKDEF LinkDef.h OPTIONS "-writeEmptyRootPCM")
ROOT_GENERATE_DICTIONARY(G__Gpad *.h ${Gpad_v7_dict_headers} MODULE Gpad LINKDEF LinkDef.h OPTIONS "-writeEmptyRootPCM" DEPENDENCIES Graf MultiProc Hist)

ROOT_LINKER_LIBRARY(Gpad *.cxx ${root7src} G__Gpad.cxx DEPENDENCIES Graf Hist)
ROOT_INSTALL_HEADERS()
2 changes: 1 addition & 1 deletion graf2d/graf/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# @author Pere Mato, CERN
############################################################################

ROOT_GENERATE_DICTIONARY(G__Graf MODULE Graf *.h LINKDEF LinkDef.h OPTIONS "-writeEmptyRootPCM")
ROOT_GENERATE_DICTIONARY(G__Graf MODULE Graf *.h LINKDEF LinkDef.h OPTIONS "-writeEmptyRootPCM" DEPENDENCIES Hist Matrix MathCore RIO BUILTINS FREETYPE)


include_directories(${FREETYPE_INCLUDE_DIRS})
Expand Down
2 changes: 1 addition & 1 deletion graf2d/gviz/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

include_directories(${GRAPHVIZ_INCLUDE_DIR}/graphviz)

ROOT_GENERATE_DICTIONARY(G__Gviz *.h MODULE Gviz LINKDEF LinkDef.h OPTIONS "-writeEmptyRootPCM")
ROOT_GENERATE_DICTIONARY(G__Gviz *.h MODULE Gviz LINKDEF LinkDef.h OPTIONS "-writeEmptyRootPCM" DEPENDENCIES Hist Graf)

ROOT_LINKER_LIBRARY(Gviz *.cxx G__Gviz.cxx
LIBRARIES ${GRAPHVIZ_LIBRARIES}
Expand Down
4 changes: 2 additions & 2 deletions graf2d/postscript/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# @author Pere Mato, CERN
############################################################################

ROOT_GENERATE_DICTIONARY(G__PostScript *.h MODULE Postscript LINKDEF LinkDef.h OPTIONS "-writeEmptyRootPCM")
ROOT_GENERATE_DICTIONARY(G__Postscript *.h MODULE Postscript LINKDEF LinkDef.h OPTIONS "-writeEmptyRootPCM" DEPENDENCIES Graf)

ROOT_LINKER_LIBRARY(Postscript *.cxx G__PostScript.cxx LIBRARIES ${ZLIB_LIBRARIES} mathtext DEPENDENCIES Graf)
ROOT_LINKER_LIBRARY(Postscript *.cxx G__Postscript.cxx LIBRARIES ${ZLIB_LIBRARIES} mathtext DEPENDENCIES Graf)
ROOT_INSTALL_HEADERS()
2 changes: 1 addition & 1 deletion graf2d/qt/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ QT4_WRAP_CPP(mocfiles inc/TQtWidget.h inc/TQtEmitter.h inc/TQtClientFilter.h
inc/TQtClientGuard.h inc/TQtClientWidget.h inc/TQtTimer.h
inc/TQtRootSlot.h)

ROOT_GENERATE_DICTIONARY(G__GQt ${headers} MODULE GQt LINKDEF LinkDef.h OPTIONS -Wno-deprecated)
ROOT_GENERATE_DICTIONARY(G__GQt ${headers} MODULE GQt LINKDEF LinkDef.h OPTIONS -Wno-deprecated DEPENDENCIES Gui Gpad Graf Rint)


ROOT_LINKER_LIBRARY(GQt *.cxx ${mocfiles} G__GQt.cxx LIBRARIES ${QT_LIBRARIES} DEPENDENCIES Gui Gpad Graf Rint)
Expand Down
2 changes: 1 addition & 1 deletion graf2d/quartz/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ if(cxxmodules)
string(REPLACE "${ROOT_CXXMODULES_CFLAGS}" "" CMAKE_C_FLAGS ${CMAKE_C_FLAGS})
endif(cxxmodules)

ROOT_GENERATE_DICTIONARY(G__Quartz "" MODULE GQuartz LINKDEF LinkDef.h)
ROOT_GENERATE_DICTIONARY(G__Quartz "" MODULE GQuartz LINKDEF LinkDef.h DEPENDENCIES Core)

ROOT_LINKER_LIBRARY(GQuartz *.mm G__Quartz.cxx LIBRARIES "-framework Cocoa" DEPENDENCIES Core)
ROOT_INSTALL_HEADERS()
Expand Down
2 changes: 1 addition & 1 deletion graf2d/win32gdk/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ set_target_properties(GDKLIB PROPERTIES FOLDER Builtins)
# ROOT Dicts for the win32gdk library
#

ROOT_GENERATE_DICTIONARY(G__Win32gdk TGWin32.h TGWin32GL.h MODULE Win32gdk LINKDEF LinkDef.h)
ROOT_GENERATE_DICTIONARY(G__Win32gdk TGWin32.h TGWin32GL.h MODULE Win32gdk LINKDEF LinkDef.h DEPENDENCIES Core Graf)


#
Expand Down
2 changes: 1 addition & 1 deletion graf2d/x11/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ set(libname GX11)

include_directories(${X11_INCLUDE_DIR})

ROOT_GENERATE_DICTIONARY(G__${libname} T*.h MODULE ${libname} LINKDEF LinkDef.h OPTIONS "-writeEmptyRootPCM")
ROOT_GENERATE_DICTIONARY(G__${libname} T*.h MODULE ${libname} LINKDEF LinkDef.h OPTIONS "-writeEmptyRootPCM" DEPENDENCIES Core)

ROOT_LINKER_LIBRARY(${libname} *.cxx *.c G__${libname}.cxx LIBRARIES Core ${X11_LIBRARIES} ${X11_Xpm_LIB} ${CMAKE_THREAD_LIBS_INIT})

Expand Down
2 changes: 1 addition & 1 deletion graf2d/x11ttf/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ set(libname GX11TTF)

include_directories(${FREETYPE_INCLUDE_DIRS} ${X11_INCLUDE_DIR})

ROOT_GENERATE_DICTIONARY(G__${libname} *.h MODULE ${libname} LINKDEF LinkDef.h OPTIONS "-writeEmptyRootPCM")
ROOT_GENERATE_DICTIONARY(G__${libname} *.h MODULE ${libname} LINKDEF LinkDef.h OPTIONS "-writeEmptyRootPCM" DEPENDENCIES GX11 Graf)


ROOT_LINKER_LIBRARY(${libname} *.cxx G__${libname}.cxx
Expand Down
2 changes: 1 addition & 1 deletion graf3d/eve/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ if(MACOSX_GLU_DEPRECATED)
add_definitions(-Wno-deprecated-declarations)
endif()

ROOT_GENERATE_DICTIONARY(G__Eve ${headers1} ${headers2} MODULE Eve LINKDEF LinkDef.h)
ROOT_GENERATE_DICTIONARY(G__Eve ${headers1} ${headers2} MODULE Eve LINKDEF LinkDef.h DEPENDENCIES Geom Ged RGL Physics EG)

ROOT_LINKER_LIBRARY(Eve *.cxx G__Eve.cxx LIBRARIES ${OPENGL_LIBRARIES} GLEW ${FTGL_LIBRARIES} Core DEPENDENCIES Geom Ged RGL Physics EG)

Expand Down
2 changes: 1 addition & 1 deletion graf3d/g3d/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ ROOT_GLOB_HEADERS(headers1 ${CMAKE_CURRENT_SOURCE_DIR}/inc/*.h)
list(REMOVE_ITEM headers1 ${CMAKE_CURRENT_SOURCE_DIR}/inc/X3DBuffer.h)
set(headers2 X3DBuffer.h )

ROOT_GENERATE_DICTIONARY(G__${libname} ${headers1} MODULE ${libname} LINKDEF LinkDef.h)
ROOT_GENERATE_DICTIONARY(G__${libname} ${headers1} MODULE ${libname} LINKDEF LinkDef.h DEPENDENCIES Graf Hist Gpad MathCore)

ROOT_LINKER_LIBRARY(${libname} *.cxx *.c G__${libname}.cxx DEPENDENCIES Graf Hist Gpad MathCore)
ROOT_INSTALL_HEADERS()
Expand Down
2 changes: 1 addition & 1 deletion graf3d/gl/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ endif()
set_source_files_properties(src/TGLFontManager.cxx PROPERTIES COMPILE_FLAGS "${FTGL_CFLAGS}")
set_source_files_properties(src/TGLText.cxx PROPERTIES COMPILE_FLAGS "${FTGL_CFLAGS}")

ROOT_GENERATE_DICTIONARY(G__GL ${headers} MODULE RGL LINKDEF LinkDef.h OPTIONS "-writeEmptyRootPCM")
ROOT_GENERATE_DICTIONARY(G__GL ${headers} MODULE RGL LINKDEF LinkDef.h OPTIONS "-writeEmptyRootPCM" DEPENDENCIES Hist Gui Ged)

ROOT_LINKER_LIBRARY(RGL ${sources} G__GL.cxx LIBRARIES ${gllibs} ${GL2PS_LIBRARIES} GLEW ${FTGL_LIBRARIES} DEPENDENCIES Hist Gui Ged)

Expand Down
2 changes: 1 addition & 1 deletion graf3d/gviz3d/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# CMakeLists.txt file for building ROOT graf3d/gviz3d package
############################################################################

ROOT_GENERATE_DICTIONARY(G__Gviz3d *.h MODULE Gviz3d LINKDEF LinkDef.h)
ROOT_GENERATE_DICTIONARY(G__Gviz3d *.h MODULE Gviz3d LINKDEF LinkDef.h DEPENDENCIES Gui Ged Geom RGL)

ROOT_LINKER_LIBRARY(Gviz3d *.cxx G__Gviz3d.cxx LIBRARIES GLEW ${FTGL_LIBRARIES} DEPENDENCIES Gui Ged Geom RGL)
ROOT_INSTALL_HEADERS()
4 changes: 2 additions & 2 deletions graf3d/x3d/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ set(libname X3d)

include_directories(${X11_INCLUDE_DIR})

ROOT_GENERATE_DICTIONARY(G__X3D TViewerX3D.h TX3DFrame.h MODULE ${libname} LINKDEF LinkDef.h)
ROOT_GENERATE_DICTIONARY(G__X3d TViewerX3D.h TX3DFrame.h MODULE ${libname} LINKDEF LinkDef.h DEPENDENCIES Graf3d Gui)

ROOT_LINKER_LIBRARY(${libname} *.cxx *.c G__X3D.cxx LIBRARIES ${X11_LIBRARIES} DEPENDENCIES Graf3d Gui)
ROOT_LINKER_LIBRARY(${libname} *.cxx *.c G__X3d.cxx LIBRARIES ${X11_LIBRARIES} DEPENDENCIES Graf3d Gui)
ROOT_INSTALL_HEADERS()
Loading