From: Matthias Maier Date: Tue, 28 Jan 2014 18:58:22 +0000 (+0000) Subject: CMake: Refactor list deduplication into a macro X-Git-Tag: v8.2.0-rc1~941 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e43b06d681ff1d7b4ffe336f887a9befbf540015;p=dealii.git CMake: Refactor list deduplication into a macro git-svn-id: https://svn.dealii.org/trunk@32336 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/cmake/macros/macro_remove_duplicates.cmake b/deal.II/cmake/macros/macro_remove_duplicates.cmake new file mode 100644 index 0000000000..d0ec688fdd --- /dev/null +++ b/deal.II/cmake/macros/macro_remove_duplicates.cmake @@ -0,0 +1,35 @@ +## --------------------------------------------------------------------- +## $Id$ +## +## Copyright (C) 2014 by the deal.II authors +## +## This file is part of the deal.II library. +## +## The deal.II library is free software; you can use it, redistribute +## it, and/or modify it under the terms of the GNU Lesser General +## Public License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## The full text of the license can be found in the file LICENSE at +## the top level of the deal.II distribution. +## +## --------------------------------------------------------------------- + +# +# Remove duplicate entries from a list. Optionally do this in reverse +# order, keeping the rightmost element +# +# Usage: +# REMOVE_DUPLICATES(list [REVERSE]) +# + +MACRO(REMOVE_DUPLICATES _list) + IF(NOT "${${_list}}" STREQUAL "") + IF("${ARGN}" STREQUAL "REVERSE") + LIST(REVERSE ${_list}) + ENDIF() + LIST(REMOVE_DUPLICATES ${_list}) + IF("${ARGN}" STREQUAL "REVERSE") + LIST(REVERSE ${_list}) + ENDIF() + ENDIF() +ENDMACRO() diff --git a/deal.II/cmake/setup_finalize.cmake b/deal.II/cmake/setup_finalize.cmake index fea5613d55..47318eb20a 100644 --- a/deal.II/cmake/setup_finalize.cmake +++ b/deal.II/cmake/setup_finalize.cmake @@ -54,25 +54,16 @@ ENDFOREACH() # # Deduplicate entries in DEAL_II_USER_INCLUDE_DIRS # -IF(NOT "${DEAL_II_USER_INCLUDE_DIRS}" STREQUAL "") - LIST(REMOVE_DUPLICATES DEAL_II_USER_INCLUDE_DIRS) -ENDIF() +REMOVE_DUPLICATES(DEAL_II_USER_INCLUDE_DIRS) # # Deduplicate entries in DEAL_II_EXTERNAL_LIBRARIES(_...) # in reverse order: # -IF(NOT "${DEAL_II_EXTERNAL_LIBRARIES}" STREQUAL "") - LIST(REVERSE DEAL_II_EXTERNAL_LIBRARIES) - LIST(REMOVE_DUPLICATES DEAL_II_EXTERNAL_LIBRARIES) - LIST(REVERSE DEAL_II_EXTERNAL_LIBRARIES) -ENDIF() +REMOVE_DUPLICATES(DEAL_II_EXTERNAL_LIBRARIES REVERSE) + FOREACH(_build ${DEAL_II_BUILD_TYPES}) - IF(NOT "${DEAL_II_EXTERNAL_LIBRARIES_${_build}}" STREQUAL "") - LIST(REVERSE DEAL_II_EXTERNAL_LIBRARIES_${_build}) - LIST(REMOVE_DUPLICATES DEAL_II_EXTERNAL_LIBRARIES_${_build}) - LIST(REVERSE DEAL_II_EXTERNAL_LIBRARIES_${_build}) - ENDIF() + REMOVE_DUPLICATES(DEAL_II_EXTERNAL_LIBRARIES_${_build} REVERSE) ENDFOREACH() #