Browse Source

COMP: make it build on NetBSD, which has separate curses and ncurses, so
it has to be detected that curses isn't good enough, but ncurses is, and
that ncurses.h instead of curses.h is included

Alex

Alexander Neundorf 18 years ago
parent
commit
c41f798383

+ 16 - 3
Modules/FindCurses.cmake

@@ -3,6 +3,10 @@
 #  CURSES_FOUND - system has Curses
 #  CURSES_INCLUDE_DIR - the Curses include directory
 #  CURSES_LIBRARIES - The libraries needed to use Curses
+#  CURSES_HAVE_CURSES_H - true if curses.h is available
+#  CURSES_HAVE_NCURSES_H - true if ncurses.h is available
+#  CURSES_HAVE_NCURSES_NCURSES_H - true if ncurses/ncurses.h is available
+#  CURSES_HAVE_NCURSES_CURSES_H - true if ncurses/curses.h is available
 #
 # Set CURSES_NEED_NCURSES to TRUE before the FIND_PACKAGE() command if NCurses 
 # functionality is required.
@@ -44,16 +48,25 @@ ENDIF(CURSES_CURSES_LIBRARY  AND  CURSES_NEED_NCURSES)
 
 
 IF(NOT CURSES_USE_NCURSES)
-  FIND_PATH(CURSES_CURSES_INCLUDE_PATH curses.h )
-  SET(CURSES_INCLUDE_PATH "${CURSES_CURSES_INCLUDE_PATH}")
+  FIND_FILE(CURSES_HAVE_CURSES_H curses.h )
+  FIND_PATH(CURSES_CURSES_H_PATH curses.h )
+  SET(CURSES_INCLUDE_PATH "${CURSES_CURSES_H_PATH}")
+
   SET(CURSES_LIBRARY "${CURSES_CURSES_LIBRARY}")
   GET_FILENAME_COMPONENT(_cursesLibDir "${CURSES_CURSES_LIBRARY}" PATH)
   GET_FILENAME_COMPONENT(_cursesParentDir "${_cursesLibDir}" PATH)
 ELSE(NOT CURSES_USE_NCURSES)
 # we need to find ncurses
-  FIND_PATH(CURSES_NCURSES_INCLUDE_PATH ncurses.h ncurses/ncurses.h  ncurses/curses.h)
   GET_FILENAME_COMPONENT(_cursesLibDir "${CURSES_NCURSES_LIBRARY}" PATH)
   GET_FILENAME_COMPONENT(_cursesParentDir "${_cursesLibDir}" PATH)
+
+  FIND_FILE(CURSES_HAVE_NCURSES_H         ncurses.h)
+  FIND_FILE(CURSES_HAVE_NCURSES_NCURSES_H ncurses/ncurses.h)
+  FIND_FILE(CURSES_HAVE_NCURSES_CURSES_H  ncurses/curses.h)
+  FIND_FILE(CURSES_HAVE_CURSES_H          curses.h  PATHS "${_cursesParentDir}/include" NO_DEFAULT_PATH)
+  FIND_FILE(CURSES_HAVE_CURSES_H          curses.h)
+
+  FIND_PATH(CURSES_NCURSES_INCLUDE_PATH ncurses.h ncurses/ncurses.h  ncurses/curses.h)
   FIND_PATH(CURSES_NCURSES_INCLUDE_PATH curses.h  PATHS "${_cursesParentDir}/include" NO_DEFAULT_PATH)
   FIND_PATH(CURSES_NCURSES_INCLUDE_PATH curses.h)
 

+ 3 - 4
Source/CursesDialog/CMakeLists.txt

@@ -14,15 +14,14 @@ SET( CURSES_SRCS
               CursesDialog/ccmake
    )
 
-INCLUDE_DIRECTORIES(${CMake_SOURCE_DIR}/Source/CursesDialog/form)
+INCLUDE_DIRECTORIES(${CMake_SOURCE_DIR}/Source/CursesDialog/form
+                    ${CMake_BINARY_DIR}/Source/CursesDialog/form)
 LINK_DIRECTORIES(${CMake_BINARY_DIR}/Source/CursesDialog/form)
 INCLUDE_DIRECTORIES(${CURSES_INCLUDE_PATH})
 
 
-
-
 ADD_EXECUTABLE(ccmake ${CURSES_SRCS} )
 TARGET_LINK_LIBRARIES(ccmake CMakeLib)
 TARGET_LINK_LIBRARIES(ccmake cmForm)
 
-INSTALL_TARGETS(/bin ccmake)
+INSTALL_TARGETS(/bin ccmake)

+ 1 - 1
Source/CursesDialog/ccmake.cxx

@@ -23,8 +23,8 @@
 #include <sys/ioctl.h>
 
 #include "cmCursesMainForm.h"
+#include "cmCursesStandardIncludes.h"
 
-#include <curses.h>
 #include <form.h>
 
 //----------------------------------------------------------------------------

+ 13 - 1
Source/CursesDialog/cmCursesStandardIncludes.h

@@ -20,6 +20,8 @@
  #define _MSE_INT_H
 #endif
 
+#include <cmFormConfigure.h>
+
 #if defined(__hpux)
 # define _BOOL_DEFINED
 # include <sys/time.h>
@@ -28,7 +30,17 @@
 # include <form.h>
 # undef _XOPEN_SOURCE_EXTENDED
 #else
-# include <curses.h>
+/* figure out which curses.h to include */
+# if defined(CURSES_HAVE_NCURSES_H)
+#  include <ncurses.h>
+# elif defined(CURSES_HAVE_NCURSES_NCURSES_H)
+#  include <ncurses/ncurses.h>
+# elif defined(CURSES_HAVE_NCURSES_CURSES_H)
+#  include <ncurses/curses.h>
+# else
+#  include <curses.h>
+# endif
+
 # include <form.h>
 #endif
 

+ 3 - 1
Source/CursesDialog/form/CMakeLists.txt

@@ -1,7 +1,9 @@
 PROJECT(CMAKE_FORM)
 
 INCLUDE_REGULAR_EXPRESSION("^.*$")
-INCLUDE_DIRECTORIES(${CURSES_INCLUDE_PATH})
+INCLUDE_DIRECTORIES(${CURSES_INCLUDE_PATH} "${CMAKE_CURRENT_BINARY_DIR}")
+
+CONFIGURE_FILE(cmFormConfigure.h.in "${CMAKE_CURRENT_BINARY_DIR}/cmFormConfigure.h")
 
 SET(  FORM_SRCS
              fld_arg.c

+ 26 - 0
Source/CursesDialog/form/cmFormConfigure.h.in

@@ -0,0 +1,26 @@
+/*=========================================================================
+
+  Program:   CMake - Cross-Platform Makefile Generator
+  Module:    $RCSfile$
+  Language:  C++
+  Date:      $Date$
+  Version:   $Revision$
+
+  Copyright (c) 2002 Kitware, Inc., Insight Consortium.  All rights reserved.
+  See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
+
+     This software is distributed WITHOUT ANY WARRANTY; without even 
+     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+     PURPOSE.  See the above copyright notices for more information.
+
+=========================================================================*/
+
+#ifndef CMFORMCONFIGURE_H
+#define CMFORMCONFIGURE_H
+
+#cmakedefine CURSES_HAVE_CURSES_H
+#cmakedefine CURSES_HAVE_NCURSES_H
+#cmakedefine CURSES_HAVE_NCURSES_NCURSES_H
+#cmakedefine CURSES_HAVE_NCURSES_CURSES_H
+
+#endif

+ 13 - 1
Source/CursesDialog/form/form.h

@@ -37,7 +37,19 @@
  #define _MSE_INT_H
 #endif
 
-#include <curses.h>
+#include <cmFormConfigure.h>
+
+/* figure out which curses.h to include */
+# if defined(CURSES_HAVE_NCURSES_H)
+#  include <ncurses.h>
+# elif defined(CURSES_HAVE_NCURSES_NCURSES_H)
+#  include <ncurses/ncurses.h>
+# elif defined(CURSES_HAVE_NCURSES_CURSES_H)
+#  include <ncurses/curses.h>
+# else
+#  include <curses.h>
+# endif
+
 #include <eti.h>
 #include <stdarg.h>