@@ -50,47 +50,10 @@ set(KINDERIV_PYTHON_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/kinderiv.py")
5050set (KINDERIV_HEADER_FILE "${CMAKE_CURRENT_BINARY_DIR} /_kinderiv.h" )
5151
5252set (NMODL_UNITS_FILE "${CMAKE_BINARY_DIR} /share/nrnunits.lib" )
53- set (INBUILT_MOD_PATH "mechanism/mech/modfile" )
54- set (INBUILT_MOD_FILES
55- expsyn.mod
56- exp2syn.mod
57- hh.mod
58- netstim.mod
59- passive.mod
60- pattern.mod
61- stim.mod)
62-
63- # Has helper macro for generating cpp file from mod2c
64- include (NmodlHelper)
6553
66- # =============================================================================
67- # Command for MOD to CPP conversion
68- # =============================================================================
69- set (CORENRN_NMODL_COMMAND env "MODLUNIT=${NMODL_UNITS_FILE} "
70- "PYTHONPATH=${CORENRN_NMODL_PYTHONPATH} " ${CORENRN_NMODL_BINARY} )
71-
72- if (${CORENRN_ENABLE_ISPC} )
73- set (NMODL_CODEGEN_TARGET ispc)
74- else ()
75- set (NMODL_CODEGEN_TARGET serial)
76- endif ()
77-
78- # configure every mod file to configure with mod2c/nmodl
79- foreach (MOD ${INBUILT_MOD_FILES} )
80- nmodl_to_cpp_target(KEY INBUILT_MOD MODFILE "${INBUILT_MOD_PATH} /${MOD} " TARGET
81- ${NMODL_CODEGEN_TARGET} )
82- endforeach ()
83-
84- set_source_files_properties (${NMODL_INBUILT_MOD_OUTPUTS} PROPERTIES GENERATED TRUE )
85-
86- # for ispc generated files, we need add extra compilation flags
87- if (CORENRN_ENABLE_ISPC)
88- set (NMODL_ISPC_INBUILT_MOD_OUTPUTS ${NMODL_INBUILT_MOD_OUTPUTS} )
89- list (FILTER NMODL_ISPC_INBUILT_MOD_OUTPUTS INCLUDE REGEX ".*\. ispc$" )
90- set_source_files_properties (${NMODL_ISPC_INBUILT_MOD_OUTPUTS} PROPERTIES LANGUAGE ISPC)
91- set_source_files_properties (${NMODL_ISPC_INBUILT_MOD_OUTPUTS} PROPERTIES COMPILE_FLAGS
92- "-I${CORENRN_NMODL_INCLUDE} --pic" )
93- endif ()
54+ # copy inbuilt mod files to share
55+ file (COPY ${CORENEURON_PROJECT_SOURCE_DIR} /coreneuron/mechanism/mech/modfile
56+ DESTINATION ${CMAKE_BINARY_DIR} /share)
9457
9558# =============================================================================
9659# coreneuron GPU library
@@ -155,18 +118,14 @@ add_custom_target(kin_deriv_header DEPENDS "${KINDERIV_HEADER_FILE}")
155118# main coreneuron library
156119add_library (
157120 coreneuron ${COMPILE_LIBRARY_TYPE} ${CORENEURON_HEADER_FILES} ${CORENEURON_TEMPLATE_FILES}
158- ${CORENEURON_CODE_FILES} ${cudacorenrn_objs} ${NMODL_INBUILT_MOD_OUTPUTS} )
121+ ${CORENEURON_CODE_FILES} ${cudacorenrn_objs} ${NMODL_INBUILT_MOD_OUTPUTS} )
159122
160123# need to have _kinderiv.h for mod2c generated files
161124add_dependencies (coreneuron kin_deriv_header)
162125
163126# scopmath is created separately for nrnivmodl-core workflow
164127add_library (scopmath STATIC ${CORENEURON_HEADER_FILES} ${SCOPMATH_CODE_FILES} )
165128
166- # minimal main and dimplic file for nrnivmodl-core workflow
167- add_library (corenrnmech ${COMPILE_LIBRARY_TYPE} ${CORENEURON_HEADER_FILES} ${ENGINEMECH_CODE_FILE}
168- ${DIMPLIC_CODE_FILE} )
169-
170129target_link_libraries (
171130 coreneuron
172131 ${MPI_C_LIBRARIES}
@@ -182,35 +141,26 @@ target_include_directories(coreneuron SYSTEM
182141target_include_directories (coreneuron SYSTEM
183142 PRIVATE ${CORENEURON_PROJECT_SOURCE_DIR} /external/CLI11/include )
184143
185- target_link_libraries (corenrnmech scopmath coreneuron)
186-
187144set_target_properties (
188- coreneuron corenrnmech scopmath ${link_cudacoreneuron}
145+ coreneuron scopmath ${link_cudacoreneuron}
189146 PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /lib LIBRARY_OUTPUT_DIRECTORY
190147 ${CMAKE_BINARY_DIR} /lib POSITION_INDEPENDENT_CODE ON )
191148
192149# =============================================================================
193150# create special-core with halfgap.mod for tests
194151# =============================================================================
195- add_custom_command (
196- TARGET coreneuron POST_BUILD
197- COMMAND ${CMAKE_BINARY_DIR} /bin/nrnivmodl-core
152+ add_custom_target (
153+ nrniv-core ALL
154+ COMMAND ${CMAKE_BINARY_DIR} /bin/nrnivmodl-core -b STATIC
198155 ${CORENEURON_PROJECT_SOURCE_DIR} /tests/integration/ring_gap/mod
199- WORKING_DIRECTORY ${CMAKE_BINARY_DIR} /bin
200- BYPRODUCTS ${CMAKE_BINARY_DIR} /bin/${CMAKE_SYSTEM_PROCESSOR} /special-core
156+ WORKING_DIRECTORY
157+ ${CMAKE_BINARY_DIR} /bin
158+ BYPRODUCTS
159+ ${CMAKE_BINARY_DIR} /bin/${CMAKE_SYSTEM_PROCESSOR} /special-core
201160 COMMENT "Running nrnivmodl-core with halfgap.mod" )
202- add_dependencies (coreneuron scopmath)
161+ add_dependencies (nrniv-core scopmath coreneuron ${NMODL_TARGET_TO_DEPEND} )
203162
204- # =============================================================================
205- # create nrnivmodl-core
206- # =============================================================================
207- # coreneuron executable
208163include_directories (${CORENEURON_PROJECT_SOURCE_DIR} )
209- add_executable (nrniv-core "apps/coreneuron.cpp" )
210-
211- target_link_libraries (nrniv-core corenrnmech ${reportinglib_LIBRARY} ${sonatareport_LIBRARY} )
212-
213- set_target_properties (nrniv-core PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /bin)
214164
215165# =============================================================================
216166# Extract link definitions to be used with nrnivmodl-core
@@ -255,6 +205,7 @@ if(NOT CORENRN_ENABLE_NMODL)
255205 file (MAKE_DIRECTORY "${CMAKE_BINARY_DIR} /share/mod2c/" )
256206 add_custom_target (link_units ALL COMMAND ${CMAKE_COMMAND} -E create_symlink "${NMODL_UNITS_FILE} "
257207 "${CMAKE_BINARY_DIR} /share/mod2c/nrnunits.lib" )
208+ add_dependencies (nrniv-core link_units)
258209endif ()
259210
260211# main program required for building special-core
@@ -266,7 +217,7 @@ file(COPY apps/coreneuron.cpp DESTINATION ${CMAKE_BINARY_DIR}/share/coreneuron)
266217
267218# coreneuron main libraries
268219install (
269- TARGETS coreneuron corenrnmech ${link_cudacoreneuron}
220+ TARGETS coreneuron ${link_cudacoreneuron}
270221 EXPORT coreneuron
271222 LIBRARY DESTINATION lib
272223 ARCHIVE DESTINATION lib
@@ -297,8 +248,14 @@ if(NOT CORENRN_ENABLE_NMODL)
297248endif ()
298249
299250# install nrniv-core app
300- install (TARGETS nrniv-core DESTINATION bin)
251+ install (
252+ PROGRAMS ${CMAKE_BINARY_DIR} /bin/${CMAKE_HOST_SYSTEM_PROCESSOR} /special-core
253+ DESTINATION bin
254+ RENAME nrniv-core)
301255install (FILES apps/coreneuron.cpp DESTINATION share/coreneuron)
302256
303257# install random123 and nmodl headers
304258install (DIRECTORY ${CMAKE_BINARY_DIR} /include / DESTINATION include )
259+
260+ # install mod files
261+ install (DIRECTORY ${CMAKE_BINARY_DIR} /share/modfile DESTINATION share)
0 commit comments