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

Wrong compile flags passed to nvcc by gtest #615

Open
Destranix opened this issue Jan 12, 2023 · 0 comments
Open

Wrong compile flags passed to nvcc by gtest #615

Destranix opened this issue Jan 12, 2023 · 0 comments

Comments

@Destranix
Copy link

Destranix commented Jan 12, 2023

When trying to compile camp on MSVC the "/wd4251" flag is passed to nvcc probably leading to an error, as it's not recognized by nvcc.

I'm using the following script to compile:

@echo off
setlocal
cd /d %~dp0
reg Query "HKLM\Hardware\Description\System\CentralProcessor\0" | find /i "x86" > NUL && set arch_command_length=32 || set arch_command_length=64
echo "%PROCESSOR_ARCHITECTURE%" | find /i "arm" > NUL && goto ARM || goto AMD

:ARM
IF %arch_command_length% == 32 (
	set arch_string=x86_arm
	set arch_command_length_string=x86
) ELSE (
	set arch_string=amd64_arm64
	set arch_command_length_string=x64
)
goto VC_VARC_INIT
:AMD
IF %arch_command_length% == 32 (
	set arch_string=x86
	set arch_command_length_string=x86
) ELSE (
	set arch_string=amd64
	set arch_command_length_string=x64
)
goto VC_VARC_INIT
:VC_VARC_INIT
call vcvarsall.bat %arch_string% -vcvars_ver=
call D:\My_Programs\Fortran\setvars.bat
set compiler_path=%VCToolsInstallDir%\bin\Host%arch_command_length_string%\%arch_command_length_string%\cl.exe
set linker_path=%VCToolsInstallDir%\bin\Host%arch_command_length_string%\%arch_command_length_string%\link.exe
set archiver_path=%VCToolsInstallDir%\bin\Host%arch_command_length_string%\%arch_command_length_string%\lib.exe
call "%DevEnvDir%\COMMONEXTENSIONS\MICROSOFT\CMAKE\CMake\bin\cmake.exe" -G "Ninja" -DBLT_CXX_STD=c++17 -DENABLE_MPI=ON -DENABLE_CUDA=ON -DENABLE_OPENMP=ON -DCMAKE_AR:FILEPATH="%archiver_path%" -DCMAKE_LINKER:FILEPATH="%linker_path%" -DCMAKE_INSTALL_PREFIX:PATH="%CD%\out\install" -DCMAKE_CXX_COMPILER:FILEPATH="%compiler_path%" -DCMAKE_C_COMPILER:FILEPATH="%compiler_path%"  -DCMAKE_BUILD_TYPE="Release" -DCMAKE_MAKE_PROGRAM="%DevEnvDir%\COMMONEXTENSIONS\MICROSOFT\CMAKE\Ninja\ninja.exe" "D:\Destranix\Documents\00Uni\Simulation\camp\"
call "%DevEnvDir%\COMMONEXTENSIONS\MICROSOFT\CMAKE\CMake\bin\cmake.exe" --build . --config Release

Possibly a mechanism should be included to automatically mask compile-flags accordingly when compiling using a different compiler and/or to specify to which special compilers flags shell be passed.

EDIT:
Hotfix for this bug if the /wd-Options are the only ones causing problems:
Change

blt_append_custom_compiler_flag( FLAGS_VAR gtest_extra_flags
DEFAULT " "
MSVC "/wd4251" "/wd4275" )

list(APPEND _gtest_compile_flags
    $<$<NOT:$<COMPILE_LANGUAGE:CUDA>>:/wd4251>
    $<$<COMPILE_LANGUAGE:CUDA>:-Xcompiler=/wd4251>
    $<$<NOT:$<COMPILE_LANGUAGE:CUDA>>:/wd4275>
    $<$<COMPILE_LANGUAGE:CUDA>:-Xcompiler=/wd4275>
)
blt_append_custom_compiler_flag( FLAGS_VAR gtest_extra_flags
    DEFAULT " " 
    MSVC	${_gtest_compile_flags}
)
@Destranix Destranix changed the title Wronmg compile flags passed to nvcc by gtest Wrong compile flags passed to nvcc by gtest Jan 12, 2023
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

1 participant