Skip to content
This repository was archived by the owner on Mar 20, 2023. It is now read-only.

Commit daabf11

Browse files
author
Nicolas Cornu
authored
Use MOD2CPP instead of NMODL for variable use by NMODL and MOD2C (#418)
1 parent 08c2aeb commit daabf11

File tree

5 files changed

+28
-30
lines changed

5 files changed

+28
-30
lines changed

CMakeLists.txt

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -260,21 +260,21 @@ endif()
260260
if(CORENRN_ENABLE_NMODL)
261261
find_package(nmodl)
262262
if(nmodl_FOUND)
263-
set(CORENRN_NMODL_BINARY ${nmodl_BINARY})
264-
set(CORENRN_NMODL_INCLUDE ${nmodl_INCLUDE})
263+
set(CORENRN_MOD2CPP_BINARY ${nmodl_BINARY})
264+
set(CORENRN_MOD2CPP_INCLUDE ${nmodl_INCLUDE})
265265
# path to python interface
266266
set(ENV{PYTHONPATH} "${nmodl_PYTHONPATH}:$ENV{PYTHONPATH}")
267267
set(CORENRN_NMODL_PYTHONPATH $ENV{PYTHONPATH})
268268
else()
269269
include(AddNmodlSubmodule)
270-
set(CORENRN_NMODL_BINARY ${CMAKE_BINARY_DIR}/bin/nmodl${CMAKE_EXECUTABLE_SUFFIX})
271-
set(CORENRN_NMODL_INCLUDE ${CMAKE_BINARY_DIR}/include)
270+
set(CORENRN_MOD2CPP_BINARY ${CMAKE_BINARY_DIR}/bin/nmodl${CMAKE_EXECUTABLE_SUFFIX})
271+
set(CORENRN_MOD2CPP_INCLUDE ${CMAKE_BINARY_DIR}/include)
272272
set(ENV{PYTHONPATH} "$ENV{PYTHONPATH}")
273273
set(nmodl_PYTHONPATH "${CMAKE_BINARY_DIR}/lib")
274274
set(CORENRN_NMODL_PYTHONPATH "${nmodl_PYTHONPATH}:$ENV{PYTHONPATH}")
275275
set(NMODL_TARGET_TO_DEPEND nmodl)
276276
endif()
277-
include_directories(${CORENRN_NMODL_INCLUDE})
277+
include_directories(${CORENRN_MOD2CPP_INCLUDE})
278278
# set correct arguments for nmodl for cpu/gpu target
279279
set(CORENRN_NMODL_FLAGS
280280
""
@@ -285,8 +285,8 @@ if(CORENRN_ENABLE_NMODL)
285285
separate_arguments(NMODL_EXTRA_FLAGS_LIST UNIX_COMMAND "${CORENRN_NMODL_FLAGS}")
286286
else()
287287
include(AddMod2cSubmodule)
288-
set(CORENRN_NMODL_BINARY ${CMAKE_BINARY_DIR}/bin/mod2c_core${CMAKE_EXECUTABLE_SUFFIX})
289-
set(CORENRN_NMODL_INCLUDE ${CMAKE_BINARY_DIR}/include)
288+
set(CORENRN_MOD2CPP_BINARY ${CMAKE_BINARY_DIR}/bin/mod2c_core${CMAKE_EXECUTABLE_SUFFIX})
289+
set(CORENRN_MOD2CPP_INCLUDE ${CMAKE_BINARY_DIR}/include)
290290
endif()
291291

292292
# =============================================================================
@@ -411,12 +411,10 @@ if(cmake_generator_tolower MATCHES "makefile")
411411
message(STATUS "Use legacy units | ${CORENRN_ENABLE_LEGACY_UNITS}")
412412
message(STATUS "NMODL | ${CORENRN_ENABLE_NMODL}")
413413
if(CORENRN_ENABLE_NMODL)
414-
message(STATUS " PATH | ${CORENRN_NMODL_BINARY}")
415414
message(STATUS " ISPC | ${CORENRN_ENABLE_ISPC}")
416415
message(STATUS " FLAGS | ${CORENRN_NMODL_FLAGS}")
417-
else()
418-
message(STATUS "MOD2C | ${MOD2C_PROJ}")
419416
endif()
417+
message(STATUS "MOD2CPP PATH | ${CORENRN_MOD2CPP_BINARY}")
420418
message(STATUS "GPU Support | ${CORENRN_ENABLE_GPU}")
421419
if(CORENRN_ENABLE_GPU)
422420
message(STATUS " CUDA | ${CUDA_TOOLKIT_ROOT_DIR}")

coreneuron/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ set_target_properties(
168168
add_custom_target(
169169
nrniv-core ALL
170170
COMMAND ${CMAKE_BINARY_DIR}/bin/nrnivmodl-core -b STATIC
171-
-m ${CORENRN_NMODL_BINARY}
171+
-m ${CORENRN_MOD2CPP_BINARY}
172172
${CORENEURON_PROJECT_SOURCE_DIR}/tests/integration/ring_gap/mod
173173
WORKING_DIRECTORY
174174
${CMAKE_BINARY_DIR}/bin
@@ -247,7 +247,7 @@ install(FILES ${KINDERIV_PYTHON_SCRIPT} ${MODFUNC_PERL_SCRIPT} ${DIMPLIC_CODE_FI
247247
${ENGINEMECH_CODE_FILE} DESTINATION share/coreneuron)
248248

249249
# copy mod2c/nmodl for nrnivmodl-core
250-
install(PROGRAMS ${CORENRN_NMODL_BINARY} DESTINATION bin)
250+
install(PROGRAMS ${CORENRN_MOD2CPP_BINARY} DESTINATION bin)
251251

252252
if(NOT CORENRN_ENABLE_NMODL)
253253
install(FILES ${NMODL_UNITS_FILE} DESTINATION share/mod2c)

extra/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ else()
5656
endif()
5757

5858
# name of nmodl/mod2c binary
59-
get_filename_component(nmodl_name ${CORENRN_NMODL_BINARY} NAME)
59+
get_filename_component(nmodl_name ${CORENRN_MOD2CPP_BINARY} NAME)
6060
set(nmodl_binary_name ${nmodl_name})
6161

6262
# =============================================================================

extra/nrnivmodl-core.in

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ params_MODS_PATH="."
2626
params_BUILD_TYPE="@COMPILE_LIBRARY_TYPE@"
2727

2828
# prefix for common options : make sure to rename these if options are changed.
29-
MAKE_OPTIONS="MECHLIB_SUFFIX NMODL_BINARY NMODL_RUNTIME_FLAGS DEST_DIR INCFLAGS LINKFLAGS MODS_PATH VERBOSE BUILD_TYPE"
29+
MAKE_OPTIONS="MECHLIB_SUFFIX MOD2CPP_BINARY MOD2CPP_RUNTIME_FLAGS DEST_DIR INCFLAGS LINKFLAGS MODS_PATH VERBOSE BUILD_TYPE"
3030

3131
# parse CLI args
3232
while getopts "n:m:a:d:i:l:V:p:b:h" OPT; do
@@ -36,10 +36,10 @@ while getopts "n:m:a:d:i:l:V:p:b:h" OPT; do
3636
params_MECHLIB_SUFFIX="$OPTARG";;
3737
m)
3838
# nmodl or mod2c binary to use
39-
params_NMODL_BINARY="$OPTARG";;
39+
params_MOD2CPP_BINARY="$OPTARG";;
4040
a)
4141
# additional nmodl flags to be used
42-
params_NMODL_RUNTIME_FLAGS="$OPTARG";;
42+
params_MOD2CPP_RUNTIME_FLAGS="$OPTARG";;
4343
d)
4444
# destination install directory
4545
params_DEST_DIR="$OPTARG";;

extra/nrnivmodl_core_makefile.in

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ CORENRN_BIN_DIR := $(ROOT)/bin
2020
CORENRN_LIB_DIR := $(ROOT)/lib
2121
CORENRN_INC_DIR := $(ROOT)/include
2222
CORENRN_SHARE_CORENRN_DIR:= $(ROOT)/share/coreneuron
23-
CORENRN_SHARE_MOD2C_DIR := $(ROOT)/share/mod2c
23+
CORENRN_SHARE_MOD2CPP_DIR := $(ROOT)/share/mod2c
2424

2525
# file provided by coreneuron for solver
2626
DERIVIMPLICIT_CPP_FILE = $(CORENRN_SHARE_CORENRN_DIR)/dimplic.cpp
@@ -57,7 +57,7 @@ ISPC = @CMAKE_ISPC_COMPILER@
5757
ISPC_COMPILE_CMD = $(ISPC) @CMAKE_ISPC_FLAGS@ -I$(CORENRN_INC_DIR)
5858

5959
# env variables required for mod2c or nmodl
60-
NMODL_ENV_VAR = PYTHONPATH=@CORENRN_NMODL_PYTHONPATH@:${CORENRN_LIB_DIR}/python MODLUNIT=$(CORENRN_SHARE_MOD2C_DIR)/nrnunits.lib
60+
MOD2CPP_ENV_VAR = PYTHONPATH=@CORENRN_NMODL_PYTHONPATH@:${CORENRN_LIB_DIR}/python MODLUNIT=$(CORENRN_SHARE_MOD2CPP_DIR)/nrnunits.lib
6161

6262
# name of the mechanism library with suffix if provided
6363
COREMECH_LIB_NAME = corenrnmech$(if $(MECHLIB_SUFFIX),_$(MECHLIB_SUFFIX),)
@@ -82,11 +82,11 @@ endif
8282

8383
# Binary of MOD2C/NMODL depending on CMake option activated
8484
ifeq (@nmodl_FOUND@, TRUE)
85-
NMODL_BINARY_PATH = $(if $(NMODL_BINARY),$(NMODL_BINARY), @CORENRN_NMODL_BINARY@)
86-
INCLUDES += -I@CORENRN_NMODL_INCLUDE@
87-
ISPC_COMPILE_CMD += -I@CORENRN_NMODL_INCLUDE@
85+
MOD2CPP_BINARY_PATH = $(if $(MOD2CPP_BINARY),$(MOD2CPP_BINARY), @CORENRN_MOD2CPP_BINARY@)
86+
INCLUDES += -I@CORENRN_MOD2CPP_INCLUDE@
87+
ISPC_COMPILE_CMD += -I@CORENRN_MOD2CPP_INCLUDE@
8888
else
89-
NMODL_BINARY_PATH = $(if $(NMODL_BINARY),$(NMODL_BINARY), $(CORENRN_BIN_DIR)/@nmodl_binary_name@)
89+
MOD2CPP_BINARY_PATH = $(if $(MOD2CPP_BINARY),$(MOD2CPP_BINARY), $(CORENRN_BIN_DIR)/@nmodl_binary_name@)
9090
endif
9191

9292
# MOD files with full path, without path and names without .mod extension
@@ -141,16 +141,16 @@ ALL_OBJS = $(MOD_FUNC_OBJ) $(DIMPLIC_OBJ) $(mod_cpp_objs) $(mod_ispc_objs)
141141
C_RESET := \033[0m
142142
C_GREEN := \033[32m
143143

144-
# Default nmodl flags. Override if NMODL_RUNTIME_FLAGS is not empty
145-
NMODL_FLAGS_ISPC = $(if $(NMODL_RUNTIME_FLAGS),$(NMODL_RUNTIME_FLAGS),@nmodl_arguments_ispc@)
146-
NMODL_FLAGS_C = $(if $(NMODL_RUNTIME_FLAGS),$(NMODL_RUNTIME_FLAGS),@nmodl_arguments_c@)
144+
# Default nmodl flags. Override if MOD2CPP_RUNTIME_FLAGS is not empty
145+
NMODL_FLAGS_ISPC = $(if $(MOD2CPP_RUNTIME_FLAGS),$(MOD2CPP_RUNTIME_FLAGS),@nmodl_arguments_ispc@)
146+
MOD2CPP_FLAGS_C = $(if $(MOD2CPP_RUNTIME_FLAGS),$(MOD2CPP_RUNTIME_FLAGS),@nmodl_arguments_c@)
147147
ifeq (@CORENRN_ENABLE_ISPC@, ON)
148148
$(info Default nmodl flags: @nmodl_arguments_ispc@)
149149
else
150150
$(info Default nmodl flags: @nmodl_arguments_c@)
151151
endif
152-
ifneq ($(NMODL_RUNTIME_FLAGS),)
153-
$(warning Runtime nmodl flags (they replace the default ones): $(NMODL_RUNTIME_FLAGS))
152+
ifneq ($(MOD2CPP_RUNTIME_FLAGS),)
153+
$(warning Runtime nmodl flags (they replace the default ones): $(MOD2CPP_RUNTIME_FLAGS))
154154
endif
155155

156156
# ======== MAIN BUILD RULES ============
@@ -197,11 +197,11 @@ $(MOD_OBJS_DIR)/%.obj: $(MOD_TO_CPP_DIR)/%.ispc | $(MOD_OBJS_DIR)
197197

198198
# translate MOD files to ISPC using NMODL
199199
$(mod_ispc_files): $(MOD_TO_CPP_DIR)/%.ispc: $(MODS_PATH)/%.mod | $(MOD_TO_CPP_DIR)
200-
$(NMODL_ENV_VAR) $(NMODL_BINARY_PATH) $< -o $(MOD_TO_CPP_DIR)/ $(NMODL_FLAGS_ISPC)
200+
$(MOD2CPP_ENV_VAR) $(MOD2CPP_BINARY_PATH) $< -o $(MOD_TO_CPP_DIR)/ $(NMODL_FLAGS_ISPC)
201201

202202
# translate MOD files to CPP using mod2c/NMODL
203203
$(mod_cpp_files): $(MOD_TO_CPP_DIR)/%.cpp: $(MODS_PATH)/%.mod | $(MOD_TO_CPP_DIR)
204-
$(NMODL_ENV_VAR) $(NMODL_BINARY_PATH) $< -o $(MOD_TO_CPP_DIR)/ $(NMODL_FLAGS_C)
204+
$(MOD2CPP_ENV_VAR) $(MOD2CPP_BINARY_PATH) $< -o $(MOD_TO_CPP_DIR)/ $(MOD2CPP_FLAGS_C)
205205

206206
# static pattern to set up the dependencies for the previous recipe
207207
$(mod_ispc_cpp_files): $(MOD_TO_CPP_DIR)/%.cpp: $(MOD_TO_CPP_DIR)/%.ispc
@@ -218,7 +218,7 @@ $(KINDERIV_H_PATH): $(mod_cpp_files) build_always | $(MOD_TO_CPP_DIR)
218218
@PYTHON_EXECUTABLE@ $(CORENRN_SHARE_CORENRN_DIR)/kinderiv.py;
219219

220220
# symlink to cpp files provided by coreneuron
221-
$(MOD_TO_CPP_DIR)/%.cpp: $(CORENRN_SHARE_MOD2C_DIR)/%.cpp | $(MOD_TO_CPP_DIR)
221+
$(MOD_TO_CPP_DIR)/%.cpp: $(CORENRN_SHARE_MOD2CPP_DIR)/%.cpp | $(MOD_TO_CPP_DIR)
222222
ln -s $< $@
223223

224224
# to recompile dimplic.cpp for solvers

0 commit comments

Comments
 (0)