|
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