diff --git a/cmake/FindStaticGLEW.cmake b/cmake/FindStaticGLEW.cmake new file mode 100644 index 0000000..4c26584 --- /dev/null +++ b/cmake/FindStaticGLEW.cmake @@ -0,0 +1,20 @@ +include(FindPackageHandleStandardArgs) +include(FindStaticLibrary) +include(SelectLibraryConfigurations) + +find_package(GLEW) + +if(GLEW_FOUND) + find_static_library(StaticGLEW_LIBRARY_RELEASE NAMES GLEW glew32 glew glew32s PATH_SUFFIXES lib64) + find_static_library(StaticGLEW_LIBRARY_DEBUG NAMES GLEWd glew32d glewd PATH_SUFFIXES lib64) + select_library_configurations(StaticGLEW) +endif() + +find_package_handle_standard_args(StaticGLEW + REQUIRED_VARS StaticGLEW_LIBRARY) + +if(StaticGLEW_FOUND) + set(StaticGLEW_INCLUDE_DIRS ${GLEW_INCLUDE_DIRS}) + set(StaticGLEW_LIBRARIES "${StaticGLEW_LIBRARY}") + set(StaticGLEW_DEFINITIONS "GLEW_STATIC=1") +endif() diff --git a/cmake/FindStaticLibrary.cmake b/cmake/FindStaticLibrary.cmake new file mode 100644 index 0000000..ff8be32 --- /dev/null +++ b/cmake/FindStaticLibrary.cmake @@ -0,0 +1,11 @@ +macro(find_static_library) + set(_orig_CMAKE_FIND_LIBRARY_SUFFIXES "${CMAKE_FIND_LIBRARY_SUFFIXES}") + if (WIN32) + set(CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".a") + else() + set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") + endif() + find_library(${ARGN}) + set(CMAKE_FIND_LIBRARY_SUFFIXES "${_orig_CMAKE_FIND_LIBRARY_SUFFIXES}") + unset(_orig_CMAKE_FIND_LIBRARY_SUFFIXES) +endmacro() diff --git a/cmake/LV2Project.cmake b/cmake/LV2Project.cmake index fb79ec5..2b77158 100644 --- a/cmake/LV2Project.cmake +++ b/cmake/LV2Project.cmake @@ -80,9 +80,16 @@ endmacro() macro(add_lv2_glui name) include(TargetPugl) find_package(GLEW REQUIRED) + find_package(StaticGLEW) add_lv2_ui(${name} ${ARGN}) target_include_directories(${name} PRIVATE ${GLEW_INCLUDE_DIRS}) - target_link_libraries(${name} pugl ${GLEW_LIBRARIES}) + if(StaticGLEW_FOUND) + target_compile_definitions(${name} PRIVATE ${StaticGLEW_DEFINITIONS}) + target_link_libraries(${name} ${StaticGLEW_LIBRARIES}) + else() + target_link_libraries(${name} ${GLEW_LIBRARIES}) + endif() + target_link_libraries(${name} pugl) endmacro() macro(add_lv2_nvgui name) diff --git a/cmake/TargetNanoVG.cmake b/cmake/TargetNanoVG.cmake index 709a1c8..3e92730 100644 --- a/cmake/TargetNanoVG.cmake +++ b/cmake/TargetNanoVG.cmake @@ -36,9 +36,15 @@ endif() if(NANOVG_USE_GLEW) find_package(GLEW REQUIRED) + find_package(StaticGLEW) target_compile_definitions(nanovg PRIVATE "NANOVG_GLEW=1") target_include_directories(nanovg PRIVATE ${GLEW_INCLUDE_DIRS}) - target_link_libraries(nanovg ${GLEW_LIBRARIES}) + if(StaticGLEW_FOUND) + target_compile_definitions(nanovg PRIVATE ${StaticGLEW_DEFINITIONS}) + target_link_libraries(nanovg ${StaticGLEW_LIBRARIES}) + else() + target_link_libraries(nanovg ${GLEW_LIBRARIES}) + endif() endif() set_target_properties(nanovg PROPERTIES