Skip to content

Commit ac05629

Browse files
committed
cmake fixes
1 parent 12eb3d5 commit ac05629

File tree

2 files changed

+64
-55
lines changed

2 files changed

+64
-55
lines changed

CMakeLists.txt

+40-38
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ OPTION(ENABLE_RAQM "Enable RAQM support" 0)
2323
OPTION(ENABLE_ASAN "Enable (gcc) ASAN support" 0)
2424
OPTION(ENABLE_CPP "Enable CPP GD API" 1)
2525
OPTION(VERBOSE_MAKEFILE "Enable CMAKE_VERBOSE_MAKEFILE" 0)
26+
option(OVERRIDE_CMAKE_PATHS "Override CMake runtime, archive and library paths" OFF)
2627

2728
if (VERBOSE_MAKEFILE)
2829
set(CMAKE_VERBOSE_MAKEFILE ON)
@@ -44,36 +45,39 @@ IF(CMAKE_COMPILER_IS_GNUCC)
4445
endif (ENABLE_ASAN)
4546
ENDIF(CMAKE_COMPILER_IS_GNUCC)
4647

47-
# ---------- Backup output directory --------------------------
48-
SET(ORIGINAL_RUNTIME_DIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
49-
SET(ORIGINAL_LIBRARY_DIR ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
50-
SET(ORIGINAL_ARCHIVE_DIR ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY})
51-
52-
IF(NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY)
53-
SET (CMAKE_LIBRARY_OUTPUT_DIRECTORY
54-
${PROJECT_BINARY_DIR}/Bin
55-
CACHE PATH
56-
"Single Directory for all Libraries"
57-
)
58-
ENDIF()
59-
60-
# --------- Setup the Executable output Directory -------------
61-
IF(NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY)
62-
SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY
63-
${PROJECT_BINARY_DIR}/Bin
64-
CACHE PATH
65-
"Single Directory for all Executables."
66-
)
67-
ENDIF()
68-
69-
# --------- Setup the Executable output Directory -------------
70-
IF(NOT CMAKE_ARCHIVE_OUTPUT_DIRECTORY)
71-
SET (CMAKE_ARCHIVE_OUTPUT_DIRECTORY
72-
${PROJECT_BINARY_DIR}/Bin
73-
CACHE PATH
74-
"Single Directory for all static libraries."
75-
)
76-
ENDIF()
48+
if(OVERRIDE_CMAKE_PATHS)
49+
50+
# ---------- Backup output directory --------------------------
51+
SET(ORIGINAL_RUNTIME_DIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
52+
SET(ORIGINAL_LIBRARY_DIR ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
53+
SET(ORIGINAL_ARCHIVE_DIR ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY})
54+
55+
IF(NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY)
56+
SET (CMAKE_LIBRARY_OUTPUT_DIRECTORY
57+
${CMAKE_CURRENT_BINARY_DIR}/Bin
58+
PATH
59+
"Single Directory for all Libraries"
60+
)
61+
ENDIF()
62+
63+
# --------- Setup the Executable output Directory -------------
64+
IF(NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY)
65+
SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY
66+
${CMAKE_CURRENT_BINARY_DIR}/Bin
67+
PATH
68+
"Single Directory for all Executables."
69+
)
70+
ENDIF()
71+
72+
# --------- Setup the Executable output Directory -------------
73+
IF(NOT CMAKE_ARCHIVE_OUTPUT_DIRECTORY)
74+
SET (CMAKE_ARCHIVE_OUTPUT_DIRECTORY
75+
${CMAKE_CURRENT_BINARY_DIR}/Bin
76+
PATH
77+
"Single Directory for all static libraries."
78+
)
79+
ENDIF()
80+
endif()
7781

7882
SET(PKG_REQUIRES_PRIVATES "")
7983

@@ -306,10 +310,6 @@ else (USE_EXT_GD)
306310
INCLUDE_DIRECTORIES(before ${FONTCONFIG_INCLUDE_DIR})
307311

308312
add_subdirectory(src)
309-
310-
MARK_AS_ADVANCED(
311-
GD_INCLUDE_DIR
312-
)
313313
endif (USE_EXT_GD)
314314

315315
add_subdirectory(tests)
@@ -319,7 +319,9 @@ add_subdirectory(docs)
319319
add_custom_target(distclean ${GD_SOURCE_DIR}/cmake/distclean.sh)
320320

321321

322-
# ---------- Restore output directory -------------------------
323-
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${ORIGINAL_LIBRARY_DIR})
324-
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${ORIGINAL_RUNTIME_DIR})
325-
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${ORIGINAL_ARCHIVE_DIR})
322+
if(OVERRIDE_CMAKE_PATHS)
323+
# ---------- Restore output directory -------------------------
324+
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${ORIGINAL_LIBRARY_DIR})
325+
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${ORIGINAL_RUNTIME_DIR})
326+
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${ORIGINAL_ARCHIVE_DIR})
327+
endif()

src/CMakeLists.txt

+24-17
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
option(BUILD_PROGRAMS_LIB "Compile the gd program libraries" OFF)
2+
13
SET (LIBGD_SRC_FILES
24
gd.c
35
gd_avif.c
@@ -150,18 +152,20 @@ if (ZLIB_FOUND)
150152
set(GD_PROGRAMS ${GD_PROGRAMS} gd2copypal gd2togif giftogd2)
151153
endif()
152154

153-
foreach(program ${GD_PROGRAMS})
154-
add_executable(${program} ${program}.c)
155-
156-
if (BUILD_SHARED_LIBS)
157-
target_link_libraries(${program} ${GD_LIB})
158-
else()
159-
target_link_libraries(${program} ${GD_LIB_STATIC})
160-
endif()
161-
if (NOT "${GD_PROGRAMS_LIB_SRC_FILES}" STREQUAL "")
162-
target_link_libraries(${program} gd_programs_lib)
163-
endif()
164-
endforeach(program)
155+
if(BUILD_PROGRAMS_LIB)
156+
foreach(program ${GD_PROGRAMS})
157+
add_executable(${program} ${program}.c)
158+
159+
if (BUILD_SHARED_LIBS)
160+
target_link_libraries(${program} ${GD_LIB})
161+
else()
162+
target_link_libraries(${program} ${GD_LIB_STATIC})
163+
endif()
164+
if (NOT "${GD_PROGRAMS_LIB_SRC_FILES}" STREQUAL "")
165+
target_link_libraries(${program} gd_programs_lib)
166+
endif()
167+
endforeach(program)
168+
endif()
165169

166170
set(GD_INSTALL_TARGETS ${GD_PROGRAMS})
167171
if (BUILD_SHARED_LIBS)
@@ -171,11 +175,14 @@ if (BUILD_STATIC_LIBS)
171175
set(GD_INSTALL_TARGETS ${GD_INSTALL_TARGETS} ${GD_LIB_STATIC})
172176
endif()
173177

174-
install(TARGETS ${GD_INSTALL_TARGETS}
175-
RUNTIME DESTINATION bin
176-
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
177-
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
178-
install(PROGRAMS bdftogd DESTINATION bin)
178+
if(BUILD_PROGRAMS_LIB)
179+
install(TARGETS ${GD_INSTALL_TARGETS}
180+
RUNTIME DESTINATION bin
181+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
182+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
183+
install(PROGRAMS bdftogd DESTINATION bin)
184+
endif()
185+
179186
install(FILES
180187
gd.h
181188
gd_color_map.h

0 commit comments

Comments
 (0)