Skip to content

Commit

Permalink
adapt to latest msys2 and mingw clang
Browse files Browse the repository at this point in the history
- set prefix on all configure (msys2 sets it to default /mingw64 or mingw32)
- override the needed cflags
- remove -fPIC on windows

Belonging to [master]:
  - OpenModelica/OMCompiler#2627
  • Loading branch information
adrpo authored and OpenModelica-Hudson committed Sep 4, 2018
1 parent 5ce0593 commit 8522167
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 26 deletions.
11 changes: 9 additions & 2 deletions Compiler/boot/Makefile.omdev.mingw
@@ -1,3 +1,7 @@

EXE_EXT=.exe
EXE_SUFFIX=

OMDEVMSYS=$(shell cygpath $$OMDEV)

ifeq (MINGW32,$(findstring MINGW32,$(shell uname)))
Expand All @@ -8,7 +12,10 @@ endif

CC=gcc
CXX=g++
override CFLAGS += -fno-ipa-pure-const

ifeq (gcc,$(findstring gcc,$(CC)))
override CFLAGS += -fno-ipa-pure-const
endif
TOP_DIR=../../
OMHOME=$(OMBUILDDIR)
ifeq ($(OMENCRYPTION),yes)
Expand All @@ -21,7 +28,7 @@ LDFLAGS=-L./ $(LOMPARSE) $(LCOMPILERRUNTIME) -L"$(OMHOME)/lib/omc" \
-lModelicaExternalC -lm \
-lomantlr3 -lregex -lwsock32 -llpsolve55 -luuid -lole32 -lws2_32 -limagehlp \
-lRpcrt4 -lopenblas -fopenmp -lomcgc -lpthread $(FMILIB_OR_BOOT) -lshlwapi -liconv -lintl -lmetis \
-Wl,--enable-stdcall-fixup -lstdc++ -static-libgcc \
-Wl,--enable-stdcall-fixup -Bstatic -lstdc++ -Bdynamic -static-libgcc \
-L../../3rdParty/lpsolve/build/lib \
-lgfortran -ltre -lomniORB420_rt -lomnithread40_rt \
-lzmq \
Expand Down
2 changes: 1 addition & 1 deletion Compiler/runtime/Makefile.omdev.mingw
Expand Up @@ -49,6 +49,6 @@ SHELL = /bin/sh
CC = gcc
CXX = g++
override CFLAGS += -I. $(USE_CORBA) $(USE_METIS) -Wall -Wno-unused-variable -I../../ -I$(top_builddir) -I$(top_builddir)/SimulationRuntime/c -I$(top_builddir)/SimulationRuntime/c/simulation/results -I$(top_builddir)/SimulationRuntime/c/util -I$(top_builddir)/SimulationRuntime/c/meta -I$(top_builddir)/SimulationRuntime/c/meta/gc $(CORBAINCL) -I$(FMIINCLUDE) -I../../3rdParty/gc/include -I$(GRAPHSTREAMINCLUDE) -I$(CJSONINCLUDE) -I$(GRAPHINCLUDE) -I$(LPSOLVEINCLUDE) -I$(SQLITE3INCLUDE) -I$(ZMQINCLUDE)
CXXFLAGS = -std=c++11 $(CFLAGS)
override CXXFLAGS += -std=c++11 $(CFLAGS)

include Makefile.common
16 changes: 8 additions & 8 deletions Makefile.common
Expand Up @@ -135,11 +135,11 @@ $(OMBUILDDIR)/include/omc/c/gc_version.h: 3rdParty/gc/include/gc_version.h mkbui
$(OMBUILDDIR)/include/omc/c/gc_pthread_redirects.h: 3rdParty/gc/include/gc_pthread_redirects.h mkbuilddirs
cp -pPR $< $@
3rdParty/gc/Makefile: 3rdParty/gc/configure.ac
(cd 3rdParty/gc && autoreconf -vif && automake --add-missing && ./configure "--host=$(host)" $(LIBGC_EXTRA_CONFIGURATION) --enable-static --disable-gcj-support --disable-java-finalization --enable-large-config CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CPPFLAGS="$(CPPFLAGS) -DLARGE_CONFIG -DTHREAD_LOCAL_ALLOC")
(cd 3rdParty/gc && autoreconf -vif && automake --add-missing && ./configure --prefix="`pwd`" "--host=$(host)" $(LIBGC_EXTRA_CONFIGURATION) --enable-static --disable-gcj-support --disable-java-finalization --enable-large-config CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CPPFLAGS="$(CPPFLAGS) -DLARGE_CONFIG -DTHREAD_LOCAL_ALLOC")

3rdParty/Ipopt/Makefile: $(LAPACK_TARGET)
@# Note: CXX is passed LDFLAGS, which is wrong. However, Ipopt does not respect LDFLAGS and fails to link OSX C++ code if we do not do this.
(cd 3rdParty/Ipopt && ./configure --with-pic "CC=$(CC)" CFLAGS="$(CFLAGS)" CXX="$(CXX) $(LDFLAGS_LIBSTDCXX)" CXXFLAGS="$(CXXFLAGS)" F77="$(FC)" LDFLAGS="-L$(OMBUILDDIR)/$(LIB_OMC) $(LDFLAGS)" --with-lapack-lib="$(LD_LAPACK)" --with-blas-lib="$(LD_LAPACK)" "--host=$(host)" --without-metis --without-HSLold --without-HSL)
(cd 3rdParty/Ipopt && ./configure --prefix="`pwd`" --with-pic "CC=$(CC)" CFLAGS="$(CFLAGS) $(EXTRA_LDFLAGS)" CXX="$(CXX) $(LDFLAGS_LIBSTDCXX)" CXXFLAGS="$(CXXFLAGS)" F77="$(FC)" LDFLAGS="-L$(OMBUILDDIR)/$(LIB_OMC) $(LDFLAGS)" --with-lapack-lib="$(LD_LAPACK)" --with-blas-lib="$(LD_LAPACK)" "--host=$(host)" --without-metis --without-HSLold --without-HSL)

$(OMBUILDDIR)/$(LIB_OMC)/libipopt.la: 3rdParty/Ipopt/Makefile
$(MAKE) -C 3rdParty/Ipopt
Expand Down Expand Up @@ -413,7 +413,7 @@ install: install-dirs
cp -rp /${builddir_locale}/* ${INSTALL_LOCALEDIR}/

3rdParty/msgpack-0.5.8/Makefile:
cd 3rdParty/msgpack-0.5.8 && ./configure "--host=$(host)" CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS) $(MSGPACK_CFLAGS)" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS) "
cd 3rdParty/msgpack-0.5.8 && ./configure --prefix="`pwd`" "--host=$(host)" CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS) $(MSGPACK_CFLAGS)" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS) "

$(builddir_lib_omc)/libmsgpackc.so.2.0.0: 3rdParty/msgpack-0.5.8/Makefile
$(MAKE) -C 3rdParty/msgpack-0.5.8
Expand Down Expand Up @@ -458,23 +458,23 @@ lpsolve: 3rdParty/lpsolve/Makefile
cp -pf 3rdParty/lpsolve/build/lib/liblpsolve55* $(builddir_lib_omc)
cp -prf 3rdParty/lpsolve/build/include/* $(builddir_inc)/
3rdParty/lpsolve/Makefile: 3rdParty/lpsolve/configure.ac
(cd 3rdParty/lpsolve && autoreconf -vif && ./configure --prefix=`pwd`/build "--host=$(host)" CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CPPFLAGS="$(CPPFLAGS)")
(cd 3rdParty/lpsolve && autoreconf -vif && ./configure --prefix="`pwd`/build" "--host=$(host)" CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CPPFLAGS="$(CPPFLAGS)")
clean-lpsolve:
rm -rf 3rdParty/lpsolve/build
rm -rf $(builddir_lib_omc)/lpsolve*
# build sqlite3
sqlite3: 3rdParty/sqlite3/Makefile
$(MAKE) -C 3rdParty/sqlite3/ install CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CPPFLAGS="$(CPPFLAGS)"
3rdParty/sqlite3/Makefile: 3rdParty/sqlite3/configure.ac
(cd 3rdParty/sqlite3 && autoreconf -vif && automake --add-missing && ./configure --prefix=`pwd`/build "--host=$(host)" CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CPPFLAGS="$(CPPFLAGS)")
(cd 3rdParty/sqlite3 && autoreconf -vif && automake --add-missing && ./configure --prefix="`pwd`/build" "--host=$(host)" CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CPPFLAGS="$(CPPFLAGS)")
clean-sqlite3:
rm -rf 3rdParty/sqlite3/build
# build sundials
sundials: umfpack
$(MAKE) -f $(defaultMakefileTarget) $(builddir_lib_omc)/libsundials_ida.a
$(builddir_lib_omc)/libsundials_ida.a: 3rdParty/sundials/CMakeLists.txt
mkdir -p 3rdParty/sundials/build
cd 3rdParty/sundials/build && $(CMAKE) .. -G $(CMAKE_TARGET) -DCMAKE_VERBOSE_MAKEFILE:Bool=ON -DCMAKE_INSTALL_PREFIX=`pwd` -DKLU_ENABLE:Bool=ON -DKLU_LIBRARY_DIR="$(builddir_lib_omc)" -DKLU_INCLUDE_DIR="$(OMBUILDDIR)/include/omc/c/suitesparse/Include/" -DCMAKE_C_FLAGS="$(CFLAGS) -lm -L $(builddir_lib_omc)" $(SUITESPARSE_LIBS) $(IS_MINGW32) $(IS_MINGW64) -DSUITESPARSECONFIG_LIBRARY="" -DLAPACK_ENABLE:Bool=ON
cd 3rdParty/sundials/build && $(CMAKE) .. -G $(CMAKE_TARGET) -DCMAKE_VERBOSE_MAKEFILE:Bool=ON -DCMAKE_INSTALL_PREFIX="`pwd`" -DKLU_ENABLE:Bool=ON -DKLU_LIBRARY_DIR="$(builddir_lib_omc)" -DKLU_INCLUDE_DIR="$(OMBUILDDIR)/include/omc/c/suitesparse/Include/" -DCMAKE_C_FLAGS="$(CFLAGS) -lm -L $(builddir_lib_omc)" $(SUITESPARSE_LIBS) $(IS_MINGW32) $(IS_MINGW64) -DSUITESPARSECONFIG_LIBRARY="" -DLAPACK_ENABLE:Bool=ON
$(MAKE) -C 3rdParty/sundials/build install
# adrpo: do not copy the headers as they are not needed!
mkdir -p $(OMBUILDDIR)/include/omc/c/sundials
Expand All @@ -497,7 +497,7 @@ clean-sundials:
# Build Nox
nox: 3rdParty/trilinos-nox/CMakeLists.txt
mkdir -p 3rdParty/trilinos-nox/build
cd 3rdParty/trilinos-nox/build && $(CMAKE) .. -G $(CMAKE_TARGET) -DCMAKE_VERBOSE_MAKEFILE:Bool=ON -DCMAKE_INSTALL_PREFIX=`pwd` -DKLU_ENABLE:Bool=ON -DKLU_LIBRARY_DIR="$(builddir_lib_omc)" -DKLU_INCLUDE_DIR="$(OMBUILDDIR)/include/omc/c/suitesparse/Include/" -DCMAKE_C_FLAGS="$(CFLAGS) -lm -L $(builddir_lib_omc)" $(SUITESPARSE_LIBS) $(IS_MINGW32) $(IS_MINGW64) -DSUITESPARSECONFIG_LIBRARY="" -DOMDEV_DIR="$(OMDEVMSYS)"
cd 3rdParty/trilinos-nox/build && $(CMAKE) .. -G $(CMAKE_TARGET) -DCMAKE_VERBOSE_MAKEFILE:Bool=ON -DCMAKE_INSTALL_PREFIX="`pwd`" -DKLU_ENABLE:Bool=ON -DKLU_LIBRARY_DIR="$(builddir_lib_omc)" -DKLU_INCLUDE_DIR="$(OMBUILDDIR)/include/omc/c/suitesparse/Include/" -DCMAKE_C_FLAGS="$(CFLAGS) -lm -L $(builddir_lib_omc)" $(SUITESPARSE_LIBS) $(IS_MINGW32) $(IS_MINGW64) -DSUITESPARSECONFIG_LIBRARY="" -DOMDEV_DIR="$(OMDEVMSYS)"
$(MAKE) -C 3rdParty/trilinos-nox/build install
rm -r 3rdParty/trilinos-nox/build/lib/cmake
mkdir -p "$(builddir_lib_omc)/cpp"
Expand All @@ -517,7 +517,7 @@ MODELICAEXTERNALC=3rdParty/ModelicaExternalC
ModelicaExternalC: $(LIBMODELICAEXTERNALC) $(LIBMODELICASTANDARDTABLES) $(LIBMODELICAIO) $(LIBMODELICAMATIO) $(LIBMODELICAZLIB)
$(LIBMODELICAEXTERNALC):
(cd "$(MODELICAEXTERNALC)/BuildProjects/autotools" && (test -f Makefile || ./autogen.sh))
(cd "$(MODELICAEXTERNALC)/BuildProjects/autotools" && (test -f Makefile || (./configure ${MSL321_CONFIG_EXTRA_FLAGS} "--host=$(host)" --libdir="$(OMBUILDDIR)/$(LIB_OMC)/" CC="$(CC)" CFLAGS="$(CFLAGS)" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" $(MSL_EXTRA_ARGS) && $(MAKE) clean)))
(cd "$(MODELICAEXTERNALC)/BuildProjects/autotools" && (test -f Makefile || (./configure --prefix="`pwd`" ${MSL321_CONFIG_EXTRA_FLAGS} "--host=$(host)" --libdir="$(OMBUILDDIR)/$(LIB_OMC)/" CC="$(CC)" CFLAGS="$(CFLAGS)" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" $(MSL_EXTRA_ARGS) && $(MAKE) clean)))
$(MAKE) -C "$(MODELICAEXTERNALC)/BuildProjects/autotools"
$(MAKE) -C "$(MODELICAEXTERNALC)/BuildProjects/autotools" install
test ! `uname` = Darwin || install_name_tool -id @rpath/libModelicaExternalC.0.dylib "$(LIBMODELICAEXTERNALC)"
Expand Down
37 changes: 24 additions & 13 deletions Makefile.omdev.mingw
@@ -1,3 +1,17 @@

CC = gcc
CXX = g++
FC = gfortran
CFLAGS =-g -O2

ifeq (gcc,$(findstring gcc,$(CC)))
override CFLAGS +=-falign-functions
endif

ifeq (clang,$(findstring clang,$(CC)))
EXTRA_LDFLAGS=-Wl,-lmsvcrt
endif

# makefile for Windows MinGW OMDev
all : .testvariables settings mkbuilddirs omc

Expand All @@ -23,13 +37,10 @@ libdir = ${exec_prefix}/lib
includedir = ${prefix}/include
datadir = ${prefix}/share
docdir = ${prefix}/doc
CC = gcc
CXX = g++
FC = gfortran
CFLAGS =-g -O2 -falign-functions

MSGPACK_CFLAGS = -march=i686

CMAKE = $(OMDEVMSYS)/bin/cmake/bin/cmake
CMAKE = CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" $(OMDEVMSYS)/bin/cmake/bin/cmake
CMAKE_CHECK_UNDEFINED_LOOKUP = $(CMAKE)
CMAKE_TARGET = "MSYS Makefiles"

Expand Down Expand Up @@ -176,7 +187,7 @@ settings:
@echo Using Path : '$(PATH)'
@echo Current directory: `pwd`
@echo Building in OMBUILDDIR: $(OMBUILDDIR)
which gcc
which $(CC)

# on windows run also msvc test
testlogwindows:
Expand Down Expand Up @@ -206,11 +217,11 @@ ifeq (MINGW32,$(findstring MINGW32,$(shell uname)))
(cp -puf $(OMDEVMSYS)/tools/msys/mingw32/bin/libgcc_s_dw2-1.dll $(builddir_bin)/)
(cp -puf $(OMDEVMSYS)/tools/msys/mingw32/bin/libintl-8.dll $(builddir_bin)/)
(cp -puf $(OMDEVMSYS)/tools/msys/mingw32/bin/libiconv-2.dll $(builddir_bin)/)
(cp -puf $(OMDEVMSYS)/tools/msys/mingw32/bin/libgfortran-3.dll $(builddir_bin)/)
(cp -puf $(OMDEVMSYS)/tools/msys/mingw32/bin/libgfortran*.dll $(builddir_bin)/)
(cp -puf $(OMDEVMSYS)/tools/msys/mingw32/bin/libexpat-1.dll $(builddir_bin)/)
(cp -puf $(OMDEVMSYS)/tools/msys/mingw32/bin/libopenblas.dll $(builddir_bin)/)
(cp -puf $(OMDEVMSYS)/tools/msys/mingw32/bin/zlib1.dll $(builddir_bin)/)
(cp -puf $(OMDEVMSYS)/tools/msys/mingw32/bin/libszip-0.dll $(builddir_bin)/)
(cp -puf $(OMDEVMSYS)/tools/msys/mingw32/bin/libszip*.dll $(builddir_bin)/)
(cp -puf $(OMDEVMSYS)/tools/msys/mingw32/bin/libhdf5-0.dll $(builddir_bin)/)
(cp -puf $(OMDEVMSYS)/lib/omniORB-4.2.0-mingw32/bin/x86_win32/omniORB420_rt.dll $(builddir_bin)/)
(cp -puf $(OMDEVMSYS)/lib/omniORB-4.2.0-mingw32/bin/x86_win32/omnithread40_rt.dll $(builddir_bin)/)
Expand All @@ -233,11 +244,11 @@ else # mingw64
(cp -puf $(OMDEVMSYS)/tools/msys/mingw64/bin/libgcc_s_seh-1.dll $(builddir_bin)/)
(cp -puf $(OMDEVMSYS)/tools/msys/mingw64/bin/libintl-8.dll $(builddir_bin)/)
(cp -puf $(OMDEVMSYS)/tools/msys/mingw64/bin/libiconv-2.dll $(builddir_bin)/)
(cp -puf $(OMDEVMSYS)/tools/msys/mingw64/bin/libgfortran-3.dll $(builddir_bin)/)
(cp -puf $(OMDEVMSYS)/tools/msys/mingw64/bin/libgfortran*.dll $(builddir_bin)/)
(cp -puf $(OMDEVMSYS)/tools/msys/mingw64/bin/libexpat-1.dll $(builddir_bin)/)
(cp -puf $(OMDEVMSYS)/tools/msys/mingw64/bin/libopenblas.dll $(builddir_bin)/)
(cp -puf $(OMDEVMSYS)/tools/msys/mingw64/bin/zlib1.dll $(builddir_bin)/)
(cp -puf $(OMDEVMSYS)/tools/msys/mingw64/bin/libszip-0.dll $(builddir_bin)/)
(cp -puf $(OMDEVMSYS)/tools/msys/mingw64/bin/libszip*.dll $(builddir_bin)/)
(cp -puf $(OMDEVMSYS)/tools/msys/mingw64/bin/libhdf5-0.dll $(builddir_bin)/)
(cp -puf $(OMDEVMSYS)/lib/omniORB-4.2.0-mingw64/bin/x86_win32/omniORB420_rt.dll $(builddir_bin)/)
(cp -puf $(OMDEVMSYS)/lib/omniORB-4.2.0-mingw64/bin/x86_win32/omnithread40_rt.dll $(builddir_bin)/)
Expand Down Expand Up @@ -502,9 +513,9 @@ simulationruntimecmsvc: mkbuilddirs getMSVCversion Umfpack_msvc CMinpack_msvc fm
rm -rf 3rdParty/gc/build_msvc/

omc-bootstrapped: mkbuilddirs
$(MAKE) -f $(defaultMakefileTarget) CFLAGS="$(CFLAGS)" OMBUILDDIR=$(OMBUILDDIR) bootstrap-dependencies sim-dependencies
$(MAKE) -f $(defaultMakefileTarget) -C Compiler/boot CFLAGS="$(CFLAGS)" OMBUILDDIR=$(OMBUILDDIR)
$(MAKE) -f $(defaultMakefileTarget) -C Compiler install_scripts OMBUILDDIR=$(OMBUILDDIR)
$(MAKE) -f $(defaultMakefileTarget) CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" OMBUILDDIR=$(OMBUILDDIR) bootstrap-dependencies sim-dependencies
$(MAKE) -f $(defaultMakefileTarget) -C Compiler/boot CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" OMBUILDDIR=$(OMBUILDDIR)
$(MAKE) -f $(defaultMakefileTarget) -C Compiler install_scripts CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" OMBUILDDIR=$(OMBUILDDIR)

lis:

Expand Down
Expand Up @@ -7,8 +7,8 @@ OPENMODELICA_BIN=$(TOP_BUILDDIR)/bin/

CC=gcc
CXX=g++
CFLAGS= -fPIC -O3 -Wall
CPPFLAGS=$(CFLAGS) -I. -I"../../../c" -I$(OPENMODELICA_INC)
CFLAGS=-O3 -Wall
override CPPFLAGS=$(CFLAGS) -I. -I"../../../c" -I$(OPENMODELICA_INC)

EXEEXT=.exe
DLLEXT=.dll
Expand Down

0 comments on commit 8522167

Please sign in to comment.