elmerfem icon indicating copy to clipboard operation
elmerfem copied to clipboard

Compile on Mac OS Monterey12.1 (Mac Mini M1)

Open ouening opened this issue 2 years ago • 6 comments

OS: Mac OS Monterey 12.1 Computer: Mac mini (M1, 2020) elmerfem version: 9.0 (devel 7665920e)

1. Prepare

Install gcc, g++, gfortran, cmake, Qt5 and qwt-qt5:

brew install gcc g++ gfortran cmake qt@5 qwt-qt5

The gcc and g++ installed from brew are located in /opt/homebrew/bin/gcc-11 and /opt/homebrew/bin/g++-11. gfortran is located in /opt/homebrew/bin/gfortran.

We can use command:

brew info qt@5
brew info qwt-qt5

to see where the qt5 and qwt-qt5 are installed (my computer is m1 mac mini, the installation dir is in /opt).

And command: find /opt -name Qt5Config.cmake to find Qt5_DIR

Same as qwt-qt5. Be aware we should install qt@5 instead of qt, so as qwt-qt5 instead of qwt. See https://formulae.brew.sh/formula/qt@5 and https://formulae.brew.sh/formula/qwt-qt5#default.

2. Modify elmerfem/CmakeLists.txt

Modify the Apple section configuration:

if(APPLE)
  # message("you need to have gcc-gfrotran installed using HomeBrew")
  # set(CMAKE_C_COMPILER "/usr/bin/gcc")
  # set(CMAKE_CXX_COMPILER "/usr/bin/g++")
  set(CMAKE_C_COMPILER "/opt/homebrew/bin/gcc-11")
  set(CMAKE_CXX_COMPILER "/opt/homebrew/bin/g++-11")
  set(CMAKE_Fortran_COMPILER "/opt/homebrew/bin/gfortran")
  # set(BLA_VENDOR "OpenBLAS")
  # option(HUNTER_ENABLED "Enable Hunter package manager support" OFF)
  # set (CMAKE_GENERATOR "Unix Makefiles" CACHE INTERNAL "" FORCE)
  # set(CMAKE_TRY_COMPILE_TARGET_TYPE "STATIC_LIBRARY")
  set(Qt5_DIR "/opt/homebrew/Cellar/qt@5/5.15.2_1/lib/cmake/Qt5")
  set(QWT_INCLUDE_DIR "/opt/homebrew/opt/qwt-qt5/include")
  set(QWT_INCLUDE_DIR "/opt/homebrew/Cellar/qwt-qt5/6.2.0/lib/qwt.framework/Versions/6/Headers")
  set(QWT_LIBRARY "/opt/homebrew/opt/qwt-qt5/lib/qwt.framework/qwt")
endif()

and

IF(APPLE)
  SET(CMAKE_MACOSX_RPATH 1) 
    # on OSX FindOpenGL uses framework version of OpenGL, but we need X11 version
    # FIND_PATH(GLX_INCLUDE_DIR GL/glx.h
    #   PATHS /opt/X11/include /usr/X11/include /usr/X11R6/include)
    # find_library(X11_GL_LIB GL
    #   PATH /opt/X11/lib /usr/X11/lib /usr/X11R6/lib)
  FIND_LIBRARY(OPENGL_gl_LIBRARY GL
        PATHS /opt/X11/lib /usr/X11/lib /usr/X11R6/lib)
  FIND_LIBRARY(OPENGL_glu_LIBRARY GLU
        PATHS /opt/X11/lib /usr/X11/lib /usr/X11R6/lib)
  LIST(APPEND LIBS ${OPENGL_gl_LIBRARY})
# INCLUDE_DIRECTORIES(${GLX_INCLUDE_DIR})
ENDIF()

Compile and install

Just make -j6 && sudo make install

ouening avatar Dec 15 '21 12:12 ouening

Hello, thanks for the work.

This solution may have worked before gcc 12 release, but we need now to precise gcc@11 when installing.

I also made more flexible the variable (to prevent incompatibility to old intel macs).

I made a PR: #393.

ShamoX avatar Apr 12 '23 01:04 ShamoX

Any ideas on how to update to Ventura on an M3? gcc is at 13 now. Are the opengl lib paths the same?

bdlabitt avatar Dec 08 '23 18:12 bdlabitt

There's no utility find_program as used in CmakeLists.txt. This documentation is very outdated.

bdlabitt avatar Dec 09 '23 21:12 bdlabitt

find_program is a CMake command. It's not an external utility.

nega0 avatar Jan 12 '24 02:01 nega0

Any ideas on how to update to Ventura on an M3? gcc is at 13 now. Are the opengl lib paths the same?

That's my real question. There's no /opt/X11 in Ventura, but there is /opt/homebrew/opt/X11 which is a simlink which leads to some strange files. But in /opt/homebrew/opt the following files exist

Screenshot 2024-02-05 at 3 59 38 PM

bdlabitt avatar Feb 05 '24 21:02 bdlabitt