From a57aa96efae25cc0351e8b3e50953d56777947e7 Mon Sep 17 00:00:00 2001 From: Wyatt Spear Date: Mon, 3 Jan 2022 15:43:34 -0800 Subject: [PATCH] Fixed several issues preventing tau from building with VS on Windows. Former-commit-id: cb6ed73771bfd70897c2bd72f653ffbc3f0c2d07 --- Makefile.win32 | 5 +++-- include/Profile/TauEnv.h | 2 ++ src/Profile/TauBfdUnimplemented.cpp | 6 +++++- src/Profile/TauEnv.cpp | 7 +++++++ src/Profile/TauInit.cpp | 2 ++ src/Profile/TauIoWrap.cpp | 2 ++ src/Profile/TauMemory.cpp | 2 +- src/Profile/TauMmapMemMgr.cpp | 1 + src/Profile/TauUtil.cpp | 6 +++--- 9 files changed, 26 insertions(+), 7 deletions(-) diff --git a/Makefile.win32 b/Makefile.win32 index 7abeb3f9a5..7ddf0cc60f 100644 --- a/Makefile.win32 +++ b/Makefile.win32 @@ -15,7 +15,7 @@ MPICFLAGS= /O2 /Gz /nologo /EHsc -I . -DPROFILING_ON -DTAU_WINDOWS CFLAGS= $(CFLAGS) /O2 /Gd /nologo /TP /EHsc -I . CC=cl -INCLUDES=-Iinclude -I../include -Iinclude/Profile -I"C:\Program Files\Microsoft Compute Cluster Pack\Include" +INCLUDES=-I./include -I../include -I./include/Profile -I"C:\Program Files\Microsoft Compute Cluster Pack\Include" DEFINES=-DTAU_WINDOWS -DTAU_DOT_H_LESS_HEADERS -DTAU_LIBRARY_SOURCE -DTAU_DISABLE_SIGUSR -DTAU_SYNCHRONIZE_CLOCKS -DPDT_NO_UPC #DEFINES=-DTAU_WINDOWS -DTAU_DOT_H_LESS_HEADERS -DTAU_LIBRARY_SOURCE -DTAU_DISABLE_SIGUSR -DTAU_MPI -DTAU_SYNCHRONIZE_CLOCKS CFLAGS=$(CFLAGS) $(DEFINES) $(INCLUDES) @@ -55,7 +55,8 @@ src/Profile/TauXML.cpp \ src/Profile/Tracer.cpp \ src/Profile/UserEvent.cpp \ src/Profile/TauMmapMemMgr.cpp \ -src/Profile/WindowsThreadLayer.cpp +src/Profile/WindowsThreadLayer.cpp \ +src/Profile/TauBfdUnimplemented.cpp #TAU_PROFILE_SRCS= src\Profile\TauInit.cpp src\Profile\TauEnv.cpp src\profile\TauCallPath.cpp src\profile\FunctionInfo.cpp src\profile\Profiler.cpp src\profile\RtsLayer.cpp src\profile\RtsThread.cpp src\profile\TauCAPI.cpp src\profile\TauFAPI.cpp src\profile\TauHandler.cpp src\profile\TauHooks.cpp src\profile\TauMapping.cpp src\profile\TauMemory.cpp src\profile\UserEvent.cpp src\profile\WindowsThreadLayer.cpp src\profile\TauMetaData.cpp src\profile\TauMetrics.cpp src\profile\TauReadMetrics.cpp src\profile\Tracer.cpp src\profile\TauCompensate.cpp TAU_JAVA_SRC= src\profile\JavaThreadLayer.cpp src\profile\TauJava.cpp src\profile\TauJAPI.cpp src\profile\MetaData.cpp diff --git a/include/Profile/TauEnv.h b/include/Profile/TauEnv.h index 990f263179..20a1b2d8b5 100644 --- a/include/Profile/TauEnv.h +++ b/include/Profile/TauEnv.h @@ -132,7 +132,9 @@ extern "C" { const char* TAUDECL TauEnv_get_plugins(); int TAUDECL TauEnv_get_plugins_enabled(); int TAUDECL TauEnv_get_track_mpi_t_comm_metric_values(); +#ifndef TAU_WINDOWS const char TAUDECL *TauEnv_get_mpi_t_comm_metric_values(); +#endif int TAUDECL TauEnv_get_set_node(); const char* TAUDECL TauEnv_get_cupti_api(); const char* TAUDECL TauEnv_get_cuda_device_name(); diff --git a/src/Profile/TauBfdUnimplemented.cpp b/src/Profile/TauBfdUnimplemented.cpp index 71b3ba6f34..7f8e0c7842 100644 --- a/src/Profile/TauBfdUnimplemented.cpp +++ b/src/Profile/TauBfdUnimplemented.cpp @@ -10,7 +10,11 @@ #include #include +#ifndef TAU_WINDOWS #include +#else +#include +#endif #include #include #include @@ -152,7 +156,7 @@ char * Tau_demangle_name(const char * name) { #else char * Tau_demangle_name(const char * name) { TAU_VERBOSE("Warning: No demangling support provided...\n"); - dem_name = strdup(name); + char * dem_name = strdup(name); return dem_name; } #endif // #if defined(__GNUC__) diff --git a/src/Profile/TauEnv.cpp b/src/Profile/TauEnv.cpp index 737583368e..4ba30fefc9 100644 --- a/src/Profile/TauEnv.cpp +++ b/src/Profile/TauEnv.cpp @@ -57,6 +57,13 @@ using namespace std; //#include #endif /* TAU_BGP */ +#ifdef TAU_WINDOWS +/* We are on Windows which doesn't have strtok_s */ +# define strtok_r strtok_s +#define TAU_LIB_DIR "tau2/win32/lib" +#endif + + #define MAX_LN_LEN 2048 /* We should throttle if number n > a && percall < b .a and b are given below */ diff --git a/src/Profile/TauInit.cpp b/src/Profile/TauInit.cpp index 9085790cdb..dc5e98a115 100644 --- a/src/Profile/TauInit.cpp +++ b/src/Profile/TauInit.cpp @@ -356,10 +356,12 @@ int Tau_profile_exit_scorep() } /* disable this stupid thing */ +#ifndef TAU_WINDOWS extern "C" int __attribute__((weak)) PetscPopSignalHandler(void) { return 0; } typedef int(*PetscPopSignalHandler_p)(void); +#endif ////////////////////////////////////////////////////////////////////// // Initialize signal handling routines diff --git a/src/Profile/TauIoWrap.cpp b/src/Profile/TauIoWrap.cpp index 08dd36bf49..3b0a3b529a 100644 --- a/src/Profile/TauIoWrap.cpp +++ b/src/Profile/TauIoWrap.cpp @@ -25,7 +25,9 @@ #include #include #include +#ifndef TAU_WINDOWS #include +#endif using namespace std; diff --git a/src/Profile/TauMemory.cpp b/src/Profile/TauMemory.cpp index 77309b513f..fa5b21a9dd 100644 --- a/src/Profile/TauMemory.cpp +++ b/src/Profile/TauMemory.cpp @@ -1904,7 +1904,7 @@ return 1; // SUCCESS ////////////////////////////////////////////////////////////////////// extern "C" void Tau_track_mem_event_always(const char * name, const char * prefix, size_t size) { const size_t event_len = strlen(name) + strlen(prefix) + 2; -#ifdef TAU_NEC_SX +#if defined TAU_NEC_SX || defined TAU_WINDOWS char event_name[16384]; #else char event_name[event_len]; diff --git a/src/Profile/TauMmapMemMgr.cpp b/src/Profile/TauMmapMemMgr.cpp index 5f537c1de2..e1936f2f46 100644 --- a/src/Profile/TauMmapMemMgr.cpp +++ b/src/Profile/TauMmapMemMgr.cpp @@ -290,6 +290,7 @@ void Tau_MemMgr_free(int tid, void *addr, size_t size) #else /* TAU_WINDOWS */ #include extern "C" bool Tau_MemMgr_initIfNecessary(void) { + return true; } extern "C" void Tau_MemMgr_finalizeIfNecessary(void) { } diff --git a/src/Profile/TauUtil.cpp b/src/Profile/TauUtil.cpp index 789ac1fa12..b8e475137f 100644 --- a/src/Profile/TauUtil.cpp +++ b/src/Profile/TauUtil.cpp @@ -27,7 +27,7 @@ #include #include -#ifdef TAU_USE_STDCXX11 +#if defined TAU_USE_STDCXX11 || defined TAU_WINDOWS #include #include #else @@ -818,7 +818,7 @@ extern "C" void Tau_util_plugin_register_callbacks(Tau_plugin_callbacks * cb, un #endif /* TAU_OMPT */ } -#ifndef TAU_USE_STDCXX11 +#if not defined TAU_USE_STDCXX11 || not defined TAU_WINDOWS /* C version of regex_match in case compiler doesn't support C++11 featues */ /* Credit for logic: Laurence Gonsalves on stackoverflow.com */ extern "C" int Tau_C_regex_match(const char * input, const char * rege) @@ -852,7 +852,7 @@ extern "C" const char* Tau_check_for_matching_regex(const char * input) { TauInternalFunctionGuard protects_this_function; -#ifdef TAU_USE_STDCXX11 +#if defined TAU_USE_STDCXX11 || defined TAU_WINDOWS for(std::list< std::string >::iterator it = regex_list.begin(); it != regex_list.end(); it++) { if(regex_match(input, std::regex(*it))) { return (*it).c_str();