diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000000000000000000000000000000000..6681eef91831a17ea1b358700e26650be053afda --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "cmake-library"] + path = cmake-library + url = ../../cmake/cmake-library diff --git a/CI/ci-linux.sh b/CI/ci-linux.sh index 72ab32a35245052ed40e82d36f2503c1d6c19d4e..822a9aeac44873fc0cac6509815bfb98b672f7f8 100755 --- a/CI/ci-linux.sh +++ b/CI/ci-linux.sh @@ -47,12 +47,12 @@ OUTPUT='\033[0;32m' WARNING='\033[0;93m' #clone OpenVolumeMesh -if [ ! -d OpenVolueMesh ]; then - git clone https://graphics.rwth-aachen.de:9000/OpenVolumeMesh/OpenVolumeMesh -else +if [ -d OpenVolumeMesh/ ]; then cd OpenVolumeMesh git pull cd .. +else + git clone https://graphics.rwth-aachen.de:9000/OpenVolumeMesh/OpenVolumeMesh fi @@ -79,6 +79,8 @@ echo "======================================================================" echo -e "${NC}" +git submodule update --init --recursive + if [ ! -d build-release-$BUILDPATH ]; then mkdir build-release-$BUILDPATH fi @@ -100,13 +102,12 @@ echo "Running unittests Release version" echo "======================================================================" echo -e "${NC}" -cd Build +cd Build/bin #execute tests ./unittests --gtest_color=yes --gtest_output=xml -cd .. -cd .. +cd ../../.. echo -e "${OUTPUT}" echo "" @@ -138,10 +139,9 @@ echo "======================================================================" echo -e "${NC}" -cd Build +cd Build/bin #execute tests ./unittests --gtest_color=yes --gtest_output=xml -cd .. -cd .. +cd ../../.. diff --git a/CI/ci-mac.sh b/CI/ci-mac.sh index 77586448b7d1f5c2e6f5d004f440714d8157f1ae..2753d9be80973d4d3a43e27d20c1098532aa8607 100755 --- a/CI/ci-mac.sh +++ b/CI/ci-mac.sh @@ -32,7 +32,7 @@ OUTPUT='\033[0;32m' WARNING='\033[0;93m' #clone OpenVolumeMesh -if [ ! -d OpenVolueMesh ]; then +if [ ! -d OpenVolumeMesh ]; then git clone https://graphics.rwth-aachen.de:9000/OpenVolumeMesh/OpenVolumeMesh else cd OpenVolumeMesh @@ -60,6 +60,8 @@ echo "======================================================================" echo -e "${NC}" +git submodule update --init --recursive + if [ ! -d build-release-$BUILDPATH ]; then mkdir build-release-$BUILDPATH fi @@ -81,13 +83,12 @@ echo "Running unittests Release version" echo "======================================================================" echo -e "${NC}" -cd Build +cd Build/bin #execute tests ./unittests --gtest_color=yes --gtest_output=xml -cd .. -cd .. +cd ../../.. echo -e "${OUTPUT}" echo "" @@ -119,10 +120,9 @@ echo "======================================================================" echo -e "${NC}" -cd Build +cd Build/bin #execute tests ./unittests --gtest_color=yes --gtest_output=xml -cd .. -cd .. +cd ../../.. diff --git a/CMakeLists.txt b/CMakeLists.txt index d6e0b4d235f1688c9af6f81315eda122d0651989..425b500214a669001db3ad82f214855f0c815237 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,7 +26,7 @@ if("${PROJECT_NAME}" STREQUAL "") project (HexEx) endif() -list (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) +list (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_SOURCE_DIR}/cmake-library/finders ${CMAKE_SOURCE_DIR}/cmake-library/VCI) add_definitions(-DINCLUDE_TEMPLATES) diff --git a/cmake-library b/cmake-library new file mode 160000 index 0000000000000000000000000000000000000000..4f4210e0b123b4131dd6952ac359e166c3ab28e6 --- /dev/null +++ b/cmake-library @@ -0,0 +1 @@ +Subproject commit 4f4210e0b123b4131dd6952ac359e166c3ab28e6 diff --git a/cmake/ACGCommon.cmake b/cmake/ACGCommon.cmake deleted file mode 100644 index fdba37a89ad337b6a1fc26d45230027877c01e78..0000000000000000000000000000000000000000 --- a/cmake/ACGCommon.cmake +++ /dev/null @@ -1,382 +0,0 @@ -if (EXISTS ${CMAKE_SOURCE_DIR}/${CMAKE_PROJECT_NAME}.cmake) - include (${CMAKE_SOURCE_DIR}/${CMAKE_PROJECT_NAME}.cmake) -endif () - -# prevent build in source directory - if ("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}") - message (SEND_ERROR "Building in the source directory is not supported.") - message (FATAL_ERROR "Please remove the created \"CMakeCache.txt\" file, the \"CMakeFiles\" directory and create a build directory and call \"${CMAKE_COMMAND} \".") - endif ("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}") - -# allow only Debug and Release builds -set (CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "") -mark_as_advanced (CMAKE_CONFIGURATION_TYPES) - -# set Debus as default build target -if (NOT CMAKE_BUILD_TYPE) - set (CMAKE_BUILD_TYPE Debug CACHE STRING - "Choose the type of build, options are: Debug, Release." - FORCE) -endif () - -# create our output directroy -if (NOT EXISTS ${CMAKE_BINARY_DIR}/Build) - file (MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/Build) -endif () - -# read version from file -macro (acg_get_version) - if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${ARGN}/VERSION") - file (READ "${CMAKE_CURRENT_SOURCE_DIR}/${ARGN}/VERSION" _file) - else () - file (READ "${CMAKE_CURRENT_SOURCE_DIR}/VERSION" _file) - endif () - - string ( - REGEX REPLACE - "^.*ID=([^\n]*).*$" "\\1" - _id ${_file} - ) - string ( - REGEX REPLACE - "^.*VERSION=([^\n]*).*$" "\\1" - _version ${_file} - ) - string ( - REGEX REPLACE - "^.*MAJOR=([^\n]*).*$" "\\1" - _major ${_file} - ) - string ( - REGEX REPLACE - "^.*MINOR=([^\n]*).*$" "\\1" - _minor ${_file} - ) - string ( - REGEX REPLACE - "^.*PATCH=([^\n]*).*$" "\\1" - _patch ${_file} - ) - - set (${_id}_VERSION ${_version}) - set (${_id}_VERSION_MAJOR ${_major}) - set (${_id}_VERSION_MINOR ${_minor}) - set (${_id}_VERSION_PATCH ${_patch}) -endmacro () - - -# set directory structures for the different platforms -if (CMAKE_HOST_SYSTEM_NAME MATCHES Windows) - set (ACG_PROJECT_DATADIR ".") - set (ACG_PROJECT_LIBDIR "lib") - set (ACG_PROJECT_BINDIR ".") - set (ACG_PROJECT_PLUGINDIR "Plugins") - if (NOT EXISTS ${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_LIBDIR}) - file (MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_LIBDIR}) - endif () -elseif (APPLE) - set (ACG_PROJECT_DATADIR "share/${CMAKE_PROJECT_NAME}") - set (ACG_PROJECT_LIBDIR "lib${LIB_SUFFIX}") - set (CMAKE_LIBRARY_OUTPUT_DIR "${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_LIBDIR}") - set (ACG_PROJECT_PLUGINDIR "${ACG_PROJECT_LIBDIR}/plugins") - set (ACG_PROJECT_BINDIR "bin") -else () - set (ACG_PROJECT_DATADIR "share/${CMAKE_PROJECT_NAME}") - set (ACG_PROJECT_LIBDIR "lib${LIB_SUFFIX}") - set (ACG_PROJECT_PLUGINDIR "${ACG_PROJECT_LIBDIR}/plugins") - set (ACG_PROJECT_BINDIR "bin") -endif () - -if( NOT APPLE ) - # check 64 bit - if( CMAKE_SIZEOF_VOID_P MATCHES 4 ) - set( HAVE_64_BIT 0 ) - else( CMAKE_SIZEOF_VOID_P MATCHES 4 ) - set( HAVE_64_BIT 1 ) - endif( CMAKE_SIZEOF_VOID_P MATCHES 4 ) -endif ( NOT APPLE ) - -# allow a project to modify the directories -if (COMMAND acg_modify_project_dirs) - acg_modify_project_dirs () -endif () - -if (NOT EXISTS ${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_DATADIR}) - file (MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_DATADIR}) -endif () - - -# sets default build properties -macro (acg_set_target_props target) - if (WIN32) - set_target_properties ( - ${target} PROPERTIES - BUILD_WITH_INSTALL_RPATH 1 - SKIP_BUILD_RPATH 0 - ) - elseif (APPLE AND NOT ACG_PROJECT_MACOS_BUNDLE) - if (NOT (CMAKE_MAJOR_VERSION LESS 3) ) - # save rpath - set_target_properties ( - ${target} PROPERTIES - INSTALL_RPATH "@executable_path/../${ACG_PROJECT_LIBDIR}" - MACOSX_RPATH 1 - #BUILD_WITH_INSTALL_RPATH 1 - SKIP_BUILD_RPATH 0 - ) - else() - # save rpath via install name dir - set_target_properties ( - ${target} PROPERTIES - INSTALL_NAME_DIR "@executable_path/../${ACG_PROJECT_LIBDIR}" - #BUILD_WITH_INSTALL_RPATH 1 - SKIP_BUILD_RPATH 0 - ) - endif(NOT (CMAKE_MAJOR_VERSION LESS 3) ) - elseif (NOT APPLE) - - set_target_properties ( - ${target} PROPERTIES - INSTALL_RPATH "$ORIGIN/../${ACG_PROJECT_LIBDIR}" - BUILD_WITH_INSTALL_RPATH 1 - SKIP_BUILD_RPATH 0 - RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_BINDIR}" - LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_LIBDIR}" - ) - endif () -endmacro () - -include (AddFileDependencies) -include (ACGCompiler) - -# define INCLUDE_TEMPLATES for everything we build -add_definitions (-DINCLUDE_TEMPLATES) - -# unsets the given variable -macro (acg_unset var) - set (${var} "" CACHE INTERNAL "") -endmacro () - -# sets the given variable -macro (acg_set var value) - set (${var} ${value} CACHE INTERNAL "") -endmacro () - -# test for OpenMP -macro (acg_openmp) - if (NOT OPENMP_NOTFOUND) - find_package(OpenMP) - if (OPENMP_FOUND) - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") - set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") - add_definitions(-DUSE_OPENMP) - else () - set (OPENMP_NOTFOUND 1) - endif() - endif () -endmacro () - -# test for FTGL -macro (acg_ftgl) - find_package (Freetype) - - if (FREETYPE_FOUND) - find_package (FTGL) - - if (FTGL_FOUND) - add_definitions (-DUSE_FTGL) - include_directories (${FTGL_INCLUDE_DIR} ${FREETYPE_INCLUDE_DIR_freetype2}) - set (FTGL_LIBS ${FREETYPE_LIBRARIES} ${FTGL_LIBRARIES}) - endif () - endif () -endmacro () - -# append all files with extension "ext" in the "dirs" directories to "ret" -# excludes all files starting with a '.' (dot) -macro (acg_append_files ret ext) - foreach (_dir ${ARGN}) - file (GLOB _files "${_dir}/${ext}") - foreach (_file ${_files}) - get_filename_component (_filename ${_file} NAME) - if (_filename MATCHES "^[.]") - list (REMOVE_ITEM _files ${_file}) - endif () - endforeach () - list (APPEND ${ret} ${_files}) - endforeach () -endmacro () - -# append all files with extension "ext" in the "dirs" directories and its subdirectories to "ret" -# excludes all files starting with a '.' (dot) -macro (acg_append_files_recursive ret ext) - foreach (_dir ${ARGN}) - file (GLOB_RECURSE _files "${_dir}/${ext}") - foreach (_file ${_files}) - get_filename_component (_filename ${_file} NAME) - if (_filename MATCHES "^[.]") - list (REMOVE_ITEM _files ${_file}) - endif () - endforeach () - list (APPEND ${ret} ${_files}) - endforeach () -endmacro () - -# get all files in directory, but ignore svn -macro (acg_get_files_in_dir ret dir) - file (GLOB_RECURSE __files RELATIVE "${dir}" "${dir}/*") - foreach (_file ${__files}) - if ( (NOT _file MATCHES ".*svn.*") AND (NOT _file MATCHES ".DS_Store") ) - list (APPEND ${ret} "${_file}") - endif () - endforeach () -endmacro () - -# copy the whole directory without svn files -function (acg_copy_after_build target src dst) - acg_unset (_files) - acg_get_files_in_dir (_files ${src}) - foreach (_file ${_files}) - add_custom_command(TARGET ${target} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${src}/${_file}" "${dst}/${_file}" - ) - endforeach () -endfunction () - -# install the whole directory without svn files -function (acg_install_dir src dst) - acg_unset (_files) - acg_get_files_in_dir (_files ${src}) - foreach (_file ${_files}) - get_filename_component (_file_PATH ${_file} PATH) - install(FILES "${src}/${_file}" - DESTINATION "${dst}/${_file_PATH}" - ) - endforeach () -endfunction () - -# extended version of add_executable that also copies output to out Build directory -function (acg_add_executable _target) - add_executable (${_target} ${ARGN}) - - # set common target properties defined in common.cmake - acg_set_target_props (${_target}) - - if (WIN32 OR (APPLE AND NOT ACG_PROJECT_MACOS_BUNDLE)) - add_custom_command (TARGET ${_target} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E - copy_if_different - $ - ${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_BINDIR}/$) - endif (WIN32 OR (APPLE AND NOT ACG_PROJECT_MACOS_BUNDLE)) - - if (NOT ACG_PROJECT_MACOS_BUNDLE OR NOT APPLE) - install (TARGETS ${_target} DESTINATION ${ACG_PROJECT_BINDIR}) - endif () -endfunction () - -# extended version of add_library that also copies output to out Build directory -function (acg_add_library _target _libtype) - - if (${_libtype} STREQUAL SHAREDANDSTATIC) - set (_type SHARED) - if (NOT WIN32 OR MINGW) - set (_and_static 1) - else () - set (_and_static 0) - endif () - else () - set (_type ${_libtype}) - set (_and_static 0) - endif () - - add_library (${_target} ${_type} ${ARGN} ) - - # set common target properties defined in common.cmake - acg_set_target_props (${_target}) - - if (_and_static) - add_library (${_target}Static STATIC ${ARGN}) - - # set common target properties defined in common.cmake - acg_set_target_props (${_target}Static) - - set_target_properties(${_target}Static PROPERTIES OUTPUT_NAME ${_target}) - - if (NOT APPLE) - set_target_properties (${_target}Static PROPERTIES - LIBRARY_OUTPUT_DIRECTORY "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}" - ) - endif () - endif () - - if ( (WIN32 AND MSVC) OR (APPLE AND NOT ACG_PROJECT_MACOS_BUNDLE)) - if (${_type} STREQUAL SHARED) - add_custom_command (TARGET ${_target} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E - copy_if_different - $ - ${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_LIBDIR}/$) - add_custom_command (TARGET ${_target} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E - copy_if_different - $ - ${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_LIBDIR}/$) - elseif (${_type} STREQUAL MODULE) - if (NOT EXISTS ${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_PLUGINDIR}) - file (MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_PLUGINDIR}) - endif () - add_custom_command (TARGET ${_target} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E - copy_if_different - $ - ${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_PLUGINDIR}/$) - elseif (${_type} STREQUAL STATIC) - add_custom_command (TARGET ${_target} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E - copy_if_different - $ - ${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_LIBDIR}/$) - endif() - - - # make an extra copy for windows into the binary directory - if (${_type} STREQUAL SHARED AND WIN32) - add_custom_command (TARGET ${_target} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E - copy_if_different - $ - ${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_BINDIR}/$) - endif () - - endif( (WIN32 AND MSVC) OR (APPLE AND NOT ACG_PROJECT_MACOS_BUNDLE)) - - if (_and_static) - add_custom_command (TARGET ${_target}Static POST_BUILD - COMMAND ${CMAKE_COMMAND} -E - copy_if_different - $ - ${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_LIBDIR}/$) - - endif () - - - # Block installation of libraries by setting ACG_NO_LIBRARY_INSTALL - if ( NOT ACG_NO_LIBRARY_INSTALL ) - if (NOT ACG_PROJECT_MACOS_BUNDLE OR NOT APPLE) - if (${_type} STREQUAL SHARED OR ${_type} STREQUAL STATIC ) - install (TARGETS ${_target} - RUNTIME DESTINATION ${ACG_PROJECT_BINDIR} - LIBRARY DESTINATION ${ACG_PROJECT_LIBDIR} - ARCHIVE DESTINATION ${ACG_PROJECT_LIBDIR}) - if (_and_static) - install (TARGETS ${_target}Static - DESTINATION ${ACG_PROJECT_LIBDIR}) - endif () - elseif (${_type} STREQUAL MODULE) - install (TARGETS ${_target} DESTINATION ${ACG_PROJECT_PLUGINDIR}) - endif () - endif () - endif() - -endfunction () - diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 7fef2242077fb7f8e6eedb4d44fc47b28a48cd51..d87a3ba8d933f77cc248b61edca96d74fb490d14 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,4 +1,4 @@ -#include (ACGCommon) +include (VCICommon) if (NOT DEFINED HEXEX_INCLUDE_DIRS) set(HEXEX_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/src/") @@ -37,11 +37,11 @@ if ( HEXEX_BUILD_UNIT_TESTS ) target_include_directories(unittests PRIVATE ${HEXEX_INCLUDE_DIRS}) - # For the unittest we don't want the install rpath as set by acg_add_executable + # For the unittest we don't want the install rpath as set by vci_add_executable set_target_properties ( unittests PROPERTIES BUILD_WITH_INSTALL_RPATH 0 ) # Set output directory to ${BINARY_DIR}/Build - set (OUTPUT_DIR "${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_BINDIR}") + set (OUTPUT_DIR "${CMAKE_BINARY_DIR}/Build/${VCI_PROJECT_BINDIR}") set_target_properties(unittests PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${OUTPUT_DIR}) foreach(CONFIG ${CMAKE_CONFIGURATION_TYPES}) string(TOUPPER ${CONFIG} UPCONFIG) @@ -76,11 +76,11 @@ if ( HEXEX_BUILD_UNIT_TESTS ) if ( NOT WIN32 ) #copy test files to unittest output dir - acg_copy_after_build(unittests ${CMAKE_CURRENT_LIST_DIR}/testdata ${OUTPUT_DIR}/testdata) + vci_copy_after_build(unittests ${CMAKE_CURRENT_LIST_DIR}/testdata ${OUTPUT_DIR}/testdata) file(MAKE_DIRECTORY ${OUTPUT_DIR}/Results) else() #copy test files to Build dir because in unittest output dir dlls are missing - acg_copy_after_build(unittests ${CMAKE_CURRENT_LIST_DIR}/testdata ${CMAKE_BINARY_DIR}/Build/testdata) + vci_copy_after_build(unittests ${CMAKE_CURRENT_LIST_DIR}/testdata ${CMAKE_BINARY_DIR}/Build/testdata) file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/Build/Results) endif()