Skip to content

(Windows Msys2 UCRT64) build failure: "error: implicit declaration of function 'setenv';" #2894

@AmmoniumX

Description

@AmmoniumX

Compilation was done following https://github.com/dankamongmen/notcurses/blob/master/INSTALL.md#microsoft-windows

Reproduction Steps:

  • Open Msys2 UCRT64, install build dependencies by running command on INSTALL.md:
    pacman -S mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-libdeflate mingw-w64-ucrt-x86_64-libunistring mingw-w64-ucrt-x86_64-ncurses mingw-w64-ucrt-x86_64-ninja mingw-w64-ucrt-x86_64-openimageio mingw-w64-ucrt-x86_64-toolchain
  • Clone notcurses, make build directory, and generate build configuration: cmake .. -DUSE_DOCTEST=off -DUSE_PANDOC=off
  • Attempt building: cmake --build .

Resulting error:

diego@DGC-TUF-A15 UCRT64 ~/notcurses/build
$ cmake .. -DUSE_DOCTEST=off -DUSE_PANDOC=off
-- Building for: Ninja
-- The C compiler identification is GNU 15.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/msys64/ucrt64/bin/cc.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- The CXX compiler identification is GNU 15.2.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/msys64/ucrt64/bin/c++.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Requested multimedia engine: ffmpeg
-- Requested build mode: RelWithDebInfo
-- Found PkgConfig: C:/msys64/ucrt64/bin/pkg-config.exe (found version "2.5.1")
-- Checking for one of the modules 'tinfo>=6.1;ncursesw>=6.1'
-- Checking for module 'libavcodec>=57.0'
--   Found libavcodec, version 61.19.101
-- Checking for module 'libavdevice>=57.0'
--   Found libavdevice, version 61.3.100
-- Checking for module 'libavformat>=57.0'
--   Found libavformat, version 61.7.100
-- Checking for module 'libavutil>=56.0'
--   Found libavutil, version 59.39.100
-- Checking for module 'libswscale>=5.0'
--   Found libswscale, version 8.3.100
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Looking for unigbrk.h
-- Looking for unigbrk.h - found
-- Looking for libdeflate.h
-- Looking for libdeflate.h - found
-- The following OPTIONAL packages have been found:

 * FFMpeg

-- The following REQUIRED packages have been found:

 * PkgConfig
 * terminfo
 * Threads
 * libunistring
 * DEFLATE

-- Configuring done (7.5s)
-- Generating done (0.5s)
-- Build files have been written to: C:/msys64/home/diego/notcurses/build

diego@DGC-TUF-A15 UCRT64 ~/notcurses/build
$ cmake --build .
[0/2] Re-checking globbed directories...-- GLOB mismatch!

[1/2] Re-running CMake...-- Requested multimedia engine: ffmpeg
-- Requested build mode: RelWithDebInfo
-- Looking for unigbrk.h
-- Looking for unigbrk.h - found
-- Looking for libdeflate.h
-- Looking for libdeflate.h - found
-- The following OPTIONAL packages have been found:

 * FFMpeg

-- The following REQUIRED packages have been found:

 * PkgConfig
 * terminfo
 * Threads
 * libunistring
 * DEFLATE

-- Configuring done (1.5s)
-- Generating done (0.3s)
-- Build files have been written to: C:/msys64/home/diego/notcurses/build

[0/4] Re-checking globbed directories...
[2/248] Building C object CMakeFiles/notcurses-core.dir/src/lib/egcpool.c.obj
In file included from C:/msys64/home/diego/notcurses/src/lib/egcpool.h:17,
                 from C:/msys64/home/diego/notcurses/src/lib/egcpool.c:1:
C:/msys64/home/diego/notcurses/src/lib/egcpool.c: In function 'egcpool_stash':
C:/msys64/home/diego/notcurses/src/lib/logging.h:34:11: warning: unknown conversion type character 'z' in format [-Wformat=]
   34 |     nclog("%s:%d:" fmt NL, __func__, __LINE__, ##__VA_ARGS__); } \
      |           ^~~~~~~~
C:/msys64/home/diego/notcurses/src/lib/egcpool.c:97:3: note: in expansion of macro 'logerror'
   97 |   logerror("error finding egcpool writepos (%zu)", ulen);
      |   ^~~~~~~~
C:/msys64/home/diego/notcurses/src/lib/logging.h:34:11: warning: too many arguments for format [-Wformat-extra-args]
   34 |     nclog("%s:%d:" fmt NL, __func__, __LINE__, ##__VA_ARGS__); } \
      |           ^~~~~~~~
C:/msys64/home/diego/notcurses/src/lib/egcpool.c:97:3: note: in expansion of macro 'logerror'
   97 |   logerror("error finding egcpool writepos (%zu)", ulen);
      |   ^~~~~~~~
[19/248] Building C object CMakeFiles/notcurses-core.dir/src/lib/termdesc.c.obj
FAILED: [code=1] CMakeFiles/notcurses-core.dir/src/lib/termdesc.c.obj
C:\msys64\ucrt64\bin\cc.exe -Dnotcurses_core_EXPORTS -IC:/msys64/home/diego/notcurses/include -IC:/msys64/home/diego/notcurses/src -IC:/msys64/home/diego/notcurses/build/include -IC:/msys64/ucrt64/include/ncursesw -IC:/msys64/home/diego/notcurses -I/usr/local/include -O2 -g -DNDEBUG -std=gnu17 -fvisibility=hidden -Wall -Wextra -W -Wshadow -Wvla -Wstrict-aliasing=2 -fno-signed-zeros -fno-trapping-math -fassociative-math -fno-math-errno -freciprocal-math -funsafe-math-optimizations -fexceptions -fstrict-aliasing -fPIC -MD -MT CMakeFiles/notcurses-core.dir/src/lib/termdesc.c.obj -MF CMakeFiles\notcurses-core.dir\src\lib\termdesc.c.obj.d -o CMakeFiles/notcurses-core.dir/src/lib/termdesc.c.obj -c C:/msys64/home/diego/notcurses/src/lib/termdesc.c
C:/msys64/home/diego/notcurses/src/lib/termdesc.c: In function 'putenv_term':
C:/msys64/home/diego/notcurses/src/lib/termdesc.c:1668:6: error: implicit declaration of function 'setenv'; did you mean 'getenv'? [-Wimplicit-function-declaration]
 1668 |   if(setenv(ENVVAR, tname, 1)){
      |      ^~~~~~
      |      getenv
[36/248] Building C object CMakeFiles/notcurses-core.dir/src/lib/visual.c.obj
ninja: build stopped: subcommand failed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions