|
@@ -1,20 +1,32 @@
|
|
-cmake_minimum_required(VERSION 2.8)
|
|
|
|
|
|
+cmake_minimum_required(VERSION 2.8.8)
|
|
|
|
|
|
project(fuzzylite CXX)
|
|
project(fuzzylite CXX)
|
|
|
|
|
|
-set(CMAKE_VERBOSE_MAKEFILE false)
|
|
|
|
|
|
+###DEFINES SECTION
|
|
|
|
+if(NOT CMAKE_VERBOSE_MAKEFILE)
|
|
|
|
+ set(CMAKE_VERBOSE_MAKEFILE false)
|
|
|
|
+endif()
|
|
|
|
|
|
set(FL_VERSION 5.0)
|
|
set(FL_VERSION 5.0)
|
|
add_definitions(-DFL_VERSION="${FL_VERSION}")
|
|
add_definitions(-DFL_VERSION="${FL_VERSION}")
|
|
|
|
|
|
set(FL_DATE "1408")
|
|
set(FL_DATE "1408")
|
|
add_definitions(-DFL_DATE="${FL_DATE}")
|
|
add_definitions(-DFL_DATE="${FL_DATE}")
|
|
-
|
|
|
|
add_definitions(-DFL_BUILD_PATH="${CMAKE_SOURCE_DIR}") #used to determine FL__FILE__
|
|
add_definitions(-DFL_BUILD_PATH="${CMAKE_SOURCE_DIR}") #used to determine FL__FILE__
|
|
|
|
|
|
|
|
+option(FL_BUILD_SHARED "Build shared library" ON)
|
|
|
|
+option(FL_BUILD_STATIC "Build static library" ON)
|
|
|
|
+if(FL_BUILD_SHARED)
|
|
|
|
+ option(FL_BUILD_BINARY "Build fuzzylite binary" ON)
|
|
|
|
+endif()
|
|
|
|
+
|
|
option(FL_USE_FLOAT "Use fl::scalar as float" OFF)
|
|
option(FL_USE_FLOAT "Use fl::scalar as float" OFF)
|
|
option(FL_BACKTRACE "Provide backtrace information in case of errors" OFF)
|
|
option(FL_BACKTRACE "Provide backtrace information in case of errors" OFF)
|
|
-option(FL_CPP11 "Builds utilizing C++11, i.e., passing -std=c++11" ON)
|
|
|
|
|
|
+option(FL_CPP11 "Builds utilizing C++11, i.e., passing -std=c++11" OFF)
|
|
|
|
+
|
|
|
|
+if(FL_CPP11 AND MSVC)
|
|
|
|
+ message("Warning: MSVC not compatible with FL_CPP11 flag")
|
|
|
|
+endif()
|
|
|
|
|
|
if(FL_USE_FLOAT)
|
|
if(FL_USE_FLOAT)
|
|
add_definitions(-DFL_USE_FLOAT)
|
|
add_definitions(-DFL_USE_FLOAT)
|
|
@@ -26,9 +38,9 @@ endif()
|
|
|
|
|
|
if(FL_CPP11)
|
|
if(FL_CPP11)
|
|
add_definitions(-DFL_CPP11)
|
|
add_definitions(-DFL_CPP11)
|
|
- if(UNIX)
|
|
|
|
|
|
+ if(NOT MSVC)
|
|
add_definitions(-std=c++11)
|
|
add_definitions(-std=c++11)
|
|
- endif(UNIX)
|
|
|
|
|
|
+ endif(NOT MSVC)
|
|
endif(FL_CPP11)
|
|
endif(FL_CPP11)
|
|
|
|
|
|
|
|
|
|
@@ -36,29 +48,26 @@ if(WIN32)
|
|
message("Windows")
|
|
message("Windows")
|
|
add_definitions(-DFL_WINDOWS)
|
|
add_definitions(-DFL_WINDOWS)
|
|
endif()
|
|
endif()
|
|
-
|
|
|
|
if (UNIX)
|
|
if (UNIX)
|
|
message("Unix")
|
|
message("Unix")
|
|
add_definitions(-DFL_UNIX)
|
|
add_definitions(-DFL_UNIX)
|
|
endif()
|
|
endif()
|
|
-
|
|
|
|
if (APPLE)
|
|
if (APPLE)
|
|
message("Apple")
|
|
message("Apple")
|
|
add_definitions(-DFL_APPLE)
|
|
add_definitions(-DFL_APPLE)
|
|
endif()
|
|
endif()
|
|
|
|
|
|
-
|
|
|
|
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY bin)
|
|
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY bin)
|
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY bin)
|
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY bin)
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY bin)
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY bin)
|
|
|
|
|
|
-if(UNIX)
|
|
|
|
- set(CMAKE_CXX_FLAGS "-pedantic -Werror -Wall -Wextra")
|
|
|
|
|
|
+if(NOT MSVC)
|
|
|
|
+ set(CMAKE_CXX_FLAGS "-pedantic -Werror -Wall -Wextra ${CMAKE_CXX_FLAGS}")
|
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
|
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
|
|
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
|
|
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
|
|
|
|
|
|
if(NOT APPLE)
|
|
if(NOT APPLE)
|
|
- set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined") #To avoid undefined methods in library
|
|
|
|
|
|
+ set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined ${CMAKE_SHARED_LINKER_FLAGS}") #To avoid undefined methods in library
|
|
endif()
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
|
|
@@ -68,7 +77,17 @@ endif()
|
|
|
|
|
|
set(FL_LIBS)
|
|
set(FL_LIBS)
|
|
|
|
|
|
-if(WIN32)
|
|
|
|
|
|
+#link with rt lib on Linux. Fixes problem with clock_gettime()
|
|
|
|
+include(CheckLibraryExists)
|
|
|
|
+if(UNIX AND NOT APPLE)
|
|
|
|
+ ENABLE_LANGUAGE(C)
|
|
|
|
+ CHECK_LIBRARY_EXISTS(rt shm_open "" HAVE_RT_LIB)
|
|
|
|
+ if(HAVE_RT_LIB)
|
|
|
|
+ set(FL_LIBS ${FL_LIBS} rt)
|
|
|
|
+ endif()
|
|
|
|
+endif()
|
|
|
|
+
|
|
|
|
+if(MSVC)
|
|
set(CMAKE_CXX_FLAGS "/WX /W4 /EHsc")
|
|
set(CMAKE_CXX_FLAGS "/WX /W4 /EHsc")
|
|
#Wx: Treat warnings as errors. W4: All warnings
|
|
#Wx: Treat warnings as errors. W4: All warnings
|
|
#http://msdn.microsoft.com/en-us/library/thxezb7y.aspx
|
|
#http://msdn.microsoft.com/en-us/library/thxezb7y.aspx
|
|
@@ -85,9 +104,13 @@ if(WIN32)
|
|
endif()
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
|
|
|
|
+###BUILD SECTION
|
|
include_directories(.)
|
|
include_directories(.)
|
|
-cmake_policy(SET CMP0015 OLD)
|
|
|
|
link_directories(.)
|
|
link_directories(.)
|
|
|
|
+cmake_policy(SET CMP0015 OLD)
|
|
|
|
+if (APPLE)
|
|
|
|
+ cmake_policy(SET CMP0042 NEW)
|
|
|
|
+endif()
|
|
|
|
|
|
file(STRINGS FL_HEADERS fl-headers)
|
|
file(STRINGS FL_HEADERS fl-headers)
|
|
file(STRINGS FL_SOURCES fl-sources)
|
|
file(STRINGS FL_SOURCES fl-sources)
|
|
@@ -96,51 +119,94 @@ string(REGEX REPLACE "\n" " " ${fl-headers} ${fl-headers})
|
|
string(REGEX REPLACE "\n" " " ${fl-sources} ${fl-sources})
|
|
string(REGEX REPLACE "\n" " " ${fl-sources} ${fl-sources})
|
|
|
|
|
|
message("${exepath}")
|
|
message("${exepath}")
|
|
|
|
+set(CMAKE_DEBUG_POSTFIX d)
|
|
|
|
|
|
|
|
+if (MSVC OR CMAKE_GENERATOR STREQUAL Xcode)
|
|
|
|
+ if(FL_BUILD_SHARED)
|
|
|
|
+ add_library(fl-shared SHARED ${fl-headers} ${fl-sources})
|
|
|
|
+ endif()
|
|
|
|
|
|
-set(CMAKE_DEBUG_POSTFIX d)
|
|
|
|
|
|
+ if(FL_BUILD_STATIC)
|
|
|
|
+ add_library(fl-static STATIC ${fl-headers} ${fl-sources})
|
|
|
|
+ endif()
|
|
|
|
+else()
|
|
|
|
+ if(FL_BUILD_SHARED OR FL_BUILD_STATIC)
|
|
|
|
+ add_library(fl-obj OBJECT ${fl-headers} ${fl-sources})
|
|
|
|
+ if(NOT MINGW)
|
|
|
|
+ set_target_properties(fl-obj PROPERTIES COMPILE_FLAGS "-fPIC")
|
|
|
|
+ endif()
|
|
|
|
+ endif()
|
|
|
|
|
|
-INCLUDE(CheckLibraryExists)
|
|
|
|
|
|
+ if(FL_BUILD_SHARED)
|
|
|
|
+ add_library(fl-shared SHARED $<TARGET_OBJECTS:fl-obj>)
|
|
|
|
+ endif(FL_BUILD_SHARED)
|
|
|
|
|
|
-#check if some platform-specific libraries are needed for linking
|
|
|
|
-if(NOT WIN32)
|
|
|
|
- CHECK_LIBRARY_EXISTS(rt shm_open "" HAVE_RT_LIB)
|
|
|
|
- if(HAVE_RT_LIB)
|
|
|
|
- set(SYSTEM_LIBS ${SYSTEM_LIBS} rt)
|
|
|
|
- endif()
|
|
|
|
|
|
+ if(FL_BUILD_STATIC)
|
|
|
|
+ add_library(fl-static STATIC $<TARGET_OBJECTS:fl-obj>)
|
|
|
|
+ endif(FL_BUILD_STATIC)
|
|
endif()
|
|
endif()
|
|
|
|
|
|
-add_library(fl-shared SHARED ${fl-headers} ${fl-sources})
|
|
|
|
-set_target_properties(fl-shared PROPERTIES OUTPUT_NAME fuzzylite)
|
|
|
|
-set_target_properties(fl-shared PROPERTIES DEBUG_POSTFIX d)
|
|
|
|
-set_target_properties(fl-shared PROPERTIES COMPILE_DEFINITIONS "FL_EXPORT_LIBRARY")
|
|
|
|
-if (UNIX)
|
|
|
|
-set_target_properties(fl-shared PROPERTIES COMPILE_FLAGS "-fPIC")
|
|
|
|
|
|
+if(FL_BUILD_SHARED)
|
|
|
|
+ set_target_properties(fl-shared PROPERTIES OUTPUT_NAME fuzzylite)
|
|
|
|
+ set_target_properties(fl-shared PROPERTIES DEBUG_POSTFIX d)
|
|
|
|
+ set_target_properties(fl-shared PROPERTIES COMPILE_DEFINITIONS "FL_EXPORT_LIBRARY")
|
|
|
|
+ set_target_properties(fl-shared PROPERTIES VERSION 5.0)
|
|
|
|
+ target_link_libraries(fl-shared ${FL_LIBS})
|
|
endif()
|
|
endif()
|
|
-target_link_libraries(fl-shared ${FL_LIBS} ${SYSTEM_LIBS})
|
|
|
|
|
|
|
|
-add_library(fl-static STATIC ${fl-headers} ${fl-sources})
|
|
|
|
-set_target_properties(fl-static PROPERTIES OUTPUT_NAME fuzzylite-static)
|
|
|
|
-set_target_properties(fl-static PROPERTIES DEBUG_POSTFIX d)
|
|
|
|
-if (UNIX)
|
|
|
|
-set_target_properties(fl-static PROPERTIES COMPILE_FLAGS "-fPIC")
|
|
|
|
|
|
+if(FL_BUILD_STATIC)
|
|
|
|
+ set_target_properties(fl-static PROPERTIES OUTPUT_NAME fuzzylite-static)
|
|
|
|
+ set_target_properties(fl-static PROPERTIES DEBUG_POSTFIX d)
|
|
|
|
+ set_target_properties(fl-static PROPERTIES VERSION 5.0)
|
|
|
|
+ target_link_libraries(fl-static ${FL_LIBS})
|
|
endif()
|
|
endif()
|
|
-target_link_libraries(fl-static ${FL_LIBS} ${SYSTEM_LIBS})
|
|
|
|
|
|
|
|
-add_executable(fl-bin src/main.cpp)
|
|
|
|
-set_target_properties(fl-bin PROPERTIES OUTPUT_NAME fuzzylite)
|
|
|
|
-set_target_properties(fl-bin PROPERTIES OUTPUT_NAME fuzzylite IMPORT_PREFIX tmp-) #To prevent LNK1149 in Windows
|
|
|
|
-set_target_properties(fl-bin PROPERTIES DEBUG_POSTFIX d)
|
|
|
|
-#set_target_properties(fl-bin PROPERTIES COMPILE_DEFINITIONS "FL_IMPORT_LIBRARY")
|
|
|
|
-#target_link_libraries(fl-bin fl-shared ${FL_LIBS})
|
|
|
|
-target_link_libraries(fl-bin fl-static ${FL_LIBS} ${SYSTEM_LIBS})
|
|
|
|
|
|
+if(FL_BUILD_BINARY)
|
|
|
|
+ add_executable(fl-bin src/main.cpp)
|
|
|
|
+ set_target_properties(fl-bin PROPERTIES OUTPUT_NAME fuzzylite)
|
|
|
|
+ set_target_properties(fl-bin PROPERTIES OUTPUT_NAME fuzzylite IMPORT_PREFIX tmp-) #To prevent LNK1149 in Windows
|
|
|
|
+ set_target_properties(fl-bin PROPERTIES DEBUG_POSTFIX d)
|
|
|
|
|
|
|
|
+ set_target_properties(fl-bin PROPERTIES COMPILE_DEFINITIONS "FL_IMPORT_LIBRARY")
|
|
|
|
+ target_link_libraries(fl-bin fl-shared ${FL_LIBS})
|
|
|
|
+endif(FL_BUILD_BINARY)
|
|
|
|
+
|
|
|
|
+###INSTALL SECTION
|
|
|
|
+if(NOT FL_INSTALL_BINDIR)
|
|
|
|
+ set(FL_INSTALL_BINDIR bin)
|
|
|
|
+endif()
|
|
|
|
|
|
-install(TARGETS fl-bin fl-shared fl-static
|
|
|
|
- RUNTIME DESTINATION bin
|
|
|
|
- LIBRARY DESTINATION lib
|
|
|
|
- ARCHIVE DESTINATION lib
|
|
|
|
- )
|
|
|
|
|
|
+if(NOT FL_INSTALL_LIBDIR)
|
|
|
|
+ if(NOT CMAKE_INSTALL_LIBDIR)
|
|
|
|
+ set(FL_INSTALL_LIBDIR lib)
|
|
|
|
+ else()
|
|
|
|
+ set(FL_INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR})
|
|
|
|
+ endif()
|
|
|
|
+endif()
|
|
|
|
+
|
|
|
|
+if(FL_BUILD_BINARY)
|
|
|
|
+ install(TARGETS fl-bin
|
|
|
|
+ RUNTIME DESTINATION ${FL_INSTALL_BINDIR}
|
|
|
|
+ LIBRARY DESTINATION ${FL_INSTALL_LIBDIR}
|
|
|
|
+ ARCHIVE DESTINATION ${FL_INSTALL_LIBDIR}
|
|
|
|
+ )
|
|
|
|
+endif()
|
|
|
|
+
|
|
|
|
+if(FL_BUILD_SHARED)
|
|
|
|
+ install(TARGETS fl-shared
|
|
|
|
+ RUNTIME DESTINATION ${FL_INSTALL_BINDIR}
|
|
|
|
+ LIBRARY DESTINATION ${FL_INSTALL_LIBDIR}
|
|
|
|
+ ARCHIVE DESTINATION ${FL_INSTALL_LIBDIR}
|
|
|
|
+ )
|
|
|
|
+endif()
|
|
|
|
+
|
|
|
|
+if(FL_BUILD_STATIC)
|
|
|
|
+ install(TARGETS fl-static
|
|
|
|
+ RUNTIME DESTINATION ${FL_INSTALL_BINDIR}
|
|
|
|
+ LIBRARY DESTINATION ${FL_INSTALL_LIBDIR}
|
|
|
|
+ ARCHIVE DESTINATION ${FL_INSTALL_LIBDIR}
|
|
|
|
+ )
|
|
|
|
+endif()
|
|
|
|
|
|
install(DIRECTORY fl/ DESTINATION include/fl)
|
|
install(DIRECTORY fl/ DESTINATION include/fl)
|
|
|
|
|
|
@@ -149,10 +215,12 @@ message("fuzzylite v.${FL_VERSION}b${FL_DATE}\n")
|
|
message("FL_USE_FLOAT=${FL_USE_FLOAT}")
|
|
message("FL_USE_FLOAT=${FL_USE_FLOAT}")
|
|
message("FL_BACKTRACE=${FL_BACKTRACE}")
|
|
message("FL_BACKTRACE=${FL_BACKTRACE}")
|
|
message("FL_CPP11=${FL_CPP11}")
|
|
message("FL_CPP11=${FL_CPP11}")
|
|
|
|
+message("FL_INSTALL_BINDIR=${FL_INSTALL_BINDIR}")
|
|
|
|
+message("FL_INSTALL_LIBDIR=${FL_INSTALL_LIBDIR}")
|
|
message("Build=${CMAKE_BUILD_TYPE}")
|
|
message("Build=${CMAKE_BUILD_TYPE}")
|
|
message("=====================================\n")
|
|
message("=====================================\n")
|
|
|
|
|
|
-# uninstall target
|
|
|
|
|
|
+###UNINSTALL SECTION
|
|
#configure_file(
|
|
#configure_file(
|
|
#"${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
|
|
#"${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
|
|
#"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
|
|
#"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
|
|
@@ -162,4 +230,4 @@ message("=====================================\n")
|
|
#COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake)
|
|
#COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake)
|
|
|
|
|
|
#unix uninstall
|
|
#unix uninstall
|
|
-#xargs rm < install_manifest.txt
|
|
|
|
|
|
+#xargs rm < install_manifest.txt
|