|
1 | | -cmake_minimum_required(VERSION 3.13) |
| 1 | +cmake_minimum_required(VERSION 3.15) |
2 | 2 |
|
3 | 3 | project(${TARGET_NAME}) |
4 | 4 |
|
5 | 5 | set(CMAKE_VERBOSE_MAKEFILE on) |
| 6 | +set(Python_FIND_VIRTUALENV FIRST) |
| 7 | +set(Python_FIND_STRATEGY LOCATION) |
6 | 8 |
|
7 | | -add_library(${TARGET_NAME} SHARED ${ALL_SRC}) |
| 9 | +find_package(Python REQUIRED COMPONENTS Interpreter Development NumPy) |
| 10 | + |
| 11 | +target_link_options(${TARGET_NAME} PRIVATE |
| 12 | + "$<$<PLATFORM_ID:Darwin>:LINKER:-undefined,dynamic_lookup>" |
| 13 | +) |
8 | 14 |
|
9 | | -target_compile_options(${TARGET_NAME} PRIVATE ${ALL_COMP_ARGS}) |
| 15 | +target_compile_options(${TARGET_NAME} PRIVATE |
| 16 | + ${ALL_COMP_ARGS} |
10 | 17 |
|
11 | | -set_target_properties(${TARGET_NAME} PROPERTIES SUFFIX ${SHARED_SUFFIX}) |
| 18 | + $<$<NOT:$<CXX_COMPILER_ID:MSVC>>: |
| 19 | + -Werror=return-type |
| 20 | + -Wunused-variable |
| 21 | + -Wno-switch |
| 22 | + -Wno-narrowing |
| 23 | + -Wno-char-subscripts |
| 24 | + $<$<CONFIG:Debug>:-Og> |
| 25 | + $<$<NOT:$<CONFIG:Debug>>:-O3> |
| 26 | + > |
| 27 | + $<$<CXX_COMPILER_ID:MSVC>:/MP> |
| 28 | + $<$<AND:$<CONFIG:Debug>,$<CXX_COMPILER_ID:MSVC>>:/Z7> |
12 | 29 |
|
13 | | -target_compile_features(${TARGET_NAME} PRIVATE cxx_std_17) |
| 30 | + # optimization currently causes a clang segfault on OS X 10.9 when |
| 31 | + # compiling layer2/RepCylBond.cpp |
| 32 | + $<$<PLATFORM_ID:Darwin>:-fno-strict-aliasing> |
| 33 | +) |
14 | 34 |
|
15 | | -set_target_properties(${TARGET_NAME} PROPERTIES PREFIX "") |
| 35 | +execute_process( |
| 36 | + COMMAND ${Python_EXECUTABLE} -c "import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))" |
| 37 | + OUTPUT_VARIABLE PYTHON_MODULE_SUFFIX |
| 38 | + OUTPUT_STRIP_TRAILING_WHITESPACE |
| 39 | +) |
16 | 40 |
|
17 | | -target_include_directories(${TARGET_NAME} PUBLIC ${ALL_INC_DIR}) |
| 41 | +function(set_output_path lib path) |
| 42 | + set_target_properties(${lib} PROPERTIES |
| 43 | + PREFIX "" |
| 44 | + SUFFIX "${PYTHON_MODULE_SUFFIX}" |
| 45 | + OUTPUT_NAME "${lib}" |
| 46 | + LIBRARY_OUTPUT_DIRECTORY "${path}" |
| 47 | + RUNTIME_OUTPUT_DIRECTORY "${path}" |
| 48 | + ) |
18 | 49 |
|
19 | | -target_link_directories(${TARGET_NAME} PUBLIC ${ALL_LIB_DIR}) |
| 50 | + foreach(CONFIG IN ITEMS RELEASE DEBUG RELWITHDEBINFO MINSIZEREL) |
| 51 | + set_target_properties(${lib} PROPERTIES |
| 52 | + LIBRARY_OUTPUT_DIRECTORY_${CONFIG} "${path}" |
| 53 | + RUNTIME_OUTPUT_DIRECTORY_${CONFIG} "${path}" |
| 54 | + ) |
| 55 | + endforeach() |
| 56 | +endfunction() |
20 | 57 |
|
| 58 | +set_output_path(${TARGET_NAME} "${Python_SITEARCH}/pymol") |
21 | 59 |
|
22 | | -if(APPLE) |
23 | | - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -undefined dynamic_lookup") |
24 | | -endif() |
| 60 | +target_compile_features(${TARGET_NAME} PRIVATE cxx_std_17) |
25 | 61 |
|
| 62 | +add_library(${TARGET_NAME} SHARED ${ALL_SRC}) |
| 63 | + |
| 64 | +target_include_directories(${TARGET_NAME} PUBLIC |
| 65 | + ${CMAKE_CURRENT_SOURCE_DIR}/include |
| 66 | + ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pocketfft |
| 67 | + ${ALL_INC_DIR} |
| 68 | + ${Python_INCLUDE_DIRS} |
| 69 | + ${Python_NumPy_INCLUDE_DIRS} |
| 70 | +) |
| 71 | + |
| 72 | +target_link_directories(${TARGET_NAME} PUBLIC |
| 73 | + ${ALL_LIB_DIR} |
| 74 | + $<$<CXX_COMPILER_ID:MSVC>:${Python_LIBRARY_DIRS}> |
| 75 | +) |
26 | 76 | target_link_libraries(${TARGET_NAME} |
27 | 77 | ${ALL_LIB} |
28 | 78 | ${ALL_EXT_LINK} |
| 79 | + $<$<CXX_COMPILER_ID:MSVC>:${Python_LIBRARIES}> |
| 80 | + $<$<AND:$<CONFIG:Debug>,$<CXX_COMPILER_ID:MSVC>>:/DEBUG> |
| 81 | +) |
| 82 | + |
| 83 | +target_compile_definitions(${TARGET_NAME} PUBLIC |
| 84 | + ${ALL_DEF} |
| 85 | + _PYMOL_LIBPNG |
| 86 | + _PYMOL_FREETYPE |
| 87 | + _PYMOL_NUMPY |
| 88 | + $<$<CXX_COMPILER_ID:MSVC>:WIN32> |
| 89 | + $<$<PLATFORM_ID:Darwin>:PYMOL_CURVE_VALIDATE> |
| 90 | + |
| 91 | + # bounds checking in STL containers |
| 92 | + # if DEBUG and not Windows |
| 93 | + $<$<AND:$<CONFIG:Debug>,$<NOT:$<CXX_COMPILER_ID:MSVC>>>:_GLIBCXX_ASSERTIONS> |
29 | 94 | ) |
30 | 95 |
|
31 | | -target_compile_definitions(${TARGET_NAME} PUBLIC ${ALL_DEF}) |
| 96 | +add_subdirectory(contrib/champ) |
0 commit comments