@@ -73,11 +73,10 @@ message("LPYTHON_RTLIB_DIR: ${LPYTHON_RTLIB_DIR}")
73
73
message ("LPYTHON_RTLIB_LIBRARY: ${LPYTHON_RTLIB_LIBRARY} " )
74
74
75
75
76
- macro (RUN_UTIL RUN_FAIL RUN_NAME RUN_FILE_NAME RUN_IMPORT_PATH RUN_LABELS RUN_ENABLE_CPYTHON RUN_EXTRAFILES RUN_EXTRA_ARGS )
76
+ macro (RUN_UTIL RUN_FAIL RUN_NAME RUN_FILE_NAME RUN_LABELS RUN_ENABLE_CPYTHON RUN_EXTRAFILES RUN_EXTRA_ARGS )
77
77
set (fail ${${RUN_FAIL}} )
78
78
set (name ${${RUN_NAME}} )
79
79
set (file_name ${${RUN_FILE_NAME}} )
80
- set (import_path ${${RUN_IMPORT_PATH}} )
81
80
set (labels ${${RUN_LABELS}} )
82
81
set (run_enable_cpython ${${RUN_ENABLE_CPYTHON}} )
83
82
set (extra_files ${${RUN_EXTRAFILES}} )
@@ -89,19 +88,11 @@ macro(RUN_UTIL RUN_FAIL RUN_NAME RUN_FILE_NAME RUN_IMPORT_PATH RUN_LABELS RUN_EN
89
88
90
89
if (${KIND} IN_LIST labels )
91
90
if (KIND STREQUAL "llvm" )
92
- if (import_path )
93
- add_custom_command (
94
- OUTPUT ${name} .o
95
- COMMAND ${LPYTHON} -c -I ${CMAKE_CURRENT_SOURCE_DIR} /${import_path} ${extra_args} ${CMAKE_CURRENT_SOURCE_DIR} /${file_name}.py -o ${name} .o
96
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR} /${file_name}.py
97
- VERBATIM )
98
- else ()
99
- add_custom_command (
100
- OUTPUT ${name} .o
101
- COMMAND ${LPYTHON} -c ${extra_args} ${CMAKE_CURRENT_SOURCE_DIR} /${file_name}.py -o ${name} .o
102
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR} /${file_name}.py
103
- VERBATIM )
104
- endif ()
91
+ add_custom_command (
92
+ OUTPUT ${name} .o
93
+ COMMAND ${LPYTHON} -c ${extra_args} ${CMAKE_CURRENT_SOURCE_DIR} /${file_name}.py -o ${name} .o
94
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR} /${file_name}.py
95
+ VERBATIM )
105
96
add_executable (${name} ${name} .o ${extra_files} )
106
97
set_target_properties (${name} PROPERTIES LINKER_LANGUAGE C )
107
98
target_link_libraries (${name} lpython_rtlib )
@@ -113,30 +104,34 @@ macro(RUN_UTIL RUN_FAIL RUN_NAME RUN_FILE_NAME RUN_IMPORT_PATH RUN_LABELS RUN_EN
113
104
set_tests_properties (${name} PROPERTIES WILL_FAIL TRUE )
114
105
endif ()
115
106
elseif (KIND STREQUAL "c" )
116
- if (import_path )
117
- add_custom_command (
118
- OUTPUT ${name} .c
119
- COMMAND ${LPYTHON} ${extra_args} -I ${CMAKE_CURRENT_SOURCE_DIR} /${import_path} --show-c ${CMAKE_CURRENT_SOURCE_DIR} /${file_name}.py > ${name} .c
120
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR} /${file_name}.py
121
- VERBATIM )
122
- else ()
123
- add_custom_command (
124
- OUTPUT ${name} .c
125
- COMMAND ${LPYTHON} ${extra_args} --show-c ${CMAKE_CURRENT_SOURCE_DIR} /${file_name}.py > ${name} .c
126
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR} /${file_name}.py
127
- VERBATIM )
128
- endif ()
129
-
107
+ add_custom_command (
108
+ OUTPUT ${name} .c
109
+ COMMAND ${LPYTHON} ${extra_args} --show-c ${CMAKE_CURRENT_SOURCE_DIR} /${file_name}.py > ${name} .c
110
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR} /${file_name}.py
111
+ VERBATIM )
130
112
add_executable (${name} ${name} .c ${extra_files} )
131
113
target_include_directories (${name} PRIVATE ${CMAKE_SOURCE_DIR} )
132
114
set_target_properties (${name} PROPERTIES LINKER_LANGUAGE C )
133
115
target_link_libraries (${name} lpython_rtlib )
134
- if (run_enable_cpython )
135
- target_include_directories (${name} PRIVATE ${NUMPY_INCLUDE_DIR} )
136
- target_link_libraries (${name} Python::Python )
137
- if (extra_files )
138
- file (COPY ${CMAKE_CURRENT_SOURCE_DIR} /${extra_files} DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
139
- endif ()
116
+ add_test (${name} ${CMAKE_CURRENT_BINARY_DIR} /${name} )
117
+ if (labels )
118
+ set_tests_properties (${name} PROPERTIES LABELS "${labels} " )
119
+ endif ()
120
+ if (${fail} )
121
+ set_tests_properties (${name} PROPERTIES WILL_FAIL TRUE )
122
+ endif ()
123
+ elseif (KIND STREQUAL "c_py" )
124
+ add_custom_command (
125
+ OUTPUT ${name} .c
126
+ COMMAND ${LPYTHON} ${extra_args} --show-c ${CMAKE_CURRENT_SOURCE_DIR} /${file_name}.py > ${name} .c
127
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR} /${file_name}.py
128
+ VERBATIM )
129
+ add_executable (${name} ${name} .c ${extra_files} )
130
+ target_include_directories (${name} PRIVATE ${CMAKE_SOURCE_DIR} ${NUMPY_INCLUDE_DIR} )
131
+ set_target_properties (${name} PROPERTIES LINKER_LANGUAGE C )
132
+ target_link_libraries (${name} lpython_rtlib Python::Python )
133
+ if (extra_files )
134
+ file (COPY ${CMAKE_CURRENT_SOURCE_DIR} /${extra_files} DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
140
135
endif ()
141
136
add_test (${name} ${CMAKE_CURRENT_BINARY_DIR} /${name} )
142
137
if (labels )
@@ -145,7 +140,7 @@ macro(RUN_UTIL RUN_FAIL RUN_NAME RUN_FILE_NAME RUN_IMPORT_PATH RUN_LABELS RUN_EN
145
140
if (${fail} )
146
141
set_tests_properties (${name} PROPERTIES WILL_FAIL TRUE )
147
142
endif ()
148
- elseif (KIND STREQUAL "cpython" )
143
+ elseif (( KIND STREQUAL "cpython" ) OR ( KIND STREQUAL "cpython_py" ) )
149
144
# CPython test
150
145
if (extra_files )
151
146
set (PY_MOD "${name} _mod" )
@@ -243,7 +238,7 @@ macro(RUN_UTIL RUN_FAIL RUN_NAME RUN_FILE_NAME RUN_IMPORT_PATH RUN_LABELS RUN_EN
243
238
endmacro (RUN_UTIL )
244
239
245
240
macro (RUN )
246
- set (options FAIL NOFAST ENABLE_CPYTHON ENABLE_CNUMPY )
241
+ set (options FAIL NOFAST ENABLE_CPYTHON LINK_NUMPY )
247
242
set (oneValueArgs NAME IMPORT_PATH )
248
243
set (multiValueArgs LABELS EXTRAFILES )
249
244
cmake_parse_arguments (RUN "${options} " "${oneValueArgs} "
@@ -252,21 +247,28 @@ macro(RUN)
252
247
set (RUN_EXTRA_ARGS "" )
253
248
set (RUN_FILE_NAME ${RUN_NAME} )
254
249
250
+ if (RUN_LINK_NUMPY )
251
+ set (RUN_EXTRA_ARGS ${RUN_EXTRA_ARGS} --link-numpy )
252
+ set (RUN_ENABLE_CPYTHON TRUE )
253
+ endif ()
254
+
255
255
if (RUN_ENABLE_CPYTHON )
256
256
set (RUN_EXTRA_ARGS ${RUN_EXTRA_ARGS} --enable-cpython )
257
257
endif ()
258
258
259
- if (RUN_ENABLE_CNUMPY )
260
- set (RUN_EXTRA_ARGS ${RUN_EXTRA_ARGS} --enable-cnumpy )
259
+ if (RUN_IMPORT_PATH )
260
+ # Only one import path supported for now
261
+ # Later add support for multiple import paths by looping over and appending to extra args
262
+ set (RUN_EXTRA_ARGS ${RUN_EXTRA_ARGS} -I${CMAKE_CURRENT_SOURCE_DIR}/${RUN_IMPORT_PATH} )
261
263
endif ()
262
264
263
- RUN_UTIL (RUN_FAIL RUN_NAME RUN_FILE_NAME RUN_IMPORT_PATH RUN_LABELS RUN_ENABLE_CPYTHON RUN_EXTRAFILES RUN_EXTRA_ARGS )
265
+ RUN_UTIL (RUN_FAIL RUN_NAME RUN_FILE_NAME RUN_LABELS RUN_ENABLE_CPYTHON RUN_EXTRAFILES RUN_EXTRA_ARGS )
264
266
265
267
if ((NOT DISABLE_FAST ) AND (NOT RUN_NOFAST ))
266
268
set (RUN_EXTRA_ARGS ${RUN_EXTRA_ARGS} --fast )
267
269
set (RUN_NAME "${RUN_NAME} _FAST" )
268
- list (REMOVE_ITEM RUN_LABELS cpython ) # remove cpython from --fast test
269
- RUN_UTIL (RUN_FAIL RUN_NAME RUN_FILE_NAME RUN_IMPORT_PATH RUN_LABELS RUN_ENABLE_CPYTHON RUN_EXTRAFILES RUN_EXTRA_ARGS )
270
+ list (REMOVE_ITEM RUN_LABELS cpython cpython_py ) # remove cpython, cpython_py from --fast test
271
+ RUN_UTIL (RUN_FAIL RUN_NAME RUN_FILE_NAME RUN_LABELS RUN_ENABLE_CPYTHON RUN_EXTRAFILES RUN_EXTRA_ARGS )
270
272
endif ()
271
273
endmacro (RUN )
272
274
@@ -280,43 +282,31 @@ macro(COMPILE)
280
282
cmake_parse_arguments (COMPILE "${options} " "${oneValueArgs} "
281
283
"${multiValueArgs} " ${ARGN} )
282
284
set (name ${COMPILE_NAME} )
283
- set (import_path ${COMPILE_IMPORT_PATH} )
284
285
if (NOT name )
285
286
message (FATAL_ERROR "Must specify the NAME argument" )
286
287
endif ()
287
288
289
+ set (extra_args "" )
290
+ if (COMPILE_IMPORT_PATH )
291
+ # Only one import path supported for now
292
+ # Later add support for multiple import paths by looping over and appending to extra args
293
+ set (extra_args ${extra_args} -I${CMAKE_CURRENT_SOURCE_DIR}/${COMPILE_IMPORT_PATH} )
294
+ endif ()
295
+
288
296
if (${KIND} IN_LIST COMPILE_LABELS )
289
297
if (KIND STREQUAL "llvm" )
290
- if (import_path )
291
- add_custom_command (
292
- OUTPUT ${name} .o
293
- COMMAND ${LPYTHON} --disable-main -c -I ${CMAKE_CURRENT_SOURCE_DIR} /${import_path} ${CMAKE_CURRENT_SOURCE_DIR} /${name}.py -o ${name} .o
294
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR} /${name}.py
295
- VERBATIM )
296
- else ()
297
- add_custom_command (
298
- OUTPUT ${name} .o
299
- COMMAND ${LPYTHON} --disable-main -c ${CMAKE_CURRENT_SOURCE_DIR} /${name}.py -o ${name} .o
300
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR} /${name}.py
301
- VERBATIM )
302
- endif ()
303
-
298
+ add_custom_command (
299
+ OUTPUT ${name} .o
300
+ COMMAND ${LPYTHON} ${extra_args} --disable-main -c ${CMAKE_CURRENT_SOURCE_DIR} /${name}.py -o ${name} .o
301
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR} /${name}.py
302
+ VERBATIM )
304
303
add_library (${name} OBJECT ${name} .o )
305
304
elseif (KIND STREQUAL "c" )
306
- if (import_path )
307
- add_custom_command (
308
- OUTPUT ${name} .c
309
- COMMAND ${LPYTHON} --disable-main -I ${CMAKE_CURRENT_SOURCE_DIR} /${import_path} --show-c ${CMAKE_CURRENT_SOURCE_DIR} /${name}.py > ${name} .c
310
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR} /${name}.py
311
- VERBATIM )
312
- else ()
313
- add_custom_command (
314
- OUTPUT ${name} .c
315
- COMMAND ${LPYTHON} --disable-main --show-c ${CMAKE_CURRENT_SOURCE_DIR} /${name}.py > ${name} .c
316
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR} /${name}.py
317
- VERBATIM )
318
- endif ()
319
-
305
+ add_custom_command (
306
+ OUTPUT ${name} .c
307
+ COMMAND ${LPYTHON} ${extra_args} --disable-main --show-c ${CMAKE_CURRENT_SOURCE_DIR} /${name}.py > ${name} .c
308
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR} /${name}.py
309
+ VERBATIM )
320
310
add_library (${name} OBJECT ${name} .c )
321
311
target_link_libraries (${name} lpython_rtlib )
322
312
elseif (KIND STREQUAL "cpython" )
@@ -515,8 +505,8 @@ RUN(NAME bindc_05 LABELS llvm c
515
505
EXTRAFILES bindc_05b.c )
516
506
RUN (NAME bindc_06 LABELS llvm c
517
507
EXTRAFILES bindc_06b.c )
518
- RUN (NAME bindpy_01 LABELS cpython c ENABLE_CPYTHON NOFAST EXTRAFILES bindpy_01_module.py )
519
- RUN (NAME bindpy_02 LABELS cpython c ENABLE_CPYTHON ENABLE_CNUMPY EXTRAFILES bindpy_02_module.py )
508
+ RUN (NAME bindpy_01 LABELS cpython_py c_py ENABLE_CPYTHON NOFAST EXTRAFILES bindpy_01_module.py )
509
+ RUN (NAME bindpy_02 LABELS cpython_py c_py LINK_NUMPY EXTRAFILES bindpy_02_module.py )
520
510
RUN (NAME test_generics_01 LABELS cpython llvm c NOFAST )
521
511
RUN (NAME test_cmath LABELS cpython llvm c NOFAST )
522
512
RUN (NAME test_complex_01 LABELS cpython llvm c wasm wasm_x64 )
0 commit comments