From 1822cb882063b572b2b8b603a1e47c42a19fe028 Mon Sep 17 00:00:00 2001 From: Leo Fang Date: Thu, 2 May 2024 20:17:16 -0700 Subject: [PATCH 1/2] Support Windows --- CMakeLists.txt | 20 +++++++++++++++++--- pynvjitlink/_nvjitlinklib.cpp | 8 ++++++++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4c9f7fb9..3124f209 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.26.4 FATAL_ERROR) project( pynvjitlink VERSION ${SKBUILD_PROJECT_VERSION} - LANGUAGES CXX CUDA + LANGUAGES CXX ) find_package(Python COMPONENTS Interpreter Development REQUIRED) @@ -14,9 +14,23 @@ find_package( # Require CUDA 12.2 Update 2 to avoid nvjitlink bugs CUDAToolkit 12.2.140 REQUIRED ) -target_link_libraries(_nvjitlinklib PRIVATE CUDA::nvJitLink_static CUDA::nvptxcompiler_static) -target_compile_options(_nvjitlinklib PRIVATE -Werror -Wall) +#set_target_properties(_nvjitlinklib PROPERTIES CUDA_RESOLVE_DEVICE_SYMBOLS ON) +#target_include_directories(_nvjitlinklib PRIVATE ${CUDAToolkit_INCLUDE_DIRS}) +target_link_libraries(_nvjitlinklib PRIVATE CUDA::nvptxcompiler_static) +#target_link_libraries(_nvjitlinklib PRIVATE optimized CUDA::nvJitLink) +target_link_libraries(_nvjitlinklib PRIVATE CUDA::nvJitLink) + +#get_target_property(loc CUDA::nvJitLink_static LOCATION) +#get_target_property(loc2 CUDA::nvJitLink LOCATION) + +#include(CMakePrintHelpers) +#cmake_print_variables(loc) +#cmake_print_variables(loc2) +#cmake_print_variables(CUDAToolkit_INCLUDE_DIRS) + + +#target_compile_options(_nvjitlinklib PRIVATE -Werror -Wall) target_compile_features(_nvjitlinklib PRIVATE cxx_std_11) diff --git a/pynvjitlink/_nvjitlinklib.cpp b/pynvjitlink/_nvjitlinklib.cpp index 421731d9..5b77015d 100644 --- a/pynvjitlink/_nvjitlinklib.cpp +++ b/pynvjitlink/_nvjitlinklib.cpp @@ -16,7 +16,15 @@ #define PY_SSIZE_T_CLEAN #include "nvJitLink.h" +#ifdef _DEBUG +#define __PYNVJIT_DEBUG _DEBUG +#undef _DEBUG #include +#define _DEBUG __PYNVJIT_DEBUG +#undef __PYNVJIT_DEBUG +#else +#include +#endif #include static const char *nvJitLinkGetErrorEnum(nvJitLinkResult error) { From 59cdd1801696781c8385a23698a514c54cae3008 Mon Sep 17 00:00:00 2001 From: Leo Fang Date: Thu, 2 May 2024 21:36:24 -0700 Subject: [PATCH 2/2] clean up --- CMakeLists.txt | 21 ++++++--------------- pynvjitlink/_nvjitlinklib.cpp | 2 ++ 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3124f209..33d06d54 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,22 +15,13 @@ find_package( CUDAToolkit 12.2.140 REQUIRED ) -#set_target_properties(_nvjitlinklib PROPERTIES CUDA_RESOLVE_DEVICE_SYMBOLS ON) -#target_include_directories(_nvjitlinklib PRIVATE ${CUDAToolkit_INCLUDE_DIRS}) target_link_libraries(_nvjitlinklib PRIVATE CUDA::nvptxcompiler_static) -#target_link_libraries(_nvjitlinklib PRIVATE optimized CUDA::nvJitLink) -target_link_libraries(_nvjitlinklib PRIVATE CUDA::nvJitLink) - -#get_target_property(loc CUDA::nvJitLink_static LOCATION) -#get_target_property(loc2 CUDA::nvJitLink LOCATION) - -#include(CMakePrintHelpers) -#cmake_print_variables(loc) -#cmake_print_variables(loc2) -#cmake_print_variables(CUDAToolkit_INCLUDE_DIRS) - - -#target_compile_options(_nvjitlinklib PRIVATE -Werror -Wall) +if (WIN32) + target_link_libraries(_nvjitlinklib PRIVATE CUDA::nvJitLink) +else() + target_link_libraries(_nvjitlinklib PRIVATE CUDA::nvJitLink_static) + target_compile_options(_nvjitlinklib PRIVATE -Werror -Wall) +endif() target_compile_features(_nvjitlinklib PRIVATE cxx_std_11) diff --git a/pynvjitlink/_nvjitlinklib.cpp b/pynvjitlink/_nvjitlinklib.cpp index 5b77015d..96295fdd 100644 --- a/pynvjitlink/_nvjitlinklib.cpp +++ b/pynvjitlink/_nvjitlinklib.cpp @@ -16,6 +16,8 @@ #define PY_SSIZE_T_CLEAN #include "nvJitLink.h" +// something funny going on with this macro on Windows... +// see https://stackoverflow.com/a/62235644/2344149 #ifdef _DEBUG #define __PYNVJIT_DEBUG _DEBUG #undef _DEBUG