Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
O
openfpm_vcluster
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
Requirements
Requirements
List
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Operations
Operations
Environments
Analytics
Analytics
CI / CD
Code Review
Insights
Issue
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
openfpm
openfpm_vcluster
Commits
9e1e9a45
Commit
9e1e9a45
authored
Nov 27, 2018
by
incardon
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixing detection of PETSC
parent
53f2cfd3
Changes
6
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
584 additions
and
2 deletions
+584
-2
CMakeLists.txt
CMakeLists.txt
+9
-2
cmake_modules/CorrectWindowsPaths.cmake
cmake_modules/CorrectWindowsPaths.cmake
+14
-0
cmake_modules/FindPETSc.cmake
cmake_modules/FindPETSc.cmake
+346
-0
cmake_modules/FindPackageMultipass.cmake
cmake_modules/FindPackageMultipass.cmake
+106
-0
cmake_modules/ResolveCompilerPaths.cmake
cmake_modules/ResolveCompilerPaths.cmake
+105
-0
src/CMakeLists.txt
src/CMakeLists.txt
+4
-0
No files found.
CMakeLists.txt
View file @
9e1e9a45
cmake_minimum_required
(
VERSION 3.8 FATAL_ERROR
)
project
(
openfpm_pdata LANGUAGES C CXX
)
list
(
APPEND CMAKE_MODULE_PATH
${
CMAKE_CURRENT_LIST_DIR
}
/CMakeFiles/
)
list
(
APPEND CMAKE_MODULE_PATH
${
CMAKE_CURRENT_LIST_DIR
}
/cmake_modules/
)
set
(
BOOST_INCLUDE
${
Boost_INCLUDE_DIR
}
CACHE PATH
"Include directory for BOOST"
)
set
(
SE_CLASS1 CACHE BOOL
"Activate compilation with SE_CLASS1"
)
set
(
SE_CLASS2 CACHE BOOL
"Activate compilation with SE_CLASS2"
)
set
(
SE_CLASS3 CACHE BOOL
"Activate compilation with SE_CLASS3"
)
set
(
PETSC_ROOT CACHE PATH
"If compiling with linear algebra indicate the PETSC root directory"
)
set
(
ENV{PETSC_DIR}
${
PETSC_ROOT
}
)
set
(
CMAKE_CXX_STANDARD 11
)
set
(
CMAKE_CUDA_STANDARD 11
)
...
...
@@ -19,6 +21,7 @@ endif()
find_package
(
Boost 1.66.0 REQUIRED COMPONENTS unit_test_framework iostreams program_options
)
find_package
(
MPI REQUIRED
)
find_package
(
PETSc
)
if
(
CUDA_FOUND
)
set
(
OPENFPM_INIT_FILE
"initialize/initialize_wrapper_cuda.cu"
)
...
...
@@ -40,6 +43,10 @@ if(SE_CLASS3)
set
(
DEFINE_SE_CLASS3
"#define SE_CLASS3"
)
endif
()
if
(
PETSC_FOUND
)
set
(
DEFINE_HAVE_PETSC
"#define HAVE_PETSC"
)
endif
()
if
(
CUDA_FOUND
)
set
(
DEFINE_CUDA_GPU
"#define CUDA_GPU"
)
endif
()
...
...
cmake_modules/CorrectWindowsPaths.cmake
0 → 100644
View file @
9e1e9a45
# CorrectWindowsPaths - this module defines one macro
#
# CONVERT_CYGWIN_PATH( PATH )
# This uses the command cygpath (provided by cygwin) to convert
# unix-style paths into paths useable by cmake on windows
macro
(
CONVERT_CYGWIN_PATH _path
)
if
(
WIN32
)
EXECUTE_PROCESS
(
COMMAND cygpath.exe -m
${${
_path
}}
OUTPUT_VARIABLE
${
_path
}
)
string
(
STRIP
${${
_path
}}
${
_path
}
)
endif
(
WIN32
)
endmacro
(
CONVERT_CYGWIN_PATH
)
cmake_modules/FindPETSc.cmake
0 → 100644
View file @
9e1e9a45
This diff is collapsed.
Click to expand it.
cmake_modules/FindPackageMultipass.cmake
0 → 100644
View file @
9e1e9a45
# PackageMultipass - this module defines two macros
#
# FIND_PACKAGE_MULTIPASS (Name CURRENT
# STATES VAR0 VAR1 ...
# DEPENDENTS DEP0 DEP1 ...)
#
# This function creates a cache entry <UPPERCASED-Name>_CURRENT which
# the user can set to "NO" to trigger a reconfiguration of the package.
# The first time this function is called, the values of
# <UPPERCASED-Name>_VAR0, ... are saved. If <UPPERCASED-Name>_CURRENT
# is false or if any STATE has changed since the last time
# FIND_PACKAGE_MULTIPASS() was called, then CURRENT will be set to "NO",
# otherwise CURRENT will be "YES". IF not CURRENT, then
# <UPPERCASED-Name>_DEP0, ... will be FORCED to NOTFOUND.
# Example:
# find_path (FOO_DIR include/foo.h)
# FIND_PACKAGE_MULTIPASS (Foo foo_current
# STATES DIR
# DEPENDENTS INCLUDES LIBRARIES)
# if (NOT foo_current)
# # Make temporary files, run programs, etc, to determine FOO_INCLUDES and FOO_LIBRARIES
# endif (NOT foo_current)
#
# MULTIPASS_SOURCE_RUNS (Name INCLUDES LIBRARIES SOURCE RUNS LANGUAGE)
# Always runs the given test, use this when you need to re-run tests
# because parent variables have made old cache entries stale. The LANGUAGE
# variable is either C or CXX indicating which compiler the test should
# use.
# MULTIPASS_C_SOURCE_RUNS (Name INCLUDES LIBRARIES SOURCE RUNS)
# DEPRECATED! This is only included for backwards compatability. Use
# the more general MULTIPASS_SOURCE_RUNS instead.
# Always runs the given test, use this when you need to re-run tests
# because parent variables have made old cache entries stale.
macro
(
FIND_PACKAGE_MULTIPASS _name _current
)
string
(
TOUPPER
${
_name
}
_NAME
)
set
(
_args
${
ARGV
}
)
list
(
REMOVE_AT _args 0 1
)
set
(
_states_current
"YES"
)
list
(
GET _args 0 _cmd
)
if
(
_cmd STREQUAL
"STATES"
)
list
(
REMOVE_AT _args 0
)
list
(
GET _args 0 _state
)
while
(
_state AND NOT _state STREQUAL
"DEPENDENTS"
)
# The name of the stored value for the given state
set
(
_stored_var PACKAGE_MULTIPASS_
${
_NAME
}
_
${
_state
}
)
if
(
NOT
"
${${
_stored_var
}}
"
STREQUAL
"
${${
_NAME
}
_
${
_state
}}
"
)
set
(
_states_current
"NO"
)
endif
(
NOT
"
${${
_stored_var
}}
"
STREQUAL
"
${${
_NAME
}
_
${
_state
}}
"
)
set
(
${
_stored_var
}
"
${${
_NAME
}
_
${
_state
}}
"
CACHE INTERNAL
"Stored state for
${
_name
}
."
FORCE
)
list
(
REMOVE_AT _args 0
)
list
(
GET _args 0 _state
)
endwhile
(
_state AND NOT _state STREQUAL
"DEPENDENTS"
)
endif
(
_cmd STREQUAL
"STATES"
)
set
(
_stored
${
_NAME
}
_CURRENT
)
if
(
NOT
${
_stored
}
)
set
(
${
_stored
}
"YES"
CACHE BOOL
"Is the configuration for
${
_name
}
current? Set to
\"
NO
\"
to reconfigure."
FORCE
)
set
(
_states_current
"NO"
)
endif
(
NOT
${
_stored
}
)
set
(
${
_current
}
${
_states_current
}
)
if
(
NOT
${
_current
}
AND PACKAGE_MULTIPASS_
${
_name
}
_CALLED
)
message
(
STATUS
"Clearing
${
_name
}
dependent variables"
)
# Clear all the dependent variables so that the module can reset them
list
(
GET _args 0 _cmd
)
if
(
_cmd STREQUAL
"DEPENDENTS"
)
list
(
REMOVE_AT _args 0
)
foreach
(
dep
${
_args
}
)
set
(
${
_NAME
}
_
${
dep
}
"NOTFOUND"
CACHE INTERNAL
"Cleared"
FORCE
)
endforeach
(
dep
)
endif
(
_cmd STREQUAL
"DEPENDENTS"
)
set
(
${
_NAME
}
_FOUND
"NOTFOUND"
CACHE INTERNAL
"Cleared"
FORCE
)
endif
()
set
(
PACKAGE_MULTIPASS_
${
name
}
_CALLED YES CACHE INTERNAL
"Private"
FORCE
)
endmacro
(
FIND_PACKAGE_MULTIPASS
)
macro
(
MULTIPASS_SOURCE_RUNS includes libraries source runs language
)
include
(
Check
${
language
}
SourceRuns
)
# This is a ridiculous hack. CHECK_${language}_SOURCE_* thinks that if the
# *name* of the return variable doesn't change, then the test does
# not need to be re-run. We keep an internal count which we
# increment to guarantee that every test name is unique. If we've
# gotten here, then the configuration has changed enough that the
# test *needs* to be rerun.
if
(
NOT MULTIPASS_TEST_COUNT
)
set
(
MULTIPASS_TEST_COUNT 00
)
endif
(
NOT MULTIPASS_TEST_COUNT
)
math
(
EXPR _tmp
"
${
MULTIPASS_TEST_COUNT
}
+ 1"
)
# Why can't I add to a cache variable?
set
(
MULTIPASS_TEST_COUNT
${
_tmp
}
CACHE INTERNAL
"Unique test ID"
)
set
(
testname MULTIPASS_TEST_
${
MULTIPASS_TEST_COUNT
}
_
${
runs
}
)
set
(
CMAKE_REQUIRED_INCLUDES
${
includes
}
)
set
(
CMAKE_REQUIRED_LIBRARIES
${
libraries
}
)
if
(
${
language
}
STREQUAL
"C"
)
check_c_source_runs
(
"
${
source
}
"
${
testname
}
)
elseif
(
${
language
}
STREQUAL
"CXX"
)
check_cxx_source_runs
(
"
${
source
}
"
${
testname
}
)
endif
()
set
(
${
runs
}
"
${${
testname
}}
"
)
endmacro
(
MULTIPASS_SOURCE_RUNS
)
macro
(
MULTIPASS_C_SOURCE_RUNS includes libraries source runs
)
multipass_source_runs
(
"
${
includes
}
"
"
${
libraries
}
"
"
${
source
}
"
${
runs
}
"C"
)
endmacro
(
MULTIPASS_C_SOURCE_RUNS
)
cmake_modules/ResolveCompilerPaths.cmake
0 → 100644
View file @
9e1e9a45
# ResolveCompilerPaths - this module defines two macros
#
# RESOLVE_LIBRARIES (XXX_LIBRARIES LINK_LINE)
# This macro is intended to be used by FindXXX.cmake modules.
# It parses a compiler link line and resolves all libraries
# (-lfoo) using the library path contexts (-L/path) in scope.
# The result in XXX_LIBRARIES is the list of fully resolved libs.
# Example:
#
# RESOLVE_LIBRARIES (FOO_LIBRARIES "-L/A -la -L/B -lb -lc -ld")
#
# will be resolved to
#
# FOO_LIBRARIES:STRING="/A/liba.so;/B/libb.so;/A/libc.so;/usr/lib/libd.so"
#
# if the filesystem looks like
#
# /A: liba.so libc.so
# /B: liba.so libb.so
# /usr/lib: liba.so libb.so libc.so libd.so
#
# and /usr/lib is a system directory.
#
# Note: If RESOLVE_LIBRARIES() resolves a link line differently from
# the native linker, there is a bug in this macro (please report it).
#
# RESOLVE_INCLUDES (XXX_INCLUDES INCLUDE_LINE)
# This macro is intended to be used by FindXXX.cmake modules.
# It parses a compile line and resolves all includes
# (-I/path/to/include) to a list of directories. Other flags are ignored.
# Example:
#
# RESOLVE_INCLUDES (FOO_INCLUDES "-I/A -DBAR='\"irrelevant -I/string here\"' -I/B")
#
# will be resolved to
#
# FOO_INCLUDES:STRING="/A;/B"
#
# assuming both directories exist.
# Note: as currently implemented, the -I/string will be picked up mistakenly (cry, cry)
include
(
CorrectWindowsPaths
)
macro
(
RESOLVE_LIBRARIES LIBS LINK_LINE
)
string
(
REGEX MATCHALL
"((-L|-l|-Wl)([^
\"
]+|
\"
[^
\"
]+
\"
)|[^
\"
]+
\\
.(a|so|dll|lib))"
_all_tokens
"
${
LINK_LINE
}
"
)
set
(
_libs_found
""
)
set
(
_directory_list
""
)
foreach
(
token
${
_all_tokens
}
)
if
(
token MATCHES
"-L([^
\"
]+|
\"
[^
\"
]+
\"
)"
)
# If it's a library path, add it to the list
string
(
REGEX REPLACE
"^-L"
""
token
${
token
}
)
string
(
REGEX REPLACE
"//"
"/"
token
${
token
}
)
convert_cygwin_path
(
token
)
list
(
APPEND _directory_list
${
token
}
)
elseif
(
token MATCHES
"^(-l([^
\"
]+|
\"
[^
\"
]+
\"
)|[^
\"
]+
\\
.(a|so|dll|lib))"
)
# It's a library, resolve the path by looking in the list and then (by default) in system directories
if
(
WIN32
)
#windows expects "libfoo", linux expects "foo"
string
(
REGEX REPLACE
"^-l"
"lib"
token
${
token
}
)
else
(
WIN32
)
string
(
REGEX REPLACE
"^-l"
""
token
${
token
}
)
endif
(
WIN32
)
set
(
_root
""
)
if
(
token MATCHES
"^/"
)
# We have an absolute path
#separate into a path and a library name:
string
(
REGEX MATCH
"[^/]*
\\
.(a|so|dll|lib)$"
libname
${
token
}
)
string
(
REGEX MATCH
".*[^
${
libname
}
$]"
libpath
${
token
}
)
convert_cygwin_path
(
libpath
)
set
(
_directory_list
${
_directory_list
}
${
libpath
}
)
set
(
token
${
libname
}
)
endif
(
token MATCHES
"^/"
)
set
(
_lib
"NOTFOUND"
CACHE FILEPATH
"Cleared"
FORCE
)
find_library
(
_lib
${
token
}
HINTS
${
_directory_list
}
${
_root
}
)
if
(
_lib
)
string
(
REPLACE
"//"
"/"
_lib
${
_lib
}
)
list
(
APPEND _libs_found
${
_lib
}
)
else
(
_lib
)
message
(
STATUS
"Unable to find library
${
token
}
"
)
endif
(
_lib
)
endif
(
token MATCHES
"-L([^
\"
]+|
\"
[^
\"
]+
\"
)"
)
endforeach
(
token
)
set
(
_lib
"NOTFOUND"
CACHE INTERNAL
"Scratch variable"
FORCE
)
# only the LAST occurence of each library is required since there should be no circular dependencies
if
(
_libs_found
)
list
(
REVERSE _libs_found
)
list
(
REMOVE_DUPLICATES _libs_found
)
list
(
REVERSE _libs_found
)
endif
(
_libs_found
)
set
(
${
LIBS
}
"
${
_libs_found
}
"
)
endmacro
(
RESOLVE_LIBRARIES
)
macro
(
RESOLVE_INCLUDES INCS COMPILE_LINE
)
string
(
REGEX MATCHALL
"-I([^
\"
]+|
\"
[^
\"
]+
\"
)"
_all_tokens
"
${
COMPILE_LINE
}
"
)
set
(
_incs_found
""
)
foreach
(
token
${
_all_tokens
}
)
string
(
REGEX REPLACE
"^-I"
""
token
${
token
}
)
string
(
REGEX REPLACE
"//"
"/"
token
${
token
}
)
convert_cygwin_path
(
token
)
if
(
EXISTS
${
token
}
)
list
(
APPEND _incs_found
${
token
}
)
else
(
EXISTS
${
token
}
)
message
(
STATUS
"Include directory
${
token
}
does not exist"
)
endif
(
EXISTS
${
token
}
)
endforeach
(
token
)
list
(
REMOVE_DUPLICATES _incs_found
)
set
(
${
INCS
}
"
${
_incs_found
}
"
)
endmacro
(
RESOLVE_INCLUDES
)
src/CMakeLists.txt
View file @
9e1e9a45
...
...
@@ -24,13 +24,17 @@ target_include_directories (vcluster_test PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../
target_include_directories
(
vcluster_test PUBLIC
${
CMAKE_CURRENT_SOURCE_DIR
}
/../../openfpm_data/src/
)
target_include_directories
(
vcluster_test PUBLIC
${
CMAKE_CURRENT_SOURCE_DIR
}
/config
)
target_include_directories
(
vcluster_test PUBLIC
${
Boost_INCLUDE_DIRS
}
)
target_include_directories
(
vcluster_test PUBLIC
${
PETSC_INCLUDES
}
)
target_include_directories
(
vcluster PUBLIC
${
CMAKE_CURRENT_SOURCE_DIR
}
)
target_include_directories
(
vcluster PUBLIC
${
PETSC_INCLUDES
}
)
target_include_directories
(
vcluster PUBLIC
${
CMAKE_CURRENT_SOURCE_DIR
}
/config
)
target_include_directories
(
vcluster PUBLIC
${
CMAKE_CURRENT_SOURCE_DIR
}
/../../openfpm_data/src/
)
target_include_directories
(
vcluster PUBLIC
${
CMAKE_CURRENT_SOURCE_DIR
}
/../../openfpm_devices/src/
)
target_link_libraries
(
vcluster_test
${
Boost_LIBRARIES
}
)
target_link_libraries
(
vcluster_test
${
PETSC_LIBRARIES
}
)
# Request that particles be built with -std=c++11
# As this is a public compile feature anything that links to particles
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment