Newer
Older
MACRO(ADD_CXX_FLAGS)
ENDMACRO(ADD_CXX_FLAGS)
MACRO( LISTTOSTRING listvar targetvar )
SET( targetvar "" )
FOREACH( item ${listvar} )
SET( targetvar "${targetvar} ${item}" )
ENDFOREACH( item )
ENDMACRO( LISTTOSTRING )
function(TO_LIST_SPACES _LIST_NAME OUTPUT_VAR)
set(NEW_LIST_SPACE)
foreach(ITEM ${${_LIST_NAME}})
set(NEW_LIST_SPACE ${NEW_LIST_SPACE} ${ITEM})
endforeach()
# string(STRIP ${NEW_LIST_SPACE} NEW_LIST_SPACE)
set(${OUTPUT_VAR} "${NEW_LIST_SPACE}" PARENT_SCOPE)
endfunction()
MACRO(INCLUDE_DIR)
FOREACH( ARG ${ARGN} )
LIST(APPEND MY_CXX_FLAGS "-I${ARG}" )
INCLUDE_DIRECTORIES(${ARG})
ENDFOREACH( ARG )
ENDMACRO(INCLUDE_DIR)
MACRO(INCLUDE_SYS_DIR)
FOREACH( ARG ${ARGN} )
LIST(APPEND MY_CXX_FLAGS "-isystem${ARG}")
INCLUDE_DIRECTORIES(${ARG})
ENDFOREACH( ARG )
ENDMACRO(INCLUDE_SYS_DIR)
MACRO( HEADERCHECK )
ADD_CUSTOM_TARGET( headercheck SOURCES ${ARGN} )
FOREACH( HEADER ${ARGN} )
GET_FILENAME_COMPONENT( fn ${HEADER} NAME )
SET( TEST_NAME "headercheck_${fn}")
#LISTTOSTRING( MY_CXX_FLAGS TEST_NAME_FLAGS )
TO_LIST_SPACES( MY_CXX_FLAGS TEST_NAME_FLAGS )
SET(XARGS ${TEST_NAME_FLAGS} -c ${HEADER} -o ${CMAKE_CURRENT_BINARY_DIR}/${TEST_NAME}.o )
ADD_CUSTOM_TARGET( ${TEST_NAME} ${CMAKE_CXX_COMPILER} ${XARGS} )
ADD_TEST( ${TEST_NAME} ${CMAKE_CXX_COMPILER} ${XARGS} )
add_dependencies( headercheck ${TEST_NAME} )
ENDFOREACH( HEADER )
ENDMACRO( HEADERCHECK )
MACRO( ADD_DUNE_MODULES )
FOREACH( MODULE ${ARGN} )
INCLUDE_SYS_DIR( ${CMAKE_CURRENT_SOURCE_DIR}/../dune-${MODULE} )
LINK_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../dune-${MODULE}/${MODULE}/.libs )
FILE( GLOB_RECURSE tmp_header "${CMAKE_CURRENT_SOURCE_DIR}/../dune-${MODULE}/${MODULE}/*.hh" )
LIST( APPEND DUNE_HEADERS ${tmp_header} )
MACRO( ADD_MY_MODULES )
FOREACH( MODULE ${ARGN} )
INCLUDE_DIR( ${CMAKE_CURRENT_SOURCE_DIR}/../dune-${MODULE} )
LINK_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../dune-${MODULE}/${MODULE}/.libs )
FILE( GLOB_RECURSE tmp_header "${CMAKE_CURRENT_SOURCE_DIR}/../dune-${MODULE}/${MODULE}/*.hh" )
LIST( APPEND DUNE_HEADERS ${tmp_header} )
ENDFOREACH(MODULE)
ENDMACRO( ADD_MY_MODULES )
MACRO( ADD_DUNE_EXECUTABLE target sources headers libs )
ADD_EXECUTABLE(${target} ${sources} ${headers} ${DUNE_HEADERS} )
#for some $@#&& reason these targets DO NOT inherit flags added via TARGET_LINK_LIBRARIES nor INCLUDE_DIRECTORIES
#so we need some magic to readd them
# get_target_property(tmp_flags ${target} COMPILE_FLAGS )
# if( NOT ${tmp_flags} )
# set( tmp_flags "" )
# endif( NOT ${tmp_flags} )
# LIST(APPEND MY_CXX_FLAGS ${tmp_flags} )
# foreach(arg ${MY_CXX_FLAGS} )
# set(bar "${bar} ${arg}")
# endforeach(arg ${MY_CXX_FLAGS} )
# set_target_properties( ${target} PROPERTIES COMPILE_FLAGS ${bar} )
# get_target_property(tmp_flags ${target} LINK_FLAGS )
# if( NOT ${tmp_flags} )
# set( tmp_flags "" )
# endif( NOT ${tmp_flags} )
# set( tmp_flags "${bar} ${tmp_flags}" )
# set_target_properties( ${target} PROPERTIES LINK_FLAGS ${tmp_flags} )
add_dependencies( ${target} config_refresh )
ENDMACRO( ADD_DUNE_EXECUTABLE )
add_custom_target( config_refresh
${CMAKE_CURRENT_SOURCE_DIR}/cmake/regen_config_header.sh ${CMAKE_CURRENT_BINARY_DIR}/cmake_config.h
)
SET( CUSTOM_FLAGS
-Wall -Wextra -pedantic -O3 -DDNDEBUG -funroll-loops -g -ggdb -DENABLE_ADAPTIVE=1 -DADAPTIVE_SOLVER -DUSE_BFG_CG_SCHEME -fno-strict-aliasing -std=c++0x CACHE LIST
"CUSTOM FLAGS")
FIND_PACKAGE(Boost 1.35.0 REQUIRED)
INCLUDE_DIR(${Boost_INCLUDE_DIR})
FIND_PACKAGE( PkgConfig )
pkg_check_modules( CCGNU REQUIRED libccgnu2 )
ADD_CXX_FLAGS( "${CCGNU_CFLAGS}" )