From 5852b97b4456a31b8afd8f5bcb3c3dffa55dda2b Mon Sep 17 00:00:00 2001 From: Hugues Delorme Date: Wed, 2 Sep 2015 12:08:14 +0200 Subject: [PATCH] cmake: dependant options for benchmarks, refactor --- CMakeLists.txt | 12 ++++++---- benchmarks/CMakeLists.txt | 47 ++++++++++++++++++++++++--------------- 2 files changed, 37 insertions(+), 22 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d2bcf08..b798143 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,6 +19,7 @@ include(CheckIncludeFiles) include(CheckFunctionExists) include(CheckCSourceCompiles) include(CheckTypeSize) +include(CMakeDependentOption) project(gmio) set(GMIO_VERSION_MAJOR 0) @@ -31,10 +32,13 @@ set(GMIO_VERSION option(GMIO_BUILD_STRICT_C90 "Build gmio library(and tests) with strict conformance to C90 standard" OFF) option(GMIO_BUILD_SHARED_LIBS "Build gmio as a shared library (DLL)" OFF) option(GMIO_BUILD_BENCHMARKS "Build performance benchmarks for the gmio library" OFF) -if(GMIO_BUILD_BENCHMARKS) - option(GMIO_BUILD_BENCHMARK_ASSIMP "Build benchmark for Assimp" ON) - option(GMIO_BUILD_BENCHMARK_OPENCASCADE "Build benchmark for OpenCascade" ON) -endif() +cmake_dependent_option( + GMIO_BUILD_BENCHMARK_ASSIMP "Build benchmark for Assimp" ON + "GMIO_BUILD_BENCHMARKS" OFF) +cmake_dependent_option( + GMIO_BUILD_BENCHMARK_OPENCASCADE "Build benchmark for OpenCascade" ON + "GMIO_BUILD_BENCHMARKS" OFF) +option(GMIO_BUILD_TESTS_FAKE_SUPPORT "Build tests/fake_support target" OFF) # Detect Clang if (CMAKE_C_COMPILER MATCHES ".*clang") diff --git a/benchmarks/CMakeLists.txt b/benchmarks/CMakeLists.txt index 256cd56..abf70db 100644 --- a/benchmarks/CMakeLists.txt +++ b/benchmarks/CMakeLists.txt @@ -13,10 +13,9 @@ ## "http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html". ############################################################################# -set(ASSIMP_DIR ${CMAKE_SOURCE_DIR} CACHE PATH "Directory where the Assimp library resides") -set(OPENCASCADE_DIR ${CMAKE_SOURCE_DIR} CACHE PATH "Directory where the OpenCascade library resides") +set(ROOTDIR_ASSIMP ${CMAKE_SOURCE_DIR} CACHE PATH "Directory where the Assimp library resides") +set(ROOTDIR_OPENCASCADE ${CMAKE_SOURCE_DIR} CACHE PATH "Directory where the OpenCascade library resides") -# List source files in commons/ file(GLOB COMMONS_FILES commons/*) set(COMMONS_FILES ${COMMONS_FILES}) @@ -52,14 +51,18 @@ if(GMIO_BUILD_BENCHMARK_ASSIMP) # Note: we could use target_include_directories() but it's available in cmake > v2.8.10 set_property( TARGET benchmark_assimp - APPEND PROPERTY INCLUDE_DIRECTORIES ${ASSIMP_DIR}/include) - # Libs - find_library(LIBPATH_ASSIMP assimp ${ASSIMP_DIR}/lib64) - target_link_libraries(benchmark_assimp ${LIBPATH_ASSIMP}) + APPEND PROPERTY INCLUDE_DIRECTORIES ${ROOTDIR_ASSIMP}/include) + + # TODO: choose lib32/lib64 depending on the architecture + find_library( + LIB_ASSIMP assimp ${ROOTDIR_ASSIMP}/lib64 + DOC "Path to the assimp import library") + target_link_libraries(benchmark_assimp ${LIB_ASSIMP}) endif() if(GMIO_BUILD_BENCHMARK_OPENCASCADE) - add_executable(benchmark_opencascade + add_executable( + benchmark_opencascade benchmark_opencascade/main.cpp ${CMAKE_SOURCE_DIR}/src/gmio_support/stl_occ.cpp ${COMMONS_FILES}) @@ -84,24 +87,32 @@ if(GMIO_BUILD_BENCHMARK_OPENCASCADE) # Note: we could use target_include_directories() but it's available in cmake > v2.8.10 set_property( TARGET benchmark_opencascade - APPEND PROPERTY INCLUDE_DIRECTORIES ${OPENCASCADE_DIR}/inc) + APPEND PROPERTY INCLUDE_DIRECTORIES ${ROOTDIR_OPENCASCADE}/inc) # Libs if(MSVC) set(_MSVC_VERNUM_ 0) # Init get_msvc_vernum(_MSVC_VERNUM_) - set(OPENCASCADE_LIBDIR ${OPENCASCADE_DIR}/win64/vc${_MSVC_VERNUM_}/lib) + # TODO: choose win32/win64 depending on the architecture + set(LIBDIR_OPENCASCADE ${ROOTDIR_OPENCASCADE}/win64/vc${_MSVC_VERNUM_}/lib) elseif((${CMAKE_SYSTEM_NAME} MATCHES "Linux") AND CMAKE_COMPILER_IS_GNUCXX) - set(OPENCASCADE_LIBDIR ${OPENCASCADE_DIR}/lin64/gcc/lib) + # TODO: choose lin32/lin64 depending on the architecture + set(LIBDIR_OPENCASCADE ${ROOTDIR_OPENCASCADE}/lin64/gcc/lib) endif() - message(STATUS ${OPENCASCADE_LIBDIR}) + #message(STATUS ${ROOTDIR_OPENCASCADE}) - find_library(LIBPATH_OPENCASCADE_TKERNEL TKernel ${OPENCASCADE_LIBDIR}) - find_library(LIBPATH_OPENCASCADE_TKMATH TKMath ${OPENCASCADE_LIBDIR}) - find_library(LIBPATH_OPENCASCADE_TKSTL TKSTL ${OPENCASCADE_LIBDIR}) + find_library( + LIB_OPENCASCADE_TKERNEL TKernel ${LIBDIR_OPENCASCADE} + DOC "Path to the TKernel import library") + find_library( + LIB_OPENCASCADE_TKMATH TKMath ${LIBDIR_OPENCASCADE} + DOC "Path to the TKMath import library") + find_library( + LIB_OPENCASCADE_TKSTL TKSTL ${LIBDIR_OPENCASCADE} + DOC "Path to the TKSTL import library") target_link_libraries( benchmark_opencascade - ${LIBPATH_OPENCASCADE_TKERNEL} - ${LIBPATH_OPENCASCADE_TKMATH} - ${LIBPATH_OPENCASCADE_TKSTL}) + ${LIB_OPENCASCADE_TKERNEL} + ${LIB_OPENCASCADE_TKMATH} + ${LIB_OPENCASCADE_TKSTL}) endif()