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

Cannot find source file: wavpackdll/wavpackdll.rc #116

Open
jonaski opened this issue Mar 14, 2022 · 10 comments
Open

Cannot find source file: wavpackdll/wavpackdll.rc #116

jonaski opened this issue Mar 14, 2022 · 10 comments

Comments

@jonaski
Copy link

jonaski commented Mar 14, 2022

I'm getting the following error when compiling on Windows with MSVC (Visual Studio 2019).

C:\Data\Projects\strawberry\strawberry-dependencies\msvc\sources\wavpack-5.4.0\build>cmake .. -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="c:\msvc_x86_64" -DBUILD_SHARED_LIBS=ON -DBUILD_TESTING=OFF -DWAVPACK_BUILD_DOCS=OFF -DWAVPACK_BUILD_PROGRAMS=OFF -DWAVPACK_ENABLE_ASM=OFF -DWAVPACK_ENABLE_LEGACY=OFF -DWAVPACK_BUILD_WINAMP_PLUGIN=OFF -DWAVPACK_BUILD_COOLEDIT_PLUGIN=OFF
-- The C compiler identification is MSVC 19.29.30141.0
-- The CXX compiler identification is MSVC 19.29.30141.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for a ASM compiler
-- Looking for a ASM compiler - C:/Strawberry/c/bin/gcc.exe
-- The ASM compiler identification is GNU
-- Found assembler: C:/Strawberry/c/bin/gcc.exe
-- The ASM_MASM compiler identification is MSVC
-- Found assembler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/ml64.exe
-- Found OpenSSL: C:/msvc_x86_64/lib/libcrypto.lib (found version "3.0.1")
-- Looking for cos in m
-- Looking for cos in m - not found
-- Looking for pthread.h
-- Looking for pthread.h - not found
-- Found Threads: TRUE
-- Found Iconv: C:/msvc_x86_64/lib/libiconv.lib
-- Could NOT find LibXslt (missing: LIBXSLT_LIBRARIES) (found version "1.1.33")
-- Performing Test HAVE___BUILTIN_CLZ
-- Performing Test HAVE___BUILTIN_CLZ - Failed
-- Checking large files support...
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Checking size of off_t without any definitions:
-- Check size of off_t
-- Check size of off_t - done
-- Checking of off_t without any definitions: 4
-- Checking size of off_t with _FILE_OFFSET_BITS=64:
-- Check size of off_t
-- Check size of off_t - done
-- Checking size of off_t with _FILE_OFFSET_BITS=64: 4
-- Checking size of off_t with _LARGE_FILES:
-- Check size of off_t
-- Check size of off_t - done
-- Checking size of off_t with _LARGE_FILES: 4
-- Checking size of off_t with _LARGEFILE_SOURCE:
-- Check size of off_t
-- Check size of off_t - done
-- Checking size of off_t with _LARGEFILE_SOURCE: 4
Result of checking large files support: not supported
-- Looking for fseeko
-- Looking for fseeko - not found
-- The following features have been enabled:

 * BUILD_SHARED_LIBS, Build shared library.
 * ENABLE_DSD, Enable support for WavPack DSD files.
 * INSTALL_CMAKE_MODULE, Generate and install CMake package configuration module.
 * ENABLE_LIBCRYPTO, Use OpenSSL::Crypto library.
 * INSTALL_DOCS, Install documentation.
 * INSTALL_PKGCONFIG_MODULE, Generate and install wavpack.pc.

-- The following OPTIONAL packages have been found:

 * Threads, Threads library
   Required to build tests.

-- The following RECOMMENDED packages have been found:

 * Iconv, converts from one character encoding to another through Unicode conversion
   Required to build programs.
 * OpenSSL, TLS/SSL and crypto library
   Can be used to build wavpack library.

-- The following features have been disabled:

 * BUILD_TESTING, Build tests.
 * ENABLE_LEGACY, Decode legacy (< 4.0) WavPack files.
 * ENABLE_ASM, Enable assembly optimizations.
 * BUILD_PROGRAMS, Build programs.
 * BUILD_COOLEDIT_PLUGIN, Build CoolEdit plugin.
 * BUILD_WINAMP_PLUGIN, Build WinAmp plugin.
 * BUILD_DOCS, Build documentation.

-- The following OPTIONAL packages have not been found:

 * LibXslt,  XSLT C library developed for the GNOME project.
   Required to generate documentation.

-- Configuring done
CMake Error at CMakeLists.txt:159 (add_library):
  Cannot find source file:

    wavpackdll/wavpackdll.rc

  Tried extensions .c .C .c++ .cc .cpp .cxx .cu .mpp .m .M .mm .h .hh .h++
  .hm .hpp .hxx .in .txx .f .F .for .f77 .f90 .f95 .f03 .ispc


CMake Error at CMakeLists.txt:159 (add_library):
  No SOURCES given to target: wavpack


CMake Generate step failed.  Build files cannot be regenerated correctly.

If I remove "wavpackdll/wavpackdll.rc" from CMakeLists.txt:
sed -i '/wavpackdll.rc/d' wavpack-5.4.0/CMakeLists.txt

CMake configuration completes and I end up with a linking error:

C:\Data\Projects\strawberry\strawberry-dependencies\msvc\sources\wavpack-5.4.0\build>cmake --build .
[  4%] Building C object CMakeFiles/wavpack.dir/src/common_utils.c.obj
common_utils.c
[  8%] Building C object CMakeFiles/wavpack.dir/src/decorr_utils.c.obj
decorr_utils.c
[ 12%] Building C object CMakeFiles/wavpack.dir/src/entropy_utils.c.obj
entropy_utils.c
[ 16%] Building C object CMakeFiles/wavpack.dir/src/extra1.c.obj
extra1.c
[ 20%] Building C object CMakeFiles/wavpack.dir/src/extra2.c.obj
extra2.c
[ 25%] Building C object CMakeFiles/wavpack.dir/src/open_utils.c.obj
open_utils.c
[ 29%] Building C object CMakeFiles/wavpack.dir/src/open_filename.c.obj
open_filename.c
[ 33%] Building C object CMakeFiles/wavpack.dir/src/open_legacy.c.obj
open_legacy.c
[ 37%] Building C object CMakeFiles/wavpack.dir/src/open_raw.c.obj
open_raw.c
[ 41%] Building C object CMakeFiles/wavpack.dir/src/pack.c.obj
pack.c
[ 45%] Building C object CMakeFiles/wavpack.dir/src/pack_dns.c.obj
pack_dns.c
[ 50%] Building C object CMakeFiles/wavpack.dir/src/pack_floats.c.obj
pack_floats.c
[ 54%] Building C object CMakeFiles/wavpack.dir/src/pack_utils.c.obj
pack_utils.c
[ 58%] Building C object CMakeFiles/wavpack.dir/src/read_words.c.obj
read_words.c
[ 62%] Building C object CMakeFiles/wavpack.dir/src/tags.c.obj
tags.c
[ 66%] Building C object CMakeFiles/wavpack.dir/src/tag_utils.c.obj
tag_utils.c
[ 70%] Building C object CMakeFiles/wavpack.dir/src/unpack.c.obj
unpack.c
[ 75%] Building C object CMakeFiles/wavpack.dir/src/unpack_floats.c.obj
unpack_floats.c
[ 79%] Building C object CMakeFiles/wavpack.dir/src/unpack_seek.c.obj
unpack_seek.c
[ 83%] Building C object CMakeFiles/wavpack.dir/src/unpack_utils.c.obj
unpack_utils.c
[ 87%] Building C object CMakeFiles/wavpack.dir/src/write_words.c.obj
write_words.c
[ 91%] Building C object CMakeFiles/wavpack.dir/src/pack_dsd.c.obj
pack_dsd.c
[ 95%] Building C object CMakeFiles/wavpack.dir/src/unpack_dsd.c.obj
unpack_dsd.c
[100%] Linking C shared library libwavpackdll.dll
LINK: command "C:\PROGRA~2\MICROS~2\2019\COMMUN~1\VC\Tools\MSVC\1429~1.301\bin\Hostx64\x64\link.exe /nologo @CMakeFiles\wavpack.dir\objects1.rsp /out:libwavpackdll.dll /implib:libwavpackdll.dll.a /pdb:C:\Data\Projects\strawberry\strawberry-dependencies\msvc\sources\wavpack-5.4.0\build\libwavpackdll.pdb /dll /version:0.0 /machine:x64 /INCREMENTAL:NO libwavpack.def C:\msvc_x86_64\lib\libcrypto.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTFILE:libwavpackdll.dll.manifest" failed (exit code 1107) with the following output:
libwavpack.def : fatal error LNK1107: invalid or corrupt file: cannot read at 0x7E9
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe"' : return code '0xffffffff'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\HostX64\x64\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\HostX64\x64\nmake.exe"' : return code '0x2'
Stop.

Removing libwavpack.def from the link command works, but there is no .lib file. (Or removing it from sources here: https://github.com/dbry/WavPack/blob/master/CMakeLists.txt#L337)

I have tried the latest code from git, same issue.
Samme issue in GitHub Actions CI.

Another issue is that wavpack.h is installed directly in include instead of include/wavpack

@jonaski
Copy link
Author

jonaski commented Mar 14, 2022

Never mind the second error, it's caused by gcc being set as ASM compiler

@dbry
Copy link
Owner

dbry commented Mar 19, 2022

Hi, and thanks for reporting this! Unfortunately, the Cmake stuff is one of the areas I know very little about and from the output you posted it looks like the system is still trying to do a *nix-style build rather than MSVC. Have you tried using the MSVC solution file directly, or is there a reason that doesn't work for you?

@evpobr can you provide any more insight into this? Thanks!

@evpobr
Copy link
Contributor

evpobr commented Mar 20, 2022

Hi. Ok, I will take a look.

@evpobr
Copy link
Contributor

evpobr commented Mar 20, 2022

Cannot reproduce bug:

D:\source\repos\WavPack\build>cmake --build .
Scanning dependencies of target wavpack
[  4%] Building C object CMakeFiles/wavpack.dir/src/common_utils.c.obj
common_utils.c
[  8%] Building C object CMakeFiles/wavpack.dir/src/decorr_utils.c.obj
decorr_utils.c
[ 12%] Building C object CMakeFiles/wavpack.dir/src/entropy_utils.c.obj
entropy_utils.c
[ 16%] Building C object CMakeFiles/wavpack.dir/src/extra1.c.obj
extra1.c
[ 20%] Building C object CMakeFiles/wavpack.dir/src/extra2.c.obj
extra2.c
[ 24%] Building C object CMakeFiles/wavpack.dir/src/open_utils.c.obj
open_utils.c
[ 28%] Building C object CMakeFiles/wavpack.dir/src/open_filename.c.obj
open_filename.c
[ 32%] Building C object CMakeFiles/wavpack.dir/src/open_legacy.c.obj
open_legacy.c
[ 36%] Building C object CMakeFiles/wavpack.dir/src/open_raw.c.obj
open_raw.c
[ 40%] Building C object CMakeFiles/wavpack.dir/src/pack.c.obj
pack.c
[ 44%] Building C object CMakeFiles/wavpack.dir/src/pack_dns.c.obj
pack_dns.c
[ 48%] Building C object CMakeFiles/wavpack.dir/src/pack_floats.c.obj
pack_floats.c
[ 52%] Building C object CMakeFiles/wavpack.dir/src/pack_utils.c.obj
pack_utils.c
[ 56%] Building C object CMakeFiles/wavpack.dir/src/read_words.c.obj
read_words.c
[ 60%] Building C object CMakeFiles/wavpack.dir/src/tags.c.obj
tags.c
[ 64%] Building C object CMakeFiles/wavpack.dir/src/tag_utils.c.obj
tag_utils.c
[ 68%] Building C object CMakeFiles/wavpack.dir/src/unpack.c.obj
unpack.c
[ 72%] Building C object CMakeFiles/wavpack.dir/src/unpack_floats.c.obj
unpack_floats.c
[ 76%] Building C object CMakeFiles/wavpack.dir/src/unpack_seek.c.obj
unpack_seek.c
[ 80%] Building C object CMakeFiles/wavpack.dir/src/unpack_utils.c.obj
unpack_utils.c
[ 84%] Building C object CMakeFiles/wavpack.dir/src/write_words.c.obj
write_words.c
[ 88%] Building C object CMakeFiles/wavpack.dir/src/pack_dsd.c.obj
pack_dsd.c
[ 92%] Building C object CMakeFiles/wavpack.dir/src/unpack_dsd.c.obj
unpack_dsd.c
[ 96%] Building RC object CMakeFiles/wavpack.dir/wavpackdll/wavpackdll.rc.res
Microsoft (R) Windows (R) Resource Compiler Version 10.0.10011.16384
Copyright (C) Microsoft Corporation.  All rights reserved.

[100%] Linking C shared library wavpackdll.dll
[100%] Built target wavpack

Are you running the configuration from VS command prompt?

** Visual Studio 2019 Developer Command Prompt v16.11.11
** Copyright (c) 2021 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x86'

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community>d:

D:\>cd source\repos\WavPack\build

D:\source\repos\WavPack\build>cmake .. -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="c:\msvc_x86_64" -DBUILD_SHARED_LIBS=ON -DBUILD_TESTING=OFF -DWAVPACK_BUILD_DOCS=OFF -DWAVPACK_BUILD_PROGRAMS=OFF -DWAVPACK_ENABLE_ASM=OFF -DWAVPACK_ENABLE_LEGACY=OFF -DWAVPACK_BUILD_WINAMP_PLUGIN=OFF -DWAVPACK_BUILD_COOLEDIT_PLUGIN=OFF

@evpobr
Copy link
Contributor

evpobr commented Mar 20, 2022

I also advise, if possible, always use package managers. For example Vcpkg:

PS C:\Users\evpob> vcpkg install wavpack:x64-windows
Computing installation plan...
The following packages will be built and installed:
    wavpack[core]:x64-windows -> 5.4.0#1
Detecting compiler hash for triplet x64-windows...
Restored 0 packages from C:\Users\evpob\AppData\Local\vcpkg\archives in 1.705 ms. Use --debug to see more details.
Starting package 1/1: wavpack:x64-windows
Building package wavpack[core]:x64-windows...
-- Downloading https://github.com/dbry/WavPack/archive/5.4.0.tar.gz -> dbry-WavPack-5.4.0.tar.gz...
-- Extracting source D:/source/repos/vcpkg/downloads/dbry-WavPack-5.4.0.tar.gz
-- Applying patch OpenSSL.patch
-- Applying patch fix-symbol-exports.patch
-- Using source at D:/source/repos/vcpkg/buildtrees/wavpack/src/5.4.0-582c220836.clean
-- Found external ninja('1.10.2').
-- Configuring x64-windows
-- Building x64-windows-dbg
-- Building x64-windows-rel
-- Installing: D:/source/repos/vcpkg/packages/wavpack_x64-windows/share/wavpack/copyright
-- Fixing pkgconfig file: D:/source/repos/vcpkg/packages/wavpack_x64-windows/lib/pkgconfig/wavpack.pc
-- Using cached msys-mingw-w64-i686-pkg-config-0.29.2-3-any.pkg.tar.zst.
-- Using cached msys-mingw-w64-i686-libwinpthread-git-9.0.0.6373.5be8fcd83-1-any.pkg.tar.zst.
-- Using msys root at D:/source/repos/vcpkg/downloads/tools/msys2/9a1ec3f33446b195
-- Fixing pkgconfig file: D:/source/repos/vcpkg/packages/wavpack_x64-windows/debug/lib/pkgconfig/wavpack.pc
-- Performing post-build validation
-- Performing post-build validation done
Stored binary cache: C:\Users\evpob\AppData\Local\vcpkg\archives\32\326b88ddbee3f7e2d8374e849db8a0c15fdb078a6f4663a1858b3356449816bb.zip
Installing package wavpack[core]:x64-windows...
Elapsed time for package wavpack:x64-windows: 30.79 s

Total elapsed time: 37.34 s

The package wavpack provides CMake targets:

    find_package(wavpack CONFIG REQUIRED)
    target_link_libraries(main PRIVATE WavPack::wavpack)

@jonaski
Copy link
Author

jonaski commented Mar 20, 2022

wavpackdll/wavpackdll.rc is missing from wavpack-5.4.0.tar.xz, git works.
The linking error was caused by a MinGW installation in PATH, so that's not a bug.

@evpobr
Copy link
Contributor

evpobr commented Mar 20, 2022

So it's ok now?

@jonaski
Copy link
Author

jonaski commented Mar 25, 2022

Yeah but you might want to include wavpackdll.rc in the tarball

@jonaski jonaski closed this as completed Mar 25, 2022
@dbry
Copy link
Owner

dbry commented Mar 26, 2022

@jonaski Thanks for reporting this!

@evpobr @SoapGentoo So is the correct and complete way to fix this to simply add wavpackdll/wavpackdll.rc to the EXTRA_DIST section of Makefile.am? It looks like packages generated from the Cmake system already include everything.

@dbry dbry reopened this Mar 26, 2022
@SoapGentoo
Copy link
Contributor

@dbry yes, given that the .rc is not part of any native Automake rule, adding it to EXTRA_DIST should pick it up for the tarball

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

No branches or pull requests

4 participants