summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt46
-rw-r--r--src/CMakeLists.txt31
-rw-r--r--src/core/CMakeLists.txt4
-rw-r--r--src/modules/CMakeLists.txt4
-rw-r--r--src/protocol/CMakeLists.txt4
-rw-r--r--src/tools/CMakeLists.txt2
-rw-r--r--src/win32.rc.cmake88
7 files changed, 162 insertions, 17 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 778a45898..5e3b91faa 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -14,6 +14,16 @@ ENDIF(CMAKE_BUILD_TYPE)
project(Anope CXX)
enable_language(C)
+if(MINGW)
+ set(CMAKE_RC_COMPILER_INIT windres)
+ message(STATUS "CMAKE_RC_OUTPUT_EXTENSION: ${CMAKE_RC_OUTPUT_EXTENSION}")
+ enable_language(RC)
+ message(STATUS "CMAKE_RC_OUTPUT_EXTENSION: ${CMAKE_RC_OUTPUT_EXTENSION}")
+ set(CMAKE_RC_OUTPUT_EXTENSION .o)
+ message(STATUS "CMAKE_RC_OUTPUT_EXTENSION: ${CMAKE_RC_OUTPUT_EXTENSION}")
+ set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> <FLAGS> <DEFINES> -o <OBJECT> <SOURCE>")
+endif(MINGW)
+
include(CheckFunctionExists)
include(CheckIncludeFile)
include(CheckTypeSize)
@@ -25,10 +35,12 @@ if(NOT WIN32)
endif(NOT WIN32)
if(WIN32 AND MSVC)
- set(CXXFLAGS "${CXXFLAGS} /W4 /MD /GR /EHs /D_WIN32 /DMSVCPP /I${Anope_SOURCE_DIR}/include /I${Anope_BINARY_DIR}/include /I${Anope_BINARY_DIR}/lang")
+ string(REPLACE "/EHsc " "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
+ string(REPLACE "/GX " "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
+ set(CXXFLAGS "${CXXFLAGS} /W4 /EHs /D_WIN32 /DMSVCPP /I${Anope_SOURCE_DIR}/include /I${Anope_BINARY_DIR}/include /I${Anope_BINARY_DIR}/lang")
set(MODULE_CXXFLAGS "${CXXFLAGS} /DMODULE_COMPILE")
else(WIN32 AND MSVC)
- set(CXXFLAGS "${CXXFLAGS} ${CMAKE_CXX_FLAGS} -Wall -Wshadow -I${Anope_SOURCE_DIR}/include -I${Anope_BINARY_DIR}/include -I${Anope_BINARY_DIR}/lang")
+ set(CXXFLAGS "${CXXFLAGS} -Wall -Wshadow -I${Anope_SOURCE_DIR}/include -I${Anope_BINARY_DIR}/include -I${Anope_BINARY_DIR}/lang")
if(UNIX)
set(CXXFLAGS "${CXXFLAGS} -ansi -pedantic -fno-leading-underscore")
else(UNIX)
@@ -48,13 +60,15 @@ if(CMAKE_DL_LIBS)
set(LDFLAGS "${LDFLAGS} ${CMAKE_DL_LIBS}")
endif(CMAKE_DL_LIBS)
if(MINGW)
- set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS} -Wl,--enable-auto-import")
+ set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS} -Wl,--enable-auto-import -Wl,--export-all-symbols")
endif(MINGW)
#set(MY_COMPILER ${CMAKE_CXX_COMPILER})
#set(MY_COMP_ARG)
if(WIN32)
+ set(PROGRAM_NAME anope)
else(WIN32)
+ set(PROGRAM_NAME services)
#set(CMAKE_CXX_LINK_EXECUTABLE "<CMAKE_CXX_COMPILER> ${CXXFLAGS} <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> ${LDFLAGS}")
#set(CMAKE_CXX_CREATE_SHARED_MODULE "<CMAKE_CXX_COMPILER> ${CXXFLAGS} <CMAKE_SHARED_LIBRARY_CXX_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS> <CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> ${LDFLAGS}")
endif(WIN32)
@@ -179,6 +193,32 @@ endif(NOT DATADIR)
#set(SERVICES_BINARY "")
+if(WIN32)
+ file(STRINGS ${Anope_SOURCE_DIR}/version.log VERSIONS REGEX "^VERSION_")
+ message(STATUS "VERSIONS: ${VERSIONS}")
+ foreach(VERSION_STR ${VERSIONS})
+ string(LENGTH ${VERSION_STR} VERSION_LEN)
+ math(EXPR VERSION_NUM_LEN "${VERSION_LEN} - 16")
+ string(SUBSTRING ${VERSION_STR} 8 5 VERSION_TYPE)
+ string(SUBSTRING ${VERSION_STR} 15 ${VERSION_NUM_LEN} VERSION)
+ #message(STATUS "VERSION_TYPE: ${VERSION_TYPE} - VERSION: ${VERSION}")
+ set(VERSION_${VERSION_TYPE} ${VERSION})
+ #message(STATUS "VERSION_${VERSION_TYPE}: ${VERSION_${VERSION_TYPE}}")
+ endforeach(VERSION_STR ${VERSIONS})
+
+ set(VERSION_COMMA "${VERSION_MAJOR},${VERSION_MINOR},${VERSION_PATCH},${VERSION_BUILD}")
+ set(VERSION_DOTTED "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}.${VERSION_BUILD}")
+ set(VERSION_FULL "${VERSION_DOTTED}${VERSION_EXTRA}")
+
+ if(CMAKE_BUILD_TYPE STREQUAL "DEBUG" OR CMAKE_BUILD_TYPE STREQUAL "RELWITHDEBINFO")
+ set(FILEFLAGS "VS_FF_DEBUG")
+ else(CMAKE_BUILD_TYPE STREQUAL "DEBUG" OR CMAKE_BUILD_TYPE STREQUAL "RELWITHDEBINFO")
+ set(FILEFLAGS "0x0L")
+ endif(CMAKE_BUILD_TYPE STREQUAL "DEBUG" OR CMAKE_BUILD_TYPE STREQUAL "RELWITHDEBINFO")
+
+ configure_file(${Anope_SOURCE_DIR}/src/win32.rc.cmake ${Anope_BINARY_DIR}/src/win32.rc)
+endif(WIN32)
+
add_subdirectory(data)
add_subdirectory(lang)
add_subdirectory(src)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 02f3df75d..7df4cfc7e 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -100,16 +100,33 @@ endforeach(SRC)
#add_custom_target(src_services DEPENDS ${BUILD_DIR}/services)
#add_custom_target(build ALL)
#add_dependencies(build language headers src_services)
-add_executable(services ${SRC_SRCS})
-set_target_properties(services PROPERTIES LINK_FLAGS "${LDFLAGS}")
- set_target_properties(services PROPERTIES ENABLE_EXPORTS ON)
if(WIN32)
- target_link_libraries(services wsock32)
+ set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/win32.rc LANGUAGE RC)
+ set(SRC_SRCS ${SRC_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/win32.rc)
+ if(MINGW)
+ set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/win32.rc COMPILE_FLAGS "-DMINGW -Ocoff -I${Anope_SOURCE_DIR}/include")
+ #add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/win32.obj
+ # COMMAND ${CMAKE_RC_COMPILER} -DMINGW -I${Anope_SOURCE_DIR}/include -o ${CMAKE_CURRENT_BINARY_DIR}/win32.obj ${CMAKE_CURRENT_BINARY_DIR}/win32.rc
+ # MAIN_DEPENDENCY ${CMAKE_CURRENT_BINARY_DIR}/win32.rc
+ #)
+ #set(SRC_SRCS ${SRC_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/win32.obj)
+ else(MINGW)
+ #set(SRC_SRCS ${SRC_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/win32.rc)
+ #set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/win32.rc LANGUAGE RC)
+ set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/win32.rc COMPILE_FLAGS "/i${Anope_SOURCE_DIR}/include")
+ endif(MINGW)
+ message(STATUS "CMAKE_RC_OUTPUT_EXTENSION: ${CMAKE_RC_OUTPUT_EXTENSION}")
+endif(WIN32)
+add_executable(${PROGRAM_NAME} ${SRC_SRCS})
+set_target_properties(${PROGRAM_NAME} PROPERTIES LINK_FLAGS "${LDFLAGS}")
+ set_target_properties(${PROGRAM_NAME} PROPERTIES ENABLE_EXPORTS ON)
+if(WIN32)
+ target_link_libraries(${PROGRAM_NAME} wsock32)
endif(WIN32)
#set_target_properties(services PROPERTIES COMPILE_FLAGS ${CXXFLAGS})
-add_dependencies(services language headers)
+add_dependencies(${PROGRAM_NAME} language headers)
-get_target_property(SERVICES_BINARY services LOCATION)
+get_target_property(SERVICES_BINARY ${PROGRAM_NAME} LOCATION)
file(RELATIVE_PATH SERVICES_BINARY ${CMAKE_CURRENT_BINARY_DIR} ${SERVICES_BINARY})
set(SERVICES_BIN "${BINDIR}/${SERVICES_BINARY}")
message("[in src] SERVICES_BIN: ${SERVICES_BIN}")
@@ -125,6 +142,6 @@ add_subdirectory(modules)
add_subdirectory(protocol)
add_subdirectory(tools)
-install(TARGETS services
+install(TARGETS ${PROGRAM_NAME}
DESTINATION "${BINDIR}"
)
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index c0942b62e..922a48d97 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -56,11 +56,11 @@ foreach(SRC ${CORE_SRCS})
set_source_files_properties(${SRC} PROPERTIES OBJECT_DEPENDS "${HEADERS}")
endif(HEADERS)
add_library(${SO} MODULE ${SRC})
- add_dependencies(${SO} services)
+ add_dependencies(${SO} ${PROGRAM_NAME})
#set_target_properties(${SO} PROPERTIES PREFIX "" SUFFIX "" COMPILE_FLAGS ${CXXFLAGS})
set_target_properties(${SO} PROPERTIES PREFIX "" SUFFIX "" LINK_FLAGS "${LDFLAGS}")
if(WIN32)
- target_link_libraries(${SO} services wsock32)
+ target_link_libraries(${SO} ${PROGRAM_NAME} wsock32)
endif(WIN32)
#set_target_properties(${SO} PROPERTIES PREFIX "" SUFFIX "")
install(TARGETS ${SO}
diff --git a/src/modules/CMakeLists.txt b/src/modules/CMakeLists.txt
index dc7a2f54e..af6fcda20 100644
--- a/src/modules/CMakeLists.txt
+++ b/src/modules/CMakeLists.txt
@@ -51,11 +51,11 @@ foreach(SRC ${MODULES_SRCS})
set_source_files_properties(${SRC} PROPERTIES OBJECT_DEPENDS "${HEADERS}")
endif(HEADERS)
add_library(${SO} MODULE ${SRC})
- add_dependencies(${SO} services)
+ add_dependencies(${SO} ${PROGRAM_NAME})
#set_target_properties(${SO} PROPERTIES PREFIX "" SUFFIX "" COMPILE_FLAGS ${CXXFLAGS})
set_target_properties(${SO} PROPERTIES PREFIX "" SUFFIX "" LINK_FLAGS "${LDFLAGS}")
if(WIN32)
- target_link_libraries(${SO} services wsock32)
+ target_link_libraries(${SO} ${PROGRAM_NAME} wsock32)
endif(WIN32)
#set_target_properties(${SO} PROPERTIES PREFIX "" SUFFIX "")
install(TARGETS ${SO}
diff --git a/src/protocol/CMakeLists.txt b/src/protocol/CMakeLists.txt
index bb94e116a..50d763651 100644
--- a/src/protocol/CMakeLists.txt
+++ b/src/protocol/CMakeLists.txt
@@ -51,11 +51,11 @@ foreach(SRC ${PROTOCOL_SRCS})
set_source_files_properties(${SRC} PROPERTIES OBJECT_DEPENDS "${HEADERS}")
endif(HEADERS)
add_library(${SO} MODULE ${SRC})
- add_dependencies(${SO} services)
+ add_dependencies(${SO} ${PROGRAM_NAME})
#set_target_properties(${SO} PROPERTIES PREFIX "" SUFFIX "" COMPILE_FLAGS ${CXXFLAGS})
set_target_properties(${SO} PROPERTIES PREFIX "" SUFFIX "" LINK_FLAGS "${LDFLAGS}")
if(WIN32)
- target_link_libraries(${SO} services wsock32)
+ target_link_libraries(${SO} ${PROGRAM_NAME} wsock32)
endif(WIN32)
#set_target_properties(${SO} PROPERTIES PREFIX "" SUFFIX "")
install(TARGETS ${SO}
diff --git a/src/tools/CMakeLists.txt b/src/tools/CMakeLists.txt
index 18a064683..aa8de50dd 100644
--- a/src/tools/CMakeLists.txt
+++ b/src/tools/CMakeLists.txt
@@ -47,7 +47,7 @@ foreach(SRC ${TOOLS_SRCS})
endif(HEADERS)
add_executable(${EXE} ${SRC})
set_target_properties(${EXE} PROPERTIES LINK_FLAGS "${LDFLAGS}")
- add_dependencies(${EXE} services)
+ add_dependencies(${EXE} ${PROGRAM_NAME})
#set_target_properties(${EXE} PROPERTIES COMPILE_FLAGS ${CXXFLAGS})
install(TARGETS ${EXE}
DESTINATION "${BINDIR}/tools"
diff --git a/src/win32.rc.cmake b/src/win32.rc.cmake
new file mode 100644
index 000000000..c428ea2f0
--- /dev/null
+++ b/src/win32.rc.cmake
@@ -0,0 +1,88 @@
+///Microsoft Developer Studio generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#define APSTUDIO_HIDDEN_SYMBOLS
+#include <windows.h>
+#undef APSTUDIO_HIDDEN_SYMBOLS
+#include "resource.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifndef _MAC
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VER_ANOPE VERSIONINFO
+ FILEVERSION @VERSION_COMMA@
+ PRODUCTVERSION @VERSION_COMMA@
+#ifndef MINGW
+ FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
+#endif
+ FILEFLAGS @FILEFLAGS@
+ FILEOS VOS_NT
+ FILETYPE VFT_APP
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "CompanyName", "Anope Team"
+ VALUE "FileDescription", "Anope IRC Services"
+ VALUE "FileVersion", "@VERSION_FULL@"
+ VALUE "InternalName", "Anope"
+ VALUE "LegalCopyright", "Copyright (C) 2003-2008 Anope Team"
+ VALUE "OriginalFilename", "anope.exe"
+ VALUE "ProductName", "Anope"
+ VALUE "ProductVersion", "@VERSION_DOTTED@"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1200
+ END
+END
+
+#endif // !_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+ICON_APP ICON "@Anope_SOURCE_DIR@/src/anope-icon.ico"
+#endif // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED