This change refactors the current ROCclr cmake build to accomodate a
more modular approach. This allows easier support for multiple compiler
and/or multiple runtime backends.
Currently supported compilers:
HSAIL - enabled by ROCCLR_ENABLE_HSAIL (defaults to OFF)
LC - enabled by ROCCLR_ENABLE_LC (defaults to ON)
Currently supported runtimes:
HSA - enabled by ROCCLR_ENABLE_HSA (defaults to ON)
PAL - enabled by ROCCLR_ENABLE_PAL (defaults to OFF)
Any configuration is supported as long as at least one compiler and one
runtime is enabled.
Since ROCclr clients can configure it differently, one cannot reuse the
same ROCclr build artifacts between different clients. To assure this,
this patch assumes that ROCclr will be built as part of the clients
project.
Change-Id: Id4a5c43634296802b8ae87d1ad5984968391ccaf
[ROCm/clr commit: 7f0c18457d]
This change makes HSAIL usage similar to that of Comgr. By default, the
runtime will statically link against it, however if HSAIL_DYN_DLL is
defined, then the runtime will try to dynamically load HSAIL.
Currently stick to statically linking to HSAIL. In a feature patch the
dynamic loading behaviour will be enabled.
Change-Id: I6a78a4375975cf847f236b200404c8cf941d012b
[ROCm/clr commit: c7b50bb890]
This change unifies the hostcall implementation for all the backends,
by pushing the common logic to the device layer. This is done by
replacing the use of hsa_signal_t with device::Signal (a light wrapper
around it).
Change-Id: I7b6fca7930b5a0b199da5d85e2e048354cc04e7b
[ROCm/clr commit: 671778bdd3]
HIP or any ROCm component above HIP may not be calling
hsa-runtime directly. OpenCl and HIP are the two components
calling ROCclr and to bring in the transitive dependency of
thunk,ROCR,amd_comgr it is better to have the dependency
chain set correctly in the ROCclr cmake target. With this
change OpenCl or HIP should not be setting ROCR dependency
directly.
This helps to link OpenCl(libamdocl.so) link statically with
comgr,hsa,thunk.
Change-Id: I0d538b7abc6a0ce700ec3332b97fc144db5fc5ff
[ROCm/clr commit: 6b8ae3dd77]
If numa lib is in building system, define ROCCLR_NUMA_SUPPORT to
support numa; otherwise, don't support numa.
Change-Id: I3848d7fdec5a3813ff1edad9b71ff04372dc0b9a
[ROCm/clr commit: 214827defa]
Add "BUILD_SHARED_LIBS" flag to cmake file.
To build libamdhip64.so, you don't need change cmake cmd.
To build libamdhip64.a, you need append
-DBUILD_SHARED_LIBS=OFF
to cmake cmd.
Change-Id: Ibc30ed52963314b2b8cc1df73c360fc1ba15780a
[ROCm/clr commit: 4d67856bed]
There weren't all that many to fix, and it's not even the most
prevalent warning.
Change-Id: I286aaa42e3c4e305b1e1918f302bbf71e41dd47d
[ROCm/clr commit: 3a564bc6cb]
Enabling anything beyond -Wall like -Wextra or -pedantic seems impossible as our code base explodes in thousands of warnings.
-Wno-unused-{variable/function} is not present in the p4 build, but with gcc7.4.0 we get hundreds of instances of this warning being triggered in the code base.
With this change only two warnings show up during the build - -Wsequence-point and -Wunused-but-set-variable. The fix for the first is alredy in review.
Change-Id: I2ff37981377487b0e07fd9490498e38a60792c0c
[ROCm/clr commit: 947dbe82fb]
Fix a build error in centos 6.10. When linking, ld cannot find function
clock_getres. This function is from librt (for glibc version before 2.17).
Change-Id: I698f768d0618a054d5d0fc73b9f1916a7ce542fb
[ROCm/clr commit: 9a8bd9e68b]
Currently the opencl build hardcodes the path and directly includes
amdvdi_staticTargets.cmake. The proper way to find this is through
find_package, so start exporting the expected format.
Change-Id: Ic960a2dd467d57867cb96ab831dbd85bca336535
[ROCm/clr commit: 8988f34935]
Eliminates most of the global include_directories. The install header
paths are different from the build directory, so we have to separate
those for the exported target include paths.
Change-Id: I13e4c56c1218cb31c29a316422dc5fd1d09d8b1b
[ROCm/clr commit: 3a7f2e3682]
This partially avoids a difference in the include paths between a
build and install tree, and simplifies the install configuration.
Change-Id: If8119507594e0d284ac08c141c6c51c88ec619ef
[ROCm/clr commit: 199f6114d0]
Object libraries are weird, and producing a library by using the
target objects from them doesn't automatically import the interface
properties of the linked targets. These object libraries only have
single uses, so just directly create the final library from the
sources.
Leaves libelf as an object library, since there seems to be some cmake
oddity when trying to link an unexported target to an exported one.
Change-Id: Ic379612c89340c40085c9862cfe111fa4bbff425
[ROCm/clr commit: cba7a4d20e]
There's a lot of unnecessary system configuration junk here which
isn't used, and is already available through compiler predefines. This
is also blindly placed without really checking the host architecture.
-DLINUX is unused.
-D__AMD64__ is predefined by the compiler, and is also redundant with
__x86_64__ and ATI_BITS_64.
__x86_64__ should also be removed. It's used in libelf, but I'm not
sure if msvc predefines this or not.
-DqLittleEndian is unused, and also doesn't follow macro naming
conventions (plus compilers have their own predefines for checking
this).
Change-Id: I89f6fc4c88e861623be7f32df41aecbb4e9009ab
[ROCm/clr commit: e7d6a5e5a6]
This should allow the cmake build for the opencl runtime to work
without manually adding these definitions. The PAL build also adds
these as private defines in its build, so change rocm to match. This
should probably be including these a config header to benefit other
builds, but this will at least avoid some clutter in the opencl build
for now.
Change-Id: I1044984b87ba3fc72e280e255ceea2dd9e3337ff
[ROCm/clr commit: c60d7d860d]
Use target specific forms for define/include. Don't set
CMAKE_CXX_FLAGS for the standard, which is already implied from the
parent build.
Change-Id: I4000893376d6685e9889b66ad8451fc493020272
[ROCm/clr commit: 815198bec9]
Don't use find_path on the header, it's redundant with the interface
include directories on the imported target. Use the target specific
forms for including and linking it.
Change-Id: I3923143c992888ee7d5ee1130084ac2e5eaa0f3a
[ROCm/clr commit: 83455f36c5]
This is almost never the correct thing to use since it breaks adding
this as a subproject build in a larger build. Switch to refer to
CMAKE_CURRENT_SOURCE_DIR, which is equivalent in a standalone build.
Change-Id: Ib8dbbc0668491f4227389b9a5b27da770b3bc5ce
[ROCm/clr commit: a36f19df51]