laristra / cinch Goto Github PK
View Code? Open in Web Editor NEWA mirror of cinch's internal gitlab repository.
License: Other
A mirror of cinch's internal gitlab repository.
License: Other
After the refactor cinch_add_application_directory
and cinch_target_link_libraries
don't do anything anymore, so we should mark them as deprecated (message(WARNING ...)
) and remove them in the next version of cinch.
See comment on laristra/flecsi@47ba7a6 for details, but in short it would be nice to hide the NetCDF details from the user and roll it into FindSCOTCH.cmake.
The only reason we have library.cmake
is to install PUBLIC_HEADERS, let's move that somewhere else!
With removing the main symlink cmake_minimum_required(VERSION 3.0)
in CMakeLists.txt
is useless and should be replace with a check again CMAKE_VERSION
.
When I #include "lapacke.h" in my task.h file, I get the following compile error with gcc 7.3.0:
In file included from /home/bement/ristra/flecsale-mm/flecsi/flecsi/data/sparse_accessor.h:20:0, from /home/bement/ristra/flecsale-mm/specializations/flecsi-sp/utils/types.h:5, from /home/bement/ristra/flecsale-mm/apps/dsd/2d/../types.h:21, from /home/bement/ristra/flecsale-mm/apps/dsd/2d/inputs.h:13, from /home/bement/ristra/flecsale-mm/apps/dsd/2d/driver.cc:11: /home/bement/ristra/flecsale-mm/cinch/logging/cinchlog.h:1373:24: error: expected unqualified-id before ‘if’ #define clog(severity) if(true) {} else std::cerr ^ /home/bement/ristra/flecsale-mm/cinch/logging/cinchlog.h:1373:36: error: expected unqualified-id before ‘else’ #define clog(severity) if(true) {} else std::cerr
I am unable to get cinch to find LAPACKE by the following two methods:
Using -DLAPACKE_DIR:FILEPATH=$HOME/packages/lapack/lib/cmake/lapacke-3.7.1 to point to the location where LAPACKE installation has stored a cmake config file
Defining -DLAPACKE_LIBRARY_DIRS and -DLAPACKE_INCLUDE_DIR
Instead I have to explicitly define -DLAPACKE_LIBRARY:FILEPATH=............/liblapacke.a
I believe the issue may be that LAPACKE_LIBRARY_DIRS variable is not being used to find the library within cinch.
Portage is using a version of cinch with the hash 979afeb
When I do a make install, cinch is putting cinchlog.h in the install location along with all the client's include files. The command for this is appearing in install_manifest.txt after configuring the build with cmake
This used to work but bb41ed1 breaks it.
Libscotcherr is not automatically linked to libscotch on Fedora. We have to put the it back to the list of libraries to be linked.
[root@34023565b273 build]# ls /usr/lib64/libscotch*
/usr/lib64/libscotch.so /usr/lib64/libscotcherr.so /usr/lib64/libscotcherrexit.so /usr/lib64/libscotchmetis.so
/usr/lib64/libscotch.so.0 /usr/lib64/libscotcherr.so.0 /usr/lib64/libscotcherrexit.so.0 /usr/lib64/libscotchmetis.so.0
/usr/lib64/libscotch.so.0.2 /usr/lib64/libscotcherr.so.0.2 /usr/lib64/libscotcherrexit.so.0.2 /usr/lib64/libscotchmetis.so.0.2
[root@34023565b273 build]# ldd /usr/lib64/libscotch.so
linux-vdso.so.1 (0x00007ffddc24c000)
libz.so.1 => /lib64/libz.so.1 (0x00007f3435952000)
libbz2.so.1 => /lib64/libbz2.so.1 (0x00007f3435742000)
liblzmadec.so.0 => /lib64/liblzmadec.so.0 (0x00007f343553d000)
libm.so.6 => /lib64/libm.so.6 (0x00007f343523b000)
librt.so.1 => /lib64/librt.so.1 (0x00007f3435033000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f3434e15000)
libc.so.6 => /lib64/libc.so.6 (0x00007f3434a54000)
/lib64/ld-linux-x86-64.so.2 (0x000055e937795000)
We need an embedded Cinch version that can be checked by the runtime (Cinch's) to analyze the submodule tree for inconsistencies. Also need to add a version macro so that user's can set a minimum required version.
Instead of having an actually info
target, let's move it into a cmake message, which is enable, with CINCH_VERBOSE=ON
.
Wen using CMAKE_CXX_FLAGS
in e.g. configure_file
in package.cmake
, they might still get changed afterwards.
Found by clang:
/home/flecsi/flecsi/cinch/gtest-auxiliary/../logging/cinchlog.h:311:3: warning: control may reach end of non-void function [-Wreturn-type]
}
^
/home/flecsi/flecsi/cinch/gtest-auxiliary/../logging/cinchlog.h:430:3: warning: control reaches end of non-void function [-Wreturn-type]
}
^
/home/flecsi/flecsi/cinch/gtest-auxiliary/../logging/cinchlog.h:443:3: warning: control reaches end of non-void function [-Wreturn-type]
}
^
3 warnings generated.
When I try to find LAPACKE libraries using cinch's FindLAPACKE module on varan/barugon on the xlan, it is picking up the right lapacke library (as specified by the PC_LAPACKE_INCLUDE_DIRS and PC_LAPACKE_LIBRARY_DIRS) but it is picking up system versions of LAPACK and BLAS. This is causing warnings and undefined symbols.
Format needs to be restricted from submodules, and potentially tutorial directories. I suggest adding an optional EXCLUDE parameter, and allowing the project to specifically add the format option, e.g., in config/project.cmake:
cinch_add_format(FleCSI EXCLUDE cinch flecsi-tutorials)
This would add a target 'format-FleCSI' that would ignore cinch and flecsi-tutorials.
Refactor the version parse function of FindSCOTCH.cmake
and FindMETIS.cmake
into one.
option(BUILD_SHARED_LIBS "Build shared libs" OFF)
Default still needs to be discussed, but ON
would certainly be the better option for easier dependency tracking as shared libraries contain link information.
Is this something that is planned? Run some executable, and diff some output?
This was found in laristra/flecsi#45, issue being that multiple project using cinch will each install their own gtest lib and then overwrite each others.
The problem boils down to the fact in ProjectLists.txt
line 212 we do
add_subdirectory(cinch/gtest)
and hence all target get inherit from the cmake buildsystem of gtest.
Looking at gtest's documentation one should create a own library target using:
${GTEST_DIR}/src/gtest-all.cc
Found here:
https://travis-ci.org/losalamos/flecsi/jobs/129845746
cinch_subdirlist()
needs an additional check
The README states that the config
directory should contain a file packages.cmake
that loads third-party libraries. However, it appears that this file is no longer used.
Allow documentation.cmake to not exist.
Use add_custom_command(OUTPUT ...)
instead of file(COPY ...)
to generate the right dependency rules for ${unit_target_inputs}
.
Ensure that all modules use the same version of cinch to avoid header conflicts.
/cc @tuxfan
Installed portage first, then tried to build flecsale, point CMAKE_PREFIX_PATH to the location of the portage install. Since portage is a cinch project, it installs cinch headers. Since flecsale is a cinch project, it includes cinch headers. I get multiple definition errors because of the failure of #pragma once
to identify #include <cinchlog.h>
and #include "../logging/cinchlog.h"
in cinchtest.h. Not too sure the best way to resolve this. I could replace pragma once
in cinch with include guards, but I think portage is locked into their cinch version for now? Note that this doesnt happen if portage is a submodule of flecsale.
@junghans @cmsquared @tuxfan @cferenba any ideas of the best solution?
In file included from /users/charest/scratch/flecsale-super/flecsale/flecsi/flecsi/utils/dag.h:10:0,
from /users/charest/scratch/flecsale-super/flecsale/flecsi/flecsi/control/control.h:23,
from /users/charest/scratch/flecsale-super/flecsale/flecsi/flecsi/control/test/control.cc:10:
/users/charest/scratch/flecsale-super/build/install/include/cinchlog.h: In function 'std::__cxx11::string cinch::timestamp(bool)':
/users/charest/scratch/flecsale-super/build/install/include/cinchlog.h:181:1: error: redefinition of 'std::__cxx11::string cinch::timestamp(bool)'
timestamp(bool underscores = false)
^~~~~~~~~
In file included from /users/charest/scratch/flecsale-super/flecsale/cinch/auxiliary/cinchtest.h:9:0,
from /users/charest/scratch/flecsale-super/flecsale/flecsi/flecsi/control/test/control.cc:9:
/users/charest/scratch/flecsale-super/flecsale/cinch/auxiliary/../logging/cinchlog.h:231:1: note: 'std::__cxx11::string cinch::timestamp(bool)' previously defined here
timestamp(bool underscores = false)
^~~~~~~~~
It says here: https://github.com/losalamos/cinch/blob/73cd740804eb7f4baeac736b0bd8bf0fbf3c54ce/README.md#cmakeliststxt
that the CmakeLists.txt is a symlink. This is incorrect in the newest Cinch, so the documentation should be updated.
Portage uses Jali, so we should add a find macro to cinch.
@cmsquared: Checking for Mesh.hh
and libJali.a
, correct?
The current tags are
$ git tag
0.0
1.0
1.0-beta
v2.0
1.0 was recently moved from an old hash. 1.0-beta and v2.0 both point to old hashes - from 2015 and 2017, respectively.
Are 0.0 and 1.0 fixed now? Does anyone object to my removing 1.0-beta and v2.0 to avoid confusion?
Setting build type to 'Release' can cause cmake to error with "CMAKE_BUILD_TYPE: CMake build type <Debug|Release|RelWithDebInfo|MinSizeRel>"
Found in flecsi/flecsi@8b6ba96
For a nested build, make install
fails when ENABLE_DOXYGEN=on
because make doxygen
for the super-project does build the documentation of sub-projects. For example, building flecsale, which uses flecsi as a cinch subproject, with
cmake ... -DENABLE_DOXYGEN=on ...
make doxygen
make install
gives
CMake Error at flecsi/cmake_install.cmake:56 (file)
file INSTALL cannot find
"flecsale/build/doc/flecsi/doxygen".
Call Stack (most recent call first):
cmake_install.cmake:377 (include)
This was found in laristra/flecsi#99.
Using add_subdirectory()
in SourceLists.txt
leads to that bug. Replacing in by include()
should fix that.
Replace add_ExternalProject()
by add_library()
.
When being on a detached head, version fails:
https://travis-ci.org/flecsi/flecsi/jobs/112908985#L416
I will fix that soon!
--- a/config/project.cmake
+++ b/config/project.cmake
@@ -58,6 +58,15 @@ if (NOT TPL_INSTALL_PREFIX STREQUAL "")
set(SCOTCH_ROOT ${TPL_INSTALL_PREFIX})
endif()
+option(USE_GCOV "Enable gcov support" OFF)
+if(USE_GCOV)
+ message(STATUS "Enabling gcov support")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --coverage -O0")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage -O0")
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage")
+ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --coverage")
+endif()
+
#~---------------------------------------------------------------------------~-#
# Formatting options
# vim: set tabstop=2 shiftwidth=2 expandtab :
and lanl/vpic@77712b7 is a duplication.
Make coverage a global option in cinch.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.