Skip to content

Commit

Permalink
Merge pull request KratosMultiphysics#796 from KratosMultiphysics/fea…
Browse files Browse the repository at this point in the history
…ture-improve-cmake

Feature improve cmake
  • Loading branch information
roigcarlo authored Sep 28, 2017
2 parents 5baf0d7 + cd0f492 commit 2e81c72
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 53 deletions.
31 changes: 16 additions & 15 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
cmake_minimum_required (VERSION 2.8.6)
cmake_policy(SET CMP0054 OLD)

project (KratosMultiphysics)

# Set here the version number **** only update upon tagging a release!
Expand All @@ -22,7 +24,6 @@ else(GIT_FOUND)
set (KratosMultiphysics_SHA1_NUMBER 0)
endif(GIT_FOUND)


configure_file(
"${PROJECT_SOURCE_DIR}/kratos_version.h.in"
"${PROJECT_SOURCE_DIR}/kratos/includes/kratos_version.h"
Expand All @@ -33,15 +34,11 @@ if(${CMAKE_COMPILER_IS_GNUCXX})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -funroll-loops -ffast-math -Wall -std=c++11")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -funroll-loops -ffast-math -Wall")
set(CMAKE_SHARED_LINKER_FLAGS " -Wl,--no-undefined")

# if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.0)
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wsuggest-override")
# endif(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.0)

message("additional default options were set for gcc")
message("CMAKE_CXX_FLAGS = ${CMAKE_CXX_FLAGS}")
message("CMAKE_C_FLAGS = ${CMAKE_C_FLAGS}")
endif(${CMAKE_COMPILER_IS_GNUCXX})

if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
if(${CMAKE_CXX_COMPILER_ID} MATCHES Clang)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -funroll-loops -Wall -Wno-unused-local-typedef -Wno-unknown-pragmas ")
Expand All @@ -61,8 +58,8 @@ if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
endif(${CMAKE_CXX_COMPILER_ID} MATCHES Intel)
else(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
if(${CMAKE_C_COMPILER} MATCHES "icc.*$")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -funroll-loops ") #-lpthread -wd654 -wd10010 ")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -funroll-loops ") #-lpthread -wd654 -wd10010 ")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -funroll-loops ") #-lpthread -wd654 -wd10010 ")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -funroll-loops ") #-lpthread -wd654 -wd10010 ")
set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined")
message("additional default options were set for intel compiler")
message("CMAKE_CXX_FLAGS = ${CMAKE_CXX_FLAGS}")
Expand Down Expand Up @@ -109,8 +106,17 @@ if(${MSVC14})
# Nothing needed right now
endif(${MSVC14})

# Tell the linker to give an error if undefined functions are found
# set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined")
# If no test policy enable by default
if(NOT DEFINED KRATOS_BUILD_TESTING)
message("KRATOS_BUILD_TESTING not defined. Setting to ON")
SET (KRATOS_BUILD_TESTING ON)
endif(NOT DEFINED KRATOS_BUILD_TESTING)

# If install prefix is set, install all the files.
if(DEFINED KRATOS_INSTALL_PREFIX)
SET(INSTALL_TESTING_FILES ON)
SET(INSTALL_PYTHON_FILES ON)
endif(DEFINED KRATOS_INSTALL_PREFIX)

# Set kratos specific module path
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake_modules")
Expand All @@ -119,11 +125,6 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake_modules")
######################################################################################
######################################################################################

# if(DEFINED KRATOS_EXTRA_LINK_LIBRARIES)
# link_directories(${KRATOS_EXTRA_LINK_PATH})
# find_library(EXTRA_LINK_LIBS ${KRATOS_EXTRA_LINK_LIBRARIES} PATH ${KRATOS_EXTRA_LINK_PATH} )
# endif(DEFINED KRATOS_EXTRA_LINK_LIBRARIES)

## Find all dependencies

##*****************************
Expand Down
56 changes: 18 additions & 38 deletions kratos/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,14 +1,6 @@
set(CMAKE_INCLUDE_CURRENT_DIR ON)


# ## add the include directories needed for the compilation
# message("current dir = " ${CMAKE_CURRENT_SOURCE_DIR})
# include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/sources )
# include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/container )
# include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/python )


## generate variables with the sources
## Kratos main source code
set( KRATOS_CORE_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/sources/global_variables.cpp;
${CMAKE_CURRENT_SOURCE_DIR}/sources/deprecated_variables.cpp;
Expand Down Expand Up @@ -60,8 +52,9 @@ set( KRATOS_CORE_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/sources/prime_numbers.cpp;
${CMAKE_CURRENT_SOURCE_DIR}/modeler/tetrahedra_ball.cpp;
${CMAKE_CURRENT_SOURCE_DIR}/modeler/tetrahedra_edge_shell.cpp;
)
)

## Kratos python interface code
set( KRATOS_PYTHON_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/python/add_banded_matrix_to_python.cpp
${CMAKE_CURRENT_SOURCE_DIR}/python/add_model_part_to_python.cpp
Expand Down Expand Up @@ -112,60 +105,47 @@ set( KRATOS_PYTHON_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/python/add_search_strategies_to_python.cpp
${CMAKE_CURRENT_SOURCE_DIR}/python/add_kratos_parameters_to_python.cpp
${CMAKE_CURRENT_SOURCE_DIR}/python/add_testing_to_python.cpp
${CMAKE_CURRENT_SOURCE_DIR}/python/add_logger_to_python.cpp
${CMAKE_CURRENT_SOURCE_DIR}/python/add_logger_to_python.cpp
${CMAKE_CURRENT_SOURCE_DIR}/python/add_model_to_python.cpp;
${CMAKE_CURRENT_SOURCE_DIR}/python/kratos_python.cpp
${CMAKE_CURRENT_SOURCE_DIR}/sources/connectivity_preserve_modeler.cpp;
# ${CMAKE_CURRENT_SOURCE_DIR}/processes/mdpa_reorder_consecutive_process.cpp;

# ${CMAKE_CURRENT_SOURCE_DIR}/sources/kratos_exception.cpp;
)

)
## Kratos testing soruces (testing engine, test are below)
file(GLOB_RECURSE KRATOS_CORE_TESTING_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/testing/*.cpp)

## Kratos I/o sources
file(GLOB_RECURSE KRATOS_CORE_INPUT_OUTPUT_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/input_output/*.cpp)

## Kratos tests sources. Enabled by default
if(${KRATOS_BUILD_TESTING} MATCHES ON)
file(GLOB_RECURSE KRATOS_TESTING_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/tests/*.cpp)
endif(${KRATOS_BUILD_TESTING} MATCHES ON)


###############################################################
## define library KratosCore to be included in all of the others
## Define library KratosCore to be included in all of the others
add_library(KratosCore SHARED ${KRATOS_CORE_SOURCES} ${KRATOS_CORE_TESTING_SOURCES} ${KRATOS_TESTING_SOURCES} ${KRATOS_CORE_INPUT_OUTPUT_SOURCES})
target_link_libraries(KratosCore ${Boost_LIBRARIES} ${PYTHON_LIBRARIES} gidpost )
set_target_properties(KratosCore PROPERTIES COMPILE_DEFINITIONS "KRATOS_CORE=IMPORT,API")
install(TARGETS KratosCore DESTINATION libs )

# if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
# SET_TARGET_PROPERTIES( KratosCore PROPERTIES COMPILE_FLAGS -fPIC)
# endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")

if(${INSTALL_PYTHON_FILES} MATCHES ON)
get_filename_component (CURRENT_DIR_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME)
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/python_scripts DESTINATION kratos/ FILES_MATCHING PATTERN "*.py" PATTERN ".svn" EXCLUDE)
endif(${INSTALL_PYTHON_FILES} MATCHES ON)

###############################################################
## define library Kratos which defines the basic python interface
## Define library Kratos which defines the basic python interface
add_library(Kratos SHARED ${KRATOS_PYTHON_SOURCES})
target_link_libraries(Kratos KratosCore)
set_target_properties(Kratos PROPERTIES PREFIX "")

#add_executable(KratosTesting ${CMAKE_CURRENT_SOURCE_DIR}/testing_main.cpp)
#target_link_libraries(KratosTesting KratosCore)

# changing the .dll suffix to .pyd
## Changing the .dll suffix to .pyd (For Windows)
if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
set_target_properties(Kratos PROPERTIES SUFFIX .pyd)
endif(${CMAKE_SYSTEM_NAME} MATCHES "Windows")

# changing the .dylib suffix to .so
## Changing the .dylib suffix to .so (For MacOS)
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set_target_properties(Kratos PROPERTIES SUFFIX .so)
endif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")

install(TARGETS Kratos DESTINATION libs )
#install(TARGETS KratosTesting DESTINATION bin )

# get_property(inc_dirs DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
# message("subdir inc_dirs = ${inc_dirs}")
install(TARGETS KratosCore DESTINATION libs)
if(${INSTALL_PYTHON_FILES} MATCHES ON)
get_filename_component (CURRENT_DIR_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME)
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/python_scripts DESTINATION kratos/ FILES_MATCHING PATTERN "*.py" PATTERN ".svn" EXCLUDE)
endif(${INSTALL_PYTHON_FILES} MATCHES ON)

0 comments on commit 2e81c72

Please sign in to comment.