Skip to content
Snippets Groups Projects
Unverified Commit c130f886 authored by Brent Huisman's avatar Brent Huisman Committed by GitHub
Browse files

Make ARB_MODCC functional again (#2029)

required for making an emscripten build of the arbor python library

* make ARB_MODCC functional again

* move add_subdir

* no modcc/CMakeLists.txt is needed also when external modcc is used.

* review
parent 1c05e806
No related branches found
No related tags found
No related merge requests found
......@@ -26,7 +26,7 @@ option(ARBDEV_COLOR "Always produce ANSI-colored output (GNU/Clang only)." OFF)
# Configure-time build options for Arbor:
#----------------------------------------------------------
# Specify target archiecture.
# Specify target architecture.
set(ARB_ARCH "native" CACHE STRING "Target architecture for arbor libraries")
......@@ -394,7 +394,16 @@ endif()
# Build modcc flags
#------------------------------------------------
set(modcc $<TARGET_FILE:modcc>)
if(ARB_MODCC)
find_program(modcc NAMES ${ARB_MODCC} NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH REQUIRED)
if(NOT modcc)
message(FATAL_ERROR "Unable to find modcc executable.")
endif()
set(ARB_WITH_EXTERNAL_MODCC TRUE)
else()
set(modcc $<TARGET_FILE:modcc>)
set(ARB_WITH_EXTERNAL_MODCC FALSE)
endif()
set(ARB_MODCC_FLAGS)
if(ARB_VECTORIZE)
list(APPEND ARB_MODCC_FLAGS "--simd")
......
# The modcc compiler is split into a staric library and driver;
# The modcc compiler is split into a static library and driver;
# unit tests for the driver also use this library.
set(libmodcc_sources
......@@ -54,27 +54,28 @@ set_target_properties(libmodcc PROPERTIES OUTPUT_NAME modcc)
export_visibility(libmodcc)
if (NOT ARB_WITH_EXTERNAL_MODCC)
add_executable(modcc ${modcc_sources})
add_executable(modcc ${modcc_sources})
if (ARB_USE_BUNDLED_FMT)
target_include_directories(modcc
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>
PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../ext/fmt/include>)
if (ARB_USE_BUNDLED_FMT)
target_include_directories(modcc
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>
PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../ext/fmt/include>)
target_compile_definitions(modcc PRIVATE FMT_HEADER_ONLY)
else()
target_include_directories(modcc
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>)
find_package(fmt REQUIRED)
target_link_libraries(modcc PRIVATE fmt::fmt-header-only)
endif()
target_compile_definitions(modcc PRIVATE FMT_HEADER_ONLY)
else()
target_include_directories(modcc
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>)
find_package(fmt REQUIRED)
target_link_libraries(modcc PRIVATE fmt::fmt-header-only)
target_link_libraries(modcc PRIVATE libmodcc ext-tinyopt)
set_target_properties(modcc libmodcc PROPERTIES EXCLUDE_FROM_ALL ${ARB_WITH_EXTERNAL_MODCC})
install(TARGETS modcc RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
endif()
target_link_libraries(modcc PRIVATE libmodcc ext-tinyopt)
set_target_properties(modcc libmodcc PROPERTIES EXCLUDE_FROM_ALL OFF)
install(TARGETS modcc RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment