Skip to content
Snippets Groups Projects
Commit 6d300565 authored by Christophe Geuzaine's avatar Christophe Geuzaine
Browse files

use new-style endif(), else(), etc. + test existence of directory before add_subdirectory

parent 47664e9f
No related branches found
No related tags found
No related merge requests found
Pipeline #3009 passed
......@@ -13,9 +13,9 @@ set(CMAKE_LEGACY_CYGWIN_WIN32 0)
# project()
if(DEFINED CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "Choose build type")
else(DEFINED CMAKE_BUILD_TYPE)
else()
set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose build type")
endif(DEFINED CMAKE_BUILD_TYPE)
endif()
project(gmsh CXX C)
......@@ -27,7 +27,7 @@ set(DEFAULT ON CACHE INTERNAL "Default value for enabled-by-default options")
macro(opt OPTION HELP VALUE)
option(ENABLE_${OPTION} ${HELP} ${VALUE})
set(OPT_TEXI "${OPT_TEXI}\n@item ENABLE_${OPTION}\n${HELP} (default: ${VALUE})")
endmacro(opt)
endmacro()
opt(3M "Enable proprietary 3M extension" OFF)
opt(ACIS "Enable ACIS geometrical models (experimental)" ${DEFAULT})
......@@ -105,13 +105,13 @@ if(NOT GMSH_RELEASE)
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_COMMIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE)
endif(GIT_FOUND)
endif()
if(GIT_COMMIT_HASH)
set(GMSH_EXTRA_VERSION "-git-${GIT_COMMIT_HASH}")
else(GIT_COMMIT_HASH)
else()
set(GMSH_EXTRA_VERSION "-git")
endif(GIT_COMMIT_HASH)
endif(NOT GMSH_RELEASE)
endif()
endif()
set(GMSH_VERSION "${GMSH_MAJOR_VERSION}.${GMSH_MINOR_VERSION}")
set(GMSH_VERSION "${GMSH_VERSION}.${GMSH_PATCH_VERSION}${GMSH_EXTRA_VERSION}")
......@@ -135,8 +135,8 @@ if(ENABLE_PRIVATE_API)
get_property(IAMCHILD DIRECTORY PROPERTY PARENT_DIRECTORY)
if(IAMCHILD)
set(GMSH_PRIVATE_API ${GMSH_PRIVATE_API} PARENT_SCOPE)
endif(IAMCHILD)
endif(ENABLE_PRIVATE_API)
endif()
endif()
set(ONELAB_PY contrib/onelab/python/onelab.py)
set(GMSH_PY api/gmsh.py)
......@@ -144,10 +144,10 @@ set(GMSH_JL api/gmsh.jl)
if(${CMAKE_MAJOR_VERSION} GREATER 2)
string(TIMESTAMP DATE "%Y%m%d")
else(${CMAKE_MAJOR_VERSION} GREATER 2)
else()
execute_process(COMMAND date "+%Y%m%d" OUTPUT_VARIABLE DATE
OUTPUT_STRIP_TRAILING_WHITESPACE)
endif(${CMAKE_MAJOR_VERSION} GREATER 2)
endif()
execute_process(COMMAND hostname OUTPUT_VARIABLE HOSTNAME
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND whoami OUTPUT_VARIABLE PACKAGER
......@@ -155,19 +155,19 @@ execute_process(COMMAND whoami OUTPUT_VARIABLE PACKAGER
if(NOT DATE)
set(DATE "unknown")
endif(NOT DATE)
endif()
set(GMSH_DATE "${DATE}")
if(NOT GMSH_HOST)
if(NOT HOSTNAME)
set(HOSTNAME "unknown")
endif(NOT HOSTNAME)
endif()
set(GMSH_HOST "${HOSTNAME}")
endif(NOT GMSH_HOST)
endif()
if(NOT PACKAGER)
set(PACKAGER "unknown")
endif(NOT PACKAGER)
endif()
string(REPLACE "\\" " " PACKAGER ${PACKAGER})
set(GMSH_PACKAGER "${PACKAGER}")
......@@ -185,12 +185,11 @@ elseif(CYGWIN OR MSYS)
set(GMSH_OS "Windows")
set(WIN32 1)
add_definitions(-DWIN32)
endif(CXX_COMPILER_MACHINE MATCHES "mingw")
endif(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR
CMAKE_CXX_COMPILER_ID MATCHES "Clang")
else(APPLE)
endif()
endif()
else()
set(GMSH_OS "${CMAKE_SYSTEM_NAME}")
endif(APPLE)
endif()
include(CheckTypeSize)
include(CheckFunctionExists)
......@@ -202,7 +201,7 @@ macro(set_config_option VARNAME STRING)
set(${VARNAME} TRUE)
list(APPEND CONFIG_OPTIONS ${STRING})
message(STATUS "Found " ${STRING})
endmacro(set_config_option)
endmacro()
# check if the machine is 64 bits (this is more reliable than using
# CMAKE_SIZEOF_VOID_P, which does not seem to work e.g. on some Suse
......@@ -210,31 +209,31 @@ endmacro(set_config_option)
check_type_size("void*" SIZEOF_VOID_P)
if(SIZEOF_VOID_P EQUAL 8)
set_config_option(HAVE_64BIT_SIZE_T "64Bit")
endif(SIZEOF_VOID_P EQUAL 8)
endif()
# append 32/64 to the build name on Linux and Windows
if(NOT APPLE)
if(HAVE_64BIT_SIZE_T)
set(GMSH_OS "${GMSH_OS}64")
else(HAVE_64BIT_SIZE_T)
else()
set(GMSH_OS "${GMSH_OS}32")
endif(HAVE_64BIT_SIZE_T)
endif(NOT APPLE)
endif()
endif()
if(NOT ENABLE_BUILD_SHARED)
if(ENABLE_WRAP_PYTHON OR ENABLE_WRAP_JAVA)
set(ENABLE_BUILD_DYNAMIC ON)
endif(ENABLE_WRAP_PYTHON OR ENABLE_WRAP_JAVA)
endif(NOT ENABLE_BUILD_SHARED)
endif()
endif()
if(ENABLE_BUILD_DYNAMIC)
set(GMSH_OS "${GMSH_OS}-sdk")
endif(ENABLE_BUILD_DYNAMIC)
endif()
if(APPLE)
# FIXME: change this once we understand rpaths - the options below do not work
set(CMAKE_MACOSX_RPATH 0)
else(APPLE)
else()
# make sure that dynamic libraries can be found when installing/ displacing the
# binaries: from https://gitlab.kitware.com/cmake/community/wikis/doc/cmake/
# RPATH-handling:
......@@ -256,8 +255,8 @@ else(APPLE)
isSystemDir)
if("${isSystemDir}" STREQUAL "-1")
set(CMAKE_INSTALL_RPATH "\\\$ORIGIN/../lib")
endif("${isSystemDir}" STREQUAL "-1")
endif(APPLE)
endif()
endif()
if(MSVC)
# remove annoying warning about bool/int cast performance
......@@ -269,20 +268,20 @@ if(MSVC)
CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
if(ENABLE_MSVC_STATIC_RUNTIME AND ${VAR} MATCHES "/MD")
string(REGEX REPLACE "/MD" "/MT" ${VAR} "${${VAR}}")
endif(ENABLE_MSVC_STATIC_RUNTIME AND ${VAR} MATCHES "/MD")
endif()
if(NOT ${VAR} MATCHES "/MP") # enable parallel compilation
set(${VAR} "${${VAR}} /MP")
endif(NOT ${VAR} MATCHES "/MP")
endforeach(VAR)
endif()
endforeach()
if(ENABLE_PRIVATE_API)
if(ENABLE_BUILD_DYNAMIC OR ENABLE_BUILD_SHARED)
# automatically export .def file with all symbols (requires CMake 3.4);
# depending on the compiling options this might lead to more than 64k export
# symbols; just trim the .def file to keep the ones you need
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
endif(ENABLE_BUILD_DYNAMIC OR ENABLE_BUILD_SHARED)
endif(ENABLE_PRIVATE_API)
endif(MSVC)
endif()
endif()
endif()
if(ENABLE_OPENMP)
find_package(OpenMP)
......@@ -290,24 +289,24 @@ if(ENABLE_OPENMP)
set_config_option(HAVE_OPENMP "OpenMP")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
endif(OPENMP_FOUND)
endif(ENABLE_OPENMP)
endif()
endif()
if(ENABLE_CXX11)
# in recent cmake versions we could do e.g. set(CMAKE_CXX_STANDARD 11)
check_cxx_compiler_flag("-std=c++11" STDCXX11)
if(STDCXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
endif(STDCXX11)
endif(ENABLE_CXX11)
endif()
endif()
if(ENABLE_C99)
# in recent cmake versions we could do e.g. set(CMAKE_C_STANDARD 99)
check_c_compiler_flag("-std=c99" STDC99)
if(STDC99)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")
endif(STDC99)
endif(ENABLE_C99)
endif()
endif()
if(ENABLE_PROFILE)
# Using the perf set of profiling tools doesn't work without the frame
......@@ -315,16 +314,16 @@ if(ENABLE_PROFILE)
check_cxx_compiler_flag("-fno-omit-frame-pointer" FNOFP)
if(FNOFP)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer")
endif(FNOFP)
endif(ENABLE_PROFILE)
endif()
endif()
macro(append_gmsh_src DIRNAME FILES)
foreach(FILE ${FILES})
list(APPEND LIST ${DIRNAME}/${FILE})
endforeach(FILE)
endforeach()
set(GMSH_SRC ${GMSH_SRC};${LIST} PARENT_SCOPE)
set(GMSH_DIRS ${GMSH_DIRS};${DIRNAME} PARENT_SCOPE)
endmacro(append_gmsh_src)
endmacro()
macro(find_all_libraries VARNAME LISTNAME PATH SUFFIX)
set(${VARNAME})
......@@ -332,38 +331,38 @@ macro(find_all_libraries VARNAME LISTNAME PATH SUFFIX)
foreach(LIB ${${LISTNAME}})
if("${PATH}" STREQUAL "")
find_library(FOUND_LIB ${LIB} PATH_SUFFIXES ${SUFFIX})
else("${PATH}" STREQUAL "")
else()
find_library(FOUND_LIB ${LIB} PATHS ${PATH} NO_DEFAULT_PATH)
endif("${PATH}" STREQUAL "")
endif()
if(FOUND_LIB)
list(APPEND ${VARNAME} ${FOUND_LIB})
endif(FOUND_LIB)
endif()
unset(FOUND_LIB CACHE)
endforeach(LIB)
endforeach()
list(LENGTH ${VARNAME} NUM_FOUND_LIBRARIES)
if(NUM_FOUND_LIBRARIES LESS NUM_LIST)
set(${VARNAME})
endif(NUM_FOUND_LIBRARIES LESS NUM_LIST)
endmacro(find_all_libraries)
endif()
endmacro()
macro(set_compile_flags LISTNAME FLAGS)
foreach(FILE ${${LISTNAME}})
get_source_file_property(PROP ${FILE} COMPILE_FLAGS)
if(PROP)
set_source_files_properties(${FILE} PROPERTIES COMPILE_FLAGS "${PROP} ${FLAGS}")
else(PROP)
else()
set_source_files_properties(${FILE} PROPERTIES COMPILE_FLAGS "${FLAGS}")
endif(PROP)
endforeach(FILE)
endmacro(set_compile_flags)
endif()
endforeach()
endmacro()
if(ENABLE_BLAS_LAPACK)
if(BLAS_LAPACK_LIBRARIES)
# use libs as specified in the BLAS_LAPACK_LIBRARIES variable
set_config_option(HAVE_BLAS "Blas(Custom)")
set_config_option(HAVE_LAPACK "Lapack(Custom)")
set_config_option(HAVE_BLAS "Blas[custom]")
set_config_option(HAVE_LAPACK "Lapack[custom]")
set(LAPACK_LIBRARIES ${BLAS_LAPACK_LIBRARIES})
else(BLAS_LAPACK_LIBRARIES)
else()
if(MSVC)
# on Windows with Visual C++ try really hard to find blas/lapack *without*
# requiring a Fortran compiler: 1) try to find the Intel MKL libs using
......@@ -373,86 +372,86 @@ if(ENABLE_BLAS_LAPACK)
if(HAVE_64BIT_SIZE_T)
set(MKL_PATH em64t/lib)
set(MKL_LIBS_REQUIRED libguide40 mkl_intel_lp64 mkl_intel_thread mkl_core)
else(HAVE_64BIT_SIZE_T)
else()
set(MKL_PATH ia32/lib)
set(MKL_LIBS_REQUIRED libguide40 mkl_intel_c mkl_intel_thread mkl_core)
endif(HAVE_64BIT_SIZE_T)
endif()
find_all_libraries(LAPACK_LIBRARIES MKL_LIBS_REQUIRED "" ${MKL_PATH})
if(LAPACK_LIBRARIES)
set_config_option(HAVE_BLAS "Blas(IntelMKL)")
set_config_option(HAVE_LAPACK "Lapack(IntelMKL)")
else(LAPACK_LIBRARIES)
set_config_option(HAVE_BLAS "Blas[mkl]")
set_config_option(HAVE_LAPACK "Lapack[mkl]")
else()
set(REFLAPACK_LIBS_REQUIRED lapack blas g2c gcc)
find_all_libraries(LAPACK_LIBRARIES REFLAPACK_LIBS_REQUIRED "" "")
if(LAPACK_LIBRARIES)
set_config_option(HAVE_BLAS "Blas(Reference)")
set_config_option(HAVE_LAPACK "Lapack(Reference)")
endif(LAPACK_LIBRARIES)
endif(LAPACK_LIBRARIES)
set_config_option(HAVE_BLAS "Blas[ref]")
set_config_option(HAVE_LAPACK "Lapack[ref]")
endif()
endif()
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
# on Linux try to find the Intel MKL without a Fortran compiler
if(HAVE_64BIT_SIZE_T)
set(MKL_PATH lib/em64t)
else(HAVE_64BIT_SIZE_T)
else()
set(MKL_PATH lib/32)
endif(HAVE_64BIT_SIZE_T)
endif()
set(MKL_LIBS_REQUIRED mkl_gf_lp64 iomp5 mkl_gnu_thread mkl_core guide pthread)
find_all_libraries(LAPACK_LIBRARIES MKL_LIBS_REQUIRED "" ${MKL_PATH})
if(NOT LAPACK_LIBRARIES)
# match lapack 9.0 on 64bit
set(MKL_LIBS_REQUIRED mkl_lapack mkl_em64t guide)
find_all_libraries(LAPACK_LIBRARIES MKL_LIBS_REQUIRED "" ${MKL_PATH})
endif(NOT LAPACK_LIBRARIES)
endif()
if(LAPACK_LIBRARIES)
set_config_option(HAVE_BLAS "Blas(IntelMKL)")
set_config_option(HAVE_LAPACK "Lapack(IntelMKL)")
else(LAPACK_LIBRARIES)
set_config_option(HAVE_BLAS "Blas[mkl]")
set_config_option(HAVE_LAPACK "Lapack[mkl]")
else()
# on Linux also try to find ATLAS without a Fortran compiler, because
# cmake ships with a buggy FindBLAS e.g. on Ubuntu Lucid Lynx
set(ATLAS_LIBS_REQUIRED lapack f77blas cblas atlas)
find_all_libraries(LAPACK_LIBRARIES ATLAS_LIBS_REQUIRED "" "")
if(LAPACK_LIBRARIES)
set_config_option(HAVE_BLAS "Blas(ATLAS)")
set_config_option(HAVE_LAPACK "Lapack(ATLAS)")
else(LAPACK_LIBRARIES)
set_config_option(HAVE_BLAS "Blas[atlas]")
set_config_option(HAVE_LAPACK "Lapack[atlas]")
else()
# try with generic names
set(GENERIC_LIBS_REQUIRED lapack blas pthread)
find_all_libraries(LAPACK_LIBRARIES GENERIC_LIBS_REQUIRED "" "")
if(LAPACK_LIBRARIES)
set_config_option(HAVE_BLAS "Blas(Generic)")
set_config_option(HAVE_LAPACK "Lapack(Generic)")
set_config_option(HAVE_BLAS "Blas")
set_config_option(HAVE_LAPACK "Lapack")
find_library(GFORTRAN_LIB gfortran)
if(GFORTRAN_LIB)
list(APPEND LAPACK_LIBRARIES ${GFORTRAN_LIB})
endif(GFORTRAN_LIB)
endif(LAPACK_LIBRARIES)
endif(LAPACK_LIBRARIES)
endif(LAPACK_LIBRARIES)
endif()
endif()
endif()
endif()
elseif(${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
# on SunOS we know blas and lapack are available in sunperf
set(LAPACK_LIBRARIES -library=sunperf)
set_config_option(HAVE_BLAS "Blas(SunPerf)")
set_config_option(HAVE_LAPACK "Lapack(SunPerf)")
set_config_option(HAVE_BLAS "Blas[sunperf]")
set_config_option(HAVE_LAPACK "Lapack[sunperf]")
elseif(APPLE)
# on Mac we also know that blas and lapack are available
set(LAPACK_LIBRARIES "-llapack -lblas")
set_config_option(HAVE_BLAS "Blas(VecLib)")
set_config_option(HAVE_LAPACK "Lapack(VecLib)")
endif(MSVC)
set_config_option(HAVE_BLAS "Blas[veclib]")
set_config_option(HAVE_LAPACK "Lapack[veclib]")
endif()
if(NOT HAVE_BLAS OR NOT HAVE_LAPACK)
# if we haven't found blas and lapack check for OpenBlas
set(OPENBLAS_LIBS_REQUIRED openblas)
find_all_libraries(LAPACK_LIBRARIES OPENBLAS_LIBS_REQUIRED "" "")
if(LAPACK_LIBRARIES)
set_config_option(HAVE_BLAS "Blas(OpenBlas)")
set_config_option(HAVE_LAPACK "Lapack(OpenBlas)")
set_config_option(HAVE_BLAS "Blas[openblas]")
set_config_option(HAVE_LAPACK "Lapack[openblas]")
find_library(GFORTRAN_LIB gfortran)
if(GFORTRAN_LIB)
list(APPEND LAPACK_LIBRARIES ${GFORTRAN_LIB})
endif(GFORTRAN_LIB)
endif(LAPACK_LIBRARIES)
endif(NOT HAVE_BLAS OR NOT HAVE_LAPACK)
endif()
endif()
endif()
if(NOT HAVE_BLAS OR NOT HAVE_LAPACK)
# if we still haven't found blas and lapack, use the standard cmake tests,
......@@ -464,9 +463,9 @@ if(ENABLE_BLAS_LAPACK)
find_package(LAPACK)
if(LAPACK_FOUND)
set_config_option(HAVE_LAPACK "Lapack")
else(LAPACK_FOUND)
else()
set(LAPACK_LIBRARIES ${BLAS_LIBRARIES})
endif(LAPACK_FOUND)
endif()
if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
if(CMAKE_Fortran_COMPILER MATCHES "gfortran")
list(APPEND LAPACK_LIBRARIES gfortran)
......@@ -474,60 +473,60 @@ if(ENABLE_BLAS_LAPACK)
list(APPEND LAPACK_LIBRARIES gfortran)
elseif(CMAKE_Fortran_COMPILER MATCHES "g77")
list(APPEND LAPACK_LIBRARIES g2c)
endif(CMAKE_Fortran_COMPILER MATCHES "gfortran")
endif(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
endif(BLAS_FOUND)
endif(NOT HAVE_BLAS OR NOT HAVE_LAPACK)
endif()
endif()
endif()
endif()
if(NOT HAVE_BLAS OR NOT HAVE_LAPACK)
message(WARNING "Could not find Blas or Lapack: most meshing algorithms "
"will not be functional")
endif(NOT HAVE_BLAS OR NOT HAVE_LAPACK)
endif()
endif(BLAS_LAPACK_LIBRARIES)
endif(ENABLE_BLAS_LAPACK)
endif()
endif()
if(ENABLE_TCMALLOC)
find_library(TCMALLOC tcmalloc)
if(TCMALLOC)
set_config_option(HAVE_TCMALLOC "TCMalloc")
list(APPEND EXTERNAL_LIBRARIES ${TCMALLOC})
endif(TCMALLOC)
endif(ENABLE_TCMALLOC)
endif()
endif()
add_subdirectory(Common)
add_subdirectory(Numeric)
add_subdirectory(Geo)
if(ENABLE_MESH AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Mesh)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Mesh AND ENABLE_MESH)
add_subdirectory(Mesh)
set_config_option(HAVE_MESH "Mesh")
endif(ENABLE_MESH AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Mesh)
endif()
if(ENABLE_SOLVER)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Solver AND ENABLE_SOLVER)
add_subdirectory(Solver)
set_config_option(HAVE_SOLVER "Solver")
endif(ENABLE_SOLVER)
endif()
if(ENABLE_POST)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Post AND ENABLE_POST)
add_subdirectory(Post)
set_config_option(HAVE_POST "Post")
if(ENABLE_PLUGINS)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Plugin AND ENABLE_PLUGINS)
add_subdirectory(Plugin)
set_config_option(HAVE_PLUGINS "Plugins")
endif(ENABLE_PLUGINS)
endif(ENABLE_POST)
endif()
endif()
if(ENABLE_PARSER)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Parser AND ENABLE_PARSER)
add_subdirectory(Parser)
set_config_option(HAVE_PARSER "Parser")
endif(ENABLE_PARSER)
endif()
if(ENABLE_VISUDEV)
set_config_option(HAVE_VISUDEV "VisuDev")
endif(ENABLE_VISUDEV)
endif()
if(ENABLE_FLTK)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Fltk AND ENABLE_FLTK)
# first, try to use fltk-config for fltk >= 1.3 (FindFLTK is buggy on Unix,
# where e.g. xft and xinerama options are not dealt with)
find_program(FLTK_CONFIG_SCRIPT fltk-config)
......@@ -548,24 +547,24 @@ if(ENABLE_FLTK)
# check existance of these directories before adding them
if(EXISTS ${FLTK_INCLUDE_DIR}/FL/images)
list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR}/FL/images)
endif(EXISTS ${FLTK_INCLUDE_DIR}/FL/images)
endif()
if(EXISTS ${FLTK_INCLUDE_DIR}/jpeg)
list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR}/jpeg)
endif(EXISTS ${FLTK_INCLUDE_DIR}/jpeg)
endif()
if(EXISTS ${FLTK_INCLUDE_DIR}/zlib)
list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR}/zlib)
endif(EXISTS ${FLTK_INCLUDE_DIR}/zlib)
endif()
if(EXISTS ${FLTK_INCLUDE_DIR}/png)
list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR}/png)
endif(EXISTS ${FLTK_INCLUDE_DIR}/png)
endif()
execute_process(COMMAND ${FLTK_CONFIG_SCRIPT} --use-gl --use-images --ldflags
OUTPUT_VARIABLE FLTK_LIBRARIES)
string(STRIP ${FLTK_LIBRARIES} FLTK_LIBRARIES)
string(REGEX MATCH "fltk[_ ]jpeg" FLTK_JPEG ${FLTK_LIBRARIES})
string(REGEX MATCH "fltk[_ ]z" FLTK_Z ${FLTK_LIBRARIES})
string(REGEX MATCH "fltk[_ ]png" FLTK_PNG ${FLTK_LIBRARIES})
endif(FLTK_VERSION GREATER 1.1)
endif(FLTK_CONFIG_SCRIPT)
endif()
endif()
# then try the built-in FindFLTK module
if(NOT HAVE_FLTK)
set(FLTK_SKIP_FORMS TRUE)
......@@ -581,26 +580,26 @@ if(ENABLE_FLTK)
list(APPEND EXTERNAL_LIBRARIES ${FLTK_JPEG})
foreach(DIR ${FLTK_INCLUDE_DIR})
list(APPEND EXTERNAL_INCLUDES ${DIR}/FL/images ${DIR}/jpeg)
endforeach(DIR)
endif(FLTK_JPEG)
endforeach()
endif()
# find fltk zlib
find_library(FLTK_Z NAMES fltk_z fltkz)
if(FLTK_Z)
list(APPEND EXTERNAL_LIBRARIES ${FLTK_Z})
foreach(DIR ${FLTK_INCLUDE_DIR})
list(APPEND EXTERNAL_INCLUDES ${DIR}/FL/images ${DIR}/zlib)
endforeach(DIR)
endif(FLTK_Z)
endforeach()
endif()
# find fltk png
find_library(FLTK_PNG NAMES fltk_png fltkpng)
if(FLTK_PNG)
list(APPEND EXTERNAL_LIBRARIES ${FLTK_PNG})
foreach(DIR ${FLTK_INCLUDE_DIR})
list(APPEND EXTERNAL_INCLUDES ${DIR}/FL/images ${DIR}/png)
endforeach(DIR)
endif(FLTK_PNG)
endif(FLTK_FOUND)
endif(NOT HAVE_FLTK)
endforeach()
endif()
endif()
endif()
# workaround for Fedora/Suse messing up fltk-config (see issue #417)
if(HAVE_FLTK AND ${CMAKE_SYSTEM_NAME} MATCHES "Linux")
string(REGEX MATCH "X11" FLTK_X11 ${FLTK_LIBRARIES})
......@@ -609,14 +608,14 @@ if(ENABLE_FLTK)
if(X11_FOUND)
list(APPEND EXTERNAL_INCLUDES ${X11_INCLUDE_DIR})
list(APPEND EXTERNAL_LIBRARIES ${X11_LIBRARIES})
endif(X11_FOUND)
endif(NOT FLTK_X11)
endif(HAVE_FLTK AND ${CMAKE_SYSTEM_NAME} MATCHES "Linux")
endif(ENABLE_FLTK)
endif()
endif()
endif()
endif()
if(ENABLE_NATIVE_FILE_CHOOSER)
set_config_option(HAVE_NATIVE_FILE_CHOOSER "NativeFileChooser")
endif(ENABLE_NATIVE_FILE_CHOOSER)
endif()
if(ENABLE_ONELAB)
set_config_option(HAVE_ONELAB "ONELAB")
......@@ -625,87 +624,90 @@ if(ENABLE_ONELAB)
add_subdirectory(contrib/onelab)
include_directories(contrib/onelab)
set_config_option(HAVE_ONELAB_METAMODEL "ONELABMetamodel")
endif(ENABLE_ONELAB_METAMODEL)
endif()
file(COPY ${ONELAB_PY} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
endif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/onelab)
endif(ENABLE_ONELAB)
endif()
endif()
if(ENABLE_BUILD_IOS)
find_file(CMAKE_TOOLCHAIN_FILE "ios.cmake")
if(NOT CMAKE_TOOLCHAIN_FILE)
message(FATAL_ERROR "Cannot compile Gmsh for iOS without a toolchain")
endif(NOT CMAKE_TOOLCHAIN_FILE)
endif()
add_definitions(-DBUILD_IOS)
endif(ENABLE_BUILD_IOS)
endif()
if(HAVE_FLTK OR ENABLE_GRAPHICS)
if(NOT HAVE_MESH OR NOT HAVE_POST OR NOT HAVE_PLUGINS OR NOT HAVE_ONELAB)
message(SEND_ERROR "Cannot compile GUI without Mesh, Post, Plugin and ONELAB")
endif(NOT HAVE_MESH OR NOT HAVE_POST OR NOT HAVE_PLUGINS OR NOT HAVE_ONELAB)
endif()
if(FLTK_JPEG)
set_config_option(HAVE_LIBJPEG "Jpeg(Fltk)")
else(FLTK_JPEG)
set_config_option(HAVE_LIBJPEG "Jpeg[fltk]")
else()
find_package(JPEG)
if(JPEG_FOUND)
set_config_option(HAVE_LIBJPEG "Jpeg")
list(APPEND EXTERNAL_LIBRARIES ${JPEG_LIBRARIES})
list(APPEND EXTERNAL_INCLUDES ${JPEG_INCLUDE_DIR})
endif(JPEG_FOUND)
endif(FLTK_JPEG)
endif()
endif()
if(FLTK_Z)
set_config_option(HAVE_LIBZ "Zlib(Fltk)")
else(FLTK_Z)
set_config_option(HAVE_LIBZ "Zlib[fltk]")
else()
find_package(ZLIB)
if(ZLIB_FOUND)
set_config_option(HAVE_LIBZ "Zlib")
list(APPEND EXTERNAL_LIBRARIES ${ZLIB_LIBRARIES})
list(APPEND EXTERNAL_INCLUDES ${ZLIB_INCLUDE_DIR})
endif(ZLIB_FOUND)
endif(FLTK_Z)
endif()
endif()
if(HAVE_LIBZ)
if(FLTK_PNG)
set_config_option(HAVE_LIBPNG "Png(Fltk)")
else(FLTK_PNG)
set_config_option(HAVE_LIBPNG "Png[fltk]")
else()
find_package(PNG)
if(PNG_FOUND)
set_config_option(HAVE_LIBPNG "Png")
list(APPEND EXTERNAL_LIBRARIES ${PNG_LIBRARIES})
list(APPEND EXTERNAL_INCLUDES ${PNG_INCLUDE_DIR})
endif(PNG_FOUND)
endif(FLTK_PNG)
endif(HAVE_LIBZ)
endif()
endif()
endif()
if(ENABLE_MPEG_ENCODE)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/mpeg_encode AND
ENABLE_MPEG_ENCODE)
add_subdirectory(contrib/mpeg_encode)
include_directories(contrib/mpeg_encode/headers)
set_config_option(HAVE_MPEG_ENCODE "Mpeg")
endif(ENABLE_MPEG_ENCODE)
endif()
if(ENABLE_3M AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/3M)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/3M AND ENABLE_3M)
add_subdirectory(contrib/3M)
include_directories(contrib/3M)
set_config_option(HAVE_3M "3M")
endif(ENABLE_3M AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/3M)
endif()
if(ENABLE_OSMESA)
find_library(OSMESA_LIB OSMesa)
if(OSMESA_LIB)
set_config_option(HAVE_OSMESA "OSMesa")
list(APPEND EXTERNAL_LIBRARIES ${OSMESA_LIB})
endif(OSMESA_LIB)
endif(ENABLE_OSMESA)
endif()
endif()
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Graphics)
find_package(OpenGL REQUIRED)
if(OPENGL_GLU_FOUND AND OPENGL_FOUND)
add_subdirectory(Graphics)
set_config_option(HAVE_OPENGL "OpenGL")
else(OPENGL_GLU_FOUND AND OPENGL_FOUND)
else()
message(SEND_ERROR "Could not find GLU: disabling OpenGL support")
endif(OPENGL_GLU_FOUND AND OPENGL_FOUND)
endif(HAVE_FLTK OR ENABLE_GRAPHICS)
endif()
endif()
endif()
if(ENABLE_ANN)
find_library(ANN_LIB ann PATH_SUFFIXES lib)
......@@ -714,18 +716,19 @@ if(ENABLE_ANN)
message(STATUS "Using system version of ANN")
list(APPEND EXTERNAL_LIBRARIES ${ANN_LIB})
list(APPEND EXTERNAL_INCLUDES ${ANN_INC})
else(ENABLE_SYSTEM_CONTRIB AND ANN_LIB AND ANN_INC)
set_config_option(HAVE_ANN "Ann[system]")
elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/ANN)
add_subdirectory(contrib/ANN)
include_directories(contrib/ANN/include)
endif(ENABLE_SYSTEM_CONTRIB AND ANN_LIB AND ANN_INC)
set_config_option(HAVE_ANN "Ann")
endif(ENABLE_ANN)
endif()
endif()
if(ENABLE_BFGS)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/lbfgs AND ENABLE_BFGS)
add_subdirectory(contrib/lbfgs)
include_directories(contrib/lbfgs)
set_config_option(HAVE_BFGS "Bfgs")
endif(ENABLE_BFGS)
endif()
if(HAVE_FLTK AND ENABLE_CAIRO)
find_library(CAIRO_LIB cairo)
......@@ -734,16 +737,20 @@ if(HAVE_FLTK AND ENABLE_CAIRO)
set_config_option(HAVE_CAIRO "Cairo")
list(APPEND EXTERNAL_LIBRARIES ${CAIRO_LIB})
list(APPEND EXTERNAL_INCLUDES ${CAIRO_INC})
endif(CAIRO_INC AND CAIRO_LIB)
endif(HAVE_FLTK AND ENABLE_CAIRO)
endif()
endif()
if(ENABLE_DINTEGRATION)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/DiscreteIntegration AND
ENABLE_DINTEGRATION)
add_subdirectory(contrib/DiscreteIntegration)
include_directories(contrib/DiscreteIntegration)
set_config_option(HAVE_DINTEGRATION "DIntegration")
endif(ENABLE_DINTEGRATION)
endif()
if(ENABLE_OPTHOM AND HAVE_MESH)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/HighOrderMeshOptimizer AND
EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/MeshOptimizer AND
EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/MeshQualityOptimizer AND
ENABLE_OPTHOM AND HAVE_MESH)
add_subdirectory(contrib/HighOrderMeshOptimizer)
include_directories(contrib/HighOrderMeshOptimizer)
add_subdirectory(contrib/MeshOptimizer)
......@@ -752,30 +759,30 @@ if(ENABLE_OPTHOM AND HAVE_MESH)
add_subdirectory(contrib/MeshQualityOptimizer)
include_directories(contrib/MeshQualityOptimizer)
set_config_option(HAVE_OPTHOM "OptHom")
endif(ENABLE_OPTHOM AND HAVE_MESH)
endif()
if(ENABLE_KBIPACK)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/kbipack AND ENABLE_KBIPACK)
set_config_option(HAVE_KBIPACK "Kbipack")
add_subdirectory(contrib/kbipack)
include_directories(contrib/kbipack)
if(ENABLE_GMP)
find_library(GMP_LIB gmp)
find_path(GMP_INC "gmp.h" PATH_SUFFIXES src include)
endif(ENABLE_GMP)
endif()
if(GMP_LIB AND GMP_INC)
set_config_option(HAVE_GMP "GMP")
list(APPEND EXTERNAL_LIBRARIES ${GMP_LIB})
list(APPEND EXTERNAL_INCLUDES ${GMP_INC})
else(GMP_LIB AND GMP_INC)
else()
message(STATUS "GMP not found: Kbipack uses long int")
endif(GMP_LIB AND GMP_INC)
endif(ENABLE_KBIPACK)
endif()
endif()
if(ENABLE_MATHEX)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/MathEx AND ENABLE_MATHEX)
add_subdirectory(contrib/MathEx)
include_directories(contrib/MathEx)
set_config_option(HAVE_MATHEX "MathEx")
endif(ENABLE_MATHEX)
endif()
if(ENABLE_MPI)
find_package(MPI)
......@@ -786,8 +793,8 @@ if(ENABLE_MPI)
set(CMAKE_C_COMPILER ${MPI_C_COMPILER})
set(CMAKE_CXX_COMPILER ${MPI_CXX_COMPILER})
set(CMAKE_Fortran_COMPILER ${MPI_Fortran_COMPILER})
endif(MPI_FOUND)
endif(ENABLE_MPI)
endif()
endif()
if(ENABLE_POPPLER)
find_library(POPPLER_LIB poppler)
......@@ -798,8 +805,8 @@ if(ENABLE_POPPLER)
list(APPEND EXTERNAL_LIBRARIES ${POPPLER_LIB})
list(APPEND EXTERNAL_LIBRARIES ${POPPLER_CPP_LIB})
list(APPEND EXTERNAL_INCLUDES ${POPPLER_INC})
endif(POPPLER_LIB AND POPPLER_INC)
endif(ENABLE_POPPLER)
endif()
endif()
if(HAVE_MESH OR HAVE_SOLVER)
if(ENABLE_METIS)
......@@ -809,20 +816,21 @@ if(HAVE_MESH OR HAVE_SOLVER)
message(STATUS "Using system version of METIS")
list(APPEND EXTERNAL_LIBRARIES ${METIS_LIB})
list(APPEND EXTERNAL_INCLUDES ${METIS_INC})
else(ENABLE_SYSTEM_CONTRIB AND METIS_LIB AND METIS_INC)
set_config_option(HAVE_METIS "Metis[system]")
elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/metis)
add_definitions(-DUSE_GKREGEX)
add_subdirectory(contrib/metis)
include_directories(contrib/metis/include contrib/metis/libmetis
contrib/metis/GKlib)
endif(ENABLE_SYSTEM_CONTRIB AND METIS_LIB AND METIS_INC)
set_config_option(HAVE_METIS "Metis")
endif(ENABLE_METIS)
endif(HAVE_MESH OR HAVE_SOLVER)
endif()
endif()
endif()
if(HAVE_MESH)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Mesh/tetgenBR.cxx)
set_config_option(HAVE_TETGENBR "TetGen/BR")
endif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Mesh/tetgenBR.cxx)
endif()
if(ENABLE_VOROPP)
find_library(VOROPP_LIB voro++ PATH_SUFFIXES lib)
......@@ -831,33 +839,34 @@ if(HAVE_MESH)
message(STATUS "Using system version of voro++")
list(APPEND EXTERNAL_LIBRARIES ${VOROPP_LIB})
list(APPEND EXTERNAL_INCLUDES ${VOROPP_INC})
else(ENABLE_SYSTEM_CONTRIB AND VOROPP_LIB AND VOROPP_INC)
set_config_option(HAVE_VOROPP "Voro++[system]")
elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/voro++)
add_subdirectory(contrib/voro++)
include_directories(contrib/voro++/src)
endif(ENABLE_SYSTEM_CONTRIB AND VOROPP_LIB AND VOROPP_INC)
set_config_option(HAVE_VOROPP "Voro++")
endif(ENABLE_VOROPP)
endif()
endif()
if(ENABLE_BLOSSOM)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/blossom AND ENABLE_BLOSSOM)
add_subdirectory(contrib/blossom)
include_directories(contrib/blossom/MATCH contrib/blossom/concorde97
contrib/blossom/concorde97/INCLUDE)
set_config_option(HAVE_BLOSSOM "Blossom")
endif(ENABLE_BLOSSOM)
endif()
if(ENABLE_NETGEN)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/Netgen AND ENABLE_NETGEN)
add_subdirectory(contrib/Netgen)
include_directories(contrib/Netgen contrib/Netgen/libsrc/include
contrib/Netgen/nglib)
set_config_option(HAVE_NETGEN "Netgen")
add_definitions(-DNO_PARALLEL_THREADS -DNOTCL)
endif(ENABLE_NETGEN)
endif()
if(ENABLE_BAMG)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/bamg AND ENABLE_BAMG)
add_subdirectory(contrib/bamg)
include_directories(contrib/bamg contrib/bamg/bamglib)
set_config_option(HAVE_BAMG "Bamg")
endif(ENABLE_BAMG)
endif()
if(ENABLE_MMG3D)
find_library(MMG3D_LIB mmg3dlib4.0 PATH_SUFFIXES lib)
......@@ -866,13 +875,14 @@ if(HAVE_MESH)
message(STATUS "Using system version of MMG3D")
list(APPEND EXTERNAL_LIBRARIES ${MMG3D_LIB})
list(APPEND EXTERNAL_INCLUDES ${MMG3D_INC})
else(ENABLE_SYSTEM_CONTRIB AND MMG3D_LIB AND MMG3D_INC)
set_config_option(HAVE_MMG3D "Mmg3d[system]")
elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/mmg3d)
add_subdirectory(contrib/mmg3d)
include_directories(contrib/mmg3d/build/sources)
endif(ENABLE_SYSTEM_CONTRIB AND MMG3D_LIB AND MMG3D_INC)
set_config_option(HAVE_MMG3D "Mmg3d")
endif(ENABLE_MMG3D)
endif(HAVE_MESH)
endif()
endif()
endif()
if(ENABLE_FOURIER_MODEL)
set(FM_REQUIRED FourierModel fftw3 gsl gslcblas)
......@@ -880,8 +890,8 @@ if(ENABLE_FOURIER_MODEL)
if(FM_LIBS)
set_config_option(HAVE_FOURIER_MODEL "FourierModel")
list(APPEND EXTERNAL_LIBRARIES ${FM_LIBS})
endif(FM_LIBS)
endif(ENABLE_FOURIER_MODEL)
endif()
endif()
if(ENABLE_MED OR ENABLE_CGNS)
find_package(HDF5)
......@@ -893,8 +903,8 @@ if(ENABLE_MED OR ENABLE_CGNS)
if(MED_LIB)
set_config_option(HAVE_MED "Med")
list(APPEND EXTERNAL_LIBRARIES ${MED_LIB})
endif(MED_LIB)
endif(ENABLE_MED)
endif()
endif()
if(ENABLE_CGNS)
find_library(CGNS_LIB cgns PATHS ENV CGNS_ROOT PATH_SUFFIXES lib)
find_path(CGNS_INC "cgnslib.h" PATHS ENV CGNS_ROOT PATH_SUFFIXES include)
......@@ -902,26 +912,26 @@ if(ENABLE_MED OR ENABLE_CGNS)
set_config_option(HAVE_LIBCGNS "Cgns")
list(APPEND EXTERNAL_LIBRARIES ${CGNS_LIB})
list(APPEND EXTERNAL_INCLUDES ${CGNS_INC})
endif(CGNS_LIB AND CGNS_INC)
endif(ENABLE_CGNS)
endif()
endif()
if(MED_LIB OR CGNS_LIB)
list(APPEND EXTERNAL_LIBRARIES ${HDF5_LIB})
find_library(SZ_LIB NAMES szlib sz)
if(SZ_LIB)
list(APPEND EXTERNAL_LIBRARIES ${SZ_LIB})
endif(SZ_LIB)
endif()
if(NOT HAVE_LIBZ) # necessary for non-GUI builds
find_package(ZLIB)
if(ZLIB_FOUND)
set_config_option(HAVE_LIBZ "Zlib")
list(APPEND EXTERNAL_LIBRARIES ${ZLIB_LIBRARIES})
endif(ZLIB_FOUND)
endif(NOT HAVE_LIBZ)
endif(MED_LIB OR CGNS_LIB)
else(HDF5_FOUND)
endif()
endif()
endif()
else()
message(STATUS "HDF5 not found")
endif(HDF5_FOUND)
endif(ENABLE_MED OR ENABLE_CGNS)
endif()
endif()
if(HAVE_SOLVER)
if(ENABLE_GMM)
......@@ -929,23 +939,24 @@ if(HAVE_SOLVER)
if(ENABLE_SYSTEM_CONTRIB AND GMM_INC)
message(STATUS "Using system version of GMM")
list(APPEND EXTERNAL_INCLUDES ${GMM_INC})
else(ENABLE_SYSTEM_CONTRIB AND GMM_INC)
set_config_option(HAVE_GMM "Gmm[system]")
elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/gmm)
include_directories(contrib/gmm)
endif(ENABLE_SYSTEM_CONTRIB AND GMM_INC)
set_config_option(HAVE_GMM "Gmm")
endif(ENABLE_GMM)
endif()
endif()
if(ENABLE_PETSC)
if(PETSC_DIR)
set(ENV_PETSC_DIR ${PETSC_DIR})
else(PETSC_DIR)
else()
set(ENV_PETSC_DIR $ENV{PETSC_DIR})
endif(PETSC_DIR)
endif()
if(PETSC_ARCH)
set(ENV_PETSC_ARCH ${PETSC_ARCH})
else(PETSC_ARCH)
else()
set(ENV_PETSC_ARCH $ENV{PETSC_ARCH})
endif(PETSC_ARCH)
endif()
set(PETSC_POSSIBLE_CONF_FILES
${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/conf/petscvariables
${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib/petsc-conf/petscvariables
......@@ -957,8 +968,8 @@ if(HAVE_SOLVER)
message(STATUS "Using PETSc arch: ${ENV_PETSC_ARCH}")
# find includes by parsing the petscvariables file
file(STRINGS ${FILE} PETSC_VARIABLES NEWLINE_CONSUME)
endif(EXISTS ${FILE})
endforeach(FILE)
endif()
endforeach()
if(PETSC_VARIABLES)
# try to find PETSC_CC_INCLUDES for PETSc >= 3.4
string(REGEX MATCH "PETSC_CC_INCLUDES = [^\n\r]*" PETSC_PACKAGES_INCLUDES
......@@ -966,7 +977,7 @@ if(HAVE_SOLVER)
if(PETSC_PACKAGES_INCLUDES)
string(REPLACE "PETSC_CC_INCLUDES = " "" PETSC_PACKAGES_INCLUDES
${PETSC_PACKAGES_INCLUDES})
else(PETSC_PACKAGES_INCLUDES)
else()
# try to find PETSC_PACKAGES_INCLUDES in older versions
list(APPEND EXTERNAL_INCLUDES ${ENV_PETSC_DIR}/include)
list(APPEND EXTERNAL_INCLUDES ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/include)
......@@ -974,7 +985,7 @@ if(HAVE_SOLVER)
${PETSC_VARIABLES})
string(REPLACE "PACKAGES_INCLUDES = " "" PETSC_PACKAGES_INCLUDES
${PETSC_PACKAGES_INCLUDES})
endif(PETSC_PACKAGES_INCLUDES)
endif()
if(PETSC_PACKAGES_INCLUDES)
if(PETSC_PACKAGES_INCLUDES)
string(REPLACE "-I" "" PETSC_PACKAGES_INCLUDES ${PETSC_PACKAGES_INCLUDES})
......@@ -984,10 +995,10 @@ if(HAVE_SOLVER)
# check to avoid warnings
if(EXISTS ${VAR})
list(APPEND EXTERNAL_INCLUDES ${VAR})
endif(EXISTS ${VAR})
endforeach(VAR)
endif(PETSC_PACKAGES_INCLUDES)
endif(PETSC_PACKAGES_INCLUDES)
endif()
endforeach()
endif()
endif()
# find libraries (<= 3.0)
set(PETSC_LIBS_REQUIRED petscksp petscdm petscmat petscvec petsc)
find_all_libraries(PETSC_LIBS PETSC_LIBS_REQUIRED
......@@ -996,23 +1007,23 @@ if(HAVE_SOLVER)
if(NOT PETSC_LIBS)
find_library(PETSC_LIBS petsc PATHS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib
NO_DEFAULT_PATH)
endif(NOT PETSC_LIBS)
endif()
if(PETSC_LIBS)
set_config_option(HAVE_PETSC "PETSc")
if(NOT HAVE_BLAS)
set_config_option(HAVE_BLAS "Blas(PETSc)")
endif(NOT HAVE_BLAS)
set_config_option(HAVE_BLAS "Blas[petsc]")
endif()
if(NOT HAVE_LAPACK)
set_config_option(HAVE_LAPACK "Lapack(PETSc)")
endif(NOT HAVE_LAPACK)
endif(PETSC_LIBS)
set_config_option(HAVE_LAPACK "Lapack[petsc]")
endif()
endif()
# find slepc (needs to be linked in before petsc)
if(ENABLE_SLEPC)
if(SLEPC_DIR)
set(ENV_SLEPC_DIR ${SLEPC_DIR})
else(SLEPC_DIR)
else()
set(ENV_SLEPC_DIR $ENV{SLEPC_DIR})
endif(SLEPC_DIR)
endif()
find_library(SLEPC_LIB slepc PATHS ${ENV_SLEPC_DIR}/${ENV_PETSC_ARCH}/lib
NO_DEFAULT_PATH)
if(SLEPC_LIB)
......@@ -1027,10 +1038,10 @@ if(HAVE_SOLVER)
PATH_SUFFIXES ${ENV_PETSC_ARCH}/include NO_DEFAULT_PATH)
if(SLEPC_INC2)
list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC2})
endif(SLEPC_INC2)
endif(SLEPC_INC)
endif(SLEPC_LIB)
endif(ENABLE_SLEPC)
endif()
endif()
endif()
endif()
list(APPEND EXTERNAL_LIBRARIES ${PETSC_LIBS})
# find additional libraries to link with
string(REGEX MATCH "PACKAGES_LIBS = [^\n\r]*" PLIBS ${PETSC_VARIABLES})
......@@ -1038,21 +1049,21 @@ if(HAVE_SOLVER)
string(REPLACE "PACKAGES_LIBS = " "" PLIBS ${PLIBS})
string(STRIP ${PLIBS} PLIBS)
list(APPEND EXTERNAL_LIBRARIES "${PLIBS}")
endif(PLIBS)
endif()
string(REGEX MATCH "PETSC_EXTERNAL_LIB_BASIC = [^\n\r]*" PLIBS_BASIC ${PETSC_VARIABLES})
if(PLIBS_BASIC)
string(REPLACE "PETSC_EXTERNAL_LIB_BASIC = " "" PLIBS_BASIC ${PLIBS_BASIC})
string(STRIP ${PLIBS_BASIC} PLIBS_BASIC)
separate_arguments(PLIBS_BASIC)
list(APPEND EXTERNAL_LIBRARIES "${PLIBS_BASIC}")
endif(PLIBS_BASIC)
endif()
string(REGEX MATCH "PCC_LINKER_LIBS = [^\n\r]*" LLIBS ${PETSC_VARIABLES})
if(LLIBS)
string(REPLACE "PCC_LINKER_LIBS = " "" LLIBS ${LLIBS})
string(STRIP ${LLIBS} LLIBS)
list(APPEND EXTERNAL_LIBRARIES "${LLIBS}")
endif(LLIBS)
else(PETSC_VARIABLES)
endif()
else()
# new-style PETSc installations (in standard system directories)
find_library(PETSC_LIBS petsc)
find_path(PETSC_INC "petsc.h" PATH_SUFFIXES include/petsc)
......@@ -1065,19 +1076,19 @@ if(HAVE_SOLVER)
set_config_option(HAVE_SLEPC "SLEPc")
list(APPEND EXTERNAL_LIBRARIES ${SLEPC_LIB})
list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC})
endif(SLEPC_LIB AND SLEPC_INC)
endif(ENABLE_SLEPC)
endif()
endif()
list(APPEND EXTERNAL_LIBRARIES ${PETSC_LIBS})
list(APPEND EXTERNAL_INCLUDES ${PETSC_INC})
endif(PETSC_LIBS AND PETSC_INC)
endif(PETSC_VARIABLES)
endif(ENABLE_PETSC)
endif()
endif()
endif()
if(ENABLE_MUMPS AND HAVE_BLAS AND HAVE_LAPACK)
set(MUMPS_LIBS_REQUIRED smumps dmumps cmumps zmumps mumps_common pord)
if(NOT ENABLE_MPI)
list(APPEND MUMPS_LIBS_REQUIRED mpiseq)
endif(NOT ENABLE_MPI)
endif()
find_all_libraries(MUMPS_LIBRARIES MUMPS_LIBS_REQUIRED "" "lib")
find_path(SMUMPS_INC "smumps_c.h" PATH_SUFFIXES src include)
find_path(DMUMPS_INC "dmumps_c.h" PATH_SUFFIXES src include)
......@@ -1093,12 +1104,12 @@ if(HAVE_SOLVER)
find_library(GFORTRAN_LIB gfortran)
if(GFORTRAN_LIB)
list(APPEND EXTERNAL_LIBRARIES ${GFORTRAN_LIB})
endif(GFORTRAN_LIB)
endif()
if(ENABLE_GMM) # use GMM/MUMPS interface
add_definitions(-DGMM_USES_MUMPS)
endif(ENABLE_GMM)
endif(MUMPS_LIBRARIES AND SMUMPS_INC AND DMUMPS_INC AND CMUMPS_INC AND ZMUMPS_INC)
endif(ENABLE_MUMPS AND HAVE_BLAS AND HAVE_LAPACK)
endif()
endif()
endif()
if(ENABLE_GETDP)
find_library(GETDP_LIB GetDP)
......@@ -1107,11 +1118,12 @@ if(HAVE_SOLVER)
set_config_option(HAVE_GETDP "GetDP")
list(APPEND EXTERNAL_LIBRARIES ${GETDP_LIB})
list(APPEND EXTERNAL_INCLUDES ${GETDP_INC})
endif(GETDP_LIB AND GETDP_INC)
endif(ENABLE_GETDP)
endif(HAVE_SOLVER)
endif()
endif()
endif()
if(ENABLE_HXT AND HAVE_METIS)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/hxt AND
ENABLE_HXT AND HAVE_METIS)
set_config_option(HAVE_HXT "Hxt")
add_subdirectory(contrib/hxt)
include_directories(BEFORE contrib/hxt)
......@@ -1119,20 +1131,20 @@ if(ENABLE_HXT AND HAVE_METIS)
# Visual C++ does not support C99 - force compilation as C++ code
file(GLOB_RECURSE HXT_SRC contrib/hxt/*.c)
set_compile_flags(HXT_SRC "/TP")
endif(MSVC)
endif(ENABLE_HXT AND HAVE_METIS)
endif()
endif()
if(ENABLE_OCC)
set(OCC_MINIMAL_VERSION "6.9.1")
if(WIN32 OR CYGWIN)
if(HAVE_64BIT_SIZE_T)
set(OCC_SYS_NAME win64)
else(HAVE_64BIT_SIZE_T)
else()
set(OCC_SYS_NAME win32)
endif(HAVE_64BIT_SIZE_T)
else(WIN32 OR CYGWIN)
endif()
else()
set(OCC_SYS_NAME ${CMAKE_SYSTEM_NAME})
endif(WIN32 OR CYGWIN)
endif()
find_path(OCC_INC "Standard_Version.hxx" HINTS ENV CASROOT PATH_SUFFIXES inc
include include/oce opencascade include/opencascade)
if(OCC_INC)
......@@ -1148,13 +1160,13 @@ if(ENABLE_OCC)
string(REGEX MATCH "[0-9]+" OCC_MAINT "${OCC_MAINT}")
set(OCC_VERSION "${OCC_MAJOR}.${OCC_MINOR}.${OCC_MAINT}")
message(STATUS "Found OpenCASCADE version ${OCC_VERSION} in ${OCC_INC}")
endif(OCC_MAJOR AND OCC_MINOR AND OCC_MAINT)
endif(OCC_INC)
endif()
endif()
if(OCC_VERSION AND OCC_VERSION STRLESS ${OCC_MINIMAL_VERSION})
message(WARNING "Gmsh requires OpenCASCADE >= ${OCC_MINIMAL_VERSION}. "
"Use CMAKE_PREFIX_PATH or the CASROOT environment variable "
"to explicitely specify the installation path of OpenCASCADE")
else(OCC_VERSION AND OCC_VERSION STRLESS ${OCC_MINIMAL_VERSION})
else()
set(OCC_LIBS_REQUIRED
# subset of DataExchange
TKSTEP TKSTEP209 TKSTEPAttr TKSTEPBase TKIGES TKXSBase
......@@ -1169,35 +1181,35 @@ if(ENABLE_OCC)
if(OCC_LIBS)
message(STATUS "OCC libraries specified explicitly: " ${OCC_LIBS})
list(LENGTH OCC_LIBS_REQUIRED NUM_OCC_LIBS)
else(OCC_LIBS)
else()
set(OCC_LIBS)
foreach(OCC ${OCC_LIBS_REQUIRED})
find_library(OCC_LIB ${OCC} HINTS ENV CASROOT PATH_SUFFIXES
lib ${OCC_SYS_NAME}/lib ${OCC_SYS_NAME}/vc8/lib)
if(OCC_LIB)
list(APPEND OCC_LIBS ${OCC_LIB})
else(OCC_LIB)
else()
message(STATUS "OCC lib " ${OCC} " not Found")
endif(OCC_LIB)
endif()
unset(OCC_LIB CACHE)
endforeach(OCC)
endforeach()
list(LENGTH OCC_LIBS NUM_OCC_LIBS)
endif(OCC_LIBS)
endif()
if(NUM_OCC_LIBS EQUAL NUM_OCC_LIBS_REQUIRED)
set_config_option(HAVE_OCC "OpenCASCADE")
list(APPEND EXTERNAL_LIBRARIES ${OCC_LIBS})
list(APPEND EXTERNAL_INCLUDES ${OCC_INC})
if(HAVE_64BIT_SIZE_T)
add_definitions(-D_OCC64)
endif(HAVE_64BIT_SIZE_T)
endif()
if(WIN32 OR CYGWIN)
list(APPEND EXTERNAL_LIBRARIES "winspool")
add_definitions(-DOCC_CONVERT_SIGNALS)
elseif(MSVC)
add_definitions(-DWNT)
endif(WIN32 OR CYGWIN)
endif(NUM_OCC_LIBS EQUAL NUM_OCC_LIBS_REQUIRED)
endif(OCC_VERSION AND OCC_VERSION STRLESS ${OCC_MINIMAL_VERSION})
endif()
endif()
endif()
# additional OCC libraries to handle reading of STEP/IGES attributes. Oh my...
if(HAVE_OCC AND ENABLE_OCC_CAF)
......@@ -1212,20 +1224,20 @@ if(ENABLE_OCC)
lib ${OCC_SYS_NAME}/lib ${OCC_SYS_NAME}/vc8/lib)
if(OCC_CAF_LIB)
list(APPEND OCC_CAF_LIBS ${OCC_CAF_LIB})
else(OCC_CAF_LIB)
else()
message(STATUS "OCC CAF lib " ${OCC} " not Found")
endif(OCC_CAF_LIB)
endif()
unset(OCC_CAF_LIB CACHE)
endforeach(OCC)
endforeach()
list(LENGTH OCC_CAF_LIBS NUM_OCC_CAF_LIBS)
if(NUM_OCC_CAF_LIBS EQUAL NUM_OCC_CAF_LIBS_REQUIRED)
set_config_option(HAVE_OCC_CAF "OpenCASCADE-CAF")
list(APPEND EXTERNAL_LIBRARIES ${OCC_CAF_LIBS} ${FREETYPE_LIBRARIES})
list(APPEND EXTERNAL_INCLUDES ${FREETYPE_INCLUDE_DIRS})
endif(NUM_OCC_CAF_LIBS EQUAL NUM_OCC_CAF_LIBS_REQUIRED)
endif(FREETYPE_FOUND)
endif(HAVE_OCC AND ENABLE_OCC_CAF)
endif(ENABLE_OCC)
endif()
endif()
endif()
endif()
if(ENABLE_ACIS)
find_library(ACIS_LIB SpaACIS PATH_SUFFIXES bin/maci386)
......@@ -1235,28 +1247,28 @@ if(ENABLE_ACIS)
set_config_option(HAVE_ACIS "Acis")
list(APPEND EXTERNAL_LIBRARIES ${ACIS_LIB})
list(APPEND EXTERNAL_INCLUDES ${ACIS_INC})
endif(ACIS_INC)
endif(ACIS_LIB)
endif(ENABLE_ACIS)
endif()
endif()
endif()
if(ENABLE_ZIPPER)
if(ENABLE_BUILD_IOS)
set_config_option(HAVE_LIBZ "Zlib")
endif(ENABLE_BUILD_IOS)
endif()
if(NOT HAVE_LIBZ) # necessary for non-GUI builds
find_package(ZLIB)
if(ZLIB_FOUND)
set_config_option(HAVE_LIBZ "Zlib")
list(APPEND EXTERNAL_LIBRARIES ${ZLIB_LIBRARIES})
list(APPEND EXTERNAL_INCLUDES ${ZLIB_INCLUDE_DIR})
endif(ZLIB_FOUND)
endif(NOT HAVE_LIBZ)
if(HAVE_LIBZ)
endif()
endif()
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/zipper AND HAVE_LIBZ)
add_subdirectory(contrib/zipper)
include_directories(contrib/zipper)
set_config_option(HAVE_ZIPPER "Zipper")
endif(HAVE_LIBZ)
endif(ENABLE_ZIPPER)
endif()
endif()
if(ENABLE_PRIVATE_API AND ENABLE_WRAP_PYTHON)
find_package(SWIG REQUIRED)
......@@ -1268,7 +1280,7 @@ if(ENABLE_PRIVATE_API AND ENABLE_WRAP_PYTHON)
string(SUBSTRING ${SWIG_VERSION} 0 1 SWIG_MAJOR_VERSION)
if(SWIG_MAJOR_VERSION EQUAL 1)
message(WARNING "Python bindings require SWIG >= 2: disabling Python")
else(SWIG_MAJOR_VERSION EQUAL 1)
else()
set_config_option(HAVE_PYTHON "Python")
mark_as_advanced(CLEAR PYTHON_LIBRARY PYTHON_INCLUDE_DIR)
if(ENABLE_NUMPY)
......@@ -1277,12 +1289,12 @@ if(ENABLE_PRIVATE_API AND ENABLE_WRAP_PYTHON)
ARGS "-c \"import numpy; print(numpy.get_include())\""
OUTPUT_VARIABLE NUMPY_INC
RETURN_VALUE NUMPY_NOT_FOUND)
endif(NOT NUMPY_INC)
endif()
if(NUMPY_INC)
list(APPEND EXTERNAL_INCLUDES ${NUMPY_INC})
set_config_option(HAVE_NUMPY "Numpy")
endif(NUMPY_INC)
endif(ENABLE_NUMPY)
endif()
endif()
if(HAVE_PETSC)
if(ENABLE_PETSC4PY)
EXECUTE_PROCESS(
......@@ -1294,62 +1306,62 @@ if(ENABLE_PRIVATE_API AND ENABLE_WRAP_PYTHON)
if(PETSC4PY_INC)
list(APPEND EXTERNAL_INCLUDES ${PETSC4PY_INC})
set_config_option(HAVE_PETSC4PY "PETSc4py")
endif(PETSC4PY_INC)
endif(ENABLE_PETSC4PY)
endif(HAVE_PETSC)
endif(SWIG_MAJOR_VERSION EQUAL 1)
endif(SWIG_FOUND AND PYTHONLIBS_FOUND)
endif(ENABLE_PRIVATE_API AND ENABLE_WRAP_PYTHON)
endif()
endif()
endif()
endif()
endif()
endif()
check_function_exists(vsnprintf HAVE_VSNPRINTF)
if(NOT HAVE_VSNPRINTF AND NOT ENABLE_BUILD_IOS AND NOT ENABLE_BUILD_ANDROID)
set_config_option(HAVE_NO_VSNPRINTF "NoVsnprintf")
endif(NOT HAVE_VSNPRINTF AND NOT ENABLE_BUILD_IOS AND NOT ENABLE_BUILD_ANDROID)
endif()
check_include_file(sys/socket.h HAVE_SYS_SOCKET_H)
if(HAVE_SYS_SOCKET_H)
set(CMAKE_EXTRA_INCLUDE_FILES sys/socket.h)
endif(HAVE_SYS_SOCKET_H)
endif()
check_type_size(socklen_t SOCKLEN_T_SIZE)
set(CMAKE_EXTRA_INCLUDE_FILES)
if(NOT SOCKLEN_T_SIZE AND NOT ENABLE_BUILD_IOS AND NOT ENABLE_BUILD_ANDROID)
set_config_option(HAVE_NO_SOCKLEN_T "NoSocklenT")
endif(NOT SOCKLEN_T_SIZE AND NOT ENABLE_BUILD_IOS AND NOT ENABLE_BUILD_ANDROID)
endif()
check_include_file(stdint.h HAVE_STDINT_H)
if(HAVE_STDINT_H)
set(CMAKE_EXTRA_INCLUDE_FILES stdint.h)
else(HAVE_STDINT_H)
else()
set_config_option(HAVE_NO_STDINT_H "NoStdintH")
endif(HAVE_STDINT_H)
endif()
check_type_size(intptr_t INTPTR_T_SIZE)
set(CMAKE_EXTRA_INCLUDE_FILES)
if(NOT INTPTR_T_SIZE AND NOT ENABLE_BUILD_IOS AND NOT ENABLE_BUILD_ANDROID)
set_config_option(HAVE_NO_INTPTR_T "NoIntptrT")
endif(NOT INTPTR_T_SIZE AND NOT ENABLE_BUILD_IOS AND NOT ENABLE_BUILD_ANDROID)
endif()
check_include_file(dlfcn.h DLFCN_H)
if(DLFCN_H)
set_config_option(HAVE_DLOPEN "Dlopen")
list(APPEND EXTERNAL_LIBRARIES ${CMAKE_DL_LIBS})
endif(DLFCN_H)
endif()
check_include_file(linux/joystick.h LINUX_JOYSTICK_H)
if(LINUX_JOYSTICK_H)
set_config_option(HAVE_LINUX_JOYSTICK "LinuxJoystick")
endif(LINUX_JOYSTICK_H)
endif()
if(WIN32 OR CYGWIN)
add_definitions(-D_USE_MATH_DEFINES)
list(APPEND EXTERNAL_LIBRARIES winmm wsock32 ws2_32 psapi)
endif(WIN32 OR CYGWIN)
endif()
if(MSVC)
add_definitions(-DNOMINMAX -D_CRT_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_DEPRECATE)
if(HAVE_FLTK)
set(GMSH_SRC ${GMSH_SRC};Fltk/Win32Icon.rc)
endif(HAVE_FLTK)
endif(MSVC)
endif()
endif()
# add C functions API
set(GMSH_SRC ${GMSH_SRC};api/gmshc.cpp)
......@@ -1364,18 +1376,18 @@ if(WALL AND NOT MSVC)
check_cxx_compiler_flag("-Wint-to-void-pointer-cast" WCAST)
if(WCAST)
set(WF "${WF} -Wno-int-to-void-pointer-cast")
endif(WCAST)
endif()
check_cxx_compiler_flag("-Wdeprecated-declarations" WDEPREC)
if(WDEPREC)
# FIXME: remove this when we have fixed the deprecated GLU code for OpenGL3
set(WF "${WF} -Wno-deprecated-declarations")
endif(WDEPREC)
endif()
check_cxx_compiler_flag("-Wmisleading-indentation" WIND)
if(WIND)
set(WF "${WF} -Wno-misleading-indentation")
endif(WIND)
endif()
set_compile_flags(WALL_SRC ${WF})
endif(WALL AND NOT MSVC)
endif()
# don't issue warnings for contributed libraries
check_cxx_compiler_flag("-w" NOWARN)
......@@ -1383,7 +1395,7 @@ if(NOWARN)
file(GLOB_RECURSE NOWARN_SRC contrib/*.cpp contrib/*.cc contrib/*.cxx contrib/*.c
${CMAKE_CURRENT_BINARY_DIR}/contrib/taucs/*.c)
set_compile_flags(NOWARN_SRC "-w")
endif(NOWARN)
endif()
# disable compile optimization on some known problematic files
check_cxx_compiler_flag("-O0" NOOPT)
......@@ -1391,12 +1403,12 @@ if(NOOPT OR ENABLE_BUILD_IOS)
if(ENABLE_BUILD_IOS) # optimized iOS 10 64 bits screws somewhere in Geo
file(GLOB_RECURSE NOOPT_SRC Numeric/robustPredicates.cpp Geo/G*.cpp Mesh/BDS.cpp
Parser/Gmsh.tab.cpp contrib/blossom/* Mesh/Background*)
else(ENABLE_BUILD_IOS)
else()
file(GLOB_RECURSE NOOPT_SRC Numeric/robustPredicates.cpp Mesh/BDS.cpp
Parser/Gmsh.tab.cpp contrib/blossom/* contrib/bamg/* Mesh/Background*)
endif(ENABLE_BUILD_IOS)
endif()
set_compile_flags(NOOPT_SRC "-O0")
endif(NOOPT OR ENABLE_BUILD_IOS)
endif()
# do not use arithmetic contraction in predicates.cpp
# if("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC")
......@@ -1422,20 +1434,20 @@ if(ENABLE_REVOROPT)
if(PROP)
set_source_files_properties(Plugin/CVTRemesh.cpp PROPERTIES
COMPILE_FLAGS "${PROP} -std=c++11")
else(PROP)
else()
set_source_files_properties(Plugin/CVTRemesh.cpp PROPERTIES
COMPILE_FLAGS "-std=c++11")
endif(PROP)
else(EIGEN3_INC AND HAVE_MESH AND HAVE_PLUGINS AND HAVE_ANN AND HAVE_BFGS)
endif()
else()
message(WARNING "Revoropt requires Eigen3, Mesh, Plugins, Ann and BFGS")
endif(EIGEN3_INC AND HAVE_MESH AND HAVE_PLUGINS AND HAVE_ANN AND HAVE_BFGS)
endif(ENABLE_REVOROPT)
endif()
endif()
list(SORT CONFIG_OPTIONS)
set(GMSH_CONFIG_OPTIONS "")
foreach(OPT ${CONFIG_OPTIONS})
set(GMSH_CONFIG_OPTIONS "${GMSH_CONFIG_OPTIONS} ${OPT}")
endforeach(OPT)
endforeach()
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Common/GmshConfig.h.in
${CMAKE_CURRENT_BINARY_DIR}/Common/GmshConfig.h)
......@@ -1451,20 +1463,20 @@ set(ENV_CMAKE_INCLUDE_PATH $ENV{CMAKE_INCLUDE_PATH})
if(UNIX)
if(ENV_CMAKE_PREFIX_PATH)
string(REPLACE ":" ";" ENV_CMAKE_PREFIX_PATH ${ENV_CMAKE_PREFIX_PATH})
endif(ENV_CMAKE_PREFIX_PATH)
endif()
if(ENV_CMAKE_INCLUDE_PATH)
string(REPLACE ":" ";" ENV_CMAKE_INCLUDE_PATH ${ENV_CMAKE_INCLUDE_PATH})
endif(ENV_CMAKE_INCLUDE_PATH)
endif(UNIX)
endif()
endif()
list(APPEND EXTERNAL_INCLUDES ${CMAKE_INCLUDE_PATH} ${ENV_CMAKE_INCLUDE_PATH})
list(APPEND EXTERNAL_INCLUDES ${CMAKE_PREFIX_PATH} ${ENV_CMAKE_PREFIX_PATH})
foreach(DIR ${CMAKE_PREFIX_PATH} ${ENV_CMAKE_PREFIX_PATH})
list(APPEND EXTERNAL_INCLUDES ${DIR}/include)
endforeach(DIR)
endforeach()
if(EXTERNAL_INCLUDES)
list(REMOVE_DUPLICATES EXTERNAL_INCLUDES)
endif(EXTERNAL_INCLUDES)
endif()
if(HAVE_FLTK)
set(LINK_LIBRARIES ${FLTK_LIBRARIES} ${EXTERNAL_LIBRARIES}
......@@ -1472,9 +1484,9 @@ if(HAVE_FLTK)
elseif(HAVE_OPENGL)
set(LINK_LIBRARIES ${EXTERNAL_LIBRARIES} ${OPENGL_LIBRARIES}
${LAPACK_LIBRARIES})
else(HAVE_FLTK)
else()
set(LINK_LIBRARIES ${EXTERNAL_LIBRARIES} ${LAPACK_LIBRARIES})
endif(HAVE_FLTK)
endif()
# try to use static gfortran on static builds (cannot do this on dynamic builds
# as e.g. Debian compiles libgfortran.a without -fPIC: sigh...)
......@@ -1486,10 +1498,10 @@ if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENABLE_BUILD_SHARED)
foreach(STR ${LINK_LIBRARIES})
string(REPLACE "-lgfortran" ${GFORTRAN_STATIC} STR2 ${STR})
list(APPEND LINK_LIBRARIES2 ${STR2})
endforeach(STR)
endforeach()
set(LINK_LIBRARIES ${LINK_LIBRARIES2})
endif(GFORTRAN_STATIC)
endif(NOT ENABLE_BUILD_DYNAMIC AND NOT ENABLE_BUILD_SHARED)
endif()
endif()
# Linux-specific linking
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
......@@ -1497,12 +1509,12 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
find_library(RT_LIB rt)
if(RT_LIB)
list(APPEND LINK_LIBRARIES ${RT_LIB})
endif(RT_LIB)
endif(HAVE_OCC)
endif()
endif()
if(CMAKE_C_COMPILER_ID MATCHES "GNU")
add_definitions(-fPIC)
endif(CMAKE_C_COMPILER_ID MATCHES "GNU")
endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
endif()
endif()
# we could specify include dirs more selectively, but this is simpler
include_directories(Common Fltk Geo Graphics Mesh Solver Numeric Parser
......@@ -1518,7 +1530,7 @@ set(GMSH_EXTERNAL_LIBRARIES ${LINK_LIBRARIES} CACHE
foreach(DIR ${GMSH_DIRS})
string(REGEX REPLACE "\\+" "\\\\+" DIR ${DIR})
source_group(${DIR} REGULAR_EXPRESSION ${DIR}/.*)
endforeach(DIR)
endforeach()
# static library target
if(ENABLE_BUILD_LIB)
......@@ -1528,9 +1540,9 @@ if(ENABLE_BUILD_LIB)
set_target_properties(lib PROPERTIES DEBUG_POSTFIX d)
if(ENABLE_MSVC_STATIC_RUNTIME)
set_target_properties(lib PROPERTIES LINK_FLAGS_RELEASE "/nodefaultlib:LIBCMT")
endif(ENABLE_MSVC_STATIC_RUNTIME)
endif(MSVC)
endif(ENABLE_BUILD_LIB)
endif()
endif()
endif()
# shared library target
if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC)
......@@ -1541,35 +1553,35 @@ if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC)
if(WIN32 OR CYGWIN)
set_target_properties(shared PROPERTIES PREFIX "" IMPORT_PREFIX ""
IMPORT_SUFFIX ".lib" COMPILE_FLAGS "-DGMSH_DLL -DGMSH_DLL_EXPORT")
endif(WIN32 OR CYGWIN)
endif()
target_link_libraries(shared ${LINK_LIBRARIES})
if(MSVC AND ENABLE_MSVC_STATIC_RUNTIME)
message(STATUS "Note: By enabling ENABLE_MSVC_STATIC_RUNTIME, shared library "
"won't link. In MSVC change /MT to /MD in the shared project properties")
endif(MSVC AND ENABLE_MSVC_STATIC_RUNTIME)
endif(ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC)
endif()
endif()
# binary targets
if(HAVE_FLTK)
if(ENABLE_BUILD_DYNAMIC)
add_executable(gmsh WIN32 Common/Main.cpp)
target_link_libraries(gmsh shared)
else(ENABLE_BUILD_DYNAMIC)
else()
add_executable(gmsh WIN32 Common/Main.cpp ${GMSH_SRC})
endif(ENABLE_BUILD_DYNAMIC)
endif()
# we could add this to create a minimal app bundle even without install
# if(APPLE AND NOT ENABLE_OS_SPECIFIC_INSTALL)
# set_target_properties(gmsh PROPERTIES MACOSX_BUNDLE ON
# MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/utils/misc/gmsh_dev.plist)
# endif(APPLE AND NOT ENABLE_OS_SPECIFIC_INSTALL)
else(HAVE_FLTK)
# endif()
else()
if(ENABLE_BUILD_DYNAMIC)
add_executable(gmsh Common/Main.cpp)
target_link_libraries(gmsh shared)
else(ENABLE_BUILD_DYNAMIC)
else()
add_executable(gmsh Common/Main.cpp ${GMSH_SRC})
endif(ENABLE_BUILD_DYNAMIC)
endif(HAVE_FLTK)
endif()
endif()
target_link_libraries(gmsh ${LINK_LIBRARIES})
# Windows specific linker options
......@@ -1577,26 +1589,26 @@ if(WIN32 AND NOT MSVC OR CYGWIN)
set(FLAGS "-Wl,--stack,16777216 -mwindows")
if(HAVE_64BIT_SIZE_T)
set(FLAGS "${FLAGS} ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/Win64Icon.res")
else(HAVE_64BIT_SIZE_T)
else()
set(FLAGS "${FLAGS} ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/Win32Icon.res")
endif(HAVE_64BIT_SIZE_T)
endif()
set_target_properties(gmsh PROPERTIES LINK_FLAGS "${FLAGS} -static")
if(ENABLE_BUILD_DYNAMIC OR ENABLE_BUILD_SHARED)
set_target_properties(shared PROPERTIES LINK_FLAGS -static)
endif(ENABLE_BUILD_DYNAMIC OR ENABLE_BUILD_SHARED)
endif()
# remove -Wl,-Bdynamic flags
set(CMAKE_EXE_LINK_DYNAMIC_C_FLAGS)
set(CMAKE_EXE_LINK_DYNAMIC_CXX_FLAGS)
elseif(MSVC)
set_target_properties(gmsh PROPERTIES LINK_FLAGS "/STACK:16777216 /SAFESEH:NO")
endif(WIN32 AND NOT MSVC OR CYGWIN)
endif()
# android target
if(ENABLE_BUILD_ANDROID)
find_file(CMAKE_TOOLCHAIN_FILE "android.toolchain.cmake")
if(NOT CMAKE_TOOLCHAIN_FILE)
message(FATAL_ERROR "Cannot compile Gmsh for android without android-cmake")
endif(NOT CMAKE_TOOLCHAIN_FILE)
endif()
add_definitions(-D_GLIBCXX_USE_C99_MATH=1)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_BUILD_TYPE Release)
......@@ -1609,7 +1621,7 @@ if(ENABLE_BUILD_ANDROID)
target_link_libraries(androidGmsh ${EXTERNAL_LIBRARIES} ${LAPACK_LIBRARIES})
add_custom_command(TARGET androidGmsh POST_BUILD COMMAND
${CMAKE_STRIP} ${LIBRARY_OUTPUT_PATH}/libgmsh.so)
endif(ENABLE_BUILD_ANDROID)
endif()
# parser target
find_program(BISON bison)
......@@ -1619,7 +1631,7 @@ if(BISON AND FLEX)
COMMAND ${BISON} -p gmsh_yy --output Gmsh.tab.cpp -d Gmsh.y
COMMAND ${FLEX} -P gmsh_yy -o Gmsh.yy.cpp Gmsh.l
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Parser)
endif(BISON AND FLEX)
endif()
if(UNIX)
# cannot use cmake's file search functions here (they would only find files
......@@ -1630,18 +1642,16 @@ if(UNIX)
add_custom_target(etags
COMMAND etags `find . -name *.cpp -o -name *.h -o -name *.y`
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
endif(UNIX)
endif()
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR
CMAKE_CXX_COMPILER_ID MATCHES "Clang")
execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion
OUTPUT_VARIABLE CXX_COMPILER_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE)
else(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR
CMAKE_CXX_COMPILER_ID MATCHES "Clang")
else()
set(CXX_COMPILER_VERSION "Unknown")
endif(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR
CMAKE_CXX_COMPILER_ID MATCHES "Clang")
endif()
set(WELCOME_FILE ${CMAKE_CURRENT_SOURCE_DIR}/doc/WELCOME.txt)
set(SDK_FILE ${CMAKE_CURRENT_SOURCE_DIR}/doc/SDK.txt)
......@@ -1671,13 +1681,13 @@ macro(unix2dos VARNAME)
if(CYGWIN)
string(REGEX REPLACE "\n" "\r\n" F1 "${F0}")
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/unix2dos/${N} "${F1}")
else(CYGWIN) # if not in Cygwin, cmake adds '\r's automatically
else() # if not in Cygwin, cmake adds '\r's automatically
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/unix2dos/${N} "${F0}")
endif(CYGWIN)
endif()
list(APPEND UNIX2DOS_FILES ${CMAKE_CURRENT_BINARY_DIR}/unix2dos/${N})
endforeach(FILE)
endforeach()
set(${VARNAME} ${UNIX2DOS_FILES})
endmacro(unix2dos)
endmacro()
if(WIN32 OR CYGWIN)
if(ENABLE_OS_SPECIFIC_INSTALL)
......@@ -1686,19 +1696,19 @@ if(WIN32 OR CYGWIN)
set(GMSH_DOC .)
set(GMSH_MAN .)
set(GMSH_INC .)
else(ENABLE_OS_SPECIFIC_INSTALL)
else()
include(GNUInstallDirs)
set(GMSH_BIN ${CMAKE_INSTALL_BINDIR})
set(GMSH_LIB ${CMAKE_INSTALL_LIBDIR})
set(GMSH_DOC ${CMAKE_INSTALL_DOCDIR})
set(GMSH_MAN ${CMAKE_INSTALL_MANDIR}/man1)
set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR})
endif(ENABLE_OS_SPECIFIC_INSTALL)
endif()
if(CYGWIN)
unix2dos(GMSH_API)
if(ENABLE_PRIVATE_API)
unix2dos(GMSH_PRIVATE_API)
endif(ENABLE_PRIVATE_API)
endif()
unix2dos(WELCOME_FILE)
unix2dos(SDK_FILE)
unix2dos(LICENSE_FILE)
......@@ -1709,7 +1719,7 @@ if(WIN32 OR CYGWIN)
file(GLOB DEMO_FILES ${DIR}/?*.*)
unix2dos(DEMO_FILES)
endforeach()
endif(CYGWIN)
endif()
elseif(APPLE AND ENABLE_OS_SPECIFIC_INSTALL)
# set these so that the files get installed nicely in the MacOSX
# .app bundle
......@@ -1718,50 +1728,50 @@ elseif(APPLE AND ENABLE_OS_SPECIFIC_INSTALL)
set(GMSH_DOC ../../..)
set(GMSH_MAN ../../..)
set(GMSH_INC ../MacOS)
else(WIN32 OR CYGWIN)
else()
include(GNUInstallDirs)
set(GMSH_BIN ${CMAKE_INSTALL_BINDIR})
set(GMSH_LIB ${CMAKE_INSTALL_LIBDIR})
set(GMSH_DOC ${CMAKE_INSTALL_DOCDIR})
set(GMSH_MAN ${CMAKE_INSTALL_MANDIR}/man1)
set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR})
endif(WIN32 OR CYGWIN)
endif()
# FIXME: change this once we understand rpaths
if(APPLE)
if(ENABLE_BUILD_DYNAMIC OR ENABLE_BUILD_SHARED)
set_target_properties(shared PROPERTIES INSTALL_NAME_DIR
${CMAKE_INSTALL_PREFIX}/${GMSH_LIB})
endif(ENABLE_BUILD_DYNAMIC OR ENABLE_BUILD_SHARED)
endif(APPLE)
endif()
endif()
# mark targets as optional so we can install them separately if needed
# (e.g. "make lib" or "make shared" followed by "make install/fast")
install(TARGETS gmsh DESTINATION ${GMSH_BIN} OPTIONAL)
if(ENABLE_BUILD_LIB)
install(TARGETS lib DESTINATION ${GMSH_LIB} OPTIONAL)
endif(ENABLE_BUILD_LIB)
endif()
if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC)
install(TARGETS shared DESTINATION ${GMSH_LIB} OPTIONAL)
# FIXME once we cleanup the installation of the python module
install(TARGETS shared DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/api OPTIONAL)
endif(ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC)
endif()
if(ENABLE_ONELAB)
install(FILES ${ONELAB_PY} DESTINATION ${GMSH_BIN})
endif(ENABLE_ONELAB)
endif()
if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC)
install(FILES ${GMSH_API} DESTINATION ${GMSH_INC})
install(FILES ${GMSH_PY} DESTINATION ${GMSH_LIB})
install(FILES ${GMSH_JL} DESTINATION ${GMSH_LIB})
if(ENABLE_PRIVATE_API)
install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh)
endif(ENABLE_PRIVATE_API)
endif(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC)
endif()
endif()
if(INSTALL_SDK_README)
configure_file(${SDK_FILE} ${CMAKE_CURRENT_BINARY_DIR}/README.txt)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/README.txt DESTINATION .)
endif(INSTALL_SDK_README)
endif()
install(FILES ${WELCOME_FILE} DESTINATION ${GMSH_DOC} RENAME README.txt)
install(FILES ${LICENSE_FILE} DESTINATION ${GMSH_DOC})
install(FILES ${CREDITS_FILE} DESTINATION ${GMSH_DOC})
......@@ -1774,7 +1784,7 @@ foreach(DIR ${DEMOS_DIRS})
endforeach()
if(UNIX AND NOT CYGWIN)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/doc/gmsh.1 DESTINATION ${GMSH_MAN})
endif(UNIX AND NOT CYGWIN)
endif()
add_custom_target(get_headers
COMMAND ${CMAKE_COMMAND} -E make_directory Headers/gmsh
......@@ -1783,14 +1793,14 @@ foreach(FILE ${GMSH_API})
add_custom_command(TARGET get_headers POST_BUILD COMMAND ${CMAKE_COMMAND}
-E copy_if_different ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/Headers/
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
endforeach(FILE)
endforeach()
if(ENABLE_PRIVATE_API)
foreach(FILE ${GMSH_PRIVATE_API})
add_custom_command(TARGET get_headers POST_BUILD COMMAND ${CMAKE_COMMAND}
-E copy_if_different ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/Headers/gmsh/
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
endforeach(FILE)
endif(ENABLE_PRIVATE_API)
endforeach()
endif()
find_program(MAKEINFO makeinfo)
if(MAKEINFO)
......@@ -1809,9 +1819,9 @@ if(MAKEINFO)
ARGS ${TEX_DIR}/gmsh.texi WORKING_DIRECTORY ${TEX_DIR})
add_custom_target(html DEPENDS ${TEX_DIR}/gmsh.html)
install(FILES ${TEX_DIR}/gmsh.html DESTINATION ${GMSH_DOC} OPTIONAL)
else(MAKEINFO)
else()
add_custom_target(html COMMAND ${CMAKE_COMMAND} -E touch ${TEX_DIR}/gmsh.html)
endif(MAKEINFO)
endif()
find_program(TEXI2PDF texi2pdf)
if(TEXI2PDF)
......@@ -1820,7 +1830,7 @@ if(TEXI2PDF)
WORKING_DIRECTORY ${TEX_DIR})
add_custom_target(pdf DEPENDS ${TEX_DIR}/gmsh.pdf)
install(FILES ${TEX_DIR}/gmsh.pdf DESTINATION ${GMSH_DOC} OPTIONAL)
endif(TEXI2PDF)
endif()
execute_process(COMMAND ${CMAKE_COMMAND} -E echo
"@c This file was generated by cmake: do not edit manually!\n${OPT_TEXI}"
......@@ -1836,11 +1846,11 @@ if(MAKEINFO AND TEXI2PDF)
DEPENDS ${TEX_DIR}/gmsh.info ${TEX_DIR}/gmsh.txt
${TEX_DIR}/gmsh.html ${TEX_DIR}/gmsh.pdf
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
endif(MAKEINFO AND TEXI2PDF)
endif()
if(MAKEINFO OR TEXI2PDF)
add_custom_target(clean_doc COMMAND ${CMAKE_COMMAND} -E remove ${TEX_OBJ})
endif(MAKEINFO OR TEXI2PDF)
endif()
if(APPLE AND ENABLE_BUILD_LIB)
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/utils/misc/gmsh_framework.plist F0)
......@@ -1861,15 +1871,15 @@ if(APPLE AND ENABLE_BUILD_LIB)
add_custom_command(TARGET framework POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy
${FILE} ${CMAKE_CURRENT_BINARY_DIR}/gmsh.framework/Headers/
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
endforeach(FILE)
endforeach()
if(ENABLE_PRIVATE_API)
foreach(FILE ${GMSH_PRIVATE_API})
add_custom_command(TARGET framework POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy
${FILE} ${CMAKE_CURRENT_BINARY_DIR}/gmsh.framework/Headers/
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
endforeach(FILE)
endif(ENABLE_PRIVATE_API)
endif(APPLE AND ENABLE_BUILD_LIB)
endforeach()
endif()
endif()
set(CPACK_PACKAGE_VENDOR "Christophe Geuzaine and Jean-Francois Remacle")
set(CPACK_PACKAGE_VERSION_MAJOR ${GMSH_MAJOR_VERSION})
......@@ -1881,10 +1891,10 @@ set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
if(GMSH_EXTRA_VERSION MATCHES "-git.*") # so that we'll overwrite the archives
set(CPACK_PACKAGE_FILE_NAME gmsh-git-${GMSH_OS})
set(CPACK_SOURCE_PACKAGE_FILE_NAME gmsh-git-source)
else(GMSH_EXTRA_VERSION MATCHES "-git.*")
else()
set(CPACK_PACKAGE_FILE_NAME gmsh-${GMSH_VERSION}-${GMSH_OS})
set(CPACK_SOURCE_PACKAGE_FILE_NAME gmsh-${GMSH_VERSION}-source)
endif(GMSH_EXTRA_VERSION MATCHES "-git.*")
endif()
set(CPACK_PACKAGE_INSTALL_DIRECTORY "gmsh")
set(CPACK_RESOURCE_FILE_LICENSE ${LICENSE_FILE})
set(CPACK_RESOURCE_FILE_README ${WELCOME_FILE})
......@@ -1902,7 +1912,7 @@ if(UNIX)
# example "make package; make package_source" would lead to huge file lists
# getting generated due to the 'Applications' symlink in the bundle)
set(CPACK_INSTALL_COMMANDS "rm -rf ${CMAKE_CURRENT_BINARY_DIR}/_CPack_Packages")
endif(UNIX)
endif()
if(APPLE AND ENABLE_OS_SPECIFIC_INSTALL)
set(CPACK_GENERATOR Bundle)
......@@ -1915,7 +1925,7 @@ if(APPLE AND ENABLE_OS_SPECIFIC_INSTALL)
if(PACKAGER STREQUAL "geuzaine - removed: we sign on a separate machine")
# codesigning requires CMake >= 3.2
set(CPACK_BUNDLE_APPLE_CERT_APP "Developer ID Application: Christophe Geuzaine")
endif(PACKAGER STREQUAL "geuzaine - removed: we sign on a separate machine")
endif()
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIconsGeo.icns DESTINATION .
RENAME GmshGeo.icns)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIconsMsh.icns DESTINATION .
......@@ -1927,17 +1937,19 @@ if(APPLE AND ENABLE_OS_SPECIFIC_INSTALL)
set(CPACK_PACKAGE_ICON ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIcons.icns)
elseif(WIN32 OR CYGWIN)
set(CPACK_GENERATOR ZIP)
else(APPLE AND ENABLE_OS_SPECIFIC_INSTALL)
else()
set(CPACK_GENERATOR TGZ)
endif(APPLE AND ENABLE_OS_SPECIFIC_INSTALL)
endif()
if(ENABLE_PRIVATE_API AND ENABLE_WRAP_PYTHON AND HAVE_PYTHON)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/utils/wrappers/gmshpy AND
ENABLE_PRIVATE_API AND ENABLE_WRAP_PYTHON AND HAVE_PYTHON)
add_subdirectory(utils/wrappers/gmshpy)
endif(ENABLE_PRIVATE_API AND ENABLE_WRAP_PYTHON AND HAVE_PYTHON)
endif()
if(ENABLE_PRIVATE_API AND ENABLE_WRAP_JAVA)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/utils/wrappers/java AND
ENABLE_PRIVATE_API AND ENABLE_WRAP_JAVA)
add_subdirectory(utils/wrappers/java)
endif(ENABLE_PRIVATE_API AND ENABLE_WRAP_JAVA)
endif()
include(CPack)
......@@ -1953,9 +1965,9 @@ if(NOT DISABLE_GMSH_TESTS)
FILE(RELATIVE_PATH TEST ${CMAKE_CURRENT_BINARY_DIR} ${TESTFILE})
if(HAVE_OCC OR NOT ${TEST} MATCHES "boolean" OR NOT ${TEST} MATCHES "occ")
add_test(${TEST} ./gmsh ${TEST} -3 -nopopup -o ./tmp.msh)
endif(HAVE_OCC OR NOT ${TEST} MATCHES "boolean" OR NOT ${TEST} MATCHES "occ")
endif()
endforeach()
endif(NOT DISABLE_GMSH_TESTS)
endif()
message(STATUS "")
message(STATUS "Gmsh ${GMSH_VERSION} has been configured for ${GMSH_OS}")
......
......@@ -24,14 +24,9 @@ set(SRC
onelabUtils.cpp
GamePad.cpp
GmshRemote.cpp
gmshLocalNetworkClient.cpp
gmsh.cpp
)
if(ENABLE_ONELAB AND NOT ENABLE_ONELAB2)
set(SRC
${SRC}
gmshLocalNetworkClient.cpp)
endif(ENABLE_ONELAB AND NOT ENABLE_ONELAB2)
file(GLOB HDR RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.h)
append_gmsh_src(Common "${SRC};${HDR}")
......@@ -323,7 +323,8 @@ public:
CTX::instance()->geom.surfaceType > 0)
f->fillVertexArray(f->geomType() == GEntity::ProjectionFace);
if(CTX::instance()->geom.surfaces || f->getSelection() > 1 ||
if(((CTX::instance()->geom.surfaces || f->getSelection() > 1) &&
CTX::instance()->geom.surfaceType == 0) ||
CTX::instance()->geom.surfacesNum || CTX::instance()->geom.normals)
f->buildRepresentationCross();
......
......@@ -20,13 +20,13 @@ opt(NCURSES "Enable ncurses console tools" OFF)
if(ENABLE_NCURSES)
find_library(NCURSES_LIB ncurses)
find_path(NCURSES_INC "ncurses.h" PATH_SUFFIXES src include)
endif(ENABLE_NCURSES)
endif()
if(NCURSES_LIB AND NCURSES_INC)
set_config_option(HAVE_NCURSES "NCURSES")
list(APPEND EXTERNAL_LIBRARIES ${NCURSES_LIB})
set(EXTERNAL_LIBRARIES ${EXTERNAL_LIBRARIES} PARENT_SCOPE)
list(APPEND EXTERNAL_INCLUDES ${NCURSES_INC})
endif(NCURSES_LIB AND NCURSES_INC)
endif()
mark_as_advanced(NCURSES_INC NCURSES_LIB)
......@@ -35,4 +35,3 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/MeshOptimizerConfig.h.in
file(GLOB_RECURSE HDR RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.hpp)
append_gmsh_src(contrib/MeshOptimizer "${SRC};${HDR}")
......@@ -6,13 +6,13 @@ if(APPLE)
option(ENABLE_BUILD_ANDROID "Build library for Android NDK (ARMv7)" OFF)
else(APPLE)
option(ENABLE_BUILD_ANDROID "Build library for Android NDK (ARMv7)" ON)
endif(APPLE)
endif()
if(APPNAME)
message(STATUS "Rebranding Onelab as " ${APPNAME})
else(APPNAME)
set(APPNAME Onelab)
endif(APPNAME)
endif()
# find all benchmarks (in a two-level dir hierarchy) who provide infos.xml
file(GLOB BENCHMARKSDIR ${MODELS_DIR}/*)
......@@ -52,7 +52,7 @@ if(ENABLE_BUILD_IOS_EMULATOR OR ENABLE_BUILD_IOS)
message(STATUS "Found framework " ${GETDP_FRAMEWORK})
else(GETDP_FRAMEWORK)
message(SEND_ERROR "Could not find getdp.framework")
endif(GETDP_FRAMEWORK)
endif()
# gmsh framework
find_path(GMSH_FRAMEWORK gmsh.framework)
if(GMSH_FRAMEWORK)
......@@ -60,7 +60,7 @@ if(ENABLE_BUILD_IOS_EMULATOR OR ENABLE_BUILD_IOS)
message(STATUS "Found framework " ${GMSH_FRAMEWORK})
else(GMSH_FRAMEWORK)
message(SEND_ERROR "Could not find gmsh.framework")
endif(GMSH_FRAMEWORK)
endif()
# PETSc framework
find_path(PETSC_FRAMEWORK petsc.framework)
if(PETSC_FRAMEWORK)
......@@ -68,7 +68,7 @@ if(ENABLE_BUILD_IOS_EMULATOR OR ENABLE_BUILD_IOS)
message(STATUS "Found framework " ${PETSC_FRAMEWORK})
else(PETSC_FRAMEWORK)
message(SEND_ERROR "Could not find petsc.framework")
endif(PETSC_FRAMEWORK)
endif()
# SLEPc framework
find_path(SLEPC_FRAMEWORK slepc.framework)
if(SLEPC_FRAMEWORK)
......@@ -76,7 +76,7 @@ if(ENABLE_BUILD_IOS_EMULATOR OR ENABLE_BUILD_IOS)
message(STATUS "Found framework " ${SLEPC_FRAMEWORK})
else(SLEPC_FRAMEWORK)
message(SEND_ERROR "Could not find slepc.framework")
endif(SLEPC_FRAMEWORK)
endif()
# OpenCASCADE framework
find_path(OCCT_FRAMEWORK occt.framework)
if(OCCT_FRAMEWORK)
......@@ -84,7 +84,7 @@ if(ENABLE_BUILD_IOS_EMULATOR OR ENABLE_BUILD_IOS)
message(STATUS "Found framework " ${OCCT_FRAMEWORK})
else(OCCT_FRAMEWORK)
message(SEND_ERROR "Could not find occt.framework")
endif(OCCT_FRAMEWORK)
endif()
# add target
add_custom_target(xcodeProject
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/models/
......@@ -133,13 +133,13 @@ if(ENABLE_BUILD_IOS_EMULATOR OR ENABLE_BUILD_IOS)
sed -e \"s|Onelab/Mobile|BBEMG|g\" -i \"\" "${CMAKE_CURRENT_BINARY_DIR}/BBEMG/BBEMG/AboutViewController.mm")
add_custom_command(TARGET xcodeProject POST_BUILD COMMAND
sed -e \"s|onelab.info|www.bbemg.be|g\" -i \"\" "${CMAKE_CURRENT_BINARY_DIR}/BBEMG/BBEMG/AboutViewController.mm")
endif("${APPNAME}" STREQUAL "BBEMG")
endif()
message(STATUS "")
message(STATUS "${APPNAME} for iOS successfully configured:")
message(STATUS " * Run 'make xcodeProject' to create the XCode project")
message(STATUS " * Then run 'open ${APPNAME}/${APPNAME}.xcodeproj' to launch XCode")
message(STATUS "")
endif(ENABLE_BUILD_IOS_EMULATOR OR ENABLE_BUILD_IOS)
endif()
if(ENABLE_BUILD_ANDROID)
append_src(drawContext.cpp)
......@@ -156,7 +156,7 @@ if(ENABLE_BUILD_ANDROID)
list(APPEND EXTERNAL_INCLUDES ${GETDP_INC})
else(GETDP_LIB AND GETDP_INC)
message(SEND_ERROR "Could not find getdp library")
endif(GETDP_LIB AND GETDP_INC)
endif()
# gmsh lib
find_library(GMSH_LIB Gmsh PATH_SUFFIXES lib)
find_path(GMSH_INC "GmshGlobal.h" PATH_SUFFIXES include gmsh include/gmsh)
......@@ -165,7 +165,7 @@ if(ENABLE_BUILD_ANDROID)
list(APPEND EXTERNAL_INCLUDES ${GMSH_INC})
else(GMSH_LIB AND GMSH_INC)
message(SEND_ERROR "Could not find gmsh library")
endif(GMSH_LIB AND GMSH_INC)
endif()
# Onelab android lib
include_directories(${EXTERNAL_INCLUDES})
set(CMAKE_BUILD_TYPE Release)
......@@ -181,19 +181,19 @@ if(ENABLE_BUILD_ANDROID)
find_library(PETSC_LIB petsc PATH_SUFFIXES lib)
if(NOT PETSC_LIB)
message(SEND_ERROR "Could not find PETSc library")
endif(NOT PETSC_LIB)
endif()
find_library(SLEPC_LIB slepc PATH_SUFFIXES lib)
if(NOT SLEPC_LIB)
message(SEND_ERROR "Could not find SLEPc library")
endif(NOT SLEPC_LIB)
endif()
find_library(BLAS_LIB f2cblas PATH_SUFFIXES lib)
if(NOT BLAS_LIB)
message(SEND_ERROR "Could not find BLAS library")
endif(NOT BLAS_LIB)
endif()
find_library(LAPACK_LIB f2clapack PATH_SUFFIXES lib)
if(NOT LAPACK_LIB)
message(SEND_ERROR "Could not find LAPACK library")
endif(NOT LAPACK_LIB)
endif()
set(ONELAB_LIB ${CMAKE_CURRENT_BINARY_DIR}/libs/libOnelab.so)
add_custom_target(androidProject
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/${APPNAME}/
......@@ -227,4 +227,4 @@ if(ENABLE_BUILD_ANDROID)
message(STATUS " * Run 'make androidProject' to create the project")
message(STATUS " * Finally build the app with gradle 'gradle assembleRelease'")
message(STATUS "")
endif(ENABLE_BUILD_ANDROID)
endif()
......@@ -8,27 +8,27 @@ set(CMAKE_CXX_STANDARD 11)
find_library(GMSH_LIB gmsh)
if(NOT GMSH_LIB)
message(FATAL_ERROR "Could not find libgmsh")
endif(NOT GMSH_LIB)
endif()
find_path(GMSH_INC gmsh.h)
if(NOT GMSH_INC)
message(FATAL_ERROR "Could not find gmsh.h")
endif(NOT GMSH_INC)
endif()
if(GMSH_LIB MATCHES ".a") # FIXME - generalize this
find_library(BLAS_LIB blas)
if(BLAS_LIB)
list(APPEND EXTRA_LIBS ${BLAS_LIB})
endif(BLAS_LIB)
endif()
find_library(LAPACK_LIB lapack)
if(LAPACK_LIB)
list(APPEND EXTRA_LIBS ${LAPACK_LIB})
endif(LAPACK_LIB)
endif(GMSH_LIB MATCHES ".a")
endif()
endif()
if(WIN32 OR CYGWIN)
list(APPEND EXTRA_LIBS winmm wsock32 ws2_32 psapi)
endif(WIN32 OR CYGWIN)
endif()
include_directories(${GMSH_INC})
......@@ -49,7 +49,7 @@ foreach(DEMO ${DEMOS})
add_test(${DEMONAME}_cpp ${DEMONAME})
endif()
target_link_libraries(${DEMONAME} ${GMSH_LIB} ${EXTRA_LIBS})
endforeach(DEMO)
endforeach()
file(GLOB DEMOS *.c)
foreach(DEMO ${DEMOS})
......@@ -57,7 +57,7 @@ foreach(DEMO ${DEMOS})
add_executable(${DEMONAME}c ${DEMO})
target_link_libraries(${DEMONAME}c ${GMSH_LIB} ${EXTRA_LIBS})
add_test(${DEMONAME}_c ${DEMONAME}c)
endforeach(DEMO)
endforeach()
find_program(PYTHON python)
if(PYTHON)
......@@ -65,7 +65,7 @@ if(PYTHON)
foreach(DEMO ${DEMOS})
get_filename_component(DEMONAME ${DEMO} NAME_WE)
add_test(${DEMONAME}_py ${PYTHON} ${DEMO})
endforeach(DEMO)
endforeach()
endif()
find_program(JULIA julia)
......@@ -74,5 +74,5 @@ if(JULIA)
foreach(DEMO ${DEMOS})
get_filename_component(DEMONAME ${DEMO} NAME_WE)
add_test(${DEMONAME}_jl ${JULIA} ${DEMO})
endforeach(DEMO)
endforeach()
endif()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment