[WINE]
authorThomas Faber <thomas.faber@reactos.org>
Tue, 1 May 2012 17:20:47 +0000 (17:20 +0000)
committerThomas Faber <thomas.faber@reactos.org>
Tue, 1 May 2012 17:20:47 +0000 (17:20 +0000)
- Import isinf and isnan implementations from libwine_port and adjust port.h and config.h to support them
- Remove isinf/isnan hacks from jscript and wined3d build files
- Add missing port.h include to jscript/array.c (sent and applied upstream)
See issue #7027 for more details.

svn path=/trunk/; revision=56470

reactos/dll/directx/wine/wined3d/CMakeLists.txt
reactos/dll/win32/jscript/CMakeLists.txt
reactos/dll/win32/jscript/array.c
reactos/include/reactos/wine/config.h
reactos/include/reactos/wine/port.h
reactos/lib/3rdparty/libwine/CMakeLists.txt
reactos/lib/3rdparty/libwine/isinf.c [new file with mode: 0644]
reactos/lib/3rdparty/libwine/isnan.c [new file with mode: 0644]

index babf8a4..07e77e2 100644 (file)
@@ -6,11 +6,6 @@ add_definitions(
 
 include_directories(BEFORE ${REACTOS_SOURCE_DIR}/include/reactos/wine)
 
-if(MSVC)
-    add_definitions(-Disnan=_isnan)
-    add_definitions(-Disinf=!_finite)
-endif()
-
 spec2def(wined3d.dll wined3d.spec ADD_IMPORTLIB)
 
 list(APPEND SOURCE
index df56d8b..e815080 100644 (file)
@@ -6,9 +6,7 @@ add_definitions(-D_WIN32_WINNT=0x600)
 
 add_definitions(
     -D__WINESRC__
-    -D_USE_MATH_DEFINES
-    -Disinf=!_finite
-    -Disnan=_isnan)
+    -D_USE_MATH_DEFINES)
 
 include_directories(${REACTOS_SOURCE_DIR}/include/reactos/wine)
 
@@ -18,29 +16,28 @@ spec2def(jscript.dll jscript.spec)
 
 list(APPEND SOURCE
     activex.c
+    array.c
+    bool.c
     date.c
     dispex.c
     engine.c
     error.c
+    function.c
+    global.c
     jscript.c
     jscript_main.c
     jsutils.c
     lex.c
-    parser.tab.c
     math.c
     number.c
     object.c
+    parser.tab.c
     regexp.c
     string.c
-    array.c
-    bool.c
-    function.c
-    global.c
+    rsrc.rc
     ${CMAKE_CURRENT_BINARY_DIR}/jscript.def)
 
-add_library(jscript SHARED
-    ${SOURCE}
-    rsrc.rc)
+add_library(jscript SHARED ${SOURCE})
 
 set_module_type(jscript win32dll)
 
@@ -63,10 +60,4 @@ add_pch(jscript jscript.h)
 add_dependencies(jscript stdole2)
 add_cd_file(TARGET jscript DESTINATION reactos/system32 FOR all)
 
-if(NOT MSVC)
-    # FIXME: http://www.cmake.org/Bug/view.php?id=12998
-    #allow_warnings(jscript)
-    set_source_files_properties(${SOURCE} PROPERTIES COMPILE_FLAGS "-Wno-error")
-endif()
-
 set_source_files_properties(rsrc.rc PROPERTIES OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/jsglobal.tlb)
index 5c1bf12..e366790 100644 (file)
@@ -16,6 +16,9 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
+#include "wine/config.h"
+#include "wine/port.h"
+
 #include <math.h>
 
 #include "jscript.h"
index c6e8486..5cd42f5 100644 (file)
 #define HAVE_IO_H 1
 
 /* Define to 1 if you have the `isinf' function. */
-#define HAVE_ISINF 1
+/* #undef HAVE_ISINF */
 
 /* Define to 1 if you have the `isnan' function. */
-#define HAVE_ISNAN 1
+/* #undef HAVE_ISNAN */
 
 /* Define to 1 if you have the <jack/jack.h> header file. */
 /* #undef HAVE_JACK_JACK_H */
 /* Define to 1 if you have the <zlib.h> header file. */
 /* #define HAVE_ZLIB_H 1 */
 
+/* Define to 1 if you have the `_finite' function. */
+#define HAVE__FINITE 1
+
+/* Define to 1 if you have the `_isnan' function. */
+#define HAVE__ISNAN 1
+
 /* Define to 1 if you have the `_pclose' function. */
 #define HAVE__PCLOSE 1
 
index 0b25317..70bf3c3 100644 (file)
@@ -226,6 +226,14 @@ extern int getopt_long_only (int ___argc, char *const *___argv,
 size_t getpagesize(void);
 #endif  /* HAVE_GETPAGESIZE */
 
+#if !defined(HAVE_ISINF) && !defined(_ISINF) && !defined(isinf)
+int isinf(double x);
+#endif
+
+#if !defined(HAVE_ISNAN) && !defined(_ISNAN) && !defined(isnan)
+int isnan(double x);
+#endif
+
 #ifndef HAVE_LSTAT
 int lstat(const char *file_name, struct stat *buf);
 #endif /* HAVE_LSTAT */
index aaf9264..8f4c440 100644 (file)
@@ -5,6 +5,8 @@ add_definitions(-D__WINESRC__)
 list(APPEND SOURCE
     config.c
     debug_ros.c
+    isinf.c
+    isnan.c
     loader.c
     wctype.c
     register.c
diff --git a/reactos/lib/3rdparty/libwine/isinf.c b/reactos/lib/3rdparty/libwine/isinf.c
new file mode 100644 (file)
index 0000000..baef611
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * isinf function
+ *
+ * Copyright 2008 Petr Sumbera
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "wine/port.h"
+
+#if !defined(HAVE_ISINF) && !defined(_ISINF) && !defined(isinf)
+
+#ifdef HAVE_IEEEFP_H
+#include <ieeefp.h>
+
+int isinf(double x)
+{
+  return (!(finite(x) || isnand(x)));
+}
+
+#elif defined(HAVE_FLOAT_H) && defined(HAVE__ISNAN) && defined(HAVE__FINITE)
+#include <float.h>
+
+int isinf(double x)
+{
+  return (!(_finite(x) || _isnan(x)));
+}
+
+#else
+#error No isinf() implementation available.
+#endif
+
+#endif /* !defined(HAVE_ISINF) && !defined(_ISINF) && !defined(isinf) */
diff --git a/reactos/lib/3rdparty/libwine/isnan.c b/reactos/lib/3rdparty/libwine/isnan.c
new file mode 100644 (file)
index 0000000..50445a1
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * isnan function
+ *
+ * Copyright 2008 Jacek Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "config.h"
+#include "wine/port.h"
+
+#if !defined(HAVE_ISNAN) && !defined(_ISNAN) && !defined(isnan)
+
+#ifdef HAVE_IEEEFP_H
+#include <ieeefp.h>
+
+int isnan(double x)
+{
+  return isnand(x);
+}
+
+#elif defined(HAVE_FLOAT_H) && defined(HAVE__ISNAN)
+#include <float.h>
+
+int isnan(double x)
+{
+  return _isnan(x);
+}
+
+#else
+#error No isnan() implementation available.
+#endif
+
+#endif /* !defined(HAVE_ISNAN) && !defined(_ISNAN) && !defined(isnan) */