
[CMake] Simplify CMake build files, remove redundancies. Ports of branch-1.3, svn r 11442 and 11444: Remove src/fl_call_main.c from non-Windows (static) libraries. It would be an empty object file anyway. Use CMake variables to set up used files and linked libraries to remove redundancies. All files and libs are used only in the definition of CMake variables and used later in static and shared builds, resp. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11447 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
169 lines
5.6 KiB
CMake
169 lines
5.6 KiB
CMake
#
|
|
# "$Id$"
|
|
#
|
|
# macros.cmake defines macros used by the build system
|
|
# Written by Michael Surette
|
|
#
|
|
# Copyright 1998-2016 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:
|
|
#
|
|
# http://www.fltk.org/COPYING.php
|
|
#
|
|
# Please report all bugs and problems on the following page:
|
|
#
|
|
# http://www.fltk.org/str.php
|
|
#
|
|
|
|
#######################################################################
|
|
# macros used by the build system
|
|
#######################################################################
|
|
macro(FL_ADD_LIBRARY LIBNAME LIBTYPE LIBFILES)
|
|
|
|
if (${LIBTYPE} STREQUAL "SHARED")
|
|
set (LIBRARY_NAME ${LIBNAME}_SHARED)
|
|
else ()
|
|
set (LIBRARY_NAME ${LIBNAME})
|
|
endif (${LIBTYPE} STREQUAL "SHARED")
|
|
|
|
if (MSVC)
|
|
set (LIBNAME_DEBUG "${LIBNAME}d")
|
|
else ()
|
|
set (LIBNAME_DEBUG "${LIBNAME}")
|
|
endif (MSVC)
|
|
|
|
add_library(${LIBRARY_NAME} ${LIBTYPE} ${LIBFILES})
|
|
|
|
set_target_properties(${LIBRARY_NAME}
|
|
PROPERTIES
|
|
OUTPUT_NAME ${LIBNAME}
|
|
DEBUG_OUTPUT_NAME "${LIBNAME_DEBUG}"
|
|
CLEAN_DIRECT_OUTPUT TRUE
|
|
COMPILE_DEFINITIONS "FL_LIBRARY"
|
|
)
|
|
|
|
if (${LIBTYPE} STREQUAL "SHARED")
|
|
set_target_properties(${LIBRARY_NAME}
|
|
PROPERTIES
|
|
VERSION ${FLTK_VERSION_FULL}
|
|
SOVERSION ${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}
|
|
PREFIX "lib" # for MSVC static/shared coexistence
|
|
)
|
|
endif (${LIBTYPE} STREQUAL "SHARED")
|
|
|
|
if (MSVC)
|
|
if (OPTION_LARGE_FILE)
|
|
set_target_properties(${LIBNAME}
|
|
PROPERTIES
|
|
LINK_FLAGS /LARGEADDRESSAWARE
|
|
)
|
|
endif (OPTION_LARGE_FILE)
|
|
|
|
if (${LIBTYPE} STREQUAL "SHARED")
|
|
set_target_properties(${LIBRARY_NAME}
|
|
PROPERTIES
|
|
COMPILE_DEFINITIONS "FL_DLL"
|
|
)
|
|
endif (${LIBTYPE} STREQUAL "SHARED")
|
|
endif (MSVC)
|
|
|
|
install(TARGETS ${LIBRARY_NAME}
|
|
EXPORT FLTK-Targets
|
|
RUNTIME DESTINATION ${FLTK_BINDIR}
|
|
LIBRARY DESTINATION ${FLTK_LIBDIR}
|
|
ARCHIVE DESTINATION ${FLTK_LIBDIR}
|
|
)
|
|
|
|
list(APPEND FLTK_LIBRARIES "${LIBRARY_NAME}")
|
|
set (FLTK_LIBRARIES ${FLTK_LIBRARIES} PARENT_SCOPE)
|
|
|
|
endmacro(FL_ADD_LIBRARY LIBNAME LIBTYPE LIBFILES)
|
|
|
|
#######################################################################
|
|
# USAGE: FLTK_RUN_FLUID TARGET_NAME "FLUID_SOURCE [.. FLUID_SOURCE]"
|
|
function(FLTK_RUN_FLUID TARGET SOURCES)
|
|
set (CXX_FILES)
|
|
foreach(src ${SOURCES})
|
|
if ("${src}" MATCHES "\\.fl$")
|
|
string(REGEX REPLACE "(.*).fl" \\1 basename ${src})
|
|
add_custom_command(
|
|
OUTPUT "${basename}.cxx" "${basename}.h"
|
|
COMMAND fluid -c ${CMAKE_CURRENT_SOURCE_DIR}/${src}
|
|
DEPENDS ${src}
|
|
MAIN_DEPENDENCY ${src}
|
|
)
|
|
list(APPEND CXX_FILES "${basename}.cxx")
|
|
endif ("${src}" MATCHES "\\.fl$")
|
|
set (${TARGET} ${CXX_FILES} PARENT_SCOPE)
|
|
endforeach(src)
|
|
endfunction(FLTK_RUN_FLUID TARGET SOURCES)
|
|
|
|
#######################################################################
|
|
macro(CREATE_EXAMPLE NAME SOURCES LIBRARIES)
|
|
|
|
set (srcs) # source files
|
|
set (flsrcs) # fluid source files
|
|
|
|
set (tname ${NAME}) # target name
|
|
set (oname ${NAME}) # output (executable) name
|
|
|
|
# rename reserved target name "help" (CMake 2.8.12 and later)
|
|
if (${tname} MATCHES "^help$")
|
|
set (tname "test_help")
|
|
endif (${tname} MATCHES "^help$")
|
|
|
|
foreach(src ${SOURCES})
|
|
if ("${src}" MATCHES "\\.fl$")
|
|
list(APPEND flsrcs ${src})
|
|
else ()
|
|
list(APPEND srcs ${src})
|
|
endif ("${src}" MATCHES "\\.fl$")
|
|
endforeach(src)
|
|
|
|
set (FLUID_SOURCES)
|
|
if (flsrcs)
|
|
FLTK_RUN_FLUID(FLUID_SOURCES "${flsrcs}")
|
|
endif (flsrcs)
|
|
|
|
if (APPLE AND (NOT OPTION_APPLE_X11) AND (NOT OPTION_APPLE_SDL))
|
|
unset (RESOURCE_PATH)
|
|
if (${tname} STREQUAL "blocks" OR ${tname} STREQUAL "checkers" OR ${tname} STREQUAL "sudoku")
|
|
set (ICON_NAME ${tname}.icns)
|
|
set (RESOURCE_PATH "${PROJECT_SOURCE_DIR}/test/${tname}.app/Contents/Resources/${ICON_NAME}")
|
|
elseif (${tname} STREQUAL "demo")
|
|
set (RESOURCE_PATH "${PROJECT_SOURCE_DIR}/test/demo.menu")
|
|
endif (${tname} STREQUAL "blocks" OR ${tname} STREQUAL "checkers" OR ${tname} STREQUAL "sudoku")
|
|
|
|
if (DEFINED RESOURCE_PATH)
|
|
add_executable(${tname} MACOSX_BUNDLE ${srcs} ${FLUID_SOURCES} ${RESOURCE_PATH})
|
|
if (${tname} STREQUAL "demo")
|
|
target_compile_definitions(demo PUBLIC USING_XCODE)
|
|
endif (${tname} STREQUAL "demo")
|
|
else ()
|
|
add_executable(${tname} MACOSX_BUNDLE ${srcs} ${FLUID_SOURCES})
|
|
endif (DEFINED RESOURCE_PATH)
|
|
else ()
|
|
add_executable(${tname} WIN32 ${srcs} ${FLUID_SOURCES})
|
|
endif (APPLE AND (NOT OPTION_APPLE_X11) AND (NOT OPTION_APPLE_SDL))
|
|
|
|
set_target_properties(${tname}
|
|
PROPERTIES OUTPUT_NAME ${oname}
|
|
)
|
|
if (APPLE AND DEFINED RESOURCE_PATH)
|
|
if (NOT ${tname} STREQUAL "demo")
|
|
set_target_properties(${tname} PROPERTIES MACOSX_BUNDLE_ICON_FILE ${ICON_NAME})
|
|
endif (NOT ${tname} STREQUAL "demo")
|
|
set_target_properties(${tname} PROPERTIES RESOURCE ${RESOURCE_PATH})
|
|
endif (APPLE AND DEFINED RESOURCE_PATH)
|
|
if (APPLE AND (NOT OPTION_APPLE_X11) AND (NOT OPTION_APPLE_SDL) AND ${tname} STREQUAL "editor")
|
|
set_target_properties("editor" PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${PROJECT_SOURCE_DIR}/test/editor-Info.plist" )
|
|
endif(APPLE AND (NOT OPTION_APPLE_X11) AND (NOT OPTION_APPLE_SDL) AND ${tname} STREQUAL "editor")
|
|
|
|
target_link_libraries(${tname} ${LIBRARIES})
|
|
|
|
endmacro(CREATE_EXAMPLE NAME SOURCES LIBRARIES)
|
|
|
|
#######################################################################
|