From c130f8862446c067d5afe4d4338c23f3f05347d1 Mon Sep 17 00:00:00 2001 From: Brent Huisman <brenthuisman@users.noreply.github.com> Date: Wed, 23 Nov 2022 12:46:55 +0100 Subject: [PATCH] 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 --- CMakeLists.txt | 13 +++++++++++-- modcc/CMakeLists.txt | 43 ++++++++++++++++++++++--------------------- 2 files changed, 33 insertions(+), 23 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 41675d28..bb84ea9d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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") diff --git a/modcc/CMakeLists.txt b/modcc/CMakeLists.txt index 59134b29..b5a4982f 100644 --- a/modcc/CMakeLists.txt +++ b/modcc/CMakeLists.txt @@ -1,4 +1,4 @@ -# 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}) -- GitLab