aboutsummaryrefslogtreecommitdiff
path: root/src/libui_sdl/libui/CMakeLists.txt
diff options
context:
space:
mode:
authorArisotura <thetotalworm@gmail.com>2020-04-25 18:51:08 +0200
committerArisotura <thetotalworm@gmail.com>2020-04-25 18:51:08 +0200
commita85d41c53eed50f188502925ed34674397b86550 (patch)
treee33b042b8114f7ad587257d79bad021d5e617a44 /src/libui_sdl/libui/CMakeLists.txt
parent3b3a09ed2b7a1f3d6f81ba6d1ddd7fbf17acd52d (diff)
berp.
Diffstat (limited to 'src/libui_sdl/libui/CMakeLists.txt')
-rw-r--r--src/libui_sdl/libui/CMakeLists.txt219
1 files changed, 0 insertions, 219 deletions
diff --git a/src/libui_sdl/libui/CMakeLists.txt b/src/libui_sdl/libui/CMakeLists.txt
deleted file mode 100644
index eb1696d..0000000
--- a/src/libui_sdl/libui/CMakeLists.txt
+++ /dev/null
@@ -1,219 +0,0 @@
-# 3 june 2016
-# see https://cmake.org/gitweb?p=cmake.git;a=commit;h=95cdf132489c79e88a10fdf7a7566fa002c7680b (thanks ngladitz in irc.freenode.net/#cmake)
-cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)
-
-# TODOs
-# - silence entering/leaving messages?
-# - uname -s for more refined OS control
-# - Haiku for haiku
-# - debian DESTDIR? https://github.com/andlabs/libui/pull/10
-# - libui-combined* needs to be deleted so that custom command can run every time
-# - add notelemetry.obj to *ALL TARGETS* on VS2015 and up - https://www.infoq.com/news/2016/06/visual-cpp-telemetry
-# - switch to 3.1.0 features
-
-# the docs say we need to set this up prior to project()
-set(CMAKE_OSX_DEPLOYMENT_TARGET "10.8")
-
-# we want to disable incremental linking
-# see also:
-# - https://github.com/bulletphysics/bullet3/blob/master/CMakeLists.txt#L43
-# - https://cmake.org/pipermail/cmake/2010-February/035174.html
-# this must also go before project()
-set(MSVC_INCREMENTAL_DEFAULT ON)
-
-# default to debug builds
-# do this before project() just to be safe
-if(NOT CMAKE_BUILD_TYPE)
- set(CMAKE_BUILD_TYPE DEBUG CACHE STRING "" FORCE)
-endif()
-
-project(libui)
-option(BUILD_SHARED_LIBS "Whether to build libui as a shared library or a static library" ON)
-
-set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/out")
-set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/out")
-set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/out")
-set(CMAKE_PDB_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/out")
-
-if(APPLE)
- set(_OSNAME darwin)
- set(_HASVERSION TRUE)
- set(_VERSION "A")
-
- # always use our rpath
- set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
- # the / is required by some older versions of OS X
- set(CMAKE_INSTALL_RPATH "@executable_path/")
- set(CMAKE_MACOSX_RPATH TRUE)
-elseif(WIN32)
- set(_OSNAME windows)
-
- # and don't include the default libraries with ANY of the builds
- # note the CACHE FORCE stuff is required here
- set(CMAKE_C_STANDARD_LIBRARIES CACHE STRING "" FORCE)
- set(CMAKE_CXX_STANDARD_LIBRARIES CACHE STRING "" FORCE)
-else()
- set(_OSNAME unix)
- set(_HASVERSION TRUE)
- set(_VERSION "0")
-
- # always use our rpath
- set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
- set(CMAKE_INSTALL_RPATH "\$ORIGIN")
-endif()
-
-# common flags
-if(MSVC)
- # TODO subsystem version
-
- # TODO /Wall does too much
- # TODO -Wno-switch equivalent
- # TODO /sdl turns C4996 into an ERROR
- # don't use /analyze; that requires us to write annotations everywhere
- # TODO undecided flags from qo?
- # /RTCc is not supplied because it's discouraged as of VS2015; see https://www.reddit.com/r/cpp/comments/46mhne/rtcc_rejects_conformant_code_with_visual_c_2015/d06auq5
- # /EHsc is to shut the compiler up in some cases
- # TODO make /EHsc C++-only
- set(_COMMON_CFLAGS
- /W4 /wd4100
- /bigobj /nologo
- /RTC1 /RTCs /RTCu
- /EHsc
- )
-
- # note the /MANIFEST:NO (which must be / and uppercase); thanks FraGag (https://github.com/andlabs/libui/issues/93#issuecomment-223183436)
- # TODO warnings on undefined symbols
- set(_COMMON_LDFLAGS
- /LARGEADDRESSAWARE
- /NOLOGO
- /INCREMENTAL:NO
- /MANIFEST:NO
- )
-
- # TODO autogenerate a .def file?
-
- # more incremental linking fixes
- # TODO actually get rid of incremental linking here
-else()
- set(_COMMON_CFLAGS
- -Wall -Wextra -pedantic
- -Wno-unused-parameter
- -Wno-switch
- -fvisibility=hidden
- )
- # don't use C_VERSION or CXX_VERSION because they use GNU standards
- # TODO we can actually do this; set both C_EXTENSIONS and CXX_EXTENSIONS to OFF
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --std=c99")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++11")
-
- set(_COMMON_LDFLAGS
- -fvisibility=hidden
- )
-
- # don't require shipping the MinGW-w64 DLLs
- if(WIN32)
- list(APPEND _COMMON_LDFLAGS
- -static
- -static-libgcc
- -static-libstdc++
- )
- endif()
-endif()
-
-# problem:
-# - target_link_libraries() only supports - for flags
-# - but cmake only doesn't generate the manifest if the flag has a /
-macro(_target_link_options_private _target)
- foreach(_opt IN LISTS ${ARGN})
- set_property(TARGET ${_target} APPEND_STRING PROPERTY
- LINK_FLAGS " ${_opt}")
- endforeach()
-endmacro()
-
-add_subdirectory("common")
-add_subdirectory("${_OSNAME}")
-add_library(${_LIBUINAME} ${_LIBUI_SOURCES})
-target_include_directories(${_LIBUINAME}
- PUBLIC .
- PRIVATE ${_LIBUI_INCLUEDIRS})
-target_compile_definitions(${_LIBUINAME}
- PRIVATE ${_LIBUI_DEFS})
-# cmake produces this for us by default but only for shared libraries
-target_compile_definitions(${_LIBUINAME}
- PRIVATE libui_EXPORTS)
-target_compile_options(${_LIBUINAME}
- PUBLIC ${_COMMON_CFLAGS}
- PRIVATE ${_LIBUI_CFLAGS})
-# TODO link directories?
-if(BUILD_SHARED_LIBS)
- target_link_libraries(${_LIBUINAME}
- PRIVATE ${_LIBUI_LIBS})
-endif()
-# TODO INTERFACE libs don't inherit to grandhcildren?
-# on Windows the linker for static libraries is different; don't give it the flags
-if(BUILD_SHARED_LIBS)
- _target_link_options_private(${_LIBUINAME}
- _COMMON_LDFLAGS
- _LIBUI_LDFLAGS)
-endif()
-if(NOT BUILD_SHARED_LIBS)
- _handle_static()
- # TODO figure out a way to tell libui that it's static
- target_compile_definitions(${_LIBUINAME}
- PUBLIC _UI_STATIC)
-endif()
-if(NOT MSVC)
- # on non-MSVC compilers cmake adds an extra lib-
- # note that we apply this to libui, not to any intermediates
- set_target_properties(libui PROPERTIES
- OUTPUT_NAME ui)
-
- # flags for warning on undefined symbols
- # TODO figure out why FreeBSD follows linked libraries here
- # TODO figure out MSVC equivalents
- if(BUILD_SHARED_LIBS)
- if(NOT (${CMAKE_SYSTEM_NAME} STREQUAL FreeBSD))
- # on OS X we don't need to do this; Apple's linker warns about undefined symbols in -shared builds!
- if(NOT APPLE)
- target_link_libraries(libui
- PRIVATE -Wl,--no-undefined -Wl,--no-allow-shlib-undefined
- )
- endif()
- endif()
- endif()
-endif()
-if(BUILD_SHARED_LIBS)
- if(_HASVERSION)
- set_target_properties(${_LIBUINAME} PROPERTIES
- SOVERSION "${_VERSION}")
- endif()
-endif()
-
-macro(_add_exec _name)
- add_executable(${_name}
- WIN32 EXCLUDE_FROM_ALL
- ${ARGN})
- target_link_libraries(${_name} libui ${_LIBUI_STATIC_RES})
- _target_link_options_private(${_name}
- _COMMON_LDFLAGS)
- # make shared-linked executables PIC too
- if(BUILD_SHARED_LIBS)
- set_property(TARGET ${_name} PROPERTY
- POSITION_INDEPENDENT_CODE True)
- endif()
- # TODO see above about INTERFACE
- if(NOT BUILD_SHARED_LIBS)
- target_link_libraries(${_name}
- ${_LIBUI_LIBS})
- endif()
-
- # TODOfor some reason these don't propagate
- if(NOT WIN32)
- target_include_directories(${_name}
- PUBLIC .)
- target_compile_options(${_name}
- PUBLIC ${_COMMON_CFLAGS})
- endif()
-endmacro()
-add_subdirectory("test")
-add_subdirectory("examples")