From 1beb18af53f77379195f9540e7e23f3a1f18ff4b Mon Sep 17 00:00:00 2001 From: maier Date: Sat, 6 Oct 2012 11:13:38 +0000 Subject: [PATCH] Add support for cygwin git-svn-id: https://svn.dealii.org/branches/branch_cmake@26977 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/bundled/CMakeLists.txt | 12 ++++++---- .../bundled/tbb30_104oss/src/CMakeLists.txt | 15 ++++++++---- .../checks/check_for_compiler_bugs.cmake | 14 +++++++++++ .../checks/check_for_system_features.cmake | 3 +++ .../configure/configure_functionparser.cmake | 5 ---- deal.II/cmake/configure/configure_metis.cmake | 24 ++++++++++--------- deal.II/examples/step-1/CMakeLists.txt | 2 -- deal.II/include/deal.II/base/config.h.in | 3 +++ deal.II/source/base/logstream.cc | 6 ++--- deal.II/source/lac/CMakeLists.txt | 2 +- deal.II/source/lac/solver_control.cc | 2 +- 11 files changed, 55 insertions(+), 33 deletions(-) diff --git a/deal.II/bundled/CMakeLists.txt b/deal.II/bundled/CMakeLists.txt index 39eefaf515..a8ff718ed1 100644 --- a/deal.II/bundled/CMakeLists.txt +++ b/deal.II/bundled/CMakeLists.txt @@ -67,11 +67,13 @@ ENDIF() # # Threading Building Blocks library # -SET(FEATURE_TBB_HAVE_BUNDLED TRUE) -SET(TBB_FOLDER "${CMAKE_SOURCE_DIR}/bundled/tbb30_104oss") -OPTION(DEAL_II_FORCE_BUNDLED_TBB - "Always use the bundled tbb library instead of an external one." - OFF) +IF(NOT CMAKE_SYSTEM_NAME MATCHES "CYGWIN") + SET(FEATURE_TBB_HAVE_BUNDLED TRUE) + SET(TBB_FOLDER "${CMAKE_SOURCE_DIR}/bundled/tbb30_104oss") + OPTION(DEAL_II_FORCE_BUNDLED_TBB + "Always use the bundled tbb library instead of an external one." + OFF) +ENDIF() IF(FEATURE_TBB_BUNDLED_CONFIGURED) ADD_SUBDIRECTORY(${TBB_FOLDER}/src) diff --git a/deal.II/bundled/tbb30_104oss/src/CMakeLists.txt b/deal.II/bundled/tbb30_104oss/src/CMakeLists.txt index 835d694813..3867c9c0a7 100644 --- a/deal.II/bundled/tbb30_104oss/src/CMakeLists.txt +++ b/deal.II/bundled/tbb30_104oss/src/CMakeLists.txt @@ -56,8 +56,6 @@ SET(src_tbb tbb/tbb_thread.cpp ) -DEAL_II_ADD_LIBRARY(obj_tbb OBJECT ${src_tbb}) - # # Add necessary definitions: # @@ -70,9 +68,18 @@ IF(DEAL_II_USE_MT_POSIX) LIST(APPEND obj_tbb_DEFINITIONS "USE_PTHREAD") ENDIF() -IF(CMAKE_SYSTEM_NAME MATCHES "Windows") - LIST(APPEND obj_tbb_DEFINITIONS "-DUSE_WINTHREAD") +IF(CMAKE_SYSTEM_NAME MATCHES "CYGWIN") + MESSAGE(FATAL_ERROR "No support for internal tbb and CYGWIN atm.") + #LIST(APPEND obj_tbb_DEFINITIONS + # "USE_WINTHREAD" + # "_WIN32" + # "__MSVCRT_VERSION__=0x0700" + # ) + #ENABLE_IF_SUPPORTED(CMAKE_CXX_FLAGS "-msse") + #ENABLE_IF_SUPPORTED(CMAKE_CXX_FLAGS "-mthreads") ENDIF() +DEAL_II_ADD_LIBRARY(obj_tbb OBJECT ${src_tbb}) + DEAL_II_ADD_DEFINITIONS(obj_tbb ${obj_tbb_DEFINITIONS}) diff --git a/deal.II/cmake/checks/check_for_compiler_bugs.cmake b/deal.II/cmake/checks/check_for_compiler_bugs.cmake index dbd56c2ada..99a484a5c4 100644 --- a/deal.II/cmake/checks/check_for_compiler_bugs.cmake +++ b/deal.II/cmake/checks/check_for_compiler_bugs.cmake @@ -126,3 +126,17 @@ IF(HAVE_MPI_H) ENDIF() ENDIF() + +# +# Disable shared libraries on cygwin targets for the moment. Shared +# libraries on Windows are a bit buggy atm. +# +# - Matthias Maier, 2012 +# +IF(CMAKE_SYSTEM_NAME MATCHES "CYGWIN") + MESSAGE(WARNING "\n" + "BUILD_SHARED_LIBS forced to OFF\n\n" + ) + SET(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) +ENDIF() + diff --git a/deal.II/cmake/checks/check_for_system_features.cmake b/deal.II/cmake/checks/check_for_system_features.cmake index dac06189af..350b418254 100644 --- a/deal.II/cmake/checks/check_for_system_features.cmake +++ b/deal.II/cmake/checks/check_for_system_features.cmake @@ -25,6 +25,8 @@ INCLUDE(TestBigEndian) CHECK_INCLUDE_FILE("unistd.h" HAVE_UNISTD_H) +CHECK_INCLUDE_FILE("sys/resource.h" HAVE_SYS_RESOURCE_H) + CHECK_INCLUDE_FILE("sys/stat.h" HAVE_SYS_STAT_H) CHECK_INCLUDE_FILE("sys/syscall.h" HAVE_SYS_SYSCALL_H) @@ -34,6 +36,7 @@ CHECK_INCLUDE_FILE("sys/times.h" HAVE_SYS_TIMES_H) CHECK_INCLUDE_FILE("sys/types.h" HAVE_SYS_TYPES_H) + # # Check for various posix specific functions: # diff --git a/deal.II/cmake/configure/configure_functionparser.cmake b/deal.II/cmake/configure/configure_functionparser.cmake index f6ef8b33c8..399b22b4b4 100644 --- a/deal.II/cmake/configure/configure_functionparser.cmake +++ b/deal.II/cmake/configure/configure_functionparser.cmake @@ -16,11 +16,6 @@ # Configuration for functionparser # -OPTION(DEAL_II_WITH_FUNCTIONPARSER - "Build deal.II with support for functionparser." - OFF) - - MACRO(FEATURE_FUNCTIONPARSER_FIND_EXTERNAL var) MESSAGE(STATUS "No module available for finding functionparser externally." diff --git a/deal.II/cmake/configure/configure_metis.cmake b/deal.II/cmake/configure/configure_metis.cmake index 60f3f6f6f4..03a1c77f4c 100644 --- a/deal.II/cmake/configure/configure_metis.cmake +++ b/deal.II/cmake/configure/configure_metis.cmake @@ -20,17 +20,19 @@ MACRO(FEATURE_METIS_FIND_EXTERNAL var) FIND_PACKAGE(METIS) - IF(METIS_FOUND AND METIS_MAJOR GREATER 4) - SET(${var} TRUE) - ELSE() - MESSAGE(WARNING "\n" - "Could not find a sufficient modern metis installation: " - "Version 5.x required!\n\n" - ) - UNSET(METIS_LIBRARY CACHE) - UNSET(METIS_INCLUDE_DIR CACHE) - UNSET(METIS_DIR CACHE) - UNSET(METIS_FOUND CACHE) + IF(METIS_FOUND) + IF(AND METIS_MAJOR GREATER 4) + SET(${var} TRUE) + ELSE() + MESSAGE(WARNING "\n" + "Could not find a sufficient modern metis installation: " + "Version 5.x required!\n\n" + ) + UNSET(METIS_LIBRARY CACHE) + UNSET(METIS_INCLUDE_DIR CACHE) + UNSET(METIS_DIR CACHE) + UNSET(METIS_FOUND CACHE) + ENDIF() ENDIF() ENDMACRO() diff --git a/deal.II/examples/step-1/CMakeLists.txt b/deal.II/examples/step-1/CMakeLists.txt index 2c86a939f6..7b8de8c643 100644 --- a/deal.II/examples/step-1/CMakeLists.txt +++ b/deal.II/examples/step-1/CMakeLists.txt @@ -10,8 +10,6 @@ DEAL_II_INITIALIZE_CACHED_VARIABLES() PROJECT(step-1) -DEAL_II_IMPORT_LIBRARY() - ADD_EXECUTABLE(step-1 step-1.cc) DEAL_II_SETUP_TARGET(step-1) diff --git a/deal.II/include/deal.II/base/config.h.in b/deal.II/include/deal.II/base/config.h.in index 83b3f7a4de..d42f3d9398 100644 --- a/deal.II/include/deal.II/base/config.h.in +++ b/deal.II/include/deal.II/base/config.h.in @@ -409,6 +409,9 @@ /* Defined if you have the header file. */ #cmakedefine HAVE_UNISTD_H +/* Defined if you have the header file */ +#cmakedefine HAVE_SYS_RESOURCE_H + /* Defined if you have the header file. */ #cmakedefine HAVE_SYS_STAT_H diff --git a/deal.II/source/base/logstream.cc b/deal.II/source/base/logstream.cc index 677e0c0f4c..182650442c 100644 --- a/deal.II/source/base/logstream.cc +++ b/deal.II/source/base/logstream.cc @@ -17,9 +17,7 @@ #include #include -// include sys/resource.h for rusage(). Mac OS X needs sys/time.h then -// as well (strange), so include that, too. -#ifndef DEAL_II_MSVC +#if defined(HAVE_SYS_RESOURCE_H) and defined(HAVE_UNISTD_H) # include # include #endif @@ -370,7 +368,7 @@ LogStream::log_thread_id (const bool flag) void LogStream::print_line_head() { -#ifndef DEAL_II_MSVC +#if defined(HAVE_SYS_RESOURCE_H) and defined(HAVE_UNISTD_H) rusage usage; double utime = 0.; if (print_utime) diff --git a/deal.II/source/lac/CMakeLists.txt b/deal.II/source/lac/CMakeLists.txt index e07a5876a4..f7afb78ae5 100644 --- a/deal.II/source/lac/CMakeLists.txt +++ b/deal.II/source/lac/CMakeLists.txt @@ -98,5 +98,5 @@ EXPAND_INSTANTIATIONS(obj_lac "${inst_in_files}") # # TODO: Remove this dependency when lapack_templates is removed # -ADD_DEPENDENCIES(obj_lac.inst lapack_templates) +#ADD_DEPENDENCIES(obj_lac.inst lapack_templates) diff --git a/deal.II/source/lac/solver_control.cc b/deal.II/source/lac/solver_control.cc index 72431cf790..80fc9fa1f8 100644 --- a/deal.II/source/lac/solver_control.cc +++ b/deal.II/source/lac/solver_control.cc @@ -129,7 +129,7 @@ SolverControl::check (const unsigned int step, #ifdef HAVE_ISNAN isnan(check_value) || #else -# if HAVE_UNDERSCORE_ISNAN +# ifdef HAVE_UNDERSCORE_ISNAN // on Microsoft Windows, the // function is called _isnan _isnan(check_value) || -- 2.39.5