Skip to content

Commit 84d7803

Browse files
committed
Remove some of the legacy naming convection in Swig+CMake
Previously we were using CMP0078=OLD, meaning Swig module were named implicitly, leading to very hard to read code. cmake without this is much easier to read.
1 parent a17f1db commit 84d7803

File tree

2 files changed

+65
-69
lines changed

2 files changed

+65
-69
lines changed

src/underworld/libUnderworld/CMakeLists.txt

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,21 @@
1-
#cmake_minimum_required(VERSION 3.16)
21
cmake_minimum_required(VERSION 4.0)
3-
cmake_policy(SET CMP0078 OLD)
2+
project(Underworld)
43

54
# Set some Global options for CMAKE
65
set(CMAKE_CXX_STANDARD 11)
76
set(CMAKE_CXX_STANDARD_REQUIRED ON)
87
set(Python_FIND_VIRTUALENV ONLY)
98
option(BUILD_SHARED_LIBS "Build using shared libraries" ON)
109

11-
project(Underworld)
12-
1310
# Required dependencies
1411
find_package(PkgConfig REQUIRED)
1512
find_package(LibXml2 REQUIRED)
1613
find_package(MPI REQUIRED)
1714
find_package(Python3 COMPONENTS Interpreter Development NumPy REQUIRED)
1815
find_package(SWIG 4.0 COMPONENTS python REQUIRED)
1916

20-
# Look for PETSc installation. We use pkg-config which, on Linux look for the PETSc.pc
21-
# or petsc.pc file located in /usr/lib/pkgconfig or /usr/share/pkgconfig
17+
# Look for PETSc installation. Use pkg-config - on Linux this looks for the PETSc.pc
18+
# or petsc.pc files located in /usr/lib/pkgconfig or /usr/share/pkgconfig
2219
# You can check pkg-config search path using the following command:
2320
# pkg-config --variable pc_path pkg-config
2421
# This can be modified by prepending the PKG_CONFIG_PATH environment variable
@@ -27,14 +24,15 @@ if(DEFINED ENV{PETSC_DIR} AND DEFINED ENV{PETSC_ARCH})
2724
else(DEFINED ENV{PETSC_DIR})
2825
set(ENV{PKG_CONFIG_PATH} "$ENV{PETSC_DIR}/lib/pkgconfig:$ENV{PKG_CONFIG_PATH}")
2926
endif()
30-
message(STATUS "Checking for PETSc using $PKG_CONFIG_PATH=$ENV{PKG_CONFIG_PATH}")
27+
message(STATUS "Checking for PETSc using pkg-config $ENV{PKG_CONFIG} with $PKG_CONFIG_PATH=$ENV{PKG_CONFIG_PATH}")
3128

3229
# Get CMAKE to find PETSc
3330
pkg_check_modules(PETSc PETSc)
3431
if(NOT PETSc_FOUND)
3532
message(FATAL_ERROR "Cannot find PETSc, please check that the PETSC_DIR environment "
3633
"variable is set and that the $PETSC_DIR/lib/pkgconfig folder contains a PETSc.pc file.")
3734
endif()
35+
message(STATUS "Using PETSc at ${PETSc_PREFIX}")
3836

3937
if(NOT APPLE)
4038
message(STATUS ">>> Linux System")

src/underworld/libUnderworld/libUnderworldPy/CMakeLists.txt

Lines changed: 60 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -40,66 +40,64 @@ message(STATUS "PETSc_LIBRARIES=${PETSc_LIBRARIES}")
4040
message("End Swig diagnostics:")
4141

4242
set_source_files_properties(Function.i PROPERTIES CPLUSPLUS ON SWIG_MODULE_NAME Function)
43-
# This create swig module target, SWIG_MODULE_Function_REAL_NAME with CMP0078 != NEW
44-
swig_add_library(Function TYPE SHARED LANGUAGE python SOURCES Function.i)
45-
set_target_properties(${SWIG_MODULE_Function_REAL_NAME} PROPERTIES SUFFIX ".so" )
46-
target_link_libraries(${SWIG_MODULE_Function_REAL_NAME} PRIVATE ${UW_LIBRARIES} PRIVATE ${PETSc_LIBRARIES} PRIVATE Python3::Module)
43+
swig_add_library(FunctionSwig TYPE SHARED LANGUAGE python SOURCES Function.i)
44+
set_target_properties(FunctionSwig PROPERTIES SUFFIX ".so" )
45+
target_link_libraries(FunctionSwig PRIVATE ${UW_LIBRARIES} PRIVATE ${PETSc_LIBRARIES} PRIVATE Python3::Module)
4746

4847
set_source_files_properties(c_arrays.i PROPERTIES CPLUSPLUS ON SWIG_MODULE_NAME c_arrays)
49-
swig_add_library(c_arrays TYPE SHARED LANGUAGE python SOURCES c_arrays.i)
50-
set_target_properties(${SWIG_MODULE_c_arrays_REAL_NAME} PROPERTIES SUFFIX ".so")
51-
target_link_libraries(${SWIG_MODULE_c_arrays_REAL_NAME} PRIVATE ${UW_LIBRARIES} PRIVATE ${PETSc_LIBRARIES} PRIVATE Python3::Module)
48+
swig_add_library(c_arraysSwig TYPE SHARED LANGUAGE python SOURCES c_arrays.i)
49+
set_target_properties(c_arraysSwig PROPERTIES SUFFIX ".so")
50+
target_link_libraries(c_arraysSwig PRIVATE ${UW_LIBRARIES} PRIVATE ${PETSc_LIBRARIES} PRIVATE Python3::Module)
5251

5352
set_source_files_properties(c_pointers.i PROPERTIES CPLUSPLUS ON SWIG_MODULE_NAME c_pointers)
54-
swig_add_library(c_pointers TYPE SHARED LANGUAGE python SOURCES c_pointers.i)
55-
set_target_properties(${SWIG_MODULE_c_pointers_REAL_NAME} PROPERTIES SUFFIX ".so")
56-
target_link_libraries(${SWIG_MODULE_c_pointers_REAL_NAME} PRIVATE ${UW_LIBRARIES} PRIVATE ${PETSc_LIBRARIES} PRIVATE Python3::Module)
53+
swig_add_library(c_pointersSwig TYPE SHARED LANGUAGE python SOURCES c_pointers.i)
54+
set_target_properties(c_pointersSwig PROPERTIES SUFFIX ".so")
55+
target_link_libraries(c_pointersSwig PRIVATE ${UW_LIBRARIES} PRIVATE ${PETSc_LIBRARIES} PRIVATE Python3::Module)
5756

5857
set_source_files_properties(gLucifer.i PROPERTIES CPLUSPLUS ON SWIG_MODULE_NAME gLucifer)
59-
swig_add_library(gLucifer TYPE SHARED LANGUAGE python SOURCES gLucifer.i)
60-
set_target_properties(${SWIG_MODULE_gLucifer_REAL_NAME} PROPERTIES SUFFIX ".so")
61-
target_link_libraries(${SWIG_MODULE_gLucifer_REAL_NAME} PRIVATE ${UW_LIBRARIES} PRIVATE ${PETSc_LIBRARIES} PRIVATE Python3::Module)
62-
58+
swig_add_library(gLuciferSwig TYPE SHARED LANGUAGE python SOURCES gLucifer.i)
59+
set_target_properties(gLuciferSwig PROPERTIES SUFFIX ".so" OUTPUT_NAME "gLucifer")
60+
target_link_libraries(gLuciferSwig PRIVATE ${UW_LIBRARIES} PRIVATE ${PETSc_LIBRARIES} PRIVATE Python3::Module)
6361

6462
set_source_files_properties(petsc.i PROPERTIES CPLUSPLUS ON SWIG_MODULE_NAME petsc)
65-
swig_add_library(petsc TYPE SHARED LANGUAGE python SOURCES petsc.i)
66-
set_target_properties(${SWIG_MODULE_petsc_REAL_NAME} PROPERTIES SUFFIX ".so")
67-
target_link_libraries(${SWIG_MODULE_petsc_REAL_NAME} PRIVATE ${UW_LIBRARIES} PRIVATE ${PETSc_LIBRARIES} PRIVATE Python3::Module)
63+
swig_add_library(petscSwig TYPE SHARED LANGUAGE python SOURCES petsc.i)
64+
set_target_properties(petscSwig PROPERTIES SUFFIX ".so" OUTPUT_NAME "petsc")
65+
target_link_libraries(petscSwig PRIVATE ${UW_LIBRARIES} PRIVATE ${PETSc_LIBRARIES} PRIVATE Python3::Module)
6866

6967
set_source_files_properties(PICellerator.i PROPERTIES CPLUSPLUS ON SWIG_MODULE_NAME PICellerator)
70-
swig_add_library(PICellerator TYPE SHARED LANGUAGE python SOURCES PICellerator.i)
71-
set_target_properties(${SWIG_MODULE_PICellerator_REAL_NAME} PROPERTIES SUFFIX ".so")
72-
target_link_libraries(${SWIG_MODULE_PICellerator_REAL_NAME} PRIVATE ${UW_LIBRARIES} PRIVATE ${PETSc_LIBRARIES} PRIVATE Python3::Module)
68+
swig_add_library(PICelleratorSwig TYPE SHARED LANGUAGE python SOURCES PICellerator.i)
69+
set_target_properties(PICelleratorSwig PROPERTIES SUFFIX ".so" OUTPUT_NAME "PICellerator")
70+
target_link_libraries(PICelleratorSwig PRIVATE ${UW_LIBRARIES} PRIVATE ${PETSc_LIBRARIES} PRIVATE Python3::Module)
7371

7472
set_source_files_properties(Solvers.i PROPERTIES CPLUSPLUS ON SWIG_MODULE_NAME Solvers)
75-
swig_add_library(Solvers TYPE SHARED LANGUAGE python SOURCES Solvers.i)
76-
set_target_properties(${SWIG_MODULE_Solvers_REAL_NAME} PROPERTIES SUFFIX ".so")
77-
target_link_libraries(${SWIG_MODULE_Solvers_REAL_NAME} PRIVATE ${UW_LIBRARIES} PRIVATE ${PETSc_LIBRARIES} PRIVATE Python3::Module)
73+
swig_add_library(SolversSwig TYPE SHARED LANGUAGE python SOURCES Solvers.i)
74+
set_target_properties(SolversSwig PROPERTIES SUFFIX ".so" OUTPUT_NAME "Solvers")
75+
target_link_libraries(SolversSwig PRIVATE ${UW_LIBRARIES} PRIVATE ${PETSc_LIBRARIES} PRIVATE Python3::Module)
7876

7977
set_source_files_properties(StgDomain.i PROPERTIES CPLUSPLUS ON SWIG_MODULE_NAME StgDomain)
80-
swig_add_library(StgDomain TYPE SHARED LANGUAGE python SOURCES StgDomain.i)
81-
set_target_properties(${SWIG_MODULE_StgDomain_REAL_NAME} PROPERTIES SUFFIX ".so")
82-
target_link_libraries(${SWIG_MODULE_StgDomain_REAL_NAME} PRIVATE ${UW_LIBRARIES} PRIVATE ${PETSc_LIBRARIES} PRIVATE Python3::Module)
78+
swig_add_library(StgDomainSwig TYPE SHARED LANGUAGE python SOURCES StgDomain.i)
79+
set_target_properties(StgDomainSwig PROPERTIES SUFFIX ".so" OUTPUT_NAME "StgDomain")
80+
target_link_libraries(StgDomainSwig PRIVATE ${UW_LIBRARIES} PRIVATE ${PETSc_LIBRARIES} PRIVATE Python3::Module)
8381

8482
set_source_files_properties(StGermain.i PROPERTIES CPLUSPLUS ON SWIG_MODULE_NAME StGermain)
85-
swig_add_library(StGermain TYPE SHARED LANGUAGE python SOURCES StGermain.i)
86-
set_target_properties(${SWIG_MODULE_StGermain_REAL_NAME} PROPERTIES SUFFIX ".so")
87-
target_link_libraries(${SWIG_MODULE_StGermain_REAL_NAME} PRIVATE ${UW_LIBRARIES} PRIVATE ${PETSc_LIBRARIES} PRIVATE Python3::Module)
83+
swig_add_library(StGermainSwig TYPE SHARED LANGUAGE python SOURCES StGermain.i)
84+
set_target_properties(StGermainSwig PROPERTIES SUFFIX ".so" OUTPUT_NAME "StGermain")
85+
target_link_libraries(StGermainSwig PRIVATE ${UW_LIBRARIES} PRIVATE ${PETSc_LIBRARIES} PRIVATE Python3::Module)
8886

8987
set_source_files_properties(StGermain_Tools.i PROPERTIES CPLUSPLUS ON SWIG_MODULE_NAME StGermain_Tools)
90-
swig_add_library(StGermain_Tools TYPE SHARED LANGUAGE python SOURCES StGermain_Tools.i StGermain_Tools.c)
91-
set_target_properties(${SWIG_MODULE_StGermain_Tools_REAL_NAME} PROPERTIES SUFFIX ".so")
92-
target_link_libraries(${SWIG_MODULE_StGermain_Tools_REAL_NAME} PRIVATE ${UW_LIBRARIES} PRIVATE ${PETSc_LIBRARIES} PRIVATE Python3::Module)
88+
swig_add_library(StGermain_ToolsSwig TYPE SHARED LANGUAGE python SOURCES StGermain_Tools.i StGermain_Tools.c)
89+
set_target_properties(StGermain_ToolsSwig PROPERTIES SUFFIX ".so" OUTPUT_NAME "StGermain_Tools")
90+
target_link_libraries(StGermain_ToolsSwig PRIVATE ${UW_LIBRARIES} PRIVATE ${PETSc_LIBRARIES} PRIVATE Python3::Module)
9391

9492
set_source_files_properties(StgFEM.i PROPERTIES CPLUSPLUS ON SWIG_MODULE_NAME StgFEM)
95-
swig_add_library(StgFEM TYPE SHARED LANGUAGE python SOURCES StgFEM.i)
96-
set_target_properties(${SWIG_MODULE_StgFEM_REAL_NAME} PROPERTIES SUFFIX ".so")
97-
target_link_libraries(${SWIG_MODULE_StgFEM_REAL_NAME} PRIVATE ${UW_LIBRARIES} PRIVATE ${PETSc_LIBRARIES} PRIVATE Python3::Module)
93+
swig_add_library(StgFEMSwig TYPE SHARED LANGUAGE python SOURCES StgFEM.i)
94+
set_target_properties(StgFEMSwig PROPERTIES SUFFIX ".so" OUTPUT_NAME "StgFEM")
95+
target_link_libraries(StgFEMSwig PRIVATE ${UW_LIBRARIES} PRIVATE ${PETSc_LIBRARIES} PRIVATE Python3::Module)
9896

9997
set_source_files_properties(Underworld.i PROPERTIES CPLUSPLUS ON SWIG_MODULE_NAME Underworld)
100-
swig_add_library(Underworld TYPE SHARED LANGUAGE python SOURCES Underworld.i)
101-
set_target_properties(${SWIG_MODULE_Underworld_REAL_NAME} PROPERTIES SUFFIX ".so")
102-
target_link_libraries(${SWIG_MODULE_Underworld_REAL_NAME} PRIVATE ${UW_LIBRARIES} PRIVATE ${PETSc_LIBRARIES} PRIVATE Python3::Module)
98+
swig_add_library(UnderworldSwig TYPE SHARED LANGUAGE python SOURCES Underworld.i)
99+
set_target_properties(UnderworldSwig PROPERTIES SUFFIX ".so" OUTPUT_NAME "Underworld")
100+
target_link_libraries(UnderworldSwig PRIVATE ${UW_LIBRARIES} PRIVATE ${PETSc_LIBRARIES} PRIVATE Python3::Module)
103101

104102
# Handle where to install the resulting Python package
105103
if(CALL_FROM_SETUP_PY)
@@ -113,18 +111,18 @@ else()
113111
endif()
114112

115113
# Find the SWIG_SUPPORT_FILES from each wrapping
116-
get_property(FUNCTION_PY_FILE TARGET ${SWIG_MODULE_Function_REAL_NAME} PROPERTY SWIG_SUPPORT_FILES)
117-
get_property(CARRAYS_PY_FILE TARGET ${SWIG_MODULE_c_arrays_REAL_NAME} PROPERTY SWIG_SUPPORT_FILES)
118-
get_property(CPOINTERS_PY_FILE TARGET ${SWIG_MODULE_c_pointers_REAL_NAME} PROPERTY SWIG_SUPPORT_FILES)
119-
get_property(GLUCIFER_PY_FILE TARGET ${SWIG_MODULE_gLucifer_REAL_NAME} PROPERTY SWIG_SUPPORT_FILES)
120-
get_property(PETSC_PY_FILE TARGET ${SWIG_MODULE_petsc_REAL_NAME} PROPERTY SWIG_SUPPORT_FILES)
121-
get_property(PICELLERATOR_PY_FILE TARGET ${SWIG_MODULE_PICellerator_REAL_NAME} PROPERTY SWIG_SUPPORT_FILES)
122-
get_property(SOLVERS_PY_FILE TARGET ${SWIG_MODULE_Solvers_REAL_NAME} PROPERTY SWIG_SUPPORT_FILES)
123-
get_property(STGDOMAIN_PY_FILE TARGET ${SWIG_MODULE_StgDomain_REAL_NAME} PROPERTY SWIG_SUPPORT_FILES)
124-
get_property(STGERMAIN_PY_FILE TARGET ${SWIG_MODULE_StGermain_REAL_NAME} PROPERTY SWIG_SUPPORT_FILES)
125-
get_property(STGERMAIN_TOOLS_PY_FILE TARGET ${SWIG_MODULE_StGermain_Tools_REAL_NAME} PROPERTY SWIG_SUPPORT_FILES)
126-
get_property(STGFEM_PY_FILE TARGET ${SWIG_MODULE_StgFEM_REAL_NAME} PROPERTY SWIG_SUPPORT_FILES)
127-
get_property(UNDERWORLD_PY_FILE TARGET ${SWIG_MODULE_Underworld_REAL_NAME} PROPERTY SWIG_SUPPORT_FILES)
114+
get_property(FUNCTION_PY_FILE TARGET FunctionSwig PROPERTY SWIG_SUPPORT_FILES)
115+
get_property(CARRAYS_PY_FILE TARGET c_arraysSwig PROPERTY SWIG_SUPPORT_FILES)
116+
get_property(CPOINTERS_PY_FILE TARGET c_pointersSwig PROPERTY SWIG_SUPPORT_FILES)
117+
get_property(GLUCIFER_PY_FILE TARGET gLuciferSwig PROPERTY SWIG_SUPPORT_FILES)
118+
get_property(PETSC_PY_FILE TARGET petscSwig PROPERTY SWIG_SUPPORT_FILES)
119+
get_property(PICELLERATOR_PY_FILE TARGET PICelleratorSwig PROPERTY SWIG_SUPPORT_FILES)
120+
get_property(SOLVERS_PY_FILE TARGET SolversSwig PROPERTY SWIG_SUPPORT_FILES)
121+
get_property(STGDOMAIN_PY_FILE TARGET StgDomainSwig PROPERTY SWIG_SUPPORT_FILES)
122+
get_property(STGERMAIN_PY_FILE TARGET StGermainSwig PROPERTY SWIG_SUPPORT_FILES)
123+
get_property(STGERMAIN_TOOLS_PY_FILE TARGET StGermain_ToolsSwig PROPERTY SWIG_SUPPORT_FILES)
124+
get_property(STGFEM_PY_FILE TARGET StgFEMSwig PROPERTY SWIG_SUPPORT_FILES)
125+
get_property(UNDERWORLD_PY_FILE TARGET UnderworldSwig PROPERTY SWIG_SUPPORT_FILES)
128126

129127
set(WRAPPER_FILES
130128
${FUNCTION_PY_FILE}
@@ -146,18 +144,18 @@ install(FILES ${WRAPPER_FILES} DESTINATION "${UW_INSTALL_PREFIX}/libUnderworld/l
146144

147145

148146
set(SWIG_LIBRARIES
149-
${SWIG_MODULE_Function_REAL_NAME}
150-
${SWIG_MODULE_c_arrays_REAL_NAME}
151-
${SWIG_MODULE_c_pointers_REAL_NAME}
152-
${SWIG_MODULE_gLucifer_REAL_NAME}
153-
${SWIG_MODULE_petsc_REAL_NAME}
154-
${SWIG_MODULE_PICellerator_REAL_NAME}
155-
${SWIG_MODULE_Solvers_REAL_NAME}
156-
${SWIG_MODULE_StgDomain_REAL_NAME}
157-
${SWIG_MODULE_StGermain_REAL_NAME}
158-
${SWIG_MODULE_StGermain_Tools_REAL_NAME}
159-
${SWIG_MODULE_StgFEM_REAL_NAME}
160-
${SWIG_MODULE_Underworld_REAL_NAME}
147+
FunctionSwig
148+
c_arraysSwig
149+
c_pointersSwig
150+
gLuciferSwig
151+
petscSwig
152+
PICelleratorSwig
153+
SolversSwig
154+
StgDomainSwig
155+
StGermainSwig
156+
StGermain_ToolsSwig
157+
StgFEMSwig
158+
UnderworldSwig
161159
)
162160

163161
install(TARGETS ${SWIG_LIBRARIES}

0 commit comments

Comments
 (0)