X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=CMakeLists.txt;h=71f4ef5864587a729f2520dab7552e6733c1026f;hb=2c138d649ed28a1e9184ddfcd8c2f2d89300b824;hp=7d7d6851c589f4843e45af562e3d9800bd3cd24b;hpb=2c12c9eb8d63cabac2d4113b4f54fdf53da8368c;p=freeglut diff --git a/CMakeLists.txt b/CMakeLists.txt index 7d7d685..71f4ef5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.8.8 FATAL_ERROR) +CMAKE_MINIMUM_REQUIRED(VERSION 3.0.0 FATAL_ERROR) PROJECT(freeglut) # for multiarch LIBDIR support (requires cmake>=2.8.8) @@ -20,6 +20,7 @@ SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) set(VERSION_MAJOR 3) set(VERSION_MINOR 0) set(VERSION_PATCH 0) +set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}) # Update fg_version.h to match the versions number here in cmake CONFIGURE_FILE(src/fg_version.h.in src/fg_version.h) @@ -244,8 +245,8 @@ ENDIF() # but do use GLES constants directly for all other needs # GLES1 and GLES2 libraries are compatible and can be co-linked. IF(FREEGLUT_GLES) - ADD_DEFINITIONS(-DFREEGLUT_GLES) - LIST(APPEND LIBS GLESv2 GLESv1_CM EGL) + LIST(APPEND PUBLIC_DEFINITIONS -DFREEGLUT_GLES) + LIST(APPEND LIBS GLESv2 GLESv1_CM EGL) ELSE() FIND_PACKAGE(OpenGL REQUIRED) LIST(APPEND LIBS ${OPENGL_gl_LIBRARY}) @@ -391,10 +392,10 @@ ENDIF() IF(WIN32) LIST(APPEND LIBS winmm) IF(FREEGLUT_BUILD_SHARED_LIBS) - SET_TARGET_PROPERTIES(freeglut PROPERTIES COMPILE_FLAGS -DFREEGLUT_EXPORTS) + TARGET_COMPILE_DEFINITIONS(freeglut PRIVATE FREEGLUT_EXPORTS) ENDIF() IF(FREEGLUT_BUILD_STATIC_LIBS) - SET_TARGET_PROPERTIES(freeglut_static PROPERTIES COMPILE_FLAGS -DFREEGLUT_STATIC) + TARGET_COMPILE_DEFINITIONS(freeglut_static PUBLIC FREEGLUT_STATIC) # need to set machine:x64 for linker, at least for VC10, and # doesn't hurt for older compilers: # http://public.kitware.com/Bug/view.php?id=11240#c22768 @@ -448,36 +449,36 @@ ELSE() ENDIF() IF(FREEGLUT_BUILD_SHARED_LIBS) TARGET_LINK_LIBRARIES(freeglut ${LIBS}) + TARGET_COMPILE_DEFINITIONS(freeglut PUBLIC ${PUBLIC_DEFINITIONS}) ENDIF() IF(FREEGLUT_BUILD_STATIC_LIBS) TARGET_LINK_LIBRARIES(freeglut_static ${LIBS}) + TARGET_COMPILE_DEFINITIONS(freeglut_static PUBLIC ${PUBLIC_DEFINITIONS}) ENDIF() IF(FREEGLUT_BUILD_SHARED_LIBS) - INSTALL(TARGETS freeglut + INSTALL(TARGETS freeglut EXPORT FreeGLUTTargets RUNTIME DESTINATION bin LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + INCLUDES DESTINATION include ) IF(INSTALL_PDB) INSTALL(FILES ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Debug/freeglut${CMAKE_DEBUG_POSTFIX}.pdb DESTINATION bin - CONFIGURATIONS Debug) + CONFIGURATIONS Debug + COMPONENT Devel) ENDIF() ENDIF() IF(FREEGLUT_BUILD_STATIC_LIBS) - INSTALL(TARGETS freeglut_static + INSTALL(TARGETS freeglut_static EXPORT FreeGLUTTargets RUNTIME DESTINATION bin LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + INCLUDES DESTINATION include ) - IF(INSTALL_PDB) - INSTALL(FILES ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}/Debug/freeglut_static${CMAKE_DEBUG_POSTFIX}.pdb - DESTINATION lib - CONFIGURATIONS Debug) - ENDIF() ENDIF() -INSTALL(FILES ${FREEGLUT_HEADERS} DESTINATION include/GL) +INSTALL(FILES ${FREEGLUT_HEADERS} DESTINATION include/GL COMPONENT Devel) @@ -502,7 +503,6 @@ MACRO(ADD_DEMO name) IF(FREEGLUT_BUILD_STATIC_LIBS) ADD_EXECUTABLE(${name}_static ${ARGN}) TARGET_LINK_LIBRARIES(${name}_static ${DEMO_LIBS} freeglut_static) - SET_TARGET_PROPERTIES(${name}_static PROPERTIES COMPILE_FLAGS -DFREEGLUT_STATIC) IF(WIN32 AND MSVC) SET_TARGET_PROPERTIES(${name}_static PROPERTIES DEBUG_POSTFIX d) ENDIF() @@ -571,6 +571,36 @@ IF(FREEGLUT_GLES) SET(PC_FILENAME "freeglut-gles.pc") ENDIF() CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/freeglut.pc.in ${CMAKE_BINARY_DIR}/freeglut.pc @ONLY) -INSTALL(FILES ${CMAKE_BINARY_DIR}/freeglut.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig/ RENAME ${PC_FILENAME}) +INSTALL(FILES ${CMAKE_BINARY_DIR}/freeglut.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig/ RENAME ${PC_FILENAME} COMPONENT Devel) # TODO: change the library and .pc name when building for GLES, # e.g. -lglut-GLES + +INCLUDE(CMakePackageConfigHelpers) +WRITE_BASIC_PACKAGE_VERSION_FILE( + "${CMAKE_CURRENT_BINARY_DIR}/FreeGLUT/FreeGLUTConfigVersion.cmake" + VERSION ${VERSION} + COMPATIBILITY AnyNewerVersion +) + +# needs cmake 3.0 (as does the "INCLUDES DIRECTORY" argument to install(TARGETS)): +EXPORT(EXPORT FreeGLUTTargets + FILE "${CMAKE_CURRENT_BINARY_DIR}/FreeGLUT/FreeGLUTTargets.cmake" + NAMESPACE FreeGLUT:: +) +CONFIGURE_FILE(FreeGLUTConfig.cmake.in + "${CMAKE_CURRENT_BINARY_DIR}/FreeGLUT/FreeGLUTConfig.cmake" + @ONLY +) +SET(ConfigPackageLocation lib/cmake/FreeGLUT) +INSTALL(EXPORT FreeGLUTTargets + FILE FreeGLUTTargets.cmake + NAMESPACE FreeGLUT:: + DESTINATION ${ConfigPackageLocation} +) +INSTALL( + FILES + "${CMAKE_CURRENT_BINARY_DIR}/FreeGLUT/FreeGLUTConfig.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/FreeGLUT/FreeGLUTConfigVersion.cmake" + DESTINATION ${ConfigPackageLocation} + COMPONENT Devel +)