22cmake_minimum_required (VERSION 3.20)
33project (AdaptiveMultigridSolvers)
44
5-
65set (CMAKE_VERBOSE_MAKEFILE ON )
76
87## -----------------------------------------------------------------------------
98set (CMAKE_CXX_STANDARD 14)
109set (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
5289target_link_libraries (poisson_recon_lib
53- ${TRG_PNG} ${TRG_JPEG} ${TRG_ZLIB} )
90+ ${PNG_LIBRARIES} ${ZLIB_LIBRARIES} ${JPEG_LIBRARIES} )
91+
5492
5593add_executable (poisson_recon
5694 ${PROJECT_SOURCE_DIR} /Src/PoissonRecon.cpp)
5795
5896target_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