Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

compilation error on Windows (MSYS2 + mingw-w64 #242

Closed
vtorri opened this issue Nov 27, 2021 · 2 comments · Fixed by #400
Closed

compilation error on Windows (MSYS2 + mingw-w64 #242

vtorri opened this issue Nov 27, 2021 · 2 comments · Fixed by #400

Comments

@vtorri
Copy link

vtorri commented Nov 27, 2021

Error :

C:/Documents/msys2/home/vincent.torri/gitroot_64/AviSynthPlus/avs_core/filters/AviSource/avi_source.cpp:299:1: error: redefinition of 'LRESULT ICDecompressEx(HIC, DWORD, LPBITMAPINFOHEADER, LPVOID, INT, INT, INT, INT, LPBITMAPINFOHEADER, LPVOID, INT, INT, INT, INT)'
  299 | ICDecompressEx(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiSrc,LPVOID lpSrc,INT xSrc,INT ySrc,INT dxSrc,INT dySrc,LPBITMAPINFOHEADER lpbiDst,LPVOID lpDst,INT xDst,INT yDst,INT dxDst,INT dyDst)
      | ^~~~~~~~~~~~~~
In file included from C:/Documents/msys2/home/vincent.torri/gitroot_64/AviSynthPlus/avs_core/filters/AviSource/DubSource.h:22,
                 from C:/Documents/msys2/home/vincent.torri/gitroot_64/AviSynthPlus/avs_core/filters/AviSource/AudioSource.h:21,
                 from C:/Documents/msys2/home/vincent.torri/gitroot_64/AviSynthPlus/avs_core/filters/AviSource/avi_source.cpp:40:
C:/Documents/msys2/mingw64/x86_64-w64-mingw32/include/vfw.h:414:31: note: 'LRESULT ICDecompressEx(HIC, DWORD, LPBITMAPINFOHEADER, LPVOID, int, int, int, int, LPBITMAPINFOHEADER, LPVOID, int, int, int, int)' previously defined here
  414 |   __CRT_INLINE LRESULT WINAPI ICDecompressEx(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiSrc,LPVOID lpSrc,int xSrc,int ySrc,int dxSrc,int dySrc,LPBITMAPINFOHEADER lpbiDst,LPVOID lpDst,int xDst,int yDst,int dxDst,int dyDst) {
      |                               ^~~~~~~~~~~~~~
C:/Documents/msys2/home/vincent.torri/gitroot_64/AviSynthPlus/avs_core/filters/AviSource/avi_source.cpp:319:1: error: redefinition of 'LRESULT ICDecompressExBegin(HIC, DWORD, LPBITMAPINFOHEADER, LPVOID, INT, INT, INT, INT, LPBITMAPINFOHEADER, LPVOID, INT, INT, INT, INT)'
  319 | ICDecompressExBegin(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiSrc,LPVOID lpSrc,INT xSrc,INT ySrc,INT dxSrc,INT dySrc,LPBITMAPINFOHEADER lpbiDst,LPVOID lpDst,INT xDst,INT yDst,INT dxDst,INT dyDst)
      | ^~~~~~~~~~~~~~~~~~~
In file included from C:/Documents/msys2/home/vincent.torri/gitroot_64/AviSynthPlus/avs_core/filters/AviSource/DubSource.h:22,
                 from C:/Documents/msys2/home/vincent.torri/gitroot_64/AviSynthPlus/avs_core/filters/AviSource/AudioSource.h:21,
                 from C:/Documents/msys2/home/vincent.torri/gitroot_64/AviSynthPlus/avs_core/filters/AviSource/avi_source.cpp:40:
C:/Documents/msys2/mingw64/x86_64-w64-mingw32/include/vfw.h:432:31: note: 'LRESULT ICDecompressExBegin(HIC, DWORD, LPBITMAPINFOHEADER, LPVOID, int, int, int, int, LPBITMAPINFOHEADER, LPVOID, int, int, int, int)' previously defined here
  432 |   __CRT_INLINE LRESULT WINAPI ICDecompressExBegin(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiSrc,LPVOID lpSrc,int xSrc,int ySrc,int dxSrc,int dySrc,LPBITMAPINFOHEADER lpbiDst,LPVOID lpDst,int xDst,int yDst,int dxDst,int dyDst) {
      |                               ^~~~~~~~~~~~~~~~~~~
make[2]: *** [avs_core/CMakeFiles/AvsCore.dir/build.make:1682: avs_core/CMakeFiles/AvsCore.dir/filters/AviSource/avi_source.cpp.obj] Error 1

compilation script :

#! /bin/sh

rm -rf builddir && mkdir builddir && cd builddir

cmake \
    -DCMAKE_TOOLCHAIN_FILE=../cross_toolchain.txt \
    -DCMAKE_INSTALL_PREFIX=C:/Documents/msys2/opt/avs \
    -DCMAKE_VERBOSE_MAKEFILE:BOOL=FALSE \
    -DCMAKE_BUILD_TYPE=Debug \
    -DCMAKE_C_FLAGS="-Og -g3 -ggdb3 -pipe" \
    -DCMAKE_CXX_FLAGS="-Og -g3 -ggdb3 -pipe " \
    -DCMAKE_EXE_LINKER_FLAGS="-s" \
    -DCMAKE_SHARED_LINKER_FLAGS="-s" \
    -DBUILD_SHARED_LIBS=ON \
    -G "Unix Makefiles" \
    ..

make -j8

cross compilation file :

set(CMAKE_SYSTEM_NAME Windows)
set(CMAKE_SYSTEM_PROCESSOR AMD64)

# binaries
set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc)
set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++)
set(CMAKE_LINKER x86_64-w64-mingw32-ld)
set(CMAKE_STRIP x86_64-w64-mingw32-strip)
set(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres)

# flags
set(CMAKE_C_FLAGS "-IE:/Documents/programmes_x64/msys2/home/vtorri/ewpi_64/include -D__USE_MINGW_ANSI_STDIO=1 -D_WIN32_WINNT=0x0601")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -DHWY_COMPILE_ONLY_SCALAR")

set(CMAKE_C_FLAGS_DEBUG "-Og -g3 -ggdb3 -D__USE_MINGW_ANSI_STDIO=1")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DHWY_COMPILE_ONLY_SCALAR")

set(CMAKE_C_FLAGS_RELEASE "-O2 -pipe -march=native -D__USE_MINGW_ANSI_STDIO=1")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DHWY_COMPILE_ONLY_SCALAR")

set(CMAKE_SHARED_LINKER_FLAGS "-LE:/Documents/programmes_x64/msys2/home/vtorri/ewpi_64/lib")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_SHARED_LINKER}")
@qyot27
Copy link
Member

qyot27 commented Nov 27, 2021

It's the -Og flag screwing it up. From the GCC manual:

Otherwise -Og enables all -O1 optimization flags except for those that may interfere with debugging:
<list>

The very same thing happens if you use -O1.

@vtorri
Copy link
Author

vtorri commented Nov 27, 2021

ok, so -O2 -g will work
thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants