@@ -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