diff --git a/CMakeLists.txt b/CMakeLists.txt index 44e40b639c2328b5512ad4c557a877d4d9cbec8f..91b0a1866ad4835bbdc3db6aec2a8c91a39770a9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -62,12 +62,15 @@ if(SYSTEM_CRAY) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -dynamic") endif() -# Cray systems +# KNL target set(TARGET_KNL OFF CACHE BOOL "target Intel KNL architecture") if(TARGET_KNL) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXXOPT_KNL}") endif() +# vectorization +set(TARGET_VECTORIZE OFF CACHE BOOL "generate optimized code that vectorizes with the Intel compiler") + # targets for extermal dependencies include(ExternalProject) externalproject_add(modparser diff --git a/mechanisms/CMakeLists.txt b/mechanisms/CMakeLists.txt index 24b4c3d688aa0769620506aa60b761f4d8d0a98b..9dded83451d6f5f61721b5fe316447988226f1e4 100644 --- a/mechanisms/CMakeLists.txt +++ b/mechanisms/CMakeLists.txt @@ -2,13 +2,18 @@ set(mechanisms pas hh expsyn exp2syn) set(modcc "${CMAKE_BINARY_DIR}/external/bin/modcc") +set(modcc_flags "-t cpu") +if(TARGET_VECTORIZE) + set(modcc_flags ${modcc_flags} -O) +endif() + foreach(mech ${mechanisms}) set(mod "${CMAKE_CURRENT_SOURCE_DIR}/mod/${mech}.mod") set(hpp "${CMAKE_CURRENT_SOURCE_DIR}/${mech}.hpp") add_custom_command(OUTPUT "${hpp}" DEPENDS modparser "${mod}" WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" - COMMAND "${modcc}" -t cpu -O -o "${hpp}" "${mod}") + COMMAND ${modcc} ${modcc_flags} ${mod} -o ${hpp}) set_source_files_properties("${hpp}" PROPERTIES GENERATED TRUE) list(APPEND all_mod_hpps "${hpp}") endforeach()