@ -92,31 +92,35 @@ if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU" OR
C O M P I L E _ F L A G S - W d e c l a r a t i o n - a f t e r - s t a t e m e n t )
endif ( )
add_library ( glfw ${ glfw_SOURCES } ${ glfw_HEADERS } )
add_library ( glfw_objlib OBJECT ${ glfw_SOURCES } ${ glfw_HEADERS } )
add_library ( glfw $< TARGET_OBJECTS:glfw_objlib > )
set_target_properties ( glfw_objlib PROPERTIES POSITION_INDEPENDENT_CODE ON )
set_target_properties ( glfw PROPERTIES
O U T P U T _ N A M E $ { G L F W _ L I B _ N A M E }
V E R S I O N $ { G L F W _ V E R S I O N _ M A J O R } . $ { G L F W _ V E R S I O N _ M I N O R }
S O V E R S I O N $ { G L F W _ V E R S I O N _ M A J O R }
P O S I T I O N _ I N D E P E N D E N T _ C O D E O N
F O L D E R " G L F W 3 " )
if ( ${ CMAKE_VERSION } VERSION_EQUAL "3.1.0" OR
$ { C M A K E _ V E R S I O N } V E R S I O N _ G R E A T E R " 3 . 1 . 0 " )
set_target_properties ( glfw PROPERTIES C_STANDARD 99 )
set_target_properties ( glfw_objlib PROPERTIES C_STANDARD 99 )
else ( )
# R e m o v e t h i s f a l l b a c k w h e n r e m o v i n g s u p p o r t f o r C M a k e v e r s i o n l e s s t h a n 3 . 1
target_compile_options ( glfw PRIVATE
target_compile_options ( glfw_objlib PRIVATE
" $ < $ < C _ C O M P I L E R _ I D : A p p l e C l a n g > : - s t d = c 9 9 > "
" $ < $ < C _ C O M P I L E R _ I D : C l a n g > : - s t d = c 9 9 > "
" $ < $ < C _ C O M P I L E R _ I D : G N U > : - s t d = c 9 9 > " )
endif ( )
target_compile_definitions ( glfw PRIVATE _GLFW_USE_CONFIG_H )
target_compile_definitions ( glfw_objlib PRIVATE _GLFW_USE_CONFIG_H )
target_include_directories ( glfw_objlib PUBLIC
" $ < B U I L D _ I N T E R F A C E : $ { G L F W _ S O U R C E _ D I R } / i n c l u d e > "
" $ < I N S T A L L _ I N T E R F A C E : $ { C M A K E _ I N S T A L L _ F U L L _ I N C L U D E D I R } > " )
target_include_directories ( glfw PUBLIC
" $ < B U I L D _ I N T E R F A C E : $ { G L F W _ S O U R C E _ D I R } / i n c l u d e > "
" $ < I N S T A L L _ I N T E R F A C E : $ { C M A K E _ I N S T A L L _ I N C L U D E D I R } > " )
target_include_directories ( glfw PRIVATE
" $ < I N S T A L L _ I N T E R F A C E : $ { C M A K E _ I N S T A L L _ F U L L _ IN C L U D E D I R } > " )
target_include_directories ( glfw_objlib PRIVATE
" $ { G L F W _ S O U R C E _ D I R } / s r c "
" $ { G L F W _ B I N A R Y _ D I R } / s r c "
$ { g l f w _ I N C L U D E _ D I R S } )
@ -125,11 +129,11 @@ target_include_directories(glfw PRIVATE
# t h e i n c l u s i o n o f s t d d e f . h ( by glfw3.h ) , w h i c h i s i t s e l f i n c l u d e d b e f o r e
# w i n 3 2 _ p l a t f o r m . h . W e d e f i n e t h e m h e r e u n t i l a s a n e r s o l u t i o n c a n b e f o u n d
# N O T E : M i n G W - w 6 4 a n d V i s u a l C + + d o / n o t / n e e d t h i s h a c k .
target_compile_definitions ( glfw PRIVATE
target_compile_definitions ( glfw_objlib PRIVATE
" $ < $ < B O O L : $ { MINGW } > : U N I C O D E ; W I N V E R = 0 x 0 5 0 1 > " )
# E n a b l e a r e a s o n a b l e s e t o f warnings ( no, -Wextra is not reasonable )
target_compile_options ( glfw PRIVATE
target_compile_options ( glfw_objlib PRIVATE
" $ < $ < C _ C O M P I L E R _ I D : A p p l e C l a n g > : - W a l l > "
" $ < $ < C _ C O M P I L E R _ I D : C l a n g > : - W a l l > "
" $ < $ < C _ C O M P I L E R _ I D : G N U > : - W a l l > " )
@ -151,10 +155,10 @@ if (BUILD_SHARED_LIBS)
set_target_properties ( glfw PROPERTIES IMPORT_SUFFIX "dll.lib" )
endif ( )
target_compile_definitions ( glfw INTERFACE GLFW_DLL )
target_compile_definitions ( glfw_objlib INTERFACE GLFW_DLL )
elseif ( APPLE )
# A d d - f n o - c o m m o n t o w o r k a r o u n d a b u g i n A p p l e ' s G C C
target_compile_options ( glfw PRIVATE "-fno-common" )
target_compile_options ( glfw_objlib PRIVATE "-fno-common" )
set_target_properties ( glfw PROPERTIES
I N S T A L L _ N A M E _ D I R " $ { C M A K E _ I N S T A L L _ L I B D I R } " )
@ -162,7 +166,7 @@ if (BUILD_SHARED_LIBS)
if ( UNIX )
# H i d e s y m b o l s n o t e x p l i c i t l y t a g g e d f o r e x p o r t f r o m t h e s h a r e d l i b r a r y
target_compile_options ( glfw PRIVATE "-fvisibility=hidden" )
target_compile_options ( glfw_objlib PRIVATE "-fvisibility=hidden" )
endif ( )
target_link_libraries ( glfw PRIVATE ${ glfw_LIBRARIES } )
@ -171,7 +175,7 @@ else()
endif ( )
if ( MSVC )
target_compile_definitions ( glfw PRIVATE _CRT_SECURE_NO_WARNINGS )
target_compile_definitions ( glfw_objlib PRIVATE _CRT_SECURE_NO_WARNINGS )
endif ( )
if ( GLFW_INSTALL )