Skip to content

Commit b89af01

Browse files
authored
Merge pull request #167 from cyyber/master
Changes to support CMake versions greater than 3.10.3 for pyqrllib
2 parents d636382 + 93a31f7 commit b89af01

File tree

1 file changed

+106
-61
lines changed

1 file changed

+106
-61
lines changed

CMakeLists.txt

Lines changed: 106 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,15 @@ project(qrllib)
66

77
set(CMAKE_CXX_STANDARD 14)
88
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -Wall -Wextra -pedantic")
9+
if(${CMAKE_VERSION} VERSION_GREATER "3.10.3")
10+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
11+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread")
12+
endif()
913
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wno-deprecated-declarations")
1014
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -O3 -Wno-deprecated")
15+
if(${CMAKE_VERSION} VERSION_GREATER "3.13")
16+
cmake_policy(SET CMP0078 OLD)
17+
endif()
1118

1219
set(CMAKE_VERBOSE_MAKEFILE TRUE)
1320
set(CMAKE_ERROR_DEPRECATED FALSE)
@@ -275,12 +282,24 @@ if (BUILD_PYTHON)
275282

276283
# Intentionally use a deprecated version to provide support for the raspberry pi
277284
# Basic pyqrllib - XmssBasic, etc.
278-
SWIG_ADD_MODULE(pyqrllib
279-
${language}
280-
${SWIG_INTERFACE}
281-
${LIB_QRL_SRC}
282-
${LIBXMSSALT_SRC}
283-
)
285+
if(${CMAKE_VERSION} VERSION_LESS_EQUAL "3.10.3")
286+
SWIG_ADD_MODULE(pyqrllib
287+
${language}
288+
${SWIG_INTERFACE}
289+
${LIB_QRL_SRC}
290+
${LIBXMSSALT_SRC}
291+
)
292+
else()
293+
SWIG_ADD_LIBRARY(pyqrllib
294+
LANGUAGE ${language}
295+
OUTPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/pyqrllib/
296+
OUTFILE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/pyqrllib/
297+
TYPE MODULE
298+
SOURCES ${SWIG_INTERFACE}
299+
${LIB_QRL_SRC}
300+
${LIBXMSSALT_SRC}
301+
)
302+
endif()
284303

285304
SWIG_LINK_LIBRARIES(pyqrllib
286305
shasha
@@ -291,21 +310,21 @@ if (BUILD_PYTHON)
291310
${LIB_QRL_INCLUDES}
292311
${LIB_SHASHA_INCLUDES}
293312
)
294-
295-
add_custom_command(TARGET ${SWIG_MODULE_pyqrllib_REAL_NAME}
296-
POST_BUILD
297-
COMMENT "Moving SWIG files to output dir"
298-
COMMAND ${CMAKE_COMMAND} -E
299-
copy_if_different $<TARGET_FILE:${SWIG_MODULE_pyqrllib_REAL_NAME}>
300-
${CMAKE_CURRENT_SOURCE_DIR}/pyqrllib/$<TARGET_LINKER_FILE_NAME:${SWIG_MODULE_pyqrllib_REAL_NAME}>
301-
)
302-
303-
add_custom_command(TARGET ${SWIG_MODULE_pyqrllib_REAL_NAME}
304-
POST_BUILD
305-
COMMENT ${swig_extra_generated_files}
306-
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${swig_extra_generated_files} ${CMAKE_CURRENT_SOURCE_DIR}/pyqrllib/pyqrllib.py
307-
)
308-
313+
if(${CMAKE_VERSION} VERSION_LESS_EQUAL "3.10.3")
314+
add_custom_command(TARGET ${SWIG_MODULE_pyqrllib_REAL_NAME}
315+
POST_BUILD
316+
COMMENT "Moving SWIG files to output dir"
317+
COMMAND ${CMAKE_COMMAND} -E
318+
copy_if_different $<TARGET_FILE:${SWIG_MODULE_pyqrllib_REAL_NAME}>
319+
${CMAKE_CURRENT_SOURCE_DIR}/pyqrllib/$<TARGET_LINKER_FILE_NAME:${SWIG_MODULE_pyqrllib_REAL_NAME}>
320+
)
321+
322+
add_custom_command(TARGET ${SWIG_MODULE_pyqrllib_REAL_NAME}
323+
POST_BUILD
324+
COMMENT ${swig_extra_generated_files}
325+
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${swig_extra_generated_files} ${CMAKE_CURRENT_SOURCE_DIR}/pyqrllib/pyqrllib.py
326+
)
327+
endif()
309328
###################################################
310329
# Dilithium
311330
set(SWIG_INTERFACE src/api/dilithium.i)
@@ -323,30 +342,43 @@ if (BUILD_PYTHON)
323342
${LIB_DILITHIUM_INCLUDES}
324343
)
325344

326-
SWIG_ADD_MODULE(dilithium
327-
${language}
328-
${SWIG_INTERFACE}
329-
${LIB_DILITHIUM_SRC}
330-
${REF_DILITHIUM_SRC}
331-
)
345+
if(${CMAKE_VERSION} VERSION_LESS_EQUAL "3.10.3")
346+
SWIG_ADD_MODULE(dilithium
347+
${language}
348+
${SWIG_INTERFACE}
349+
${LIB_DILITHIUM_SRC}
350+
${REF_DILITHIUM_SRC}
351+
)
352+
else()
353+
SWIG_ADD_LIBRARY(dilithium
354+
LANGUAGE ${language}
355+
OUTPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/pyqrllib/
356+
OUTFILE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/pyqrllib/
357+
TYPE MODULE
358+
SOURCES ${SWIG_INTERFACE}
359+
${LIB_DILITHIUM_SRC}
360+
${REF_DILITHIUM_SRC}
361+
)
362+
endif()
332363

333364
SWIG_LINK_LIBRARIES(dilithium
334365
${SWIG_LANG_LIBRARIES})
335366

336-
add_custom_command(TARGET ${SWIG_MODULE_dilithium_REAL_NAME}
337-
POST_BUILD
338-
COMMENT "Moving SWIG files to output dir"
339-
COMMAND ${CMAKE_COMMAND} -E
340-
copy_if_different $<TARGET_FILE:${SWIG_MODULE_dilithium_REAL_NAME}>
341-
${CMAKE_CURRENT_SOURCE_DIR}/pyqrllib/$<TARGET_LINKER_FILE_NAME:${SWIG_MODULE_dilithium_REAL_NAME}>
342-
)
343-
344-
add_custom_command(TARGET ${SWIG_MODULE_dilithium_REAL_NAME}
345-
POST_BUILD
346-
COMMENT ${swig_extra_generated_files}
347-
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${swig_extra_generated_files} ${CMAKE_CURRENT_SOURCE_DIR}/pyqrllib/dilithium.py
348-
)
349-
367+
if(${CMAKE_VERSION} VERSION_LESS_EQUAL "3.10.3")
368+
add_custom_command(TARGET ${SWIG_MODULE_dilithium_REAL_NAME}
369+
POST_BUILD
370+
COMMENT "Moving SWIG files to output dir"
371+
COMMAND ${CMAKE_COMMAND} -E
372+
copy_if_different $<TARGET_FILE:${SWIG_MODULE_dilithium_REAL_NAME}>
373+
${CMAKE_CURRENT_SOURCE_DIR}/pyqrllib/$<TARGET_LINKER_FILE_NAME:${SWIG_MODULE_dilithium_REAL_NAME}>
374+
)
375+
376+
add_custom_command(TARGET ${SWIG_MODULE_dilithium_REAL_NAME}
377+
POST_BUILD
378+
COMMENT ${swig_extra_generated_files}
379+
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${swig_extra_generated_files} ${CMAKE_CURRENT_SOURCE_DIR}/pyqrllib/dilithium.py
380+
)
381+
endif()
350382

351383
# Kyber
352384
set(SWIG_INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/src/api/kyber.i)
@@ -356,30 +388,43 @@ if (BUILD_PYTHON)
356388
message(STATUS "CMAKE_SWIG_OUTDIR: " ${CMAKE_SWIG_OUTDIR})
357389
message(STATUS "CMAKE_LIBRARY_OUTPUT_DIRECTORY: " ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
358390

359-
SWIG_ADD_MODULE(kyber
360-
${language}
361-
${SWIG_INTERFACE}
362-
${LIB_KYBER_SRC}
363-
${REF_KYBER_SRC}
364-
)
391+
if(${CMAKE_VERSION} VERSION_LESS_EQUAL "3.10.3")
392+
SWIG_ADD_MODULE(kyber
393+
${language}
394+
${SWIG_INTERFACE}
395+
${LIB_KYBER_SRC}
396+
${REF_KYBER_SRC}
397+
)
398+
else()
399+
SWIG_ADD_LIBRARY(kyber
400+
LANGUAGE ${language}
401+
OUTPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/pyqrllib/
402+
OUTFILE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/pyqrllib/
403+
TYPE MODULE
404+
SOURCES ${SWIG_INTERFACE}
405+
${LIB_KYBER_SRC}
406+
${REF_KYBER_SRC}
407+
)
408+
endif()
365409

366410
SWIG_LINK_LIBRARIES(kyber
367411
${SWIG_LANG_LIBRARIES})
368412

369-
add_custom_command(TARGET ${SWIG_MODULE_kyber_REAL_NAME}
370-
POST_BUILD
371-
COMMENT "Moving SWIG files to output dir"
372-
COMMAND ${CMAKE_COMMAND} -E
373-
copy_if_different $<TARGET_FILE:${SWIG_MODULE_kyber_REAL_NAME}>
374-
${CMAKE_CURRENT_SOURCE_DIR}/pyqrllib/$<TARGET_LINKER_FILE_NAME:${SWIG_MODULE_kyber_REAL_NAME}>
375-
)
376-
377-
add_custom_command(TARGET ${SWIG_MODULE_kyber_REAL_NAME}
378-
POST_BUILD
379-
COMMENT ${swig_extra_generated_files}
380-
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${swig_extra_generated_files} ${CMAKE_CURRENT_SOURCE_DIR}/pyqrllib/kyber.py
381-
)
382-
413+
if(${CMAKE_VERSION} VERSION_LESS_EQUAL "3.10.3")
414+
add_custom_command(TARGET ${SWIG_MODULE_kyber_REAL_NAME}
415+
POST_BUILD
416+
COMMENT "Moving SWIG files to output dir"
417+
COMMAND ${CMAKE_COMMAND} -E
418+
copy_if_different $<TARGET_FILE:${SWIG_MODULE_kyber_REAL_NAME}>
419+
${CMAKE_CURRENT_SOURCE_DIR}/pyqrllib/$<TARGET_LINKER_FILE_NAME:${SWIG_MODULE_kyber_REAL_NAME}>
420+
)
421+
422+
add_custom_command(TARGET ${SWIG_MODULE_kyber_REAL_NAME}
423+
POST_BUILD
424+
COMMENT ${swig_extra_generated_files}
425+
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${swig_extra_generated_files} ${CMAKE_CURRENT_SOURCE_DIR}/pyqrllib/kyber.py
426+
)
427+
endif()
383428
endif ()
384429

385430
## SWIG + API - Go related stuff

0 commit comments

Comments
 (0)