Skip to content

Commit 3c87987

Browse files
committed
ENH: Address comments on external libraries and Python packages
1 parent df09291 commit 3c87987

File tree

6 files changed

+113
-60
lines changed

6 files changed

+113
-60
lines changed

CMakeLists.txt

Lines changed: 107 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -119,74 +119,116 @@ if(EXODUSII_LIBRARY)
119119
endif()
120120

121121
# Add libspatialindex
122-
FetchContent_Declare(libspatialindex
123-
GIT_REPOSITORY https://github.com/libspatialindex/libspatialindex
124-
GIT_TAG origin/master
125-
LOG_DOWNLOAD ON
126-
LOG_CONFIGURE ON
127-
LOG_BUILD ON
128-
LOG_INSTALL ON
129-
)
122+
if(DEFINED USE_BUNDLED_LIBSPATIALINDEX)
123+
FetchContent_Declare(libspatialindex
124+
SOURCE_DIR ${CMAKE_SOURCE_DIR}/spatialindex-1.8.0
125+
LOG_CONFIGURE ON
126+
LOG_BUILD ON
127+
LOG_INSTALL ON
128+
)
129+
else()
130+
FetchContent_Declare(libspatialindex
131+
GIT_REPOSITORY https://github.com/libspatialindex/libspatialindex
132+
GIT_TAG origin/master
133+
LOG_DOWNLOAD ON
134+
LOG_CONFIGURE ON
135+
LOG_BUILD ON
136+
LOG_INSTALL ON
137+
)
138+
endif()
130139
FetchContent_MakeAvailable(libspatialindex)
131140

132141
# Add Judy
133-
ExternalProject_Add(libjudy
134-
PREFIX libjudy
135-
URL https://sourceforge.net/projects/judy/files/judy/Judy-1.0.5/Judy-1.0.5.tar.gz/download
136-
CONFIGURE_COMMAND ./configure --enable-64-bit --prefix=<SOURCE_DIR>
137-
BUILD_COMMAND make
138-
BUILD_IN_SOURCE TRUE
139-
INSTALL_COMMAND make install exec_prefix=<SOURCE_DIR>
140-
TEST_COMMAND make check
141-
TEST_BEFORE_INSTALL TRUE
142-
LOG_DOWNLOAD ON
143-
LOG_CONFIGURE ON
144-
LOG_BUILD ON
145-
LOG_INSTALL ON
146-
LOG_TEST ON
147-
)
142+
if(DEFINED USE_BUNDLED_LIBJUDY)
143+
ExternalProject_Add(libjudy
144+
SOURCE_DIR ${CMAKE_SOURCE_DIR}/libjudy
145+
CONFIGURE_COMMAND ./configure --enable-64-bit --prefix=<SOURCE_DIR>
146+
BUILD_COMMAND make
147+
BUILD_IN_SOURCE TRUE
148+
INSTALL_COMMAND make install exec_prefix=<SOURCE_DIR>
149+
TEST_COMMAND make check
150+
TEST_BEFORE_INSTALL TRUE
151+
LOG_CONFIGURE ON
152+
LOG_BUILD ON
153+
LOG_INSTALL ON
154+
LOG_TEST ON
155+
)
156+
else()
157+
ExternalProject_Add(libjudy
158+
PREFIX libjudy
159+
URL https://sourceforge.net/projects/judy/files/judy/Judy-1.0.5/Judy-1.0.5.tar.gz/download
160+
CONFIGURE_COMMAND ./configure --enable-64-bit --prefix=<SOURCE_DIR>
161+
BUILD_COMMAND make
162+
BUILD_IN_SOURCE TRUE
163+
INSTALL_COMMAND make install exec_prefix=<SOURCE_DIR>
164+
TEST_COMMAND make check
165+
TEST_BEFORE_INSTALL TRUE
166+
LOG_DOWNLOAD ON
167+
LOG_CONFIGURE ON
168+
LOG_BUILD ON
169+
LOG_INSTALL ON
170+
LOG_TEST ON
171+
)
172+
endif()
148173
ExternalProject_Add_Step(libjudy byproducts
149174
DEPENDEES install
150175
BYPRODUCTS <SOURCE_DIR>/lib/libJudy.a
151176
LOG ON
152177
)
153178
ExternalProject_Get_property(libjudy SOURCE_DIR)
154-
set(libjudy_SOURCE_DIR ${SOURCE_DIR})
179+
155180
add_library(Judy STATIC IMPORTED)
156181
set_target_properties(Judy
157-
PROPERTIES IMPORTED_LOCATION ${libjudy_SOURCE_DIR}/lib/libJudy.a
182+
PROPERTIES IMPORTED_LOCATION ${SOURCE_DIR}/lib/libJudy.a
158183
)
159184

185+
set(LIBJUDY_INCLUDE_DIR ${SOURCE_DIR}/src)
186+
160187
# Add Zoltan
161-
set(ZOLTAN_CONFIGURE "../libzoltan/configure --enable-f90interface --with-gnumake --with-scotch --with-parmetis")
162-
if(${CMAKE_C_COMPILER_VERSION} GREATER_EQUAL 10)
163-
string(APPEND ZOLTAN_CONFIGURE " FCFLAGS=-fallow-argument-mismatch")
164-
endif()
165-
if(DEFINED ENV{PETSC_ARCH})
166-
string(APPEND ZOLTAN_CONFIGURE " --with-scotch-incdir=$ENV{PETSC_DIR}/$ENV{PETSC_ARCH}/include --with-scotch-libdir=$ENV{PETSC_DIR}/$ENV{PETSC_ARCH}/lib --with-parmetis-incdir=$ENV{PETSC_DIR}/$ENV{PETSC_ARCH}/include --with-parmetis-libdir=$ENV{PETSC_DIR}/$ENV{PETSC_ARCH}/lib")
167-
else()
168-
string(APPEND ZOLTAN_CONFIGURE " --with-scotch-incdir=$ENV{PETSC_DIR}/include --with-scotch-libdir=$ENV{PETSC_DIR}/lib --with-parmetis-incdir=$ENV{PETSC_DIR}/include --with-parmetis-libdir=$ENV{PETSC_DIR}/lib")
188+
if(DEFINED USE_EXISTING_ZOLTAN)
189+
find_library(ZOLTAN_LIBRARY zoltan HINTS ${USE_EXISTING_ZOLTAN} REQUIRED)
190+
find_path(ZOLTAN_INCLUDE_DIR zoltan.h HINTS ${USE_EXISTING_ZOLTAN} REQUIRED)
191+
192+
add_library(Zoltan STATIC IMPORTED)
193+
set_target_properties(Zoltan PROPERTIES IMPORTED_LOCATION ${ZOLTAN_LIBRARY})
194+
195+
else()
196+
set(ZOLTAN_CONFIGURE "../libzoltan/configure --enable-f90interface --with-gnumake --with-scotch --with-parmetis")
197+
198+
if(${CMAKE_C_COMPILER_VERSION} GREATER_EQUAL 10)
199+
string(APPEND ZOLTAN_CONFIGURE " FCFLAGS=-fallow-argument-mismatch")
200+
endif()
201+
202+
if(DEFINED ENV{PETSC_ARCH})
203+
string(APPEND ZOLTAN_CONFIGURE " --with-scotch-incdir=$ENV{PETSC_DIR}/$ENV{PETSC_ARCH}/include --with-scotch-libdir=$ENV{PETSC_DIR}/$ENV{PETSC_ARCH}/lib --with-parmetis-incdir=$ENV{PETSC_DIR}/$ENV{PETSC_ARCH}/include --with-parmetis-libdir=$ENV{PETSC_DIR}/$ENV{PETSC_ARCH}/lib")
204+
else()
205+
string(APPEND ZOLTAN_CONFIGURE " --with-scotch-incdir=$ENV{PETSC_DIR}/include --with-scotch-libdir=$ENV{PETSC_DIR}/lib --with-parmetis-incdir=$ENV{PETSC_DIR}/include --with-parmetis-libdir=$ENV{PETSC_DIR}/lib")
206+
endif()
207+
208+
separate_arguments(ZOLTAN_CONFIGURE UNIX_COMMAND ${ZOLTAN_CONFIGURE})
209+
210+
ExternalProject_Add(libzoltan
211+
PREFIX Zoltan
212+
GIT_REPOSITORY https://github.com/sandialabs/Zoltan
213+
GIT_TAG origin/main
214+
CONFIGURE_COMMAND ${ZOLTAN_CONFIGURE}
215+
BUILD_COMMAND make everything
216+
BUILD_BYPRODUCTS <BINARY_DIR>/src/libzoltan.a
217+
INSTALL_COMMAND ""
218+
LOG_DOWNLOAD ON
219+
LOG_CONFIGURE ON
220+
LOG_BUILD ON
221+
)
222+
ExternalProject_Get_property(libzoltan BINARY_DIR)
223+
224+
add_library(Zoltan STATIC IMPORTED)
225+
add_dependencies(Zoltan libzoltan)
226+
set_target_properties(Zoltan
227+
PROPERTIES IMPORTED_LOCATION ${BINARY_DIR}/src/libzoltan.a
228+
)
229+
230+
set(ZOLTAN_INCLUDE_DIR ${BINARY_DIR}/src)
169231
endif()
170-
separate_arguments(ZOLTAN_CONFIGURE UNIX_COMMAND ${ZOLTAN_CONFIGURE})
171-
ExternalProject_Add(libzoltan
172-
PREFIX Zoltan
173-
GIT_REPOSITORY https://github.com/sandialabs/Zoltan
174-
GIT_TAG origin/main
175-
CONFIGURE_COMMAND ${ZOLTAN_CONFIGURE}
176-
BUILD_COMMAND make everything
177-
BUILD_BYPRODUCTS <BINARY_DIR>/src/libzoltan.a
178-
INSTALL_COMMAND ""
179-
LOG_DOWNLOAD ON
180-
LOG_CONFIGURE ON
181-
LOG_BUILD ON
182-
)
183-
ExternalProject_Get_property(libzoltan BINARY_DIR)
184-
set(Zoltan_BINARY_DIR ${BINARY_DIR})
185-
add_library(Zoltan STATIC IMPORTED)
186-
add_dependencies(Zoltan libzoltan)
187-
set_target_properties(Zoltan
188-
PROPERTIES IMPORTED_LOCATION ${Zoltan_BINARY_DIR}/src/libzoltan.a
189-
)
190232

191233
# Generate some source files
192234
add_custom_command(
@@ -369,8 +411,8 @@ target_include_directories(fluidity PUBLIC
369411
$<$<BOOL:${EXODUSII_INCLUDE_DIR}>:${EXODUSII_INCLUDE_DIR}>
370412

371413
${libspatialindex_SOURCE_DIR}/include
372-
${libjudy_SOURCE_DIR}/src
373-
${Zoltan_BINARY_DIR}/src
414+
${LIBJUDY_INCLUDE_DIR}
415+
${ZOLTAN_INCLUDE_DIR}
374416

375417
${CMAKE_BINARY_DIR}/include
376418
${CMAKE_SOURCE_DIR}/include
@@ -430,6 +472,16 @@ add_executable(fluidity_binary main.cpp)
430472
set_target_properties(fluidity_binary PROPERTIES OUTPUT_NAME fluidity)
431473
target_link_libraries(fluidity_binary fluidity)
432474

475+
# Install Python packages included in Fluidity's repository
476+
add_custom_target(install_python_packages)
477+
add_dependencies(install_python_packages fluidity_python spud_diamond spud_dxdiff spud_python)
478+
479+
# Uninstall Python packages included in Fluidity's repository
480+
add_custom_target(uninstall_python_packages
481+
COMMAND ${Python3_EXECUTABLE} -m pip uninstall -y diamond dxdiff fluidity libspud
482+
VERBATIM
483+
)
484+
433485
# Build the fluidity manual
434486
add_custom_target(manual
435487
COMMAND make

docker/Dockerfile.jammy

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ RUN apt-get update && apt-get install -y \
4141
texlive-latex-extra \
4242
texlive-pstricks \
4343
texlive-science \
44-
&& rm -rf /var/lib/apt/lists/*
44+
&& rm -rf /var/lib/apt/lists/*
4545

4646
WORKDIR /usr/local
4747

@@ -85,6 +85,7 @@ WORKDIR /home/Softwares/fluidity/build
8585

8686
RUN cmake -G Ninja -D GITHUB_ACTIONS=1 ..
8787
RUN ninja
88+
RUN ninja install_python_packages
8889
RUN ninja manual
8990

9091
RUN python3 -m pip install --user assess

libspud/diamond/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
add_subdirectory(diamond)
22

3-
add_custom_target(spud_diamond ALL
3+
add_custom_target(spud_diamond
44
COMMAND ${Python3_EXECUTABLE} -m pip install --force-reinstall .
55
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
66
VERBATIM

libspud/dxdiff/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
add_custom_target(spud_dxdiff ALL
1+
add_custom_target(spud_dxdiff
22
COMMAND ${Python3_EXECUTABLE} -m pip install --user --force-reinstall .
33
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
44
VERBATIM

libspud/python/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
configure_file(setup.py.in ${CMAKE_CURRENT_SOURCE_DIR}/setup.py)
22

3-
add_custom_target(spud_python ALL
3+
add_custom_target(spud_python
44
COMMAND ${Python3_EXECUTABLE} -m pip install --user --force-reinstall .
55
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
66
VERBATIM

python/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
add_custom_target(fluidity_python ALL
1+
add_custom_target(fluidity_python
22
COMMAND ${Python3_EXECUTABLE} -m pip install --force-reinstall .
33
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
44
VERBATIM

0 commit comments

Comments
 (0)