Skip to content

Commit

Permalink
Remove dependency on LLVM (it was only used to enable crash handler).
Browse files Browse the repository at this point in the history
  • Loading branch information
nhaustov committed Jul 12, 2016
1 parent 4fb5431 commit aef1692
Show file tree
Hide file tree
Showing 8 changed files with 41 additions and 61 deletions.
1 change: 0 additions & 1 deletion CMakeLists.txt
Expand Up @@ -19,7 +19,6 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules")
include(CMakeDependentOption)

find_package(RE2C REQUIRED)
find_package(LLVM REQUIRED)

option(VENDOR_EXTENSIONS "Enable vendor extensions" ON)
message(STATUS "Vendor extensions: ${VENDOR_EXTENSIONS}")
Expand Down
17 changes: 0 additions & 17 deletions HSAILAsm/CMakeLists.txt
@@ -1,13 +1,3 @@
include_directories(${LLVM_PATH}/include)

include_directories(${LLVM_INCLUDE_DIR})

if(UNIX)
include_directories(${LLVM_PATH}/linux/include)
else()
include_directories(${LLVM_PATH}/win32/include)
endif()

add_executable(HSAILasm HSAILAsm.cpp)

target_link_libraries(HSAILasm hsail)
Expand All @@ -16,14 +6,8 @@ if(AMD_EXTENSIONS)
target_link_libraries(HSAILasm hsail-amd)
endif()

# FIXME: We also need to get the link dependencies of the libLLVMSupport
target_link_libraries(HSAILasm ${LLVM_SUPPORT_LIB})

find_library(CURSES_LIB curses)

#include(LLVM-Config.cmake)
#FIXME: Should set -fno-rtti etc. from LLVM config flags.

if(BUILD_LIBBRIGDWARF)
include_directories(${LIBELF_INCLUDE_DIRS})

Expand All @@ -32,7 +16,6 @@ if(BUILD_LIBBRIGDWARF)
endif()

if(CURSES_LIB)
# FIXME: Find dependencies pulled in by LLVMSupport
target_link_libraries(HSAILasm ${CURSES_LIB})
endif()
if(UNIX)
Expand Down
52 changes: 36 additions & 16 deletions HSAILAsm/HSAILAsm.cpp
Expand Up @@ -38,23 +38,12 @@
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
// SOFTWARE.

//===----------------------------------------------------------------------===//
//
// HSAIL Assembler/disassembler
//
//===----------------------------------------------------------------------===//
#define DEBUG_TYPE "hsailasm"
#include "llvm/Support/CommandLine.h"
#ifdef _DEBUG
#ifdef DEBUG
#undef DEBUG
#endif
#include "llvm/Support/Debug.h"
#else
#define DEBUG(x)
#endif
#include "llvm/Support/PrettyStackTrace.h"
#include "llvm/Support/Signals.h"

#include "HSAILTool.h"
#include "HSAILExtManager.h"
Expand All @@ -68,23 +57,54 @@
#endif

using namespace HSAIL_ASM;
using namespace llvm;

#ifdef _MSC_VER
/// AvoidMessageBoxHook - Emulates hitting "retry" from an "abort, retry,
/// ignore" CRT debug report dialog. "retry" raises an exception which
/// ultimately triggers our stack dumper.
static int
AvoidMessageBoxHook(int ReportType, char *Message, int *Return) {
// Set *Return to the retry code for the return value of _CrtDbgReport:
// http://msdn.microsoft.com/en-us/library/8hyw4sy7(v=vs.71).aspx
// This may also trigger just-in-time debugging via DebugBreak().
if (Return)
*Return = 1;
// Don't call _CrtDbgReport.
return TRUE;
}
#endif

void DisableSystemDialogsOnCrash() {
#ifdef _MSC_VER
// We're already handling writing a "something went wrong" message.
_set_abort_behavior(0, _WRITE_ABORT_MSG);
// Disable Dr. Watson.
_set_abort_behavior(0, _CALL_REPORTFAULT);
_CrtSetReportHook(AvoidMessageBoxHook);

// Disable standard error dialog box.
SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX |
SEM_NOOPENFILEERRORBOX);
_set_error_mode(_OUT_TO_STDERR);
#endif
}

int main(int argc, char **argv) {

// Enable this to enable finegrained heap checks
// _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF | _CRTDBG_CHECK_ALWAYS_DF );

sys::PrintStackTraceOnErrorSignal();
PrettyStackTraceProgram X(argc, argv);
DisableSystemDialogsOnCrash();

#ifdef AMD_EXTENSIONS
amd::hsail::registerExtensions();
#endif // AMD_EXTENSIONS

Tool tool;

DEBUG(tool.SetEnableComments(true));
#if defined(DEBUG) || defined(_DEBUG) || defined(NDEBUG)
tool.SetEnableComments(true);
#endif

return tool.execute(argc, argv) ? 0 : 1;
}
2 changes: 0 additions & 2 deletions README.md
Expand Up @@ -26,7 +26,6 @@ libHSAIL requires the following components:
* CMake
* libelf (if `BUILD_WITH_LIBBRIGDWARF=1`)
* libdwarf (if `BUILD_WITH_LIBBRIGDWARF=1`)
* LLVM (only Support and Object libraries, if `BUILD_HSAILASM=1`)
* perl
* re2c

Expand Down Expand Up @@ -80,7 +79,6 @@ solution file which can be opened and built in Visual Studio.

For Windows, it is possible to obtain dependencies from corresponding software sources:

* LLVM can be downloaded from http://llvm.org/releases/.
* re2c source, Windows binaries and some linux packages can be donwloaded from
http://sourceforge.net/projects/re2c/.
* Perl for Windows can be obtained from any of the following sources:
Expand Down
6 changes: 2 additions & 4 deletions bin/cmake_lnx_amd.sh
Expand Up @@ -3,8 +3,6 @@
set -e
export BUILD_HSAILASM=1
export BUILD_LIBBRIGDWARF=1
export LLVM_PATH=/srv/hsa/drivers/opencl/compiler/llvm
export LLVM_SUPPORT_LIB_DIR=$LLVM_PATH/lib/Support
export ELFTOOLCHAIN_PATH=/srv/hsa/drivers/hsa/contrib/elftoolchain
export LIBELF_PATH=$ELFTOOLCHAIN_PATH/libelf
export LIBDWARF_PATH=/srv/hsa/drivers/sc/HSAIL/hsail-tools/libdwarf
Expand All @@ -15,11 +13,11 @@ cd ..
mkdir -p build/lnx32
cd build/lnx32
export BUILD_SUBDIR=build/lnx/B_dbg
cmake -DCMAKE_BUILD_TYPE=Debug -G "Unix Makefiles" -DBUILD_HSAILASM=$BUILD_HSAILASM -DBUILD_LIBBRIGDWARF=$BUILD_LIBBRIGDWARF -DLLVM_PATH=$LLVM_PATH -DLLVM_SUPPORT_LIB=$LLVM_SUPPORT_LIB_DIR/$BUILD_SUBDIR/LLVMSupport.a -DLIBELF_INCLUDE_DIRS="$LIBELF_PATH;$LIBELF_PATH/../common" -DLIBDWARF_INCLUDE_DIRS=$LIBDWARF_PATH/src -DLIBELF_LIBRARIES=$LIBELF_PATH/$BUILD_SUBDIR/libelf.a -DLIBDWARF_LIBRARIES=$LIBDWARF_PATH/$BUILD_SUBDIR/libdwarf.a -DRE2C_EXECUTABLE=$RE2C_EXECUTABLE -DCMAKE_C_FLAGS=-m32 -DCMAKE_CXX_FLAGS=-m32 -DCMAKE_SHARED_LINKER_FLAGS=-m32 -DCMAKE_INSTALL_PREFIX=dist "$@" ../..
cmake -DCMAKE_BUILD_TYPE=Debug -G "Unix Makefiles" -DBUILD_HSAILASM=$BUILD_HSAILASM -DBUILD_LIBBRIGDWARF=$BUILD_LIBBRIGDWARF -DLIBELF_INCLUDE_DIRS="$LIBELF_PATH;$LIBELF_PATH/../common" -DLIBDWARF_INCLUDE_DIRS=$LIBDWARF_PATH/src -DLIBELF_LIBRARIES=$LIBELF_PATH/$BUILD_SUBDIR/libelf.a -DLIBDWARF_LIBRARIES=$LIBDWARF_PATH/$BUILD_SUBDIR/libdwarf.a -DRE2C_EXECUTABLE=$RE2C_EXECUTABLE -DCMAKE_C_FLAGS=-m32 -DCMAKE_CXX_FLAGS=-m32 -DCMAKE_SHARED_LINKER_FLAGS=-m32 -DCMAKE_INSTALL_PREFIX=dist "$@" ../..
cd ../..

mkdir -p build/lnx64
cd build/lnx64
export BUILD_SUBDIR=build/lnx64a/B_dbg
cmake -DCMAKE_BUILD_TYPE=Debug -G "Unix Makefiles" -DBUILD_HSAILASM=$BUILD_HSAILASM -DBUILD_LIBBRIGDWARF=$BUILD_LIBBRIGDWARF -DLLVM_PATH=$LLVM_PATH -DLLVM_SUPPORT_LIB=$LLVM_SUPPORT_LIB_DIR/$BUILD_SUBDIR/LLVMSupport.a -DLIBELF_INCLUDE_DIRS="$LIBELF_PATH;$LIBELF_PATH/../common;$LIBDWARF_PATH/src" -DLIBDWARF_INCLUDE_DIRS=$LIBDWARF_PATH/src -DLIBELF_LIBRARIES=$LIBELF_PATH/$BUILD_SUBDIR/libelf.a -DLIBDWARF_LIBRARIES=$LIBDWARF_PATH/$BUILD_SUBDIR/libdwarf.a -DRE2C_EXECUTABLE=$RE2C_EXECUTABLE -DCMAKE_C_FLAGS=-m64 -DCMAKE_CXX_FLAGS=-m64 -DCMAKE_SHARED_LINKER_FLAGS=-m64 -DCMAKE_INSTALL_PREFIX=dist "$@" ../..
cmake -DCMAKE_BUILD_TYPE=Debug -G "Unix Makefiles" -DBUILD_HSAILASM=$BUILD_HSAILASM -DBUILD_LIBBRIGDWARF=$BUILD_LIBBRIGDWARF -DLIBELF_INCLUDE_DIRS="$LIBELF_PATH;$LIBELF_PATH/../common;$LIBDWARF_PATH/src" -DLIBDWARF_INCLUDE_DIRS=$LIBDWARF_PATH/src -DLIBELF_LIBRARIES=$LIBELF_PATH/$BUILD_SUBDIR/libelf.a -DLIBDWARF_LIBRARIES=$LIBDWARF_PATH/$BUILD_SUBDIR/libdwarf.a -DRE2C_EXECUTABLE=$RE2C_EXECUTABLE -DCMAKE_C_FLAGS=-m64 -DCMAKE_CXX_FLAGS=-m64 -DCMAKE_SHARED_LINKER_FLAGS=-m64 -DCMAKE_INSTALL_PREFIX=dist "$@" ../..
cd ../..
6 changes: 2 additions & 4 deletions bin/cmake_win_amd.bat
@@ -1,7 +1,5 @@
set BUILD_HSAILASM=1
set BUILD_LIBBRIGDWARF=1
set LLVM_PATH=C:\ws\sc\drivers\opencl\compiler\llvm
set LLVM_SUPPORT_LIB_DIR=%LLVM_PATH%\lib\Support
set ELFTOOLCHAIN_PATH=C:\ws\sc\drivers\hsa\contrib\elftoolchain
set LIBELF_PATH=%ELFTOOLCHAIN_PATH%\libelf
set LIBDWARF_PATH=C:\ws\sc\drivers\sc\HSAIL\hsail-tools\libdwarf
Expand All @@ -12,11 +10,11 @@ cd ..
md build\win32
cd build\win32
set BUILD_SUBDIR=build\wNow\B_dbg
cmake -G "Visual Studio 12 2013" -DBUILD_HSAILASM=%BUILD_HSAILASM% -DBUILD_LIBBRIGDWARF=%BUILD_LIBBRIGDWARF% -DLLVM_PATH=%LLVM_PATH% -DLLVM_SUPPORT_LIB=%LLVM_SUPPORT_LIB_DIR%\%BUILD_SUBDIR%\LLVMSupport.lib "-DLIBELF_INCLUDE_DIRS=%LIBELF_PATH%;%LIBELF_PATH%/../common;%LIBELF_PATH%/../common/win32" -DLIBDWARF_INCLUDE_DIRS=%LIBDWARF_PATH%\src -DLIBELF_LIBRARIES=%LIBELF_PATH%\%BUILD_SUBDIR%\libelf.lib -DLIBDWARF_LIBRARIES=%LIBDWARF_PATH%\%BUILD_SUBDIR%\libdwarf.lib -DRE2C_EXECUTABLE=%RE2C_EXECUTABLE% -DCMAKE_INSTALL_PREFIX=dist %* ..\..
cmake -G "Visual Studio 12 2013" -DBUILD_HSAILASM=%BUILD_HSAILASM% -DBUILD_LIBBRIGDWARF=%BUILD_LIBBRIGDWARF% "-DLIBELF_INCLUDE_DIRS=%LIBELF_PATH%;%LIBELF_PATH%/../common;%LIBELF_PATH%/../common/win32" -DLIBDWARF_INCLUDE_DIRS=%LIBDWARF_PATH%\src -DLIBELF_LIBRARIES=%LIBELF_PATH%\%BUILD_SUBDIR%\libelf.lib -DLIBDWARF_LIBRARIES=%LIBDWARF_PATH%\%BUILD_SUBDIR%\libdwarf.lib -DRE2C_EXECUTABLE=%RE2C_EXECUTABLE% -DCMAKE_INSTALL_PREFIX=dist %* ..\..
cd ..\..

md build\win64
cd build\win64
set BUILD_SUBDIR=build\wNow64a\B_dbg
cmake -G "Visual Studio 12 2013 Win64" -DBUILD_HSAILASM=%BUILD_HSAILASM% -DBUILD_LIBBRIGDWARF=%BUILD_LIBBRIGDWARF% -DLLVM_PATH=%LLVM_PATH% -DLLVM_SUPPORT_LIB=%LLVM_SUPPORT_LIB_DIR%\%BUILD_SUBDIR%\LLVMSupport.lib "-DLIBELF_INCLUDE_DIRS=%LIBELF_PATH%;%LIBELF_PATH%/../common;%LIBELF_PATH%/../common/win32" -DLIBDWARF_INCLUDE_DIRS=%LIBDWARF_PATH%\src -DLIBELF_LIBRARIES=%LIBELF_PATH%\%BUILD_SUBDIR%\libelf.lib -DLIBDWARF_LIBRARIES=%LIBDWARF_PATH%\%BUILD_SUBDIR%\libdwarf.lib -DRE2C_EXECUTABLE=%RE2C_EXECUTABLE% -DCMAKE_INSTALL_PREFIX=dist %* ..\..
cmake -G "Visual Studio 12 2013 Win64" -DBUILD_HSAILASM=%BUILD_HSAILASM% -DBUILD_LIBBRIGDWARF=%BUILD_LIBBRIGDWARF% "-DLIBELF_INCLUDE_DIRS=%LIBELF_PATH%;%LIBELF_PATH%/../common;%LIBELF_PATH%/../common/win32" -DLIBDWARF_INCLUDE_DIRS=%LIBDWARF_PATH%\src -DLIBELF_LIBRARIES=%LIBELF_PATH%\%BUILD_SUBDIR%\libelf.lib -DLIBDWARF_LIBRARIES=%LIBDWARF_PATH%\%BUILD_SUBDIR%\libdwarf.lib -DRE2C_EXECUTABLE=%RE2C_EXECUTABLE% -DCMAKE_INSTALL_PREFIX=dist %* ..\..
cd ..\..
16 changes: 0 additions & 16 deletions cmake_modules/FindLLVM.cmake

This file was deleted.

2 changes: 1 addition & 1 deletion tests/1.0/syntax_validation/CMakeLists.txt
@@ -1,4 +1,4 @@
if (${SYNTAX_VALIDATION_TESTS})
if (SYNTAX_VALIDATION_TESTS)

set(HSAILASM $<TARGET_FILE:HSAILasm>)
if (MSVC)
Expand Down

0 comments on commit aef1692

Please sign in to comment.