Skip to content

Commit d043994

Browse files
committed
- Force ffloat-store or mfpmath=sse for libf2c code
git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@13620 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
1 parent 03580a1 commit d043994

File tree

3 files changed

+24
-29
lines changed

3 files changed

+24
-29
lines changed

SimulationRuntime/c/Makefile.common

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,9 @@
66

77
include Makefile.objs
88

9-
ANSI=# -ansi
10-
CXXFLAGS := $(CFLAGS) -mfpmath=sse -Wall $(ANSI) $(EXTRA_CFLAGS) -I. -I$(UTILPATH)
11-
CPPFLAGS := $(CFLAGS) -mfpmath=sse -Wall $(ANSI) $(EXTRA_CFLAGS) -I. -I$(UTILPATH)
12-
CFLAGS := $(CFLAGS) -mfpmath=sse -Wall $(ANSI) -pedantic -I. -I$(METAPATH) -I$(METAPATH)gc $(EXTRA_CFLAGS)
9+
CPPFLAGS = -I. -I$(UTILPATH) -I. -I$(METAPATH) -I$(METAPATH)gc
10+
CFLAGS = $(CPPFLAGS) $(CONFIG_CFLAGS) -Wall -pedantic $(EXTRA_CFLAGS)
11+
CXXFLAGS = $(CFLAGS)
1312
FFLAGS = -O -fexceptions
1413
# P.A: before, g77 had -O3 or -O2 but that caused a bug in DDASRT, giving infinite loop.
1514

@@ -96,10 +95,10 @@ $(UTILOBJSPATH):%.o: %.c $(UTILHFILESPATH) $(COMMON_HEADERS)
9695
$(MATHOBJSPATH):%.o: %.c $(MATHHFILESPATH) $(COMMON_HEADERS)
9796
$(CC) -c $(CFLAGS) -o $@ $< -I$(MATHPATH) -I$(UTILPATH)
9897

99-
$(SOLVEROBJSPATH):%.o: %.c $(SOLVERHFILESPATH) $(INITIALIZATIONHFILESPATH) $(COMMON_HEADERS)
100-
$(CC) -c $(CFLAGS) -o $@ $< -I$(SOLVERPATH) -I$(INITIALIZATIONPATH) -I$(SIMPATH) -I$(MATHPATH) -I$(UTILPATH)
101-
102-
$(INITIALIZATIONOBJSPATH):%.o: %.c $(SOLVERHFILESPATH) $(INITIALIZATIONHFILESPATH) $(COMMON_HEADERS)
98+
$(SOLVEROBJSPATH):%.o: %.c $(SOLVERHFILESPATH) $(INITIALIZATIONHFILESPATH) $(COMMON_HEADERS)
99+
$(CC) -c $(CFLAGS) -o $@ $< -I$(SOLVERPATH) -I$(INITIALIZATIONPATH) -I$(SIMPATH) -I$(MATHPATH) -I$(UTILPATH)
100+
101+
$(INITIALIZATIONOBJSPATH):%.o: %.c $(SOLVERHFILESPATH) $(INITIALIZATIONHFILESPATH) $(COMMON_HEADERS)
103102
$(CC) -c $(CFLAGS) -o $@ $< -I$(SOLVERPATH) -I$(INITIALIZATIONPATH) -I$(SIMPATH) -I$(MATHPATH) -I$(UTILPATH)
104103

105104
$(RESULTSOBJSPATH):%.o: $(RESULTSFILESPATH) $(COMMON_HEADERS)

SimulationRuntime/c/Makefile.in

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ builddir_lib=$(top_builddir)/build/lib/omc
1010
builddir_inc=$(top_builddir)/build/include/omc
1111

1212
AR = sh ar.sh
13-
CC := @CC@
14-
CXX := @CXX@
15-
CFLAGS := @CFLAGS@ @IPOPT_CFLAGS@
13+
CC = @CC@
14+
CXX = @CXX@
15+
CONFIG_CFLAGS = @CFLAGS@ @IPOPT_CFLAGS@
1616

1717
LIBMAKEFILE = Makefile
1818
INTERACTIVELIBS = "-lpthread"

configure.in

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ AC_SUBST(PYTHON_INTERFACE)
5050
AC_SUBST(WITH_SUNDIALS)
5151
AC_SUBST(WITH_IPOPT)
5252
AC_SUBST(OMNOTEBOOK)
53+
AC_SUBST(FPMATHFORTRAN)
5354

5455
FINAL_MESSAGES="\nConfigured OpenModelica successfully using the following options:"
5556

@@ -65,6 +66,13 @@ fi
6566
AC_PREFIX_DEFAULT($PREFIX)
6667
prefix=$PREFIX
6768

69+
dnl Checks for programs.
70+
AC_PROG_CC
71+
AC_PROG_CXX
72+
AC_PROG_CPP
73+
AC_PROG_MAKE_SET
74+
AC_PROG_LEX
75+
6876
dnl Disables the default CFLAGS="-g -O2"
6977
if test -z "$CFLAGS"; then
7078
if test "Darwin" = `uname`; then
@@ -90,26 +98,14 @@ fi
9098
fi
9199

92100
dnl Simulations spin forever unless -msse2 -mfpmath=sse is set
93-
dnl Or if -ffloat-store is set
94-
dnl With the new solver interface, this seems to work even with -mpfpath=387
95-
#AC_MSG_CHECKING([for floating point bugs])
96-
#if echo $CFLAGS | grep -q -- -ffloat-store; then
97-
# AC_MSG_RESULT([have -ffloat-store])
98-
#elif echo $CFLAGS | grep -q -- -msse2 && echo $CFLAGS | grep -q -- -mfpmath=sse; then
99-
# AC_MSG_RESULT([have SSE2])
100-
#else
101-
# CFLAGS+=" -msse2 -mfpmath=sse"
102-
# AC_MSG_RESULT([adding -msse2 -mfpmath=sse])
103-
#fi
104101

105-
fi # End x86-specific CFLAGS
102+
CFLAGS_BEFORE=$CFLAGS
103+
CFLAGS="-mfpmath=sse -Werror"
104+
AC_MSG_CHECKING([for floating point bugs])
105+
AC_TRY_LINK([int abc() {}], [abc();], [AC_MSG_RESULT([force SSE2]); FPMATHFORTRAN="-msse -mfpmath=sse"], [AC_MSG_RESULT([no]); FPMATHFORTRAN=-ffloat-store])
106+
CFLAGS=$CFLAGS_BEFORE
106107

107-
dnl Checks for programs.
108-
AC_PROG_CC
109-
AC_PROG_CXX
110-
AC_PROG_CPP
111-
AC_PROG_MAKE_SET
112-
AC_PROG_LEX
108+
fi # End x86-specific CFLAGS
113109

114110
dnl check for environment variables
115111

0 commit comments

Comments
 (0)