-# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
SET(NETGENHOME $ENV{NETGENHOME})
FIND_PATH(NETGEN_INCLUDES_DIR nglib.h ${NETGENHOME}/include)
SET(NETGEN_INCLUDES)
-SET(NETGEN_INCLUDES ${NETGEN_INCLUDES} -I${NETGEN_INCLUDES_DIR})
+SET(NETGEN_INCLUDES ${NETGEN_INCLUDES} -I${NETGEN_INCLUDES_DIR} -I${NETGENHOME}/share/netgen/include)
SET(NETGEN_INCLUDES ${NETGEN_INCLUDES} -DNO_PARALLEL_THREADS -DOCCGEOMETRY)
+SET(NETGEN_LIBS)
+FIND_LIBRARY(NETGEN_LIB_csg csg PATHS ${NETGENHOME}/lib ${NETGENHOME}/lib/LINUX)
+FIND_LIBRARY(NETGEN_LIB_gen gen PATHS ${NETGENHOME}/lib ${NETGENHOME}/lib/LINUX)
+FIND_LIBRARY(NETGEN_LIB_geom2d geom2d PATHS ${NETGENHOME}/lib ${NETGENHOME}/lib/LINUX)
+FIND_LIBRARY(NETGEN_LIB_gprim gprim PATHS ${NETGENHOME}/lib ${NETGENHOME}/lib/LINUX)
+FIND_LIBRARY(NETGEN_LIB_interface interface PATHS ${NETGENHOME}/lib ${NETGENHOME}/lib/LINUX)
+FIND_LIBRARY(NETGEN_LIB_la la PATHS ${NETGENHOME}/lib ${NETGENHOME}/lib/LINUX)
+FIND_LIBRARY(NETGEN_LIB_mesh mesh PATHS ${NETGENHOME}/lib ${NETGENHOME}/lib/LINUX)
+FIND_LIBRARY(NETGEN_LIB_occ occ PATHS ${NETGENHOME}/lib ${NETGENHOME}/lib/LINUX)
+FIND_LIBRARY(NETGEN_LIB_stl stl PATHS ${NETGENHOME}/lib ${NETGENHOME}/lib/LINUX)
FIND_LIBRARY(NETGEN_LIB_nglib nglib PATHS ${NETGENHOME}/lib ${NETGENHOME}/lib/LINUX)
-IF(NETGEN_LIB_nglib)
- SET(NETGEN_NEW ON)
- SET(NETGEN_INCLUDES ${NETGEN_INCLUDES} -I${NETGENHOME}/share/netgen/include -DNETGEN_NEW)
-ELSE(NETGEN_LIB_nglib)
- SET(NETGEN_NEW OFF)
-ENDIF(NETGEN_LIB_nglib)
+FOREACH(LIBNAME
+ ${NETGEN_LIB_csg}
+ ${NETGEN_LIB_gen}
+ ${NETGEN_LIB_geom2d}
+ ${NETGEN_LIB_gprim}
+ ${NETGEN_LIB_interface}
+ ${NETGEN_LIB_la}
+ ${NETGEN_LIB_mesh}
+ ${NETGEN_LIB_occ}
+ ${NETGEN_LIB_stl}
+ ${NETGEN_LIB_nglib}
+ )
+ IF(LIBNAME)
+ SET(NETGEN_LIBS ${NETGEN_LIBS} ${LIBNAME})
+ ENDIF(LIBNAME)
+ENDFOREACH(LIBNAME )
-IF(NETGEN_NEW)
- SET(NETGEN_LIBS)
- IF(WINDOWS)
- FIND_LIBRARY(NETGEN_LIB_csg csg PATHS ${NETGENHOME}/lib ${NETGENHOME}/lib/LINUX)
- FIND_LIBRARY(NETGEN_LIB_gen gen PATHS ${NETGENHOME}/lib ${NETGENHOME}/lib/LINUX)
- FIND_LIBRARY(NETGEN_LIB_geom2d geom2d PATHS ${NETGENHOME}/lib ${NETGENHOME}/lib/LINUX)
- FIND_LIBRARY(NETGEN_LIB_gprim gprim PATHS ${NETGENHOME}/lib ${NETGENHOME}/lib/LINUX)
- FIND_LIBRARY(NETGEN_LIB_interface interface PATHS ${NETGENHOME}/lib ${NETGENHOME}/lib/LINUX)
- FIND_LIBRARY(NETGEN_LIB_la la PATHS ${NETGENHOME}/lib ${NETGENHOME}/lib/LINUX)
- FIND_LIBRARY(NETGEN_LIB_mesh mesh PATHS ${NETGENHOME}/lib ${NETGENHOME}/lib/LINUX)
- FIND_LIBRARY(NETGEN_LIB_occ occ PATHS ${NETGENHOME}/lib ${NETGENHOME}/lib/LINUX)
- FIND_LIBRARY(NETGEN_LIB_stl stl PATHS ${NETGENHOME}/lib ${NETGENHOME}/lib/LINUX)
- SET(NETGEN_LIBS ${NETGEN_LIBS} ${NETGEN_LIB_csg})
- SET(NETGEN_LIBS ${NETGEN_LIBS} ${NETGEN_LIB_gen})
- SET(NETGEN_LIBS ${NETGEN_LIBS} ${NETGEN_LIB_geom2d})
- SET(NETGEN_LIBS ${NETGEN_LIBS} ${NETGEN_LIB_gprim})
- SET(NETGEN_LIBS ${NETGEN_LIBS} ${NETGEN_LIB_interface})
- SET(NETGEN_LIBS ${NETGEN_LIBS} ${NETGEN_LIB_la})
- SET(NETGEN_LIBS ${NETGEN_LIBS} ${NETGEN_LIB_mesh})
- SET(NETGEN_LIBS ${NETGEN_LIBS} ${NETGEN_LIB_occ})
- SET(NETGEN_LIBS ${NETGEN_LIBS} ${NETGEN_LIB_stl})
- ENDIF(WINDOWS)
- SET(NETGEN_LIBS ${NETGEN_LIBS} ${NETGEN_LIB_nglib})
-ELSE(NETGEN_NEW)
- FIND_LIBRARY(NETGEN_LIB_csg csg PATHS ${NETGENHOME}/lib ${NETGENHOME}/lib/LINUX)
- FIND_LIBRARY(NETGEN_LIB_gen gen PATHS ${NETGENHOME}/lib ${NETGENHOME}/lib/LINUX)
- FIND_LIBRARY(NETGEN_LIB_geom2d geom2d PATHS ${NETGENHOME}/lib ${NETGENHOME}/lib/LINUX)
- FIND_LIBRARY(NETGEN_LIB_gprim gprim PATHS ${NETGENHOME}/lib ${NETGENHOME}/lib/LINUX)
- FIND_LIBRARY(NETGEN_LIB_la la PATHS ${NETGENHOME}/lib ${NETGENHOME}/lib/LINUX)
- FIND_LIBRARY(NETGEN_LIB_mesh mesh PATHS ${NETGENHOME}/lib ${NETGENHOME}/lib/LINUX)
- FIND_LIBRARY(NETGEN_LIB_nginterface nginterface PATHS ${NETGENHOME}/lib ${NETGENHOME}/lib/LINUX)
- FIND_LIBRARY(NETGEN_LIB_occ occ PATHS ${NETGENHOME}/lib ${NETGENHOME}/lib/LINUX)
- FIND_LIBRARY(NETGEN_LIB_opti opti PATHS ${NETGENHOME}/lib ${NETGENHOME}/lib/LINUX)
- FIND_LIBRARY(NETGEN_LIB_stlgeom stlgeom PATHS ${NETGENHOME}/lib ${NETGENHOME}/lib/LINUX)
- SET(NETGEN_LIBS)
- SET(NETGEN_LIBS ${NETGEN_LIBS} ${NETGEN_LIB_csg})
- SET(NETGEN_LIBS ${NETGEN_LIBS} ${NETGEN_LIB_gen})
- SET(NETGEN_LIBS ${NETGEN_LIBS} ${NETGEN_LIB_geom2d})
- SET(NETGEN_LIBS ${NETGEN_LIBS} ${NETGEN_LIB_gprim})
- SET(NETGEN_LIBS ${NETGEN_LIBS} ${NETGEN_LIB_la})
- SET(NETGEN_LIBS ${NETGEN_LIBS} ${NETGEN_LIB_mesh})
- SET(NETGEN_LIBS ${NETGEN_LIBS} ${NETGEN_LIB_nginterface})
- SET(NETGEN_LIBS ${NETGEN_LIBS} ${NETGEN_LIB_occ})
- SET(NETGEN_LIBS ${NETGEN_LIBS} ${NETGEN_LIB_opti})
- SET(NETGEN_LIBS ${NETGEN_LIBS} ${NETGEN_LIB_stlgeom})
-ENDIF(NETGEN_NEW)
+# Check Netgen version
+SET(NETGEN_V5 OFF)
+SET(tmp_check_netgen ${CMAKE_BINARY_DIR}/tmp_check_netgen.cxx)
+FILE(WRITE ${tmp_check_netgen}
+ "#include <iostream> \n"
+ "#include <fstream> \n"
+ "namespace nglib { \n"
+ "#include \"nglib.h\" \n"
+ "} \n"
+ "#include <occgeom.hpp> \n"
+ "int main() { \n"
+ "nglib::Ng_Init(); \n"
+ "netgen::Mesh* ngMesh; \n"
+ "ngMesh->CalcLocalH(1.0); \n"
+ "nglib::Ng_Exit(); \n"
+ "return 0; \n"
+ "} \n"
+ )
+IF(WINDOWS)
+ STRING(REPLACE "\\" "/" CAS_CPPFLAGS_TMP ${CAS_CPPFLAGS})
+ STRING(REPLACE "\\" "/" NETGEN_INCLUDES_TMP ${NETGEN_INCLUDES})
+ENDIF(WINDOWS)
-SET(CMAKE_BUILD 1)
+TRY_COMPILE(NETGEN_V5
+ ${CMAKE_BINARY_DIR}
+ ${tmp_check_netgen}
+ CMAKE_FLAGS "-DLINK_LIBRARIES:STRING=${NETGEN_LIB_nglib}"
+ COMPILE_DEFINITIONS ${CAS_CPPFLAGS_TMP} ${NETGEN_INCLUDES_TMP}
+ OUTPUT_VARIABLE OUTPUT
+ )
+FILE(REMOVE ${tmp_check_netgen})
+
+IF(NETGEN_V5)
+ SET(NETGEN_INCLUDES ${NETGEN_INCLUDES} -DNETGEN_V5)
+ENDIF(NETGEN_V5)