changeset 205:c973501abe36

windows: many fixes for MinGW and VS While here, add more options to malikania_define_library and do not put include directories to assets. Also remove some useless bits.
author David Demelier <markand@malikania.fr>
date Thu, 29 Nov 2018 12:57:30 +0100
parents 18e442a52f29
children 12873699ad8b
files cmake/function/MalikaniaDefineExecutable.cmake cmake/function/MalikaniaDefineLibrary.cmake cmake/function/MalikaniaDefineTest.cmake cmake/packages/FindSDL2.cmake examples/animation/CMakeLists.txt examples/font/CMakeLists.txt examples/image/CMakeLists.txt examples/js-animation/CMakeLists.txt examples/js-font/CMakeLists.txt examples/js-image/CMakeLists.txt examples/js-sprite/CMakeLists.txt examples/js-window/CMakeLists.txt examples/sprite/CMakeLists.txt libmlk-client-js-test/CMakeLists.txt libmlk-client-js/CMakeLists.txt libmlk-client/CMakeLists.txt libmlk-client/malikania/client/theme.cpp libmlk-db-test/CMakeLists.txt libmlk-db/CMakeLists.txt libmlk-js-test/CMakeLists.txt libmlk-js/CMakeLists.txt libmlk-server/CMakeLists.txt libmlk/CMakeLists.txt mlk-client/CMakeLists.txt mlk-client/main.cpp
diffstat 25 files changed, 82 insertions(+), 51 deletions(-) [+]
line wrap: on
line diff
--- a/cmake/function/MalikaniaDefineExecutable.cmake	Thu Nov 29 12:41:27 2018 +0100
+++ b/cmake/function/MalikaniaDefineExecutable.cmake	Thu Nov 29 12:57:30 2018 +0100
@@ -52,7 +52,7 @@
 	target_include_directories(
 		${EXE_TARGET}
 		PRIVATE
-			${CMAKE_CURRENT_BINARY_DIR}/assets
+			${CMAKE_CURRENT_BINARY_DIR}
 			${EXE_INCLUDES}
 	)
 	target_compile_definitions(${EXE_TARGET} PRIVATE ${EXE_FLAGS})
--- a/cmake/function/MalikaniaDefineLibrary.cmake	Thu Nov 29 12:41:27 2018 +0100
+++ b/cmake/function/MalikaniaDefineLibrary.cmake	Thu Nov 29 12:57:30 2018 +0100
@@ -24,10 +24,15 @@
 #       TARGET                  The target name
 #       SOURCES                 The sources
 #       ASSETS                  (Optional) Additional assets files
-#       FLAGS                   (Optional) List of flags
-#       PRIVATE_INCLUDES        (Optional) List of includes only for building the library
-#       PUBLIC_INCLUDES         (Optional) List of public includes to share with the library users
-#       LIBRARIES               (Optional) List of libraries to link against
+#       INTERFACE_FLAGS         (Optional) List of interface flags
+#       PRIVATE_FLAGS           (Optional) list of private flags
+#       PUBLIC_FLAGS            (Optional) list of public flags
+#       INTERFACE_INCLUDES      (Optional) List of interface include directories
+#       INTERFACE_LIBRARIES     (Optional) List of interface libraries
+#       PRIVATE_INCLUDES        (Optional) List of private include directories
+#       PRIVATE_LIBRARIES       (Optional) List of private libraries
+#       PUBLIC_INCLUDES         (Optional) List of public include directories
+#       PUBLIC_LIBRARIES        (Optional) List of public libraries
 # )
 #
 # Create a library and install it.
@@ -37,8 +42,20 @@
 
 function(malikania_define_library)
 	set(singleArgs TARGET)
-	set(multiArgs ASSETS SOURCES FLAGS PRIVATE_INCLUDES PUBLIC_INCLUDES LIBRARIES)
-	set(mandatory TARGET SOURCES)
+	set(
+		multiArgs
+		ASSETS
+		INTERFACE_FLAGS
+		INTERFACE_INCLUDES
+		INTERFACE_LIBRARIES
+		PRIVATE_FLAGS
+		PRIVATE_INCLUDES
+		PRIVATE_LIBRARIES
+		PUBLIC_FLAGS
+		PUBLIC_INCLUDES
+		PUBLIC_LIBRARIES
+		SOURCES
+	)
 
 	cmake_parse_arguments(LIB "" "${singleArgs}" "${multiArgs}" ${ARGN})
 
@@ -54,17 +71,26 @@
 
 	# Create the shared library.
 	add_library(${LIB_TARGET} SHARED ${LIB_SOURCES} ${assets} ${LIB_ASSETS})
-	target_link_libraries(${LIB_TARGET} ${LIB_LIBRARIES})
+	target_link_libraries(
+		${LIB_TARGET}
+		PRIVATE ${LIB_PRIVATE_LIBRARIES}
+		PUBLIC ${LIB_PUBLIC_LIBRARIES}
+		INTERFACE ${LIB_INTERFACE_LIBRARIES}
+	)
 	target_include_directories(
 		${LIB_TARGET}
 		PRIVATE
-			${CMAKE_CURRENT_BINARY_DIR}/assets
+			${CMAKE_CURRENT_BINARY_DIR}
 			${LIB_PRIVATE_INCLUDES}
-		PUBLIC
-			${CMAKE_CURRENT_SOURCE_DIR}
-			${LIB_PUBLIC_INCLUDES}
+		PUBLIC ${LIB_PUBLIC_INCLUDES}
+		INTERFACE ${LIB_INTERFACE_INCLUDES}
 	)
-	target_compile_definitions(${LIB_TARGET} PRIVATE ${LIB_FLAGS})
+	target_compile_definitions(
+		${LIB_TARGET}
+		PRIVATE ${LIB_PRIVATE_FLAGS}
+		PUBLIC ${LIB_PUBLIC_FLAGS}
+		INTERFACE ${LIB_INTERFACE_FLAGS}
+	)
 	set_target_properties(
 		${LIB_TARGET}
 		PROPERTIES
--- a/cmake/function/MalikaniaDefineTest.cmake	Thu Nov 29 12:41:27 2018 +0100
+++ b/cmake/function/MalikaniaDefineTest.cmake	Thu Nov 29 12:57:30 2018 +0100
@@ -34,8 +34,6 @@
 # and CMAKE_CURRENT_BINARY_DIR are automatically set.
 #
 
-include(CMakeParseArguments)
-
 function(malikania_create_test)
 	set(singleArgs NAME)
 	set(multiArgs FLAGS LIBRARIES SOURCES RESOURCES)
@@ -65,7 +63,6 @@
 	add_test(
 		NAME ${TEST_NAME}
 		COMMAND $<TARGET_FILE:test-${TEST_NAME}>
-		WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/test/${TEST_NAME}
 	)
 
 	target_link_libraries(
--- a/cmake/packages/FindSDL2.cmake	Thu Nov 29 12:41:27 2018 +0100
+++ b/cmake/packages/FindSDL2.cmake	Thu Nov 29 12:57:30 2018 +0100
@@ -5,7 +5,7 @@
 #
 # SDL2_INCLUDE_DIRS, where to find SDL.h
 # SDL2_LIBRARIES, where to find library
-# SDL2MAIN_LIBRARY, where to find SDLmain
+# SDL2MAIN_LIBRARIES, libraries for SDLmain
 # SDL2_FOUND, if it is found
 
 find_path(SDL2_INCLUDE_DIR NAMES SDL.h PATH_SUFFIXES SDL2)
@@ -15,11 +15,19 @@
 include(FindPackageHandleStandardArgs)
 
 find_package_handle_standard_args(
-    SDL2
-    FOUND_VAR SDL2_FOUND
-    REQUIRED_VARS SDL2_LIBRARY SDL2_INCLUDE_DIR
+	SDL2
+	FOUND_VAR SDL2_FOUND
+	REQUIRED_VARS SDL2_LIBRARY SDL2MAIN_LIBRARY SDL2_INCLUDE_DIR
 )
 
+if (SDL2MAIN_LIBRARY)
+	if (MINGW)
+		set(SDL2MAIN_LIBRARIES -lmingw32 ${SDL2MAIN_LIBRARY} -mwindows)
+	else ()
+		set(SDL2MAIN_LIBRARIES ${SDL2MAIN_LIBRARY})
+	endif ()
+endif ()
+
 set(SDL2_LIBRARIES ${SDL2_LIBRARY})
 set(SDL2_INCLUDE_DIRS ${SDL2_INCLUDE_DIR})
 
--- a/examples/animation/CMakeLists.txt	Thu Nov 29 12:41:27 2018 +0100
+++ b/examples/animation/CMakeLists.txt	Thu Nov 29 12:57:30 2018 +0100
@@ -18,6 +18,7 @@
 
 malikania_define_example(
 	TARGET animation
-	LIBRARIES libmlk-client ${SDL2MAIN_LIBRARY}
+	LIBRARIES ${SDL2MAIN_LIBRARIES} libmlk-client
 	SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
 )
+
--- a/examples/font/CMakeLists.txt	Thu Nov 29 12:41:27 2018 +0100
+++ b/examples/font/CMakeLists.txt	Thu Nov 29 12:57:30 2018 +0100
@@ -18,6 +18,6 @@
 
 malikania_define_example(
 	TARGET font
-	LIBRARIES libmlk-client ${SDL2MAIN_LIBRARY}
+	LIBRARIES ${SDL2MAIN_LIBRARIES} libmlk-client
 	SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
 )
--- a/examples/image/CMakeLists.txt	Thu Nov 29 12:41:27 2018 +0100
+++ b/examples/image/CMakeLists.txt	Thu Nov 29 12:57:30 2018 +0100
@@ -18,6 +18,6 @@
 
 malikania_define_example(
 	TARGET image
-	LIBRARIES libmlk-client ${SDL2MAIN_LIBRARY}
+	LIBRARIES ${SDL2MAIN_LIBRARIES} libmlk-client
 	SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
 )
--- a/examples/js-animation/CMakeLists.txt	Thu Nov 29 12:41:27 2018 +0100
+++ b/examples/js-animation/CMakeLists.txt	Thu Nov 29 12:57:30 2018 +0100
@@ -18,6 +18,6 @@
 
 malikania_define_example(
 	TARGET js-animation
-	LIBRARIES libmlk-client-js ${SDL2MAIN_LIBRARY}
+	LIBRARIES ${SDL2MAIN_LIBRARIES} libmlk-client-js
 	SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
 )
--- a/examples/js-font/CMakeLists.txt	Thu Nov 29 12:41:27 2018 +0100
+++ b/examples/js-font/CMakeLists.txt	Thu Nov 29 12:57:30 2018 +0100
@@ -18,6 +18,6 @@
 
 malikania_define_example(
 	TARGET js-font
-	LIBRARIES libmlk-client-js ${SDL2MAIN_LIBRARY}
+	LIBRARIES ${SDL2MAIN_LIBRARIES} libmlk-client-js
 	SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
 )
--- a/examples/js-image/CMakeLists.txt	Thu Nov 29 12:41:27 2018 +0100
+++ b/examples/js-image/CMakeLists.txt	Thu Nov 29 12:57:30 2018 +0100
@@ -18,6 +18,6 @@
 
 malikania_define_example(
 	TARGET js-image
-	LIBRARIES libmlk-client-js ${SDL2MAIN_LIBRARY}
+	LIBRARIES ${SDL2MAIN_LIBRARIES} libmlk-client-js
 	SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
 )
--- a/examples/js-sprite/CMakeLists.txt	Thu Nov 29 12:41:27 2018 +0100
+++ b/examples/js-sprite/CMakeLists.txt	Thu Nov 29 12:57:30 2018 +0100
@@ -18,6 +18,6 @@
 
 malikania_define_example(
 	TARGET js-sprite
-	LIBRARIES libmlk-client-js ${SDL2MAIN_LIBRARY}
+	LIBRARIES ${SDL2MAIN_LIBRARIES} libmlk-client-js
 	SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
 )
--- a/examples/js-window/CMakeLists.txt	Thu Nov 29 12:41:27 2018 +0100
+++ b/examples/js-window/CMakeLists.txt	Thu Nov 29 12:57:30 2018 +0100
@@ -18,6 +18,6 @@
 
 malikania_define_example(
 	TARGET js-window
-	LIBRARIES libmlk-client-js ${SDL2MAIN_LIBRARY}
+	LIBRARIES ${SDL2MAIN_LIBRARIES} libmlk-client-js
 	SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
 )
--- a/examples/sprite/CMakeLists.txt	Thu Nov 29 12:41:27 2018 +0100
+++ b/examples/sprite/CMakeLists.txt	Thu Nov 29 12:57:30 2018 +0100
@@ -18,6 +18,6 @@
 
 malikania_define_example(
 	TARGET sprite
-	LIBRARIES libmlk-client ${SDL2MAIN_LIBRARY}
+	LIBRARIES ${SDL2MAIN_LIBRARIES} libmlk-client
 	SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
 )
--- a/libmlk-client-js-test/CMakeLists.txt	Thu Nov 29 12:41:27 2018 +0100
+++ b/libmlk-client-js-test/CMakeLists.txt	Thu Nov 29 12:57:30 2018 +0100
@@ -20,14 +20,15 @@
 
 set(
 	SOURCES
-	${CMAKE_CURRENT_SOURCE_DIR}/malikania/client/js/test/js_api_fixture.cpp
-	${CMAKE_CURRENT_SOURCE_DIR}/malikania/client/js/test/js_api_fixture.hpp
+	${PROJECT_SOURCE_DIR}/malikania/client/js/test/js_api_fixture.cpp
+	${PROJECT_SOURCE_DIR}/malikania/client/js/test/js_api_fixture.hpp
 )
 
 malikania_define_library(
 	TARGET libmlk-client-js-test
 	SOURCES ${SOURCES}
-	LIBRARIES
+	PUBLIC_INCLUDES $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
+	PUBLIC_LIBRARIES
 		libmlk-client-js
 		libmlk-js-test
 )
--- a/libmlk-client-js/CMakeLists.txt	Thu Nov 29 12:41:27 2018 +0100
+++ b/libmlk-client-js/CMakeLists.txt	Thu Nov 29 12:57:30 2018 +0100
@@ -42,7 +42,7 @@
 	PROJECT libmlk-client-js
 	TARGET libmlk-client-js
 	SOURCES ${SOURCES}
-	LIBRARIES libmlk-client libmlk-js
+	PUBLIC_LIBRARIES libmlk-client libmlk-js
 	PUBLIC_INCLUDES
 		$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
 )
--- a/libmlk-client/CMakeLists.txt	Thu Nov 29 12:41:27 2018 +0100
+++ b/libmlk-client/CMakeLists.txt	Thu Nov 29 12:57:30 2018 +0100
@@ -73,7 +73,7 @@
 		${SDL2_INCLUDE_DIRS}
 		${SDL2_IMAGE_INCLUDE_DIRS}
 		${SDL2_TTF_INCLUDE_DIRS}
-	LIBRARIES
+	PUBLIC_LIBRARIES
 		${SDL2_LIBRARIES}
 		${SDL2_IMAGE_LIBRARIES}
 		${SDL2_TTF_LIBRARIES}
--- a/libmlk-client/malikania/client/theme.cpp	Thu Nov 29 12:41:27 2018 +0100
+++ b/libmlk-client/malikania/client/theme.cpp	Thu Nov 29 12:57:30 2018 +0100
@@ -29,7 +29,7 @@
 
 namespace {
 
-#include <dejavu_sans.hpp>
+#include <assets/dejavu_sans.hpp>
 
 } // !namespace
 
--- a/libmlk-db-test/CMakeLists.txt	Thu Nov 29 12:41:27 2018 +0100
+++ b/libmlk-db-test/CMakeLists.txt	Thu Nov 29 12:57:30 2018 +0100
@@ -40,7 +40,7 @@
 malikania_define_library(
 	TARGET libmlk-db-test
 	SOURCES ${HEADERS} ${SOURCES}
-	LIBRARIES ${LIBRARIES}
+	PUBLIC_LIBRARIES ${LIBRARIES}
 	FLAGS
 		PG_CTL_EXECUTABLE="${PG_CTL_EXECUTABLE}"
 		PSQL_EXECUTABLE="${PSQL_EXECUTABLE}"
--- a/libmlk-db/CMakeLists.txt	Thu Nov 29 12:41:27 2018 +0100
+++ b/libmlk-db/CMakeLists.txt	Thu Nov 29 12:57:30 2018 +0100
@@ -34,10 +34,7 @@
 malikania_define_library(
 	TARGET libmlk-db
 	SOURCES ${SOURCES}
-	LIBRARIES
-		${PostgreSQL_LIBRARIES}
-	PUBLIC_INCLUDES
-		${libmlk-db_SOURCE_DIR}/malikania
-	PRIVATE_INCLUDES
-		${PostgreSQL_INCLUDE_DIRS}
+	PUBLIC_LIBRARIES ${PostgreSQL_LIBRARIES}
+	PUBLIC_INCLUDES ${libmlk-db_SOURCE_DIR}/malikania
+	PRIVATE_INCLUDES ${PostgreSQL_INCLUDE_DIRS}
 )
--- a/libmlk-js-test/CMakeLists.txt	Thu Nov 29 12:41:27 2018 +0100
+++ b/libmlk-js-test/CMakeLists.txt	Thu Nov 29 12:57:30 2018 +0100
@@ -20,12 +20,13 @@
 
 set(
 	SOURCES
-	${CMAKE_CURRENT_SOURCE_DIR}/malikania/js/test/js_api_fixture.cpp
-	${CMAKE_CURRENT_SOURCE_DIR}/malikania/js/test/js_api_fixture.hpp
+	${PROJECT_SOURCE_DIR}/malikania/js/test/js_api_fixture.cpp
+	${PROJECT_SOURCE_DIR}/malikania/js/test/js_api_fixture.hpp
 )
 
 malikania_define_library(
 	TARGET libmlk-js-test
 	SOURCES ${HEADERS} ${SOURCES}
-	LIBRARIES libmlk-js
+	PUBLIC_LIBRARIES libmlk-js
+	PUBLIC_INCLUDES $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
 )
--- a/libmlk-js/CMakeLists.txt	Thu Nov 29 12:41:27 2018 +0100
+++ b/libmlk-js/CMakeLists.txt	Thu Nov 29 12:57:30 2018 +0100
@@ -44,7 +44,7 @@
 	SOURCES ${SOURCES}
 	PUBLIC_INCLUDES
 		$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
-	LIBRARIES
+	PUBLIC_LIBRARIES
 		Boost::boost
 		Boost::dynamic_linking
 		Boost::disable_autolinking
--- a/libmlk-server/CMakeLists.txt	Thu Nov 29 12:41:27 2018 +0100
+++ b/libmlk-server/CMakeLists.txt	Thu Nov 29 12:57:30 2018 +0100
@@ -46,7 +46,7 @@
 malikania_define_library(
 	TARGET libmlk-server
 	SOURCES ${SOURCES}
-	LIBRARIES ${LIBRARIES}
+	PUBLIC_LIBRARIES ${LIBRARIES}
 	PUBLIC_INCLUDES
 		${libmlk-server_SOURCE_DIR}
 	PRIVATE_INCLUDES
--- a/libmlk/CMakeLists.txt	Thu Nov 29 12:41:27 2018 +0100
+++ b/libmlk/CMakeLists.txt	Thu Nov 29 12:57:30 2018 +0100
@@ -45,7 +45,7 @@
 )
 
 if (CMAKE_SYSTEM_NAME MATCHES "Windows")
-	list(APPEND LIBRARIES ws2_32)
+	list(APPEND LIBRARIES ws2_32 mswsock)
 endif ()
 
 malikania_define_library(
@@ -54,7 +54,7 @@
 	SOURCES ${SOURCES}
 	PUBLIC_INCLUDES
 		$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
-	LIBRARIES
+	PUBLIC_LIBRARIES
 		Boost::boost
 		Boost::dynamic_linking
 		Boost::disable_autolinking
--- a/mlk-client/CMakeLists.txt	Thu Nov 29 12:41:27 2018 +0100
+++ b/mlk-client/CMakeLists.txt	Thu Nov 29 12:57:30 2018 +0100
@@ -30,7 +30,7 @@
 	TARGET mlk-client
 	SOURCES ${SOURCES}
 	LIBRARIES
-		${SDL2MAIN_LIBRARY}
+		${SDL2MAIN_LIBRARIES}
 		Threads::Threads
 		libmlk-client-js
 )
--- a/mlk-client/main.cpp	Thu Nov 29 12:41:27 2018 +0100
+++ b/mlk-client/main.cpp	Thu Nov 29 12:57:30 2018 +0100
@@ -26,7 +26,7 @@
 #include <malikania/client/sprite.hpp>
 #include <malikania/client/theme.hpp>
 
-#include <ui.hpp>
+#include <assets/ui.hpp>
 
 class loop : public mlk::client::dispatcher {
 };