Changeset 656


Ignore:
Timestamp:
Mar 8, 2010, 4:00:31 PM (16 years ago)
Author:
Dmitry A. Kuminov
Message:

qmake:qmake: os2/gnumake: Add support for the declspec(dllexport)-based DLL generation and activate this support by default which greatly reduces the number of exported symbols in Qt DLLs. The old method which causes all public symbols to be exported is still available using the "export_all" CONFIG flag (off by default). Note that DLL splitting will turn "export_all" on because otherwise it is impossible to create split DLLs at the moment (emxexp limitation).

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/mkspecs/features/os2/default_post.prf

    r550 r656  
    1010load(default_post)
    1111
    12 # convert QMAKE_TARGET_ variables to DEF_FILE_ ones
    1312build_pass|isEmpty(BUILDS) {
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
    1432    isEmpty(DEF_FILE_VERSION) {
    1533        DEF_FILE_VERSION = $$VERSION
     
    2745        }
    2846        isEmpty(DEF_FILE_VENDOR):!isEmpty(QMAKE_TARGET_COMPANY):DEF_FILE_VENDOR = $$QMAKE_TARGET_COMPANY
    29 }
    3047
    31 build_pass|isEmpty(BUILDS) {
     48    # handle .DEF file creation for executables
    3249    contains(TEMPLATE, ".*app"):isEmpty(DEF_FILE) {
    3350        DEF_FILE_DESCR =
     
    6885                @echo DESCRIPTION \'$${DEF_FILE_DESCR}\' >> $(DEF_FILE)
    6986            QMAKE_EXTRA_TARGETS += make_exe_def
    70             QMAKE_CLEAN += $(DEF_FILE)
     87            QMAKE_CLEAN += $
    7188        }
    7289    }
  • trunk/mkspecs/features/os2/default_pre.prf

    r593 r656  
    2525
    2626    !dll:error("splitDllBegin may only be used for DLLs!")
     27
     28
     29
     30
    2731
    2832    1 = $$unique(1)
     
    145149
    146150    CONFIG($$SPLIT_CONFIG) {
     151
     152
     153
     154
    147155        CONFIG($$scope): {
    148156            eval($${scope}_HEADERS = $$HEADERS)
     
    184192
    185193        CONFIG($$SPLIT_CONFIG):CONFIG($$scope) {
     194
     195
     196
     197
    186198            eval(HEADERS = $$eval($${scope}_HEADERS))
    187199            export(HEADERS)
  • trunk/mkspecs/os2-g++/qmake.conf

    r654 r656  
    107107
    108108QMAKE_RUN_LINK          = $(LINK) $(LFLAGS) -o $(DESTDIR_TARGET) $(DEF_FILE) -Wl,$$QMAKE_OBJECTS_REF $(LIBS)
    109 QMAKE_RUN_IMPLIB        = emximp -p 128 -o $(TARGET_IMPLIB) $(DEF_FILE)
    110109
    111 QMAKE_RUN_GENDEF        = \
    112     $(if $(QT_DEV_NO_DEF_GENERATION),\
    113         @echo Warning: .DEF file generation is disabled! \
    114             (QT_DEV_NO_DEF_GENERATION=$(QT_DEV_NO_DEF_GENERATION)),\
    115         $(QMAKESPECDIR)\emxexpw.cmd -name $(basename $(TARGET)) \
    116             $(if $(DEF_FILE_VERSION),-version \"$(DEF_FILE_VERSION)\") \
    117             $(if $(DEF_FILE_DESCRIPTION),-desc \"$(DEF_FILE_DESCRIPTION)\") \
    118             $(if $(DEF_FILE_VENDOR),-vendor \"$(DEF_FILE_VENDOR)\") \
    119             -def $(DEF_FILE) $(if $(DEF_FILE_MAP),-map $(DEF_FILE_MAP)) \
    120             $(if $(DEF_FILE_TEMPLATE),-template $(DEF_FILE_TEMPLATE)) \
    121             $$QMAKE_OBJECTS_REF)
     110QMAKE_RUN_IMPLIB        = emximp -p 128 -o $@ $<
     111
     112QMAKE_RUN_GENDEF            = \
     113    $(QMAKESPECDIR)\emxexpw.cmd -name $(basename $(TARGET)) \
     114        -def $(DEF_FILE) \
     115        $(if $(DEF_FILE_VERSION),-version \"$(DEF_FILE_VERSION)\") \
     116        $(if $(DEF_FILE_DESCRIPTION),-desc \"$(DEF_FILE_DESCRIPTION)\") \
     117        $(if $(DEF_FILE_VENDOR),-vendor \"$(DEF_FILE_VENDOR)\") \
     118        $(if $(DEF_FILE_TEMPLATE),-template $(DEF_FILE_TEMPLATE))
     119
     120QMAKE_RUN_GENDEF_EXPORT_ALL = $$QMAKE_RUN_GENDEF \
     121        $(if $(DEF_FILE_MAP),-map $(DEF_FILE_MAP)) \
     122        $$QMAKE_OBJECTS_REF
    122123
    123124QMAKE_GENDEF_DEPS       = $(OBJECTS) $(MAKEFILE)
  • trunk/qmake/generators/os2/gnumake.cpp

    r629 r656  
    581581    }
    582582
    583     if (mode == DLL && !project->isEmpty("QMAKE_RUN_IMPLIB")) {
     583    if (mode == DLL) {
     584        /* we neeed $(TARGET_IMPLIB) to be in sync with getLibTarget() */
    584585        t << "TARGET_IMPLIB = $(basename $(DESTDIR_TARGET)).lib" << endl;
    585         project->values("QMAKE_CLEAN").append("$(TARGET_IMPLIB)");
    586         project->values("POST_TARGETDEPS") += escapeFileVars("$(TARGET_IMPLIB)");
    587586    }
    588587}
     
    602601            t << valGlue(var("QMAKE_RUN_GENDEF").split(";;"), "\n\t", "\n\t", "") << endl;
    603602        }
    604         if (!project->isEmpty("QMAKE_RUN_IMPLIB")) {
    605             /* generate the import library */
    606             t << escapeFileVars("$(TARGET_IMPLIB): ") << escapeFileVars("$(DEF_FILE)");
    607             t << "\n\t" << var("QMAKE_RUN_IMPLIB") << endl;
    608         }
    609603    }
    610604}
     
    648642QString GNUMakefileGenerator::getLibTarget()
    649643{
    650     if (mode == DLL && !project->isEmpty("QMAKE_RUN_IMPLIB"))
     644    if (mode == DLL)
    651645        return QString("$(notdir $(TARGET_IMPLIB))");
    652646    return Win32MakefileGenerator::getLibTarget();
Note: See TracChangeset for help on using the changeset viewer.