You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
libepoxy/src/CMakeLists.txt

125 lines
5.9 KiB

set (EPOXY_APIS gl egl wgl glx)
if (EPOXY_REBUILD_FROM_SPECS)
set (EPOXY_GENERATED_FILES "")
foreach (EPOXY_API ${EPOXY_APIS})
set (EPOXY_API_GENERATED_FILES
"${CMAKE_CURRENT_BINARY_DIR}/${EPOXY_API}_generated_dispatch.c"
"${CMAKE_CURRENT_BINARY_DIR}/../include/epoxy/${EPOXY_API}_generated.h")
list (APPEND EPOXY_GENERATED_FILES ${EPOXY_API_GENERATED_FILES})
add_custom_command (
OUTPUT ${EPOXY_API_GENERATED_FILES}
COMMAND "${PYTHON_EXECUTABLE}"
"${CMAKE_CURRENT_SOURCE_DIR}/gen_dispatch.py" --dir ..
"${CMAKE_CURRENT_SOURCE_DIR}/../registry/${EPOXY_API}.xml"
MAIN_DEPENDENCY
"../registry/${EPOXY_API}.xml"
DEPENDS
gen_dispatch.py)
endforeach ()
add_custom_target (epoxy_generated ALL SOURCES ${EPOXY_GENERATED_FILES})
else ()
foreach (EPOXY_API ${EPOXY_APIS})
add_custom_command (
OUTPUT
"${EPOXY_API}_generated_dispatch.c"
COMMAND "${CMAKE_COMMAND}" -E copy
"${CMAKE_CURRENT_SOURCE_DIR}/${EPOXY_API}_pregenerated_dispatch.c"
"${CMAKE_CURRENT_BINARY_DIR}/${EPOXY_API}_generated_dispatch.c"
MAIN_DEPENDENCY
"${CMAKE_CURRENT_SOURCE_DIR}/${EPOXY_API}_pregenerated_dispatch.c")
add_custom_command (
OUTPUT
"../include/epoxy/${EPOXY_API}_generated.h"
COMMAND "${CMAKE_COMMAND}" -E copy
"${CMAKE_CURRENT_SOURCE_DIR}/../include/epoxy/${EPOXY_API}_pregenerated.h"
"${CMAKE_CURRENT_BINARY_DIR}/../include/epoxy/${EPOXY_API}_generated.h"
MAIN_DEPENDENCY
"${CMAKE_CURRENT_SOURCE_DIR}/../include/epoxy/${EPOXY_API}_pregenerated.h")
endforeach ()
endif ()
set (HEADERS "../include/epoxy/common.h"
"../include/epoxy/gl.h"
"${CMAKE_CURRENT_BINARY_DIR}/../include/epoxy/gl_generated.h"
"../include/epoxy/khrplatform.h")
set (SOURCES dispatch_common.c "${CMAKE_CURRENT_BINARY_DIR}/gl_generated_dispatch.c")
list (APPEND HEADERS "${CMAKE_CURRENT_BINARY_DIR}/../include/epoxy/gl_generated.h"
"${CMAKE_CURRENT_BINARY_DIR}/../include/epoxy/config.h")
if (EPOXY_SUPPORT_EGL)
list (APPEND SOURCES dispatch_egl.c "${CMAKE_CURRENT_BINARY_DIR}/egl_generated_dispatch.c")
list (APPEND HEADERS "../include/epoxy/egl.h"
"${CMAKE_CURRENT_BINARY_DIR}/../include/epoxy/egl_generated.h"
"../include/epoxy/eglplatform.h")
endif ()
if (EPOXY_SUPPORT_GLX)
list (APPEND SOURCES dispatch_glx.c "${CMAKE_CURRENT_BINARY_DIR}/glx_generated_dispatch.c")
list (APPEND HEADERS "../include/epoxy/glx.h"
"${CMAKE_CURRENT_BINARY_DIR}/../include/epoxy/glx_generated.h")
endif ()
if (EPOXY_SUPPORT_WGL)
list (APPEND SOURCES dispatch_wgl.c "${CMAKE_CURRENT_BINARY_DIR}/wgl_generated_dispatch.c")
list (APPEND HEADERS "../include/epoxy/wgl.h"
"${CMAKE_CURRENT_BINARY_DIR}/../include/epoxy/wgl_generated.h")
endif ()
set (EPOXY_INCLUDE_DIRS "../include"
"${CMAKE_CURRENT_BINARY_DIR}/../include"
"${CMAKE_CURRENT_SOURCE_DIR}")
set (TARGET_OBJS_NAME "${TARGET_NAME}_objs")
add_library ("${TARGET_NAME}_objs" OBJECT ${SOURCES} ${HEADERS})
set_target_properties ("${TARGET_NAME}_objs" PROPERTIES
POSITION_INDEPENDENT_CODE TRUE)
target_include_directories ("${TARGET_NAME}_objs" PUBLIC ${EPOXY_INCLUDE_DIRS})
if (CMAKE_C_COMPILER_ID STREQUAL "MSVC")
target_compile_definitions ("${TARGET_NAME}_objs" PUBLIC "inline=__inline" EPOXY_EXPORTS)
endif ()
set (EPOXY_LIBS_FILES $<TARGET_OBJECTS:${TARGET_NAME}_objs>)
if (WIN32)
set (EPOXY_LIBS_EXTRA_FILES dllmain.c)
else ()
set (EPOXY_LIBS_EXTRA_FILES "")
endif ()
set (TARGETS_BUILT_NAMES "")
if (EPOXY_BUILD_SHARED)
list (APPEND TARGETS_BUILT_NAMES "${TARGET_NAME}_shared")
add_library ("${TARGET_NAME}_shared" SHARED $<TARGET_OBJECTS:${TARGET_NAME}_objs> ${EPOXY_LIBS_EXTRA_FILES})
if (WIN32 OR ANDROID)
set_target_properties ("${TARGET_NAME}_shared" PROPERTIES
OUTPUT_NAME "${TARGET_OUTPUT_NAME}_${TARGET_ABI_VER}")
else ()
set_target_properties ("${TARGET_NAME}_shared" PROPERTIES
OUTPUT_NAME "${TARGET_OUTPUT_NAME}")
endif ()
if (NOT ANDROID)
set_target_properties("${TARGET_NAME}_shared" PROPERTIES
VERSION "${TARGET_VER}"
SOVERSION "${TARGET_ABI_VER}")
endif ()
target_include_directories ("${TARGET_NAME}_shared" PUBLIC ${EPOXY_INCLUDE_DIRS})
target_compile_definitions ("${TARGET_NAME}_shared" PUBLIC EPOXY_EXPORTS EPOXY_BUILDING_SHARED_LIB)
endif ()
if (EPOXY_BUILD_STATIC)
list (APPEND TARGETS_BUILT_NAMES "${TARGET_NAME}_static")
add_library ("${TARGET_NAME}_static" STATIC $<TARGET_OBJECTS:${TARGET_NAME}_objs> ${EPOXY_LIBS_EXTRA_FILES})
if (WIN32)
set_target_properties ("${TARGET_NAME}_static" PROPERTIES
OUTPUT_NAME "${TARGET_OUTPUT_NAME}_static_${TARGET_ABI_VER}")
else ()
set_target_properties ("${TARGET_NAME}_static" PROPERTIES
OUTPUT_NAME "${TARGET_OUTPUT_NAME}_${TARGET_ABI_VER}")
endif ()
target_include_directories ("${TARGET_NAME}_static" PUBLIC ${EPOXY_INCLUDE_DIRS})
target_compile_definitions ("${TARGET_NAME}_static" PUBLIC EPOXY_EXPORTS EPOXY_BUILDING_STATIC_LIB)
endif ()
install (FILES ${HEADERS} DESTINATION "include/epoxy")
install (TARGETS ${TARGETS_BUILT_NAMES}
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
if (CMAKE_C_COMPILER_ID STREQUAL "MSVC")
INSTALL (FILES "${CMAKE_CURRENT_BINARY_DIR}/Debug/${TARGET_OUTPUT_NAME}_${TARGET_ABI_VER}.pdb"
DESTINATION lib CONFIGURATIONS Debug)
endif ()