diff --git a/cmake/waLBerlaHelperFunctions.cmake b/cmake/waLBerlaHelperFunctions.cmake index 74c6c9516e4a3868f9ad4b01cfe4c8dfe922df93..50e457c071b8b9e5681c40baa4ae7794af1ee876 100644 --- a/cmake/waLBerlaHelperFunctions.cmake +++ b/cmake/waLBerlaHelperFunctions.cmake @@ -79,7 +79,7 @@ function( waLBerla_generate_target_from_python ) add_custom_command(OUTPUT ${generatedWithAbsolutePath} DEPENDS ${sourceFile} - COMMAND ${CMAKE_COMMAND} -E env PYTHONPATH=${WALBERLA_PYTHON_DIR} ${PYTHON_EXECUTABLE} ${sourceFile} ${pythonParameters} + COMMAND ${CMAKE_COMMAND} -E env PYTHONPATH=${WALBERLA_PYTHON_DIR}:$ENV{PYTHONPATH} ${PYTHON_EXECUTABLE} ${sourceFile} ${pythonParameters} WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${codegenCfg}") add_library(${PYGEN_NAME} ${generatedWithAbsolutePath}) @@ -90,29 +90,29 @@ endfunction() ####################################################################################################################### # # Subtracts list2 from list 2 -# +# # Keywords: # LIST1 first list # LIST2 second list # Example: # list_minus ( result LIST1 "entry1" "entry2" "entry3" LIST2 "entry1" "entry3" ) # -> result has a single entry: "entry2" -# +# ####################################################################################################################### function( list_minus resultOut ) set( options ) set( oneValueArgs ) set( multiValueArgs LIST1 LIST2 ) cmake_parse_arguments( ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) - + set ( result ${ARG_LIST1} ) foreach ( secondEntry ${ARG_LIST2} ) list (REMOVE_ITEM result ${secondEntry} ) endforeach() - + set ( ${resultOut} ${result} PARENT_SCOPE ) - -endfunction( list_minus ) + +endfunction( list_minus ) ####################################################################################################################### @@ -120,47 +120,47 @@ endfunction( list_minus ) ####################################################################################################################### # -# Adds waLBerla to cmake package registry, and sets internal cache variables -# ( include paths, compile definitions, compiler flags ... ) -# +# Adds waLBerla to cmake package registry, and sets internal cache variables +# ( include paths, compile definitions, compiler flags ... ) +# # Which can be read by projects that add waLBerla as a subdirectory -# See for example waLBerla_import -# +# See for example waLBerla_import +# ####################################################################################################################### function ( waLBerla_export ) - # Write the build directory to the cmake package config - # which is under ~/.cmake/packages (Linux), or in the registry (Windows) - export( PACKAGE waLBerla ) - + # Write the build directory to the cmake package config + # which is under ~/.cmake/packages (Linux), or in the registry (Windows) + export( PACKAGE waLBerla ) + # Copy a config file to the build directory which is executed when from another project - # find_package( waLBerla ) is called + # find_package( waLBerla ) is called configure_file ( cmake/walberla-config-builddir.cmake walberla-config.cmake @ONLY ) - + # Export compiler flags set ( compilerList "CXX" "C" ) foreach ( compiler ${compilerList} ) set ( WALBERLA_INCLUDE_SYSTEM_FLAG_${compiler} ${CMAKE_INCLUDE_SYSTEM_FLAG_${compiler}} CACHE INTERNAL "${compiler} include flags for walberla" ) - set ( WALBERLA_${compiler}_FLAGS ${CMAKE_${compiler}_FLAGS} + set ( WALBERLA_${compiler}_FLAGS ${CMAKE_${compiler}_FLAGS} CACHE INTERNAL "${compiler} flags for walberla" ) - - foreach ( buildType ${CMAKE_CONFIGURATION_TYPES} ) - set ( WALBERLA_${compiler}_FLAGS_${buildType} ${CMAKE_${compiler}_FLAGS_${buildType}} + + foreach ( buildType ${CMAKE_CONFIGURATION_TYPES} ) + set ( WALBERLA_${compiler}_FLAGS_${buildType} ${CMAKE_${compiler}_FLAGS_${buildType}} CACHE INTERNAL "${compiler} flags for walberla" ) endforeach() - endforeach() - + endforeach() + # Export linker flags set ( WALBERLA_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS} CACHE INTERNAL "walberla linker flags") - foreach ( buildType ${CMAKE_CONFIGURATION_TYPES} ) - set ( WALBERLA_EXE_LINKER_FLAGS_${buildType} ${CMAKE_EXE_LINKER_FLAGS_${buildType}} + foreach ( buildType ${CMAKE_CONFIGURATION_TYPES} ) + set ( WALBERLA_EXE_LINKER_FLAGS_${buildType} ${CMAKE_EXE_LINKER_FLAGS_${buildType}} CACHE INTERNAL "walberla linker flags for ${buildType}" ) endforeach() - + # Export service libs set ( WALBERLA_SERVICE_LIBS ${SERVICE_LIBS} CACHE INTERNAL "External Libraries necessary for waLBerla" ) - + # Export compile definitions get_directory_property( WALBERLA_COMPILE_DEFINITIONS DIRECTORY ${walberla_SOURCE_DIR} COMPILE_DEFINITIONS ) set ( WALBERLA_COMPILE_DEFINITIONS ${WALBERLA_COMPILE_DEFINITIONS} CACHE INTERNAL "waLBerla compile definitions" ) @@ -168,7 +168,7 @@ function ( waLBerla_export ) # Export include paths get_directory_property( WALBERLA_INCLUDE_DIRS DIRECTORY ${walberla_SOURCE_DIR} INCLUDE_DIRECTORIES) set ( WALBERLA_INCLUDE_DIRS ${WALBERLA_INCLUDE_DIRS} CACHE INTERNAL "waLBerla include directories" ) - + # Export link paths set ( WALBERLA_LINK_DIRS ${LINK_DIRS} CACHE INTERNAL "waLBerla link directories" ) @@ -204,31 +204,31 @@ function ( waLBerla_import ) endif() endforeach() endif() - + # Import compile definitions if ( NOT NO_COMPILE_DEFINITIONS ) set_property( DIRECTORY ${CMAKE_SOURCE_DIR} PROPERTY COMPILE_DEFINITIONS ${WALBERLA_COMPILE_DEFINITIONS} ) endif() - + # Import compiler flags if ( NOT NO_COMPILER_FLAGS ) set ( compilerList "CXX" "C" ) foreach ( compiler ${compilerList} ) set ( CMAKE_INCLUDE_SYSTEM_FLAG_${compiler} ${WALBERLA_INCLUDE_SYSTEM_FLAG_${compiler}} PARENT_SCOPE ) set ( CMAKE_${compiler}_FLAGS ${WALBERLA_${compiler}_FLAGS} PARENT_SCOPE ) - - foreach ( buildType ${CMAKE_CONFIGURATION_TYPES} ) + + foreach ( buildType ${CMAKE_CONFIGURATION_TYPES} ) set ( CMAKE_${compiler}_FLAGS_${buildType} ${WALBERLA_${compiler}_FLAGS_${buildType}} PARENT_SCOPE ) endforeach() - endforeach() - + endforeach() + # Import linker flags set ( CMAKE_EXE_LINKER_FLAGS ${WALBERLA_EXE_LINKER_FLAGS} ) - foreach ( buildType ${CMAKE_CONFIGURATION_TYPES} ) + foreach ( buildType ${CMAKE_CONFIGURATION_TYPES} ) set ( CMAKE_EXE_LINKER_FLAGS_${buildType} ${WALBERLA_EXE_LINKER_FLAGS_${buildType}} PARENT_SCOPE ) - endforeach() + endforeach() endif() - + set( SERVICE_LIBS ${WALBERLA_SERVICE_LIBS} PARENT_SCOPE ) set( CMAKE_CXX_STANDARD ${WALBERLA_CXX_STANDARD} PARENT_SCOPE) @@ -243,26 +243,26 @@ endfunction( waLBerla_import) ####################################################################################################################### # # Group Files for an IDE like VS -# +# # Keywords: # FILES all files which are in a certain group # Example: # file ( GLOB_RECURSE sourceFiles "*.h" "*.c" ) # group_files ( "Source Files" FILES ${sourceFiles} ) -# +# ####################################################################################################################### function( group_files group ) set( options ) set( oneValueArgs) set( multiValueArgs FILES) cmake_parse_arguments( ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) - + foreach( filename ${ARG_FILES} ) file( RELATIVE_PATH rel ${CMAKE_CURRENT_SOURCE_DIR} ${filename}) if( rel MATCHES ".*/.*" ) # subdirectory found -> add to subdirectory get_filename_component(dir ${rel} PATH ) - # replace slashes by some underscores to use path as variable name + # replace slashes by some underscores to use path as variable name # -> you are allowed to use at max two underscores in your folder name string( REGEX REPLACE "/" "___" subname ${dir} ) list( APPEND subfiles${subname} ${filename} ) @@ -272,11 +272,11 @@ function( group_files group ) list( APPEND files ${filename} ) endif() endforeach() - + if( subnames ) list( REMOVE_DUPLICATES subnames ) endif() - + foreach( subname ${subnames} ) string( REGEX REPLACE "___" "\\\\" subgroup ${subname} ) #message( STATUS " Group: ${group}\\${subgroup} and files: ${subfiles${subname}}" ) @@ -292,9 +292,9 @@ endfunction( group_files ) ####################################################################################################################### # # Sets version number of waLberla -# +# # Example: -# +# ####################################################################################################################### function( set_version VERSION_MAJOR VERSION_PATCH ) set( WALBERLA_MAJOR_VERSION ${VERSION_MAJOR} CACHE STRING "waLBerla major version" FORCE )