Skip to content
Snippets Groups Projects
Commit aa803248 authored by Soeren Peters's avatar Soeren Peters
Browse files

Few refactorings in cmake. Remove the old openmp flag. Put the intel and gcc...

Few refactorings in cmake. Remove the old openmp flag. Put the intel and gcc libraries in the compiler file.
parent 422a76e6
No related branches found
No related tags found
No related merge requests found
......@@ -10,7 +10,7 @@ function(linkCUDA)
)
vf_get_library_name(library_name)
target_include_directories(${library_name} PRIVATE ${CUDA_INCLUDE_DIRS} ${CUDA_CUT_INCLUDE_DIR})
target_include_directories(${library_name} PRIVATE ${CUDA_CUT_INCLUDE_DIR})
# set the following properties only for specific targets
# set_property(TARGET ${targetName} PROPERTY CUDA_SEPARABLE_COMPILATION ON)
......
################################################################
### ADD_TARGET_PROPERTIES ###
################################################################
MACRO(ADD_TARGET_PROPERTIES target property)
SET(property_values ${ARGN})
# vorhandene properties holen
GET_TARGET_PROPERTY(TEMP_VAR ${target} ${property})
IF(TEMP_VAR)
LIST(APPEND property_values ${TEMP_VAR})
ENDIF()
#STRING(REGEX REPLACE ";" " " property_values ${property_values})
# doppelte Eintraege loeschen
SEPARATE_ARGUMENTS(property_values)
LIST(REMOVE_DUPLICATES property_values)
#aus Liste wieder einen String basteln (geht nich tmit regex replace...)
SET(new_property_values)
FOREACH(p ${property_values})
SET(new_property_values "${p} ${new_property_values}")
ENDFOREACH()
#property setzen
SET_TARGET_PROPERTIES(${target} PROPERTIES ${property} ${new_property_values})
#GET_TARGET_PROPERTY(TEMP_VAR ${target} ${property})
#MESSAGE("danach ${target} ${property} ${TEMP_VAR}")
ENDMACRO(ADD_TARGET_PROPERTIES target property)
################################################################
### CHECK_FOR_VARIABLE ###
### checks for a variable (also env-variables)
### if not found -> error-message!!!
### always: cache-entry update
################################################################
MACRO(CHECK_FOR_VARIABLE var)
#check ob evtl enviromentvariable gesetzt
IF(NOT ${var}) #true if ${var} NOT: empty, 0, N, NO, OFF, FALSE, NOTFOUND, or <variable>-NOTFOUND
SET(${var} $ENV{${var}})
ENDIF()
IF(NOT DEFINED ${var})
SET(${var} "${var}-NOTFOUND" CACHE STRING "${ARGN}" FORCE)
ENDIF(NOT DEFINED ${var})
IF(NOT ${var})
MESSAGE(FATAL_ERROR "CHECK_FOR_VARIABLE - error - set ${var}")
ENDIF()
SET(${var} ${${var}} CACHE STRING "${ARGN}" FORCE)
ENDMACRO(CHECK_FOR_VARIABLE var)
INCLUDE(${VF_CMAKE_DIR}/CMakeSetCompilerFlags.cmake)
###############################################################################################################
# Reset the compiler and linker flags
###############################################################################################################
SET(VF_COMPILER_DEFINITION)
SET(VF_LINK_OPTIONS)
SET(CAB_ADDITIONAL_LINK_LIBRARIES)
LIST(APPEND VF_COMPILER_DEFINITION SOURCE_ROOT=${VF_ROOT_DIR} )
#################################################################
### OS DEFINES ###
#################################################################
IF(WIN32)
list(APPEND VF_COMPILER_DEFINITION __WIN__)
ELSEIF(UNIX)
list(APPEND VF_COMPILER_DEFINITION __unix__)
ENDIF()
IF(APPLE)
list(APPEND VF_COMPILER_DEFINITION __APPLE__)
endif()
###############################################################
# set hostname -> CAB_MACHINE and load an optional config file
###############################################################
IF(NOT CAB_MACHINE)
SET(CAB_MACHINE $ENV{CAB_MACHINE})
IF( CAB_MACHINE )
STRING(TOUPPER "${CAB_MACHINE}" CAB_MACHINE)
ELSE()
EXECUTE_PROCESS( COMMAND hostname OUTPUT_VARIABLE CAB_MACHINE)
STRING(REGEX REPLACE "[ ]*([A-Za-z0-9]+).*[\\\\n]*" "\\1" CAB_MACHINE "${CAB_MACHINE}" )
STRING(TOUPPER "${CAB_MACHINE}" CAB_MACHINE)
ENDIF()
ENDIF()
CHECK_FOR_VARIABLE(CAB_MACHINE "machine name, e.g. ALTIX, ARWEN")
LIST(APPEND VF_COMPILER_DEFINITION CAB_MACHINE=${CAB_MACHINE})
SET(CMAKE_CONFIG_FILE "${VF_CMAKE_DIR}/cmake_config_files/${CAB_MACHINE}.config.cmake")
IF(NOT EXISTS ${CMAKE_CONFIG_FILE})
status("No configuration file found.")
ELSE()
status("Load configuration file ${CAB_MACHINE}.config.cmake")
INCLUDE(${CMAKE_CONFIG_FILE})
ENDIF()
###############################################################
# set hostname -> CAB_MACHINE and load an optional config file
###############################################################
macro(loadMachineFile)
IF(NOT CAB_MACHINE)
SET(CAB_MACHINE $ENV{CAB_MACHINE})
IF( CAB_MACHINE )
STRING(TOUPPER "${CAB_MACHINE}" CAB_MACHINE)
ELSE()
EXECUTE_PROCESS( COMMAND hostname OUTPUT_VARIABLE CAB_MACHINE)
STRING(REGEX REPLACE "[ ]*([A-Za-z0-9]+).*[\\\\n]*" "\\1" CAB_MACHINE "${CAB_MACHINE}" )
STRING(TOUPPER "${CAB_MACHINE}" CAB_MACHINE)
ENDIF()
ENDIF()
LIST(APPEND VF_COMPILER_DEFINITION CAB_MACHINE=${CAB_MACHINE})
SET(CMAKE_CONFIG_FILE "${VF_CMAKE_DIR}/cmake_config_files/${CAB_MACHINE}.config.cmake")
IF(NOT EXISTS ${CMAKE_CONFIG_FILE})
status("No configuration file found.")
ELSE()
status("Load configuration file ${CAB_MACHINE}.config.cmake")
include(${CMAKE_CONFIG_FILE})
ENDIF()
endmacro()
################################################################
### SET_COMPILER_SPECIFIC_FLAGS ###
### determines compiler flags variables ###
################################################################
MACRO(LOAD_COMPILER_FLAGS_FROM_FILE)
macro(loadCompilerFlags)
SET(CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "")
SET(CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS_DEBUG "")
......@@ -19,33 +50,40 @@ MACRO(LOAD_COMPILER_FLAGS_FROM_FILE)
MESSAGE(FATAL_ERROR "compiler=${CMAKE_CXX_COMPILER_ID} seems to be a not supported compiler")
ENDIF()
ENDMACRO()
endmacro()
################################################################
### ADD_COMPILER_FLAGS_TO_PROJECT ###
################################################################
MACRO(ADD_COMPILER_FLAGS_TO_PROJECT project_name)
LOAD_COMPILER_FLAGS_FROM_FILE()
function(addAdditionalFlags project_name)
#workaround fuer itanium processoren
IF(${CMAKE_SYSTEM_PROCESSOR} MATCHES "ia64")
LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS -D_M_IA64)
LIST(APPEND CAB_COMPILER_ADDTIONAL_C_COMPILER_FLAGS -D_M_IA64)
ENDIF()
status_lib("additional compiler flags CXX: ${CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS}")
status_lib("additional compiler flags CXX debug: ${CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS_DEBUG}")
status_lib("additional compiler flags CXX release: ${CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS_RELEASE}")
status_lib("additional compiler definitions: ${VF_COMPILER_DEFINITION}")
status_lib("additional linker flags: ${VF_LINK_OPTIONS}")
# compile definitions
foreach(flag IN LISTS VF_COMPILER_DEFINITION)
target_compile_definitions(${library_name} PRIVATE ${flag})
endforeach()
foreach(flag IN LISTS CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS)
target_compile_options(${project_name} PRIVATE "$<$<COMPILE_LANGUAGE:CXX>:${flag}>")
endforeach()
# link options
foreach(flag IN LISTS VF_LINK_OPTIONS) #TODO: check what happens when lib is static
target_link_options(${library_name} PRIVATE ${flag})
endforeach()
foreach(flag IN LISTS CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS_DEBUG)
target_compile_options(${project_name} PRIVATE "$<$<AND:$<COMPILE_LANGUAGE:CXX>,$<CONFIG:DEBUG>>:${flag}>")
endforeach()
# compile options
foreach(flag IN LISTS CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS)
target_compile_options(${project_name} PRIVATE "$<$<COMPILE_LANGUAGE:CXX>:${flag}>")
endforeach()
foreach(flag IN LISTS CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS_RELEASE)
target_compile_options(${project_name} PRIVATE "$<$<AND:$<COMPILE_LANGUAGE:CXX>,$<CONFIG:RELEASE>>:${flag}>")
endforeach()
foreach(flag IN LISTS CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS_DEBUG)
target_compile_options(${project_name} PRIVATE "$<$<AND:$<COMPILE_LANGUAGE:CXX>,$<CONFIG:DEBUG>>:${flag}>")
endforeach()
foreach(flag IN LISTS CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS_RELEASE)
target_compile_options(${project_name} PRIVATE "$<$<AND:$<COMPILE_LANGUAGE:CXX>,$<CONFIG:RELEASE>>:${flag}>")
endforeach()
ENDMACRO(ADD_COMPILER_FLAGS_TO_PROJECT project_name)
\ No newline at end of file
endfunction()
\ No newline at end of file
......@@ -8,16 +8,46 @@
#################################################################################
function(status msg)
message(STATUS " VF - ${msg}")
message(STATUS " VF: ${msg}")
endfunction()
function(status_lib msg)
message(STATUS " ${msg}")
endfunction()
#################################################################################
## include intern macros
#################################################################################
include(${VF_CMAKE_DIR}/CMakeCABMacros.cmake)
include(${VF_CMAKE_DIR}/CMakeSetCompilerFlags.cmake)
include(${VF_CMAKE_DIR}/FileUtilities.cmake)
include(${VF_CMAKE_DIR}/3rd.cmake)
###############################################################################################################
# Reset the compiler and linker flags
###############################################################################################################
SET(VF_COMPILER_DEFINITION)
SET(VF_LINK_OPTIONS)
SET(CAB_ADDITIONAL_LINK_LIBRARIES)
LIST(APPEND VF_COMPILER_DEFINITION SOURCE_ROOT=${VF_ROOT_DIR} )
#################################################################
### OS DEFINES ###
#################################################################
IF(WIN32)
list(APPEND VF_COMPILER_DEFINITION __WIN__)
ELSEIF(UNIX)
list(APPEND VF_COMPILER_DEFINITION __unix__)
ENDIF()
IF(APPLE)
list(APPEND VF_COMPILER_DEFINITION __APPLE__)
endif()
#################################################################
### load compiler and machine file ###
#################################################################
loadMachineFile()
loadCompilerFlags()
#################################################################################
## set global project file endings
......@@ -32,7 +62,6 @@ set (VIRTUAL_FLUIDS_GLOB_FILES
CACHE INTERNAL "File endings to glob for source files" )
#################################################################################
## Sets the library name to the current folder name.
## output parameter: library_name
......@@ -88,11 +117,6 @@ function(vf_add_library)
includeProductionFiles (${library_name} "${sourceFiles}")
#################################################################
### ADDITIONAL_MAKE_CLEAN_FILES ###
#################################################################
#SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${GENERATED_FILES}")
#################################################################
### EXCECUTABLE ###
#################################################################
......@@ -120,7 +144,7 @@ function(vf_add_library)
#################################################################
### ADDITIONAL LINK LIBRARIES ###
#################################################################
status("Link Depending Libraries: ${ARG_DEPENDS}")
status_lib("Link Depending Libraries: ${ARG_DEPENDS}")
if (ARG_DEPENDS)
target_link_libraries(${library_name} PRIVATE ${ARG_DEPENDS})
endif()
......@@ -128,22 +152,7 @@ function(vf_add_library)
#################################################################
### COMPILER Flags ###
#################################################################
ADD_COMPILER_FLAGS_TO_PROJECT(${library_name})
status("compiler flags for compiler ${CAB_COMPILER} on machine ${CAB_MACHINE} for project ${project_name} (${ARG_BUILDTYPE}) have been configured")
status("compiler flags CXX: ${CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS}")
status("additional compiler flags CXX debug: ${CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS_DEBUG}")
status("additional compiler flags CXX release: ${CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS_RELEASE}")
status("additional compiler definitions: ${VF_COMPILER_DEFINITION}")
status("additional linker flags: ${VF_LINK_OPTIONS}")
foreach(flag IN LISTS VF_COMPILER_DEFINITION)
target_compile_definitions(${library_name} PRIVATE ${flag})
endforeach()
foreach(flag IN LISTS VF_LINK_OPTIONS) #TODO: check what happens when lib is static
target_link_options(${library_name} PRIVATE ${flag})
endforeach()
addAdditionalFlags(${library_name})
if (NOT ${ARG_BUILDTYPE} MATCHES binary)
......@@ -157,7 +166,7 @@ function(vf_add_library)
target_include_directories(${library_name} PRIVATE ${VF_SRC_DIR}/cpu)
#status("... configuring target: ${library_name} (type=${ARG_BUILDTYPE}) done")
status("... configuring target: ${library_name} (type=${ARG_BUILDTYPE}) done")
endfunction()
......
#################################################################################
# VirtualFluids MACHINE FILE
# Responsible: XXX
#################################################################################
......@@ -43,6 +43,4 @@ SET(BOOST_LIBRARYDIR "/cluster/lib/boost/1.63.0/gcc/lib" CACHE PATH "BOOST_LIB
#SET(VTK_DIR "/home/irmb/tools/VTK/build/VTK-8.2.0" CACHE PATH "VTK directory override" FORCE)
#SET(VTK_DIR "/home/stelenz/software/vtk/VTK-8.1.0/build" CACHE PATH "VTK directory override" FORCE)
SET(CUDA_CUT_INCLUDE_DIR "/cluster/cuda/9.0/include;/cluster/cuda/9.0/samples/common/inc" CACHE PATH "CUDA_CUT_INCLUDE_DIR")
SET(CUDA_SAMPLE_INCLUDE_DIR "/cluster/cuda/9.0/samples/common/inc" CACHE PATH "CUDA_CUT_INCLUDE_DIR")
set(NVCUDASAMPLES_ROOT "/cluster/cuda/11.0/samples")
......@@ -5,13 +5,6 @@
LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-O3;-fomit-frame-pointer;-finline-functions;-funroll-all-loops;-fPIC")
LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-deprecated") #deprecated header warning (jarl benutzt sstream weil schneller und so)
#############################################################################################################
# OpenMP support
#############################################################################################################
IF(USE_OPENMP)
LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-fopenmp")
ENDIF()
#############################################################################################################
# mt support
#############################################################################################################
......@@ -33,6 +26,5 @@ LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-std=c++11")
#LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wregister")
IF(NOT APPLE)
LIST(APPEND CAB_ADDITIONAL_LINK_PROPS "-lrt")
ENDIF()
list(APPEND VF_LINK_OPTIONS -lgomp)
list(APPEND VF_LINK_OPTIONS -lrt)
......@@ -19,13 +19,6 @@ LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-xHOST;-O3;-ip;-fno-alias
#Debug
#LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-g -traceback")
###############################################################################################################
## OpenMP support
###############################################################################################################
IF(USE_OPENMP)
LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-qopenmp")
ENDIF()
###############################################################################################################
## mt support
###############################################################################################################
......@@ -35,3 +28,6 @@ ENDIF()
# c++ 11 support
#############################################################################################################
LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-std=c++11")
list(APPEND VF_LINK_OPTIONS -parallel)
list(APPEND VF_LINK_OPTIONS -irc)
......@@ -22,10 +22,3 @@ LIST(APPEND VF_COMPILER_DEFINITION _CRT_SECURE_NO_DEPRECATE)
LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "/wd4996") #deprecated strcpy...
LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "/wd4800") #forcing value to bool 'true' or 'false' (performance warning)
LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "/bigobj") #ansonsten funzt mit boost das compilieren unter windows nimmer
###############################################################################################################
## OpenMP support
###############################################################################################################
IF(USE_OPENMP)
LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "/openmp")
ENDIF()
......@@ -28,7 +28,6 @@ SET(USE_METIS ON CACHE BOOL "include METIS library support")
SET(USE_MPI ON CACHE BOOL "include MPI library support")
SET(USE_VTK OFF CACHE BOOL "include VTK library support")
SET(USE_CATALYST OFF CACHE BOOL "include Paraview Catalyst support")
SET(USE_BOOST OFF CACHE BOOL "include Boost support")
#SET(USE_PYTHON OFF CACHE BOOL "include Python scripting support")
SET(USE_HLRN_LUSTRE OFF CACHE BOOL "include HLRN Lustre support")
......@@ -40,25 +39,6 @@ IF((NOT ${CMAKE_CXX_COMPILER} MATCHES mpicxx) AND (NOT ${CMAKE_CXX_COMPILER} MAT
ENDIF()
#SET(MPI_CXX_LINK_FLAGS -mpe=mpilog)
#SET(BOOST_USE_MULTITHREAD ON)
#SET(Boost_USE_STATIC_LIBS ON)
#SET(Boost_DEBUG TRUE)
#SET(bv ${BOOST_VERSION}) #hack for find boost, after next command ${BOOST_VERSION} would be set to 0
#FIND_PACKAGE(Boost ${bv} COMPONENTS system date_time thread serialization chrono regex)
#FIND_PACKAGE(Boost ${BOOST_VERSION} COMPONENTS system date_time thread serialization chrono regex)
#FIND_PACKAGE(Boost ${bv} COMPONENTS system thread serialization date_time)
#SET(BOOST_VERSION ${bv})
#IF(${USE_PYTHON})
# FIND_PACKAGE(Boost ${BOOST_VERSION} COMPONENTS system date_time thread serialization chrono regex python)
#ELSE(${USE_PYTHON})
# FIND_PACKAGE(Boost ${BOOST_VERSION} COMPONENTS system date_time thread serialization chrono regex)
#ENDIF()
IF(${USE_BOOST})
FIND_PACKAGE(Boost ${BOOST_VERSION})
ENDIF()
#VTK
IF(${USE_VTK})
#find_package(VTK 6.1 NO_MODULE)
......@@ -92,18 +72,12 @@ IF(${USE_HLRN_LUSTRE})
list(APPEND VF_COMPILER_DEFINITION HLRN_LUSTRE)
ENDIF()
IF(${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel")
list(APPEND VF_LINK_OPTIONS -parallel)
list(APPEND VF_LINK_OPTIONS -irc)
ENDIF()
IF(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
list(APPEND VF_LINK_OPTIONS -lgomp)
list(APPEND VF_LINK_OPTIONS -lrt)
# workaround itanium processoren
IF(${CMAKE_SYSTEM_PROCESSOR} MATCHES "ia64")
LIST(APPEND VF_COMPILER_DEFINITION _M_IA64)
ENDIF()
# IF(${USE_PYTHON})
# FIND_PACKAGE(PythonLibs)
# INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_DIR})
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment