|
1 |
| -# Helper function to configure stdlib targets |
2 |
| -function(configure_stdlib_target target_name regular_sources_var fypp_files_var cpp_files_var) |
3 |
| - #### Pre-process: .fpp -> .f90 via Fypp |
4 |
| - fypp_f90("${fyppFlags}" "${${fypp_files_var}}" ${target_name}_fypp_outFiles) |
5 |
| - #### Pre-process: .fypp -> .F90 via Fypp (for C preprocessor directives) |
6 |
| - fypp_f90pp("${fyppFlags}" "${${cpp_files_var}}" ${target_name}_cpp_outFiles) |
7 |
| - |
8 |
| - list(APPEND all_sources ${${target_name}_fypp_outFiles}) |
9 |
| - list(APPEND all_sources ${${target_name}_cpp_outFiles}) |
10 |
| - list(APPEND all_sources ${${regular_sources_var}}) |
11 |
| - |
12 |
| - add_library(${target_name} ${all_sources}) |
13 |
| - add_library(${PROJECT_NAME}::${target_name} ALIAS ${target_name}) |
14 |
| - |
15 |
| - set_target_properties( |
16 |
| - ${target_name} |
17 |
| - PROPERTIES |
18 |
| - POSITION_INDEPENDENT_CODE ON |
19 |
| - WINDOWS_EXPORT_ALL_SYMBOLS ON |
20 |
| - ) |
21 |
| - |
22 |
| - if(CMAKE_Fortran_COMPILER_ID STREQUAL GNU AND CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 10.0) |
23 |
| - target_compile_options( |
24 |
| - ${target_name} |
25 |
| - PRIVATE |
26 |
| - $<$<COMPILE_LANGUAGE:Fortran>:-fno-range-check> |
27 |
| - ) |
28 |
| - endif() |
29 |
| - |
30 |
| - set(LIB_MOD_DIR ${CMAKE_CURRENT_BINARY_DIR}/mod_files/${target_name}/) |
31 |
| - set(INSTALL_MOD_DIR "${CMAKE_INSTALL_MODULEDIR}/${target_name}") |
32 |
| - # We need the module directory before we finish the configure stage since the |
33 |
| - # build interface might resolve before the module directory is generated by CMake |
34 |
| - if(NOT EXISTS "${LIB_MOD_DIR}") |
35 |
| - file(MAKE_DIRECTORY "${LIB_MOD_DIR}") |
36 |
| - endif() |
37 |
| - |
38 |
| - set_target_properties(${target_name} PROPERTIES |
39 |
| - Fortran_MODULE_DIRECTORY ${LIB_MOD_DIR} |
40 |
| - ) |
41 |
| - target_include_directories(${target_name} PUBLIC |
42 |
| - $<BUILD_INTERFACE:${LIB_MOD_DIR}> |
43 |
| - $<INSTALL_INTERFACE:${CMAKE_INSTALL_MODULEDIR}> |
44 |
| - ) |
45 |
| - |
46 |
| - install(TARGETS ${target_name} |
47 |
| - EXPORT ${PROJECT_NAME}-targets |
48 |
| - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" |
49 |
| - ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" |
50 |
| - LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" |
51 |
| - ) |
52 |
| - install(DIRECTORY ${LIB_MOD_DIR} DESTINATION "${INSTALL_MOD_DIR}") |
53 |
| -endfunction() |
54 |
| - |
55 |
| -set(blas_fppFiles |
56 |
| - stdlib_kinds.fypp |
57 |
| - blas/stdlib_blas_constants.fypp |
58 |
| - blas/stdlib_blas.fypp |
59 |
| - blas/stdlib_blas_level1.fypp |
60 |
| - blas/stdlib_blas_level2_ban.fypp |
61 |
| - blas/stdlib_blas_level2_gen.fypp |
62 |
| - blas/stdlib_blas_level2_pac.fypp |
63 |
| - blas/stdlib_blas_level2_sym.fypp |
64 |
| - blas/stdlib_blas_level2_tri.fypp |
65 |
| - blas/stdlib_blas_level3_gen.fypp |
66 |
| - blas/stdlib_blas_level3_sym.fypp |
67 |
| - blas/stdlib_blas_level3_tri.fypp |
68 |
| - blas/stdlib_linalg_blas_aux.fypp |
69 |
| -) |
70 |
| -set(blas_cppFiles stdlib_linalg_constants.fypp stdlib_linalg_blas.fypp) |
71 |
| - |
72 |
| -configure_stdlib_target(blas "" blas_fppFiles blas_cppFiles) |
73 |
| - |
74 |
| -if(BLAS_FOUND) |
75 |
| - target_link_libraries(blas PUBLIC "BLAS::BLAS") |
76 |
| -endif() |
77 |
| - |
78 |
| -set(lapack_fppFiles |
79 |
| - stdlib_kinds.fypp |
80 |
| - stdlib_linalg_state.fypp |
81 |
| - stdlib_error.fypp |
82 |
| - stdlib_optval.fypp |
83 |
| - stdlib_io.fypp |
84 |
| - stdlib_ascii.fypp |
85 |
| - stdlib_string_type.fypp |
86 |
| - lapack/stdlib_lapack_base.fypp |
87 |
| - lapack/stdlib_lapack_solve.fypp |
88 |
| - lapack/stdlib_lapack_others.fypp |
89 |
| - lapack/stdlib_lapack_orthogonal_factors.fypp |
90 |
| - lapack/stdlib_lapack_eig_svd_lsq.fypp |
91 |
| - lapack/stdlib_linalg_lapack_aux.fypp |
92 |
| - lapack/stdlib_lapack_auxiliary.fypp |
93 |
| - lapack/stdlib_lapack_blas_like_base.fypp |
94 |
| - lapack/stdlib_lapack_blas_like_l1.fypp |
95 |
| - lapack/stdlib_lapack_blas_like_l2.fypp |
96 |
| - lapack/stdlib_lapack_blas_like_l3.fypp |
97 |
| - lapack/stdlib_lapack_blas_like_mnorm.fypp |
98 |
| - lapack/stdlib_lapack_blas_like_scalar.fypp |
99 |
| - lapack/stdlib_lapack_cosine_sine.fypp |
100 |
| - lapack/stdlib_lapack_cosine_sine2.fypp |
101 |
| - lapack/stdlib_lapack_eigv_comp.fypp |
102 |
| - lapack/stdlib_lapack_eigv_comp2.fypp |
103 |
| - lapack/stdlib_lapack_eigv_gen.fypp |
104 |
| - lapack/stdlib_lapack_eigv_gen2.fypp |
105 |
| - lapack/stdlib_lapack_eigv_gen3.fypp |
106 |
| - lapack/stdlib_lapack_eigv_std_driver.fypp |
107 |
| - lapack/stdlib_lapack_eigv_svd_bidiag_dc.fypp |
108 |
| - lapack/stdlib_lapack_eigv_svd_drivers.fypp |
109 |
| - lapack/stdlib_lapack_eigv_svd_drivers2.fypp |
110 |
| - lapack/stdlib_lapack_eigv_svd_drivers3.fypp |
111 |
| - lapack/stdlib_lapack_eigv_sym_comp.fypp |
112 |
| - lapack/stdlib_lapack_eigv_sym.fypp |
113 |
| - lapack/stdlib_lapack_eigv_tridiag.fypp |
114 |
| - lapack/stdlib_lapack_eigv_tridiag2.fypp |
115 |
| - lapack/stdlib_lapack_eigv_tridiag3.fypp |
116 |
| - lapack/stdlib_lapack_givens_jacobi_rot.fypp |
117 |
| - lapack/stdlib_lapack_householder_reflectors.fypp |
118 |
| - lapack/stdlib_lapack_lsq.fypp |
119 |
| - lapack/stdlib_lapack_lsq_aux.fypp |
120 |
| - lapack/stdlib_lapack_lsq_constrained.fypp |
121 |
| - lapack/stdlib_lapack_orthogonal_factors_ql.fypp |
122 |
| - lapack/stdlib_lapack_orthogonal_factors_qr.fypp |
123 |
| - lapack/stdlib_lapack_orthogonal_factors_rz.fypp |
124 |
| - lapack/stdlib_lapack_others_sm.fypp |
125 |
| - lapack/stdlib_lapack_solve_aux.fypp |
126 |
| - lapack/stdlib_lapack_solve_chol_comp.fypp |
127 |
| - lapack/stdlib_lapack_solve_chol.fypp |
128 |
| - lapack/stdlib_lapack_solve_ldl_comp.fypp |
129 |
| - lapack/stdlib_lapack_solve_ldl_comp2.fypp |
130 |
| - lapack/stdlib_lapack_solve_ldl_comp3.fypp |
131 |
| - lapack/stdlib_lapack_solve_ldl_comp4.fypp |
132 |
| - lapack/stdlib_lapack_solve_ldl.fypp |
133 |
| - lapack/stdlib_lapack_solve_lu_comp.fypp |
134 |
| - lapack/stdlib_lapack_solve_lu.fypp |
135 |
| - lapack/stdlib_lapack_solve_tri_comp.fypp |
136 |
| - lapack/stdlib_lapack_svd_bidiag_qr.fypp |
137 |
| - lapack/stdlib_lapack_svd_comp.fypp |
138 |
| - lapack/stdlib_lapack_svd_comp2.fypp |
139 |
| -) |
140 |
| -set(lapack_cppFiles |
141 |
| - stdlib_linalg_constants.fypp |
142 |
| - stdlib_linalg_lapack.fypp |
143 |
| -) |
144 |
| -set(lapack_f90Files |
145 |
| - $<IF:$<BOOL:${f18errorstop}>,f18estop.f90,f08estop.f90> |
146 |
| -) |
147 |
| - |
148 |
| -configure_stdlib_target(lapack lapack_f90Files lapack_fppFiles lapack_cppFiles) |
149 |
| - |
150 |
| -if(LAPACK_FOUND) |
151 |
| - target_link_libraries(lapack PUBLIC "LAPACK::LAPACK") |
152 |
| -endif() |
153 |
| -target_link_libraries(lapack PUBLIC blas) |
| 1 | +add_subdirectory(blas) |
| 2 | +add_subdirectory(lapack) |
154 | 3 |
|
155 | 4 | set(fppFiles
|
156 | 5 | stdlib_ascii.fypp
|
|
0 commit comments