Brandon J. Van Every wrote:
People who feel neutral about Autoconf, or who are in fact pleased with it, aren't going to up and do anything for Windows anytime soon. For those people, it will take a *long* time for migrations to happen via CMake.

I do not agree, yes it will take time but if you provide a much better tool that the existant one (+ in some extend is compatible with the old one), developers will switch.

We can reduce migration time by simply providing a very nice and simple API for building software using CMake, and the first step is to fix little things like:

if (GCC) and not if (CMAKE_COMPILER_IS_GNUCXX)
if (ICC) and not if (CMAKE_C_COMPILER MATCHES "icc")

an API should be *consistent*, if you choose to have
if (MSVC)
if (MINGW)
then you should have if (GCC), if (ICC)...

And saying "there's coverage, it's just ad hoc, not canonized, and has an inconsistent interface. At present this doesn't trouble me, personally" won't help CMake users don't care about CMake, they only care about building their software and they don't want to google/read the doc because if (MSVC) works and if (GCC) or if (ICC) don't as they expected.

A more important issue, you can write:
add_definitions(${DEF})
include_directories(${INC})

but you cannot write:
add_compile_flags(${FLAGS})
add_link_flags(${FLAGS})
!!!!

No this would be too simple... so you have to check the doc, google and finally find out that it works in a totally different way!
set_target_properties(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS ${FLAGS})


Your answer will probably be "not happy? send a patch!"

and here is my patch:
http://dev.openwengo.org/trac/openwengo/trac.cgi/wiki/OWBuild
http://dev.openwengo.org/trac/openwengo/trac.cgi/browser/wengophone-ng/trunk/cmake/Modules/owbuild

This permits me to create build scripts for cURL, PortAudio, libGaim... in 1h, check how simple they are !
Even somebody who never heard about CMake can understand them...

Since I have a very high level API, I can do very high level things like choosing from the cache if I want a shared or a static library (and don't tell me the problem is a simple -DMYPROJECT_EXPORTS), copy automatically files on the fly, integrate an inheritance system...

It's not fully finished yet, I have to write more doc + test deeply the macros

Now I'm scratching my head: do I extend my macros and add if (OS_WINDOWS), if (OS_MACOSX), if (OS_LINUX), if (CC_MSVC), if (CC_GCC)... or do I stick with if (APPLE), if (CMAKE_COMPILER_IS_GNUCXX) and if (CMAKE_C_COMPILER MATCHES "icc")??


CMake is a wonderful tool, very glad people are developing it but please create a simple, consistent and high-level API and then people will switch

--
Tanguy Krotoff <[EMAIL PROTECTED]>
http://openwengo.org
ow_create_shared_library(curl)

ow_use_private_libraries(
        OPENSSL
)

ow_add_public_include_dirs(
        ${CMAKE_CURRENT_SOURCE_DIR}/include
)

ow_add_private_include_dirs(
        ${CMAKE_CURRENT_SOURCE_DIR}/lib
)

ow_add_private_definitions(
        -DBUILDING_LIBCURL
        -DCURL_DISABLE_FILE
        -DCURL_DISABLE_LDAP
        -DCURL_DISABLE_DICT
        -DCURL_DISABLE_TELNET
        -DCURL_DISABLE_TFTP
        -DUSE_SSLEAY
        -DUSE_OPENSSL
)

if (APPLE)
        find_package(ZLIB REQUIRED)

        ow_use_public_libraries(
                ZLIB
        )
endif (APPLE)

if (WIN32)
        ow_add_private_libraries(
                ws2_32
                winmm
        )
endif (WIN32)

ow_add_sources(
        lib/base64.c
        lib/connect.c
        lib/content_encoding.c
        lib/cookie.c
        #lib/dict.c
        lib/easy.c
        lib/escape.c
        #lib/file.c
        lib/formdata.c
        lib/ftp.c
        lib/getenv.c
        lib/getinfo.c
        lib/gtls.c
        lib/hash.c
        lib/hostares.c
        lib/hostasyn.c
        lib/hostip.c
        lib/hostip4.c
        lib/hostip6.c
        lib/hostsyn.c
        lib/hostthre.c
        lib/http.c
        lib/http_chunks.c
        lib/http_digest.c
        lib/http_negotiate.c
        lib/http_ntlm.c
        lib/if2ip.c
        lib/inet_ntop.c
        lib/inet_pton.c
        lib/krb4.c
        #lib/ldap.c
        lib/llist.c
        lib/md5.c
        lib/memdebug.c
        lib/mprintf.c
        lib/multi.c
        lib/netrc.c
        #lib/nwlib.c
        lib/parsedate.c
        lib/progress.c
        lib/security.c
        lib/select.c
        lib/sendf.c
        lib/share.c
        lib/speedcheck.c
        lib/sslgen.c
        lib/ssluse.c
        lib/strequal.c
        lib/strerror.c
        lib/strtok.c
        lib/strtoofft.c
        #lib/telnet.c
        #lib/tftp.c
        lib/timeval.c
        lib/transfer.c
        lib/url.c
        lib/version.c
)

ow_create_binary()
ow_create_static_library(gaim)

ow_use_public_libraries(
        GLIB2
)

ow_add_public_include_dirs(
        ${CMAKE_CURRENT_SOURCE_DIR}/include
        ${CMAKE_CURRENT_SOURCE_DIR}/src/libgaim
)

ow_add_private_include_dirs(
        ${CMAKE_CURRENT_SOURCE_DIR}/src
        ${CMAKE_CURRENT_SOURCE_DIR}/src/libgaim/protocols/oscar
)

ow_use_private_libraries(
        XML2
)

ow_add_private_libraries(
        resolv
        gnutls
)

ow_add_private_definitions(
        -DHAVE_CONFIG_H
        -DHAVE_GLIB
        -DGAIM_STATIC_PRPL
        -DHAVE_SSL
        -DHAVE_GNUTLS
)

ow_add_sources(
        src/libgaim/account.c
        src/libgaim/accountopt.c
        src/libgaim/blist.c
        src/libgaim/buddyicon.c
        src/libgaim/cipher.c
        src/libgaim/circbuffer.c
        src/libgaim/cmds.c
        src/libgaim/connection.c
        src/libgaim/conversation.c
        src/libgaim/core.c
        src/libgaim/debug.c
        src/libgaim/desktopitem.c
        src/libgaim/dnsquery.c
        src/libgaim/dnssrv.c
        src/libgaim/eventloop.c
        src/libgaim/ft.c
        src/libgaim/getopt.c
        src/libgaim/getopt1.c
        src/libgaim/idle.c
        src/libgaim/imgstore.c
        src/libgaim/log.c
        src/libgaim/mime.c
        src/libgaim/network.c
        src/libgaim/notify.c
        src/libgaim/ntlm.c
        src/libgaim/plugin.c
        src/libgaim/pluginpref.c
        src/libgaim/pounce.c
        src/libgaim/prefix.c
        src/libgaim/prefs.c
        src/libgaim/privacy.c
        src/libgaim/proxy.c
        src/libgaim/prpl.c
        src/libgaim/request.c
        src/libgaim/roomlist.c
        src/libgaim/savedstatuses.c
        src/libgaim/server.c
        src/libgaim/signals.c
        src/libgaim/sound.c
        src/libgaim/sslconn.c
        src/libgaim/status.c
        src/libgaim/stringref.c
        src/libgaim/stun.c
        src/libgaim/upnp.c
        src/libgaim/util.c
        src/libgaim/value.c
        src/libgaim/whiteboard.c
        src/libgaim/xmlnode.c
        src/libgaim/plugins/ssl/ssl.c
        src/libgaim/plugins/ssl/ssl-gnutls.c
        src/libgaim/protocols/jabber/auth.c
        src/libgaim/protocols/jabber/buddy.c
        src/libgaim/protocols/jabber/chat.c
        src/libgaim/protocols/jabber/disco.c
        src/libgaim/protocols/jabber/iq.c
        src/libgaim/protocols/jabber/jabber.c
        src/libgaim/protocols/jabber/jutil.c
        src/libgaim/protocols/jabber/message.c
        src/libgaim/protocols/jabber/oob.c
        src/libgaim/protocols/jabber/parser.c
        src/libgaim/protocols/jabber/presence.c
        src/libgaim/protocols/jabber/roster.c
        src/libgaim/protocols/jabber/si.c
        src/libgaim/protocols/jabber/xdata.c
        src/libgaim/protocols/msn/cmdproc.c
        src/libgaim/protocols/msn/command.c
        src/libgaim/protocols/msn/dialog.c
        src/libgaim/protocols/msn/directconn.c
        src/libgaim/protocols/msn/error.c
        src/libgaim/protocols/msn/group.c
        src/libgaim/protocols/msn/history.c
        src/libgaim/protocols/msn/httpconn.c
        src/libgaim/protocols/msn/msg.c
        src/libgaim/protocols/msn/msn.c
        src/libgaim/protocols/msn/nexus.c
        src/libgaim/protocols/msn/notification.c
        src/libgaim/protocols/msn/object.c
        src/libgaim/protocols/msn/page.c
        src/libgaim/protocols/msn/servconn.c
        src/libgaim/protocols/msn/session.c
        src/libgaim/protocols/msn/slp.c
        src/libgaim/protocols/msn/slpcall.c
        src/libgaim/protocols/msn/slplink.c
        src/libgaim/protocols/msn/slpmsg.c
        src/libgaim/protocols/msn/slpsession.c
        src/libgaim/protocols/msn/state.c
        src/libgaim/protocols/msn/switchboard.c
        src/libgaim/protocols/msn/sync.c
        src/libgaim/protocols/msn/table.c
        src/libgaim/protocols/msn/transaction.c
        src/libgaim/protocols/msn/user.c
        src/libgaim/protocols/msn/userlist.c
        src/libgaim/protocols/msn/msn-utils.c
        src/libgaim/protocols/oscar/bstream.c
        src/libgaim/protocols/oscar/family_admin.c
        src/libgaim/protocols/oscar/family_advert.c
        src/libgaim/protocols/oscar/family_alert.c
        src/libgaim/protocols/oscar/family_auth.c
        src/libgaim/protocols/oscar/family_bart.c
        src/libgaim/protocols/oscar/family_bos.c
        src/libgaim/protocols/oscar/family_buddy.c
        src/libgaim/protocols/oscar/family_chat.c
        src/libgaim/protocols/oscar/family_chatnav.c
        src/libgaim/protocols/oscar/family_feedbag.c
        src/libgaim/protocols/oscar/family_icbm.c
        src/libgaim/protocols/oscar/family_icq.c
        src/libgaim/protocols/oscar/family_invite.c
        src/libgaim/protocols/oscar/family_locate.c
        src/libgaim/protocols/oscar/family_odir.c
        src/libgaim/protocols/oscar/family_oservice.c
        src/libgaim/protocols/oscar/family_popup.c
        src/libgaim/protocols/oscar/family_stats.c
        src/libgaim/protocols/oscar/family_translate.c
        src/libgaim/protocols/oscar/family_userlookup.c
        src/libgaim/protocols/oscar/flap_connection.c
        src/libgaim/protocols/oscar/misc.c
        src/libgaim/protocols/oscar/msgcookie.c
        src/libgaim/protocols/oscar/odc.c
        src/libgaim/protocols/oscar/oft.c
        src/libgaim/protocols/oscar/oscar.c
        src/libgaim/protocols/oscar/oscar_data.c
        src/libgaim/protocols/oscar/peer.c
        src/libgaim/protocols/oscar/peer_proxy.c
        src/libgaim/protocols/oscar/rxhandlers.c
        src/libgaim/protocols/oscar/snac.c
        src/libgaim/protocols/oscar/tlv.c
        src/libgaim/protocols/oscar/util.c
        src/libgaim/protocols/yahoo/util.c
        src/libgaim/protocols/yahoo/yahoo.c
        src/libgaim/protocols/yahoo/yahoo_auth.c
        src/libgaim/protocols/yahoo/yahoo_crypt.c
        src/libgaim/protocols/yahoo/yahoo_doodle.c
        src/libgaim/protocols/yahoo/yahoo_filexfer.c
        src/libgaim/protocols/yahoo/yahoo_friend.c
        src/libgaim/protocols/yahoo/yahoo_packet.c
        src/libgaim/protocols/yahoo/yahoo_picture.c
        src/libgaim/protocols/yahoo/yahoo_profile.c
        src/libgaim/protocols/yahoo/yahoochat.c
        src/libgaim/protocols/yahoo/ycht.c
)

ow_create_binary()
ow_create_static_library(portaudio)

ow_add_public_include_dirs(
        ${CMAKE_CURRENT_SOURCE_DIR}/pa_common
)

ow_add_private_definitions(
        -DPA_LITTLE_ENDIAN
        -DPA_NO_ASIO
        -DPA_NO_WDMKS
        -DPA_NO_DS
)

ow_add_sources(
        pa_common/pa_allocation.c
        pa_common/pa_converters.c
        pa_common/pa_cpuload.c
        pa_common/pa_dither.c
        pa_common/pa_front.c
        pa_common/pa_process.c
        pa_common/pa_skeleton.c
        pa_common/pa_stream.c
        pa_common/pa_trace.c
        pa_win/pa_win_util.c
        pa_win/pa_win_hostapis.c
        pa_win/pa_x86_plain_converters.c
)

if (WITH_PORTAUDIO_DSOUND)
        ow_add_sources(
                pa_win_ds/dsound_wrapper.c
                pa_win_ds/pa_win_ds.c
        )
else (WITH_PORTAUDIO_DSOUND)
        ow_add_sources(
                pa_win_wmme/pa_win_wmme.c
        )
endif (WITH_PORTAUDIO_DSOUND)

ow_create_binary()
_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to