mirror of https://github.com/fltk/fltk
124 lines
3.6 KiB
CMake
124 lines
3.6 KiB
CMake
|
#
|
||
|
# Macro used by the CMake build system for the Fast Light Tool Kit (FLTK).
|
||
|
# Written by Michael Surette
|
||
|
#
|
||
|
# Copyright 1998-2020 by Bill Spitzak and others.
|
||
|
#
|
||
|
# This library is free software. Distribution and use rights are outlined in
|
||
|
# the file "COPYING" which should have been included with this file. If this
|
||
|
# file is missing or damaged, see the license at:
|
||
|
#
|
||
|
# https://www.fltk.org/COPYING.php
|
||
|
#
|
||
|
# Please see the following page on how to report bugs and issues:
|
||
|
#
|
||
|
# https://www.fltk.org/bugs.php
|
||
|
#
|
||
|
|
||
|
#######################################################################
|
||
|
# FL_ADD_LIBRARY - add a static or shared library to the build
|
||
|
#######################################################################
|
||
|
|
||
|
macro (FL_ADD_LIBRARY LIBNAME LIBTYPE LIBFILES)
|
||
|
|
||
|
if (${LIBTYPE} STREQUAL "SHARED")
|
||
|
set (TARGET_NAME ${LIBNAME}_SHARED)
|
||
|
else ()
|
||
|
set (TARGET_NAME ${LIBNAME})
|
||
|
endif (${LIBTYPE} STREQUAL "SHARED")
|
||
|
|
||
|
if (MSVC)
|
||
|
set (OUTPUT_NAME_DEBUG "${LIBNAME}d")
|
||
|
set (OUTPUT_NAME_RELEASE "${LIBNAME}")
|
||
|
else ()
|
||
|
set (OUTPUT_NAME_DEBUG "${LIBNAME}")
|
||
|
set (OUTPUT_NAME_RELEASE "${LIBNAME}")
|
||
|
endif (MSVC)
|
||
|
|
||
|
add_library(${TARGET_NAME} ${LIBTYPE} ${LIBFILES})
|
||
|
|
||
|
# target properties for all libraries
|
||
|
|
||
|
set_target_properties(${TARGET_NAME}
|
||
|
PROPERTIES
|
||
|
CLEAN_DIRECT_OUTPUT TRUE
|
||
|
COMPILE_DEFINITIONS "FL_LIBRARY"
|
||
|
)
|
||
|
|
||
|
# additional target properties for static libraries
|
||
|
|
||
|
if (${LIBTYPE} STREQUAL "STATIC")
|
||
|
set_target_properties(${TARGET_NAME}
|
||
|
PROPERTIES
|
||
|
OUTPUT_NAME ${LIBNAME}
|
||
|
OUTPUT_NAME_DEBUG ${OUTPUT_NAME_DEBUG}
|
||
|
OUTPUT_NAME_RELEASE ${OUTPUT_NAME_RELEASE}
|
||
|
)
|
||
|
endif (${LIBTYPE} STREQUAL "STATIC")
|
||
|
|
||
|
# additional target properties for shared (dynamic) libraries (DLL's)
|
||
|
|
||
|
if (${LIBTYPE} STREQUAL "SHARED")
|
||
|
set_target_properties(${TARGET_NAME}
|
||
|
PROPERTIES
|
||
|
VERSION ${FLTK_VERSION}
|
||
|
SOVERSION ${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}
|
||
|
OUTPUT_NAME ${LIBNAME}
|
||
|
OUTPUT_NAME_DEBUG ${OUTPUT_NAME_DEBUG}
|
||
|
OUTPUT_NAME_RELEASE ${OUTPUT_NAME_RELEASE}
|
||
|
)
|
||
|
# MSVC only:
|
||
|
if (MSVC)
|
||
|
set_target_properties(${TARGET_NAME}
|
||
|
PROPERTIES
|
||
|
OUTPUT_NAME lib${LIBNAME}
|
||
|
OUTPUT_NAME_DEBUG lib${OUTPUT_NAME_DEBUG}
|
||
|
OUTPUT_NAME_RELEASE lib${OUTPUT_NAME_RELEASE}
|
||
|
# PREFIX "lib" # for MSVC static/shared coexistence *DOES NOT WORK*
|
||
|
)
|
||
|
endif (MSVC)
|
||
|
endif (${LIBTYPE} STREQUAL "SHARED")
|
||
|
|
||
|
# Debug library output names (optional)
|
||
|
set (DEBUG_ONAME 0)
|
||
|
|
||
|
if (DEBUG_ONAME)
|
||
|
get_target_property (XX_ONAME ${TARGET_NAME} OUTPUT_NAME)
|
||
|
get_target_property (XX_ONAME_DEBUG ${TARGET_NAME} OUTPUT_NAME_DEBUG)
|
||
|
get_target_property (XX_ONAME_RELEASE ${TARGET_NAME} OUTPUT_NAME_RELEASE)
|
||
|
|
||
|
fl_debug_var (TARGET_NAME)
|
||
|
fl_debug_var (XX_ONAME)
|
||
|
fl_debug_var (XX_ONAME_DEBUG)
|
||
|
fl_debug_var (XX_ONAME_RELEASE)
|
||
|
message (STATUS "---")
|
||
|
endif (DEBUG_ONAME)
|
||
|
|
||
|
if (MSVC)
|
||
|
if (OPTION_LARGE_FILE)
|
||
|
set_target_properties(${TARGET_NAME}
|
||
|
PROPERTIES
|
||
|
LINK_FLAGS /LARGEADDRESSAWARE
|
||
|
)
|
||
|
endif (OPTION_LARGE_FILE)
|
||
|
|
||
|
if (${LIBTYPE} STREQUAL "SHARED")
|
||
|
set_target_properties(${TARGET_NAME}
|
||
|
PROPERTIES
|
||
|
COMPILE_DEFINITIONS "FL_DLL"
|
||
|
)
|
||
|
endif (${LIBTYPE} STREQUAL "SHARED")
|
||
|
endif (MSVC)
|
||
|
|
||
|
install (TARGETS ${TARGET_NAME}
|
||
|
EXPORT FLTK-Targets
|
||
|
RUNTIME DESTINATION ${FLTK_BINDIR}
|
||
|
LIBRARY DESTINATION ${FLTK_LIBDIR}
|
||
|
ARCHIVE DESTINATION ${FLTK_LIBDIR}
|
||
|
)
|
||
|
|
||
|
list (APPEND FLTK_LIBRARIES "${TARGET_NAME}")
|
||
|
set (FLTK_LIBRARIES ${FLTK_LIBRARIES} PARENT_SCOPE)
|
||
|
|
||
|
endmacro (FL_ADD_LIBRARY LIBNAME LIBTYPE LIBFILES)
|