Skip to content

Commit f4e41ee

Browse files
committed
add cxx flags and use existing libs if possible
1 parent 1a8d571 commit f4e41ee

File tree

1 file changed

+63
-24
lines changed

1 file changed

+63
-24
lines changed

CMakeLists.txt

Lines changed: 63 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,44 +2,81 @@
22
cmake_minimum_required(VERSION 3.20)
33
project(AdaptiveMultigridSolvers)
44

5-
65
set(CMAKE_VERBOSE_MAKEFILE ON)
76

87
## -----------------------------------------------------------------------------
98
set(CMAKE_CXX_STANDARD 14)
109
set(CMAKE_CXX_STANDARD_REQUIRED ON)
1110

12-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS} -std=c++14 -pthread -Wno-invalid-offsetof -fPIC -Wno-deprecated")
13-
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${CMAKE_CXX_FLAGS} -g")
14-
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${CMAKE_CXX_FLAGS} -Ofast -DRELEASE -funroll-loops -ffast-math")
11+
# set custom compiler flags
12+
if(CMAKE_COMPILER_IS_GNUCXX)
13+
set(CFLAGS "-std=c++14 -pthread -Wno-deprecated -Wno-invalid-offsetof")
14+
set(LFLAGS "-lstdc++ -lpthread")
15+
else()
16+
set(CFLAGS, "-std=c++14 -pthread -Wno-deprecated -Wno-invalid-offsetof -Wno-dangling-else")
17+
set(LFLAGS, "-lstdc++")
18+
endif()
1519

1620

17-
## -----------------------------------------------------------------------------
18-
find_package(OpenMP)
21+
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${CFLAGS} -g3")
22+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${CFLAGS} -Ofast -DRELEASE -funroll-loops -ffast-math")
23+
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${LFLAGS}")
24+
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} ${LFLAGS} -Ofast")
1925

26+
## -----------------------------------------------------------------------------
27+
find_package(OpenMP REQUIRED)
2028

2129
## -----------------------------------------------------------------------------
22-
# all include paths
23-
include_directories(${PROJECT_SOURCE_DIR})
24-
include_directories(${PROJECT_SOURCE_DIR}/Src)
25-
include_directories(${PROJECT_SOURCE_DIR}/PNG)
26-
include_directories(${PROJECT_SOURCE_DIR}/JPEG)
27-
include_directories(${PROJECT_SOURCE_DIR}/ZLIB)
30+
find_package(PNG) # PNG depends on zlib and adds zlib to path already
31+
if(PNG_FOUND)
32+
#message("-- png lib found: include_dir=(${PNG_INCLUDE_DIRS}), libs=(${PNG_LIBRARIES})")
33+
else()
34+
35+
set(PNG_PATH "${PROJECT_SOURCE_DIR}/PNG")
36+
message("-- png lib not found: will build from (${PNG_PATH})")
37+
38+
set(PNG_INCLUDE_DIRS ${PNG_PATH})
39+
set(PNG_LIBRARIES "png") # will result in libpng
40+
41+
file(GLOB_RECURSE SRCS_PNG "${PNG_PATH}/*.c")
42+
add_library(${PNG_LIBRARIES} SHARED ${SRCS_PNG})
43+
endif()
2844

2945
## -----------------------------------------------------------------------------
30-
## build dependencies as libraries
46+
find_package(ZLIB) # dont really need to check for zlib if png was success
47+
if(ZLIB_FOUND)
48+
#message("-- zlib found: include_dir=(${ZLIB_INCLUDE_DIRS}), libs=(${ZLIB_LIBRARIES})")
49+
else()
50+
set(ZLIB_PATH "${PROJECT_SOURCE_DIR}/ZLIB")
51+
message("-- zlib not found: will build from (${ZLIB_PATH})")
52+
53+
set(ZLIB_INCLUDE_DIRS ${ZLIB_PATH})
54+
set(ZLIB_LIBRARIES "z") # will result in libz
55+
56+
file(GLOB_RECURSE SRCS_ZLIB "${ZLIB_PATH}/*.c")
57+
add_library(${ZLIB_LIBRARIES} SHARED ${SRCS_ZLIB})
58+
endif()
59+
3160
## -----------------------------------------------------------------------------
32-
set(TRG_PNG pr_png)
33-
set(TRG_JPEG pr_jpeg)
34-
set(TRG_ZLIB pr_zlib)
61+
find_package(JPEG)
62+
if(JPEG_FOUND)
63+
#message("-- jpeg lib found: include_dir=(${JPEG_INCLUDE_DIRS}), libs=(${JPEG_LIBRARIES})")
64+
else()
65+
set(JPEG_PATH "${PROJECT_SOURCE_DIR}/JPEG")
66+
message("-- jpeg lib not found: will build from (${JPEG_PATH})")
3567

36-
file(GLOB_RECURSE SRCS_PNG "PNG/*.c")
37-
file(GLOB_RECURSE SRCS_JPEG "JPEG/*.cpp")
38-
file(GLOB_RECURSE SRCS_ZLIB "ZLIB/*.c")
68+
set(JPEG_INCLUDE_DIRS ${JPEG})
69+
set(JPEG_LIBRARIES "jpeg") # will result in libjpeg
3970

40-
add_library(${TRG_PNG} STATIC ${SRCS_PNG})
41-
add_library(${TRG_JPEG} SHARED ${SRCS_JPEG})
42-
add_library(${TRG_ZLIB} SHARED ${SRCS_ZLIB})
71+
file(GLOB_RECURSE SRCS_JPEG "${JPEG_PATH}/*.c")
72+
add_library(${JPEG_LIBRARIES} SHARED ${SRCS_JPEG})
73+
endif()
74+
75+
76+
## -----------------------------------------------------------------------------
77+
# all include paths
78+
include_directories(${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/Src)
79+
include_directories(${PNG_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIRS} ${JPEG_INCLUDE_DIRS})
4380

4481

4582
## -----------------------------------------------------------------------------
@@ -50,12 +87,14 @@ add_library(poisson_recon_lib SHARED
5087
${PROJECT_SOURCE_DIR}/Src/PoissonReconLib.cpp)
5188

5289
target_link_libraries(poisson_recon_lib
53-
${TRG_PNG} ${TRG_JPEG} ${TRG_ZLIB})
90+
${PNG_LIBRARIES} ${ZLIB_LIBRARIES} ${JPEG_LIBRARIES})
91+
5492

5593
add_executable(poisson_recon
5694
${PROJECT_SOURCE_DIR}/Src/PoissonRecon.cpp)
5795

5896
target_link_libraries(poisson_recon
59-
poisson_recon_lib ${TRG_PNG} ${TRG_JPEG} ${TRG_ZLIB})
97+
poisson_recon_lib
98+
${PNG_LIBRARIES} ${ZLIB_LIBRARIES} ${JPEG_LIBRARIES})
6099

61100
## -----------------------------------------------------------------------------

0 commit comments

Comments
 (0)