Search code examples
windowsmingwmsys2

How to fix ./configure in MSYS2?


I'm trying to build libxc-4.3.4 in an MSYS2 shell on Windows 10. I've installed the latest version of MSYS2 (msys2-x86_64-20220319.exe) and followed the installation instructions. I've installed build tools using

pacman -S --needed base-devel mingw-w64-x86_64-toolchain autoconf

I've installed libxc dozens of time on Linux machines. The first step is

./configure --prefix /somewhere

But in MSYS2 I get

$ ./configure --prefix $PWD/../libxc
bash: ./configure: No such file or directory

How can I make this work?


Solution

  • MSYS2 prerequisites

    First of all make sure MSYS2 has all programs that are needed.

    In the MSYS2 shell first update the package manager information:

    pacman -Syu --noconfirm
    

    Then install the packages you need. I would recommend at least these:

    pacman -S --noconfirm autoconf autoconf-archive automake make libtool pkg-config
    

    Project sources

    Next you should make sure the folder you are in actually has a configure script:

    ls -l configure
    

    A lot of projects these days are switching to more efficient build systems like CMake or Meson. I usually use the following command in the projects source folder to check for several build systems:

    ls -ld configure* m4 CMakeLists.txt cmake Makefile GNUmakefile setup.py scons SConscript SConstruct meson.build meson_options.txt *.pro *.proj *.sln BUILD.gn .gn 2> /dev/null
    

    building libxc

    For the libxc project I see there is a CMakeLists.txt file and also a configure.ac file. So either you should look into using CMake or generate the configure file with:

    touch README ChangeLog
    autoreconf -f -i -I m4 
    

    I have just tried to build libxc in MSYS2 with CMake and Ninja and this worked:

    # set the line below to the desired install location
    INSTALLPREFIX=D:\Prog\changeme
    
    # build static library
    cmake -Wno-dev -GNinja -DCMAKE_INSTALL_PREFIX:PATH=$INSTALLPREFIX -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_SHARED_LIBS:BOOL=OFF -DENABLE_PYTHON:BOOL=OFF -DBUILD_TESTING:BOOL=OFF -S. -Bbuild_static &&
     ninja -Cbuild_static install/strip &&
     echo SUCCESS
    
    # build shared library
    cmake -Wno-dev -GNinja -DCMAKE_INSTALL_PREFIX:PATH=$INSTALLPREFIX -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_SHARED_LIBS:BOOL=ON -DENABLE_PYTHON:BOOL=OFF -DBUILD_TESTING:BOOL=OFF -S. -Bbuild_shared &&
     ninja -Cbuild_shared install/strip &&
     echo SUCCESS