Skip to content

Commit 3c106fb

Browse files
committed
Merge branch 'fixing-issue-61' into 'main'
Individual app libraries See merge request ardg/libra!149
2 parents 1cec840 + 0bb929d commit 3c106fb

File tree

25 files changed

+687
-193
lines changed

25 files changed

+687
-193
lines changed

apps/CMakeLists.txt

Lines changed: 53 additions & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -74,44 +74,80 @@ find_package(WCSLIB REQUIRED)
7474
find_package(CFITSIO REQUIRED)
7575
find_package(Kokkos REQUIRED)
7676

77-
set(APP_LINK_LIBRARIES
78-
casacpp_synthesis
79-
casacpp_msvis
80-
librautils
81-
libracore
82-
hpg
77+
# Lazy binding flags to allow apps to run without GPU on non-CUDA machines
78+
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed -Wl,-z,lazy")
79+
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--as-needed -Wl,-z,lazy")
80+
81+
# Tier 1: Core CASA libraries (no GPU)
82+
set(APP_LINK_LIBRARIES_CORE
83+
casa_derivedmscal
8384
casa_msfits
8485
casa_ms
8586
casa_images
8687
casa_coordinates
8788
casa_lattices
8889
casa_fits
8990
casa_measures
91+
casa_meas
92+
casa_mirlib
9093
casa_tables
9194
casa_scimath
9295
casa_scimath_f
9396
casa_casa
9497
pthread
9598
parafeed
96-
Kokkos::kokkos
9799
wcslib::wcs
98100
CFITSIO::CFITSIO
99101
GSL::gsl
100102
GSL::gslcblas
101103
m
102104
c)
103105

106+
# Tier 2: Add MS processing (no GPU)
107+
set(APP_LINK_LIBRARIES_MS
108+
${APP_LINK_LIBRARIES_CORE}
109+
casacpp_msvis)
110+
111+
# Tier 3: Add LibRA utilities (check if these need GPU)
112+
set(APP_LINK_LIBRARIES_LIBRA
113+
${APP_LINK_LIBRARIES_MS}
114+
librautils
115+
libracore)
116+
117+
# Tier 4: GPU-enabled imaging
118+
set(APP_LINK_LIBRARIES_GPU
119+
${APP_LINK_LIBRARIES_LIBRA}
120+
casacpp_synthesis
121+
hpg
122+
Kokkos::kokkos)
123+
124+
# Default to core (apps opt-in to higher tiers)
125+
set(APP_LINK_LIBRARIES ${APP_LINK_LIBRARIES_CORE})
126+
104127
include_directories(
105-
${CMAKE_INSTALL_PREFIX}/include/casacore
106-
${CMAKE_INSTALL_PREFIX}/include
107-
${CMAKE_INSTALL_PREFIX}/include/casacpp
108-
/usr/include/cfitsio
109-
${CMAKE_SOURCE_DIR}/src
110-
# for libracore
111-
${CMAKE_SOURCE_DIR}/../src
112-
# for mdspan
113-
${CMAKE_SOURCE_DIR}/../dependencies/Kokkos/tpls/mdspan/include/mdspan/
114-
)
128+
${CMAKE_INSTALL_PREFIX}/include/casacore
129+
${CMAKE_INSTALL_PREFIX}/include
130+
${CMAKE_INSTALL_PREFIX}/include/casacpp
131+
/usr/include/cfitsio
132+
${CMAKE_SOURCE_DIR}/src
133+
${CMAKE_SOURCE_DIR}/src/RoadRunner
134+
${CMAKE_SOURCE_DIR}/src/Hummbee
135+
${CMAKE_SOURCE_DIR}/src/Coyote
136+
${CMAKE_SOURCE_DIR}/src/Chip
137+
${CMAKE_SOURCE_DIR}/src/Dale
138+
${CMAKE_SOURCE_DIR}/src/Acme
139+
${CMAKE_SOURCE_DIR}/src/MSSplit
140+
${CMAKE_SOURCE_DIR}/src/SubMS
141+
${CMAKE_SOURCE_DIR}/src/TableInfo
142+
${CMAKE_SOURCE_DIR}/src/Asp
143+
${CMAKE_SOURCE_DIR}/src/Asp_mdspan
144+
${CMAKE_SOURCE_DIR}/src/Restore
145+
${CMAKE_SOURCE_DIR}/src/Restore_mdspan
146+
# for libracore
147+
${CMAKE_SOURCE_DIR}/../src
148+
# for mdspan
149+
${CMAKE_SOURCE_DIR}/../dependencies/Kokkos/tpls/mdspan/include/mdspan/
150+
)
115151

116152
link_directories(${CMAKE_INSTALL_PREFIX}/lib
117153
)
@@ -126,112 +162,6 @@ set(CMAKE_BUILD_TYPE "${BUILD_TYPE}")
126162

127163

128164
# add and build each APP
129-
set(APP_LIST Coyote Hummbee RoadRunner Chip Dale Acme MSSplit SubMS TableInfo Asp Asp_mdspan Restore Restore_mdspan Utilities)
130-
131-
set (ACME_SOURCES
132-
Acme/acme.cc
133-
Acme/acme.h
134-
)
135-
136-
set (ASP_SOURCES
137-
Asp/asp.cc
138-
Asp/asp.h
139-
)
140-
141-
set (ASP_MDSPAN_SOURCES
142-
Asp_mdspan/asp_mdspan.cc
143-
Asp_mdspan/asp_mdspan.h
144-
)
145-
146-
set (CHIP_SOURCES
147-
Chip/chip.cc
148-
Chip/chip.h
149-
)
150-
151-
set (COYOTE_SOURCES
152-
Coyote/coyote.cc
153-
Coyote/coyote.h
154-
)
155-
156-
set (DALE_SOURCES
157-
Dale/dale.cc
158-
Dale/dale.h
159-
)
160-
161-
set (HUMMBEE_SOURCES
162-
Hummbee/hummbee.cc
163-
Hummbee/hummbee.h
164-
)
165-
166-
set (MSSPLIT_SOURCES
167-
MSSplit/mssplit.cc
168-
MSSplit/mssplit.h
169-
)
170-
171-
set (RESTORE_SOURCES
172-
Restore/restore.cc
173-
Restore/restore.h
174-
)
175-
176-
set (RESTORE_MDSPAN_SOURCES
177-
Restore_mdspan/restore_mdspan.cc
178-
Restore_mdspan/restore_mdspan.h
179-
)
180-
181-
set (ROADRUNNER_SOURCES
182-
RoadRunner/roadrunner.cc
183-
RoadRunner/roadrunner.h
184-
RoadRunner/LibHPG.h
185-
RoadRunner/LibHPG.cc
186-
RoadRunner/KokkosInit.cc
187-
RoadRunner/KokkosInit.h
188-
# RoadRunner/DataBase.h
189-
# RoadRunner/DataIterations.h
190-
# RoadRunner/MakeComponents.h
191-
# RoadRunner/rWeightor.h
192-
# RoadRunner/ThreadCoordinator.h
193-
)
194-
195-
set (SUBMS_SOURCES
196-
SubMS/subms.cc
197-
SubMS/subms.h
198-
)
199-
200-
set (TABLEINFO_SOURCES
201-
TableInfo/tableinfo.cc
202-
TableInfo/tableinfo.h
203-
)
204-
205-
# set(UTILITIES_SOURCES
206-
# Utilities/backup.cc
207-
# Utilities/backup.h
208-
# )
209-
210-
set (LIBRA_SOURCES
211-
${ACME_SOURCES}
212-
${ASP_SOURCES}
213-
${ASP_MDSPAN_SOURCES}
214-
${CHIP_SOURCES}
215-
${COYOTE_SOURCES}
216-
${HUMMBEE_SOURCES}
217-
${MSSPLIT_SOURCES}
218-
${RESTORE_SOURCES}
219-
${RESTORE_MDSPAN_SOURCES}
220-
${ROADRUNNER_SOURCES}
221-
${SUBMS_SOURCES}
222-
${TABLEINFO_SOURCES}
223-
# ${UTILITIES_SOURCES}
224-
${DALE_SOURCES}
225-
)
226-
227-
# add and build googletest
228-
if(Apps_BUILD_TESTS)
229-
add_subdirectory(src/tests)
230-
endif()
231-
232-
# add and build translation layer
233-
add_subdirectory(src/translation)
234-
235165
add_subdirectory(src)
236166

237167

apps/src/Acme/CMakeLists.txt

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
set(CMAKE_CXX_STANDARD 17)
2+
3+
set(APP_NAME acme)
4+
string(TOUPPER ${APP_NAME} APP_NAME_UPPER)
5+
6+
set(APP_SOURCES
7+
acme.cc
8+
)
9+
10+
find_package(parafeed REQUIRED)
11+
find_package(pybind11 REQUIRED)
12+
13+
file(GLOB APP_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/*.h")
14+
install(FILES ${APP_HEADERS} DESTINATION "${CMAKE_INSTALL_PREFIX}/include/")
15+
16+
add_library(${APP_NAME}_lib SHARED ${APP_SOURCES})
17+
target_link_libraries(${APP_NAME}_lib PUBLIC ${APP_LINK_LIBRARIES_CORE} librautils)
18+
set_target_properties(${APP_NAME}_lib PROPERTIES OUTPUT_NAME ${APP_NAME})
19+
install(TARGETS ${APP_NAME}_lib LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}/lib")
20+
21+
set(BUILD_CLWRAPPER ON)
22+
if(BUILD_CLWRAPPER AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${APP_NAME}_cl_interface.cc")
23+
add_executable(${APP_NAME}_bin "${CMAKE_CURRENT_SOURCE_DIR}/${APP_NAME}_cl_interface.cc")
24+
target_link_libraries(${APP_NAME}_bin PRIVATE ${APP_NAME}_lib ${READLINE_LDFLAGS} ${CURSES_LIBRARIES})
25+
set_target_properties(${APP_NAME}_bin PROPERTIES OUTPUT_NAME ${APP_NAME})
26+
install(TARGETS ${APP_NAME}_bin DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
27+
endif()
28+
29+
set(BUILD_PYWRAPPER ON)
30+
if(BUILD_PYWRAPPER AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${APP_NAME}_py_interface.cc")
31+
pybind11_add_module(${APP_NAME}2py "${CMAKE_CURRENT_SOURCE_DIR}/${APP_NAME}_py_interface.cc")
32+
target_link_libraries(${APP_NAME}2py PRIVATE ${APP_NAME}_lib)
33+
install(TARGETS ${APP_NAME}2py LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}/lib")
34+
endif()
35+
36+
# Optional: Build CLI interface library for tests (commented by default)
37+
# Uncomment if tests need to call CLI interface functions directly
38+
# if(Apps_BUILD_TESTS AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${APP_NAME}_cl_interface.cc")
39+
# add_library(${APP_NAME}_cl_interface SHARED "${CMAKE_CURRENT_SOURCE_DIR}/${APP_NAME}_cl_interface.cc")
40+
# target_compile_definitions(${APP_NAME}_cl_interface PRIVATE ${APP_NAME_UPPER}_LIBRARY_BUILD)
41+
# target_link_libraries(${APP_NAME}_cl_interface PRIVATE ${APP_NAME}_lib "-Wl,--disable-new-dtags")
42+
# install(TARGETS ${APP_NAME}_cl_interface LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}/lib")
43+
# endif()

apps/src/Asp/CMakeLists.txt

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
set(CMAKE_CXX_STANDARD 17)
2+
3+
set(APP_NAME asp)
4+
string(TOUPPER ${APP_NAME} APP_NAME_UPPER)
5+
6+
set(APP_SOURCES
7+
asp.cc
8+
)
9+
10+
find_package(parafeed REQUIRED)
11+
find_package(pybind11 REQUIRED)
12+
13+
file(GLOB APP_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/*.h")
14+
install(FILES ${APP_HEADERS} DESTINATION "${CMAKE_INSTALL_PREFIX}/include/")
15+
16+
add_library(${APP_NAME}_lib SHARED ${APP_SOURCES})
17+
target_link_libraries(${APP_NAME}_lib PUBLIC ${APP_LINK_LIBRARIES} casacpp_synthesis librautils libracore)
18+
set_target_properties(${APP_NAME}_lib PROPERTIES OUTPUT_NAME ${APP_NAME})
19+
install(TARGETS ${APP_NAME}_lib LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}/lib")
20+
21+
set(BUILD_CLWRAPPER ON)
22+
if(BUILD_CLWRAPPER AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${APP_NAME}_cl_interface.cc")
23+
add_executable(${APP_NAME}_bin "${CMAKE_CURRENT_SOURCE_DIR}/${APP_NAME}_cl_interface.cc")
24+
target_link_libraries(${APP_NAME}_bin PRIVATE ${APP_NAME}_lib ${READLINE_LDFLAGS} ${CURSES_LIBRARIES})
25+
set_target_properties(${APP_NAME}_bin PROPERTIES OUTPUT_NAME ${APP_NAME})
26+
install(TARGETS ${APP_NAME}_bin DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
27+
endif()
28+
29+
set(BUILD_PYWRAPPER ON)
30+
if(BUILD_PYWRAPPER AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${APP_NAME}_py_interface.cc")
31+
pybind11_add_module(${APP_NAME}2py "${CMAKE_CURRENT_SOURCE_DIR}/${APP_NAME}_py_interface.cc")
32+
target_link_libraries(${APP_NAME}2py PRIVATE ${APP_NAME}_lib)
33+
install(TARGETS ${APP_NAME}2py LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}/lib")
34+
endif()
35+
36+
# Optional: Build CLI interface library for tests (commented by default)
37+
# Uncomment if tests need to call CLI interface functions directly
38+
# if(Apps_BUILD_TESTS AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${APP_NAME}_cl_interface.cc")
39+
# add_library(${APP_NAME}_cl_interface SHARED "${CMAKE_CURRENT_SOURCE_DIR}/${APP_NAME}_cl_interface.cc")
40+
# target_compile_definitions(${APP_NAME}_cl_interface PRIVATE ${APP_NAME_UPPER}_LIBRARY_BUILD)
41+
# target_link_libraries(${APP_NAME}_cl_interface PRIVATE ${APP_NAME}_lib "-Wl,--disable-new-dtags")
42+
# install(TARGETS ${APP_NAME}_cl_interface LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}/lib")
43+
# endif()

apps/src/Asp_mdspan/CMakeLists.txt

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
set(CMAKE_CXX_STANDARD 17)
2+
3+
set(APP_NAME asp_mdspan)
4+
string(TOUPPER ${APP_NAME} APP_NAME_UPPER)
5+
6+
set(APP_SOURCES
7+
asp_mdspan.cc
8+
)
9+
10+
find_package(parafeed REQUIRED)
11+
find_package(pybind11 REQUIRED)
12+
13+
file(GLOB APP_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/*.h")
14+
install(FILES ${APP_HEADERS} DESTINATION "${CMAKE_INSTALL_PREFIX}/include/")
15+
16+
add_library(${APP_NAME}_lib SHARED ${APP_SOURCES})
17+
target_link_libraries(${APP_NAME}_lib PUBLIC ${APP_LINK_LIBRARIES} casacpp_synthesis librautils libracore)
18+
set_target_properties(${APP_NAME}_lib PROPERTIES OUTPUT_NAME ${APP_NAME})
19+
install(TARGETS ${APP_NAME}_lib LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}/lib")
20+
21+
set(BUILD_CLWRAPPER ON)
22+
if(BUILD_CLWRAPPER AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${APP_NAME}_cl_interface.cc")
23+
add_executable(${APP_NAME}_bin "${CMAKE_CURRENT_SOURCE_DIR}/${APP_NAME}_cl_interface.cc")
24+
target_link_libraries(${APP_NAME}_bin PRIVATE ${APP_NAME}_lib ${READLINE_LDFLAGS} ${CURSES_LIBRARIES})
25+
set_target_properties(${APP_NAME}_bin PROPERTIES OUTPUT_NAME ${APP_NAME})
26+
install(TARGETS ${APP_NAME}_bin DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
27+
endif()
28+
29+
set(BUILD_PYWRAPPER ON)
30+
if(BUILD_PYWRAPPER AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${APP_NAME}_py_interface.cc")
31+
pybind11_add_module(${APP_NAME}2py "${CMAKE_CURRENT_SOURCE_DIR}/${APP_NAME}_py_interface.cc")
32+
target_link_libraries(${APP_NAME}2py PRIVATE ${APP_NAME}_lib)
33+
install(TARGETS ${APP_NAME}2py LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}/lib")
34+
endif()
35+
36+
# Optional: Build CLI interface library for tests (commented by default)
37+
# Uncomment if tests need to call CLI interface functions directly
38+
# if(Apps_BUILD_TESTS AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${APP_NAME}_cl_interface.cc")
39+
# add_library(${APP_NAME}_cl_interface SHARED "${CMAKE_CURRENT_SOURCE_DIR}/${APP_NAME}_cl_interface.cc")
40+
# target_compile_definitions(${APP_NAME}_cl_interface PRIVATE ${APP_NAME_UPPER}_LIBRARY_BUILD)
41+
# target_link_libraries(${APP_NAME}_cl_interface PRIVATE ${APP_NAME}_lib "-Wl,--disable-new-dtags")
42+
# install(TARGETS ${APP_NAME}_cl_interface LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}/lib")
43+
# endif()

0 commit comments

Comments
 (0)