Hi all,

I am trying to build HPX with support for APEX and run into two issues.

First, the APEX CMake script for integrating APEX with HPX assumes that 
HPX is the main project (CMAKE_SOURCE_DIR is assumed to point to the HPX 
source dir, but in my case points to my project's source dir). I use the 
FetchContent module to integrate HPX into my project, which means my 
project is the main project. I think some paths in APEX' CMakeLists.hpx 
need to be adjusted, which I have done locally. Once I have the whole 
build working I can provide a patch or pull request with my edits.

Second, my build of HPX with support for APEX almost succeeds, but not 
completely (repro-case at bottom of this message):

/usr/bin/ld: cannot find -lhpx_cache
collect2: error: ld returned 1 exit status
_deps/hpx-build/src/CMakeFiles/hpx.dir/build.make:2769: recipe for 
target 'lib/libhpx.so.1.3.0' failed
make[2]: *** [lib/libhpx.so.1.3.0] Error 1
CMakeFiles/Makefile2:1112: recipe for target 
'_deps/hpx-build/src/CMakeFiles/hpx.dir/all' failed
Building with HPX_WITH_APEX=OFF succeeds, building with HPX_WITH_APEX=ON 
fails for lack of hpx_cache. I cannot find any reference to the 
hpx_cache library in the HPX and APEX sources. It is mentioned in three 
files in HPX' build directory, though:
./CMakeFiles/Export/lib/cmake/HPX/HPXTargets.cmake
./lib/cmake/HPX/HPXTargets.cmake
./src/CMakeFiles/hpx.dir/link.txt

The CMake scripts contain this snippet:
set_target_properties(apex PROPERTIES 

   INTERFACE_COMPILE_OPTIONS "-std=c++17" 

   INTERFACE_LINK_LIBRARIES "hpx_cache" 

)

Does anyone know how I can make my build succeed?

Thanks!

Kor



The simplest CMakeLists.txt with which I can recreate the issue is this one:

# dummy/CMakeLists.txt
cmake_minimum_required(VERSION 3.12)
project(dummy LANGUAGES CXX)

include(FetchContent)

set(HPX_WITH_EXAMPLES OFF CACHE BOOL "")
set(HPX_WITH_TESTS OFF CACHE BOOL "")
set(HPX_WITH_APEX ON CACHE BOOL "")

FetchContent_Declare(hpx
     GIT_REPOSITORY https://github.com/STEllAR-GROUP/hpx
     GIT_TAG 1.3.0
)

FetchContent_GetProperties(hpx)

if(NOT hpx_POPULATED)

     FetchContent_Populate(hpx)

     if(HPX_WITH_APEX)
         # I think something like this should be done in
         # APEX' CMakeLists.hpx
         include_directories(
             ${hpx_SOURCE_DIR}/libs/preprocessor/include
             ${hpx_SOURCE_DIR}/apex/src/apex
             ${hpx_SOURCE_DIR}/apex/src/contrib) 

     endif()

     add_subdirectory(${hpx_SOURCE_DIR} ${hpx_BINARY_DIR})

endif()
# / dummy/CMakeLists.txt

The project can be built (until the above link error) like this:

mkdir dummy/build
cd dummy/build
cmake ..
make
_______________________________________________
hpx-users mailing list
hpx-users@stellar.cct.lsu.edu
https://mail.cct.lsu.edu/mailman/listinfo/hpx-users

Reply via email to