From 852216723e281a50316a3599ba271ba6ad7699ad Mon Sep 17 00:00:00 2001 From: Adrian Pop Date: Wed, 5 Sep 2018 00:41:47 +0200 Subject: [PATCH] adapt to latest msys2 and mingw clang - 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 --- Compiler/boot/Makefile.omdev.mingw | 11 +++++- Compiler/runtime/Makefile.omdev.mingw | 2 +- Makefile.common | 16 ++++---- Makefile.omdev.mingw | 37 ++++++++++++------- .../explicit/openclrt/Makefile.omdev.mingw | 4 +- 5 files changed, 44 insertions(+), 26 deletions(-) diff --git a/Compiler/boot/Makefile.omdev.mingw b/Compiler/boot/Makefile.omdev.mingw index 0d63569f015..c2d0994a353 100644 --- a/Compiler/boot/Makefile.omdev.mingw +++ b/Compiler/boot/Makefile.omdev.mingw @@ -1,3 +1,7 @@ + +EXE_EXT=.exe +EXE_SUFFIX= + OMDEVMSYS=$(shell cygpath $$OMDEV) ifeq (MINGW32,$(findstring MINGW32,$(shell uname))) @@ -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) @@ -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 \ diff --git a/Compiler/runtime/Makefile.omdev.mingw b/Compiler/runtime/Makefile.omdev.mingw index c07de5e0f4c..ff58836a696 100644 --- a/Compiler/runtime/Makefile.omdev.mingw +++ b/Compiler/runtime/Makefile.omdev.mingw @@ -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 diff --git a/Makefile.common b/Makefile.common index cccc8ac9843..af08e47ec62 100644 --- a/Makefile.common +++ b/Makefile.common @@ -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 @@ -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 @@ -458,7 +458,7 @@ 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* @@ -466,7 +466,7 @@ clean-lpsolve: 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 @@ -474,7 +474,7 @@ 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 @@ -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" @@ -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)" diff --git a/Makefile.omdev.mingw b/Makefile.omdev.mingw index 88d347f5269..7323ed4157d 100644 --- a/Makefile.omdev.mingw +++ b/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 @@ -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" @@ -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: @@ -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)/) @@ -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)/) @@ -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: diff --git a/SimulationRuntime/ParModelica/explicit/openclrt/Makefile.omdev.mingw b/SimulationRuntime/ParModelica/explicit/openclrt/Makefile.omdev.mingw index ec7bca34d3d..92fd2d7a9a5 100644 --- a/SimulationRuntime/ParModelica/explicit/openclrt/Makefile.omdev.mingw +++ b/SimulationRuntime/ParModelica/explicit/openclrt/Makefile.omdev.mingw @@ -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